进程

进程是操作系统资源分配的单位,每个进程都有独立的地址空间(代码段、数据段),独立的堆栈,独 立的进程控制块。以下为一个广义的进程生命周期中的状态转换图:

  • 进程由其父进程利用 FORK 系统调用创建,则该进程进入 RUNNABLE 状态;

  • 时间中断到来, RUNNABLE 状态的进程被切换到,则该进程进入 RUNNING 状态;

  • 时间中断到来, RUNNING 状态的进程处理时间片耗尽,则该进程进入 RUNNABLE 状态;

  • RUNNING 状态的进程利用 SLEEP 系统调用主动阻塞;或利用系统调用等待硬件I/O,则该进程进入 BLOCKED 状态;

  • 时间中断到来, BLOCKED 状态的进程的 SLEEP 时间片耗尽,或外部硬件中断表明I/O完成,则该进 程进入 RUNNABLE 状态;

  • RUNNING 状态的进程运行结束,利用 EXIT 系统调用主动销毁,则该进程进入 DEAD 状态。

                                 +------------+

          SLEEP TIME EXPIRED     |            |         SLEEP SYSCALL
                I/O FINISHED +---+   BLOCKED  +<--+  I/O REQUEST SYSCALL
                             |   |            |   |
                             |   +------------+   |
                             V                    |
+------------+ FORK    +-----+------+      +------+-----+ EXIT    +------------+
|            | SYSCALL |            +<-----+            | SYSCALL |            |
|    NEW     +-------->+  RUNNABLE  |      |   RUNNING  +-------->+    DEAD    |
|            |         |            +----->+            |         |            |
+------------+         +------------+      +------------+         +------------+

Last updated