进程的创建
进程创建的时机
- 系统初始化
- 一个进程执行了创建进程的系统调用
- 用户请求创建一个新进程
- 一个批处理作业初始化
进程分类
- 前台进程:和用户交互的进程。
- 守护进程:停留在后台处理的进程。
(线程分类也类似,如 Java 中就将线程分为用户线程和守护线程,守护线程为用户线程提供一些基本服务以保证 Java 程序的正常执行,只有当非守护线程全部退出后,JVM 才能正常关闭)
进程与窗口的关系
每个窗口运行一个进程,通过鼠标用户可以选择一个进程并与该进程交互。
- Unix:新进程接管创建它的进程的窗口。
- Windows:大多数情况,一个进程被创建时并没有窗口,但可以创建一个或多个窗口。
系统调用创建进程
技术上,新进程均是由一个已存在的进程执行了一个创建进程的系统调用而创建的。
-
Unix:分两步走,先 fork,创建一个与调用进程相同的副本(子进程),此时这两个进程拥有相同的内存映像、环境字符串和打开的文件。接着执行 execve 或类似的系统调用,修改其内存映像并运行一个新的程序。
-
Windows:Win32 函数调用 CreateProcess 即处理进程的创建,也负责把正确的程序装入新的进程。
父进程和子进程的地址空间
- Unix 和 W