游戏服务器Linux中进程管理系统调用
游戏服务器Linux中进程管理系统调用
现在关注一下 游戏服务器Linux 系统中与进程管理相关的系统调用。在了解之前你需要先知道一下什么是系统调用。
操作系统为我们屏蔽了硬件和软件的差异,它的最主要功能就是为用户提供一种抽象,隐藏内部实现,让用户只关心在 GUI 图形界面下如何使用即可。游戏服务器操作系统可以分为两种模式内核态:操作系统内核使用的模式用户态:用户应用程序所使用的模式
我们常说的上下文切换指的就是内核态模式和用户态模式的频繁切换。而系统调用指的就是引起内核态和用户态切换的一种方式,系统调用通常在后台静默运行,表示计算机程序向其操作系统内核请求服务。
游戏服务器系统调用指令有很多,下面是一些与进程管理相关的最主要的系统调用:
fork 调用用于创建一个与父进程相同的子进程,创建完进程后的子进程拥有和父进程一样的程序计数器、相同的 CPU 寄存器、相同的打开文件。
exec 系统调用用于执行驻留在活动进程中的文件,调用 exec 后,新的可执行文件会替换先前的可执行文件并获得执行。也就是说,调用 exec 后,会将旧文件或程序替换为新文件或执行,然后执行文件或程序。新的执行程序被加载到相同的执行空间中,因此进程的 PID 不会修改,因为我们没有创建新进程,只是替换旧进程。但是进程的数据、代码、堆栈都已经被修改。如果当前要被替换的进程包含多个线程,那么所有的线程将被终止,新的进程映像被加载执行。【艾娜】