• Operating System Video Tutorials

操作系统 - 进程操作



什么是操作系统中的进程?

进程是正在执行的程序,在其生命周期中会经历多个状态。在每个状态下,进程都会经历某些操作,这些操作使进程能够执行到完成。

进程的状态

进程的不同状态如下:

  • 新建 - 进程被创建。
  • 就绪 - 进程已准备好所有资源分配,并等待 CPU 分配。
  • 运行 - 进程中的指令正在 CPU 中执行。
  • 等待 - 进程正在等待输入/输出或任何其他事件的完成。
  • 终止 - 进程完成执行并退出系统。

下图描述了进程状态:

States of a Process

操作系统中的不同进程操作

当进程处于特定状态时,或者当进程从一个状态转换到另一个状态时,就会发生进程操作。进程主要有四种操作:

  • 进程创建
  • 进程调度
  • 进程抢占
  • 进程阻塞
  • 进程终止

进程创建

进程进入系统时经历的第一个操作是进程创建。它涉及进程的形成,并与进程的“新建”状态相关联。进程创建是由于以下任何事件引起的:

  • 系统初始化 - 当计算机启动时,会创建许多系统进程和后台进程。
  • 用户请求 - 用户可以启动程序的执行,从而创建进程。
  • 子进程系统调用 - 运行中的进程可以通过进程创建系统调用创建子进程。
  • 批处理系统 - 批处理系统可以启动批处理作业。

进程可以使用 fork() 函数由另一个进程创建。创建进程称为父进程,创建的进程称为子进程。子进程只有一个父进程,但父进程可以有多个子进程。父进程和子进程具有相同的内存映像、打开的文件和环境字符串。但是,它们具有不同的地址空间。

下图演示了使用 fork() 创建进程:

Process Creation

进程调度

当处于就绪状态的进程被调度程序选中执行时,就会发生进程调度操作。进程调度是根据使用的调度算法启动的。当 CPU 空闲且就绪队列中有进程时,为正在运行的进程分配的时间片到期时,高优先级进程进入系统或发生硬件中断时,可能会发生这种情况。当新的进程被分配到 CPU 时,其状态将从其进程控制块 (PCB) 中加载。

进程抢占

进程抢占是一种操作,通过该操作,正在运行的进程的执行被挂起,并且 CPU 选择另一个进程执行。当正在运行的进程的时间片到期时,高优先级进程进入就绪队列或发生硬件中断时,可能会发生进程抢占。

CPU 中正在执行的进程的抢占会导致称为上下文切换的现象。在这里,即将离开进程的上下文或状态存储在其 PCB 中,以便在需要时可以重新加载它,并且可以从与之前相同的点恢复执行。

下图演示了进程调度和进程抢占:

Process Preemption

进程阻塞

如果正在运行的进程需要发生某些事件才能继续执行,则该进程将被阻塞并置于“等待”状态,并从 CPU 中交换出来。此事件可能是输入/输出系统调用,因为 I/O 事件在主内存中执行,不需要处理器。

在这里,当进程本身需要时,操作系统会阻塞进程。事件完成后,进程再次进入就绪状态。

下图演示了进程阻塞:

Process Blocking

进程终止

进程终止是结束进程并释放进程已持有的所有资源的操作。进程终止后将不复存在。

与进程创建类似,进程终止可能有多个原因,如下所示:

  • 进程已完成其最后一条指令的执行,因此操作系统将其终止。
  • 如果其任务不再相关,则父进程可以终止子进程。子进程在其终止之前将其状态信息发送给父进程。此外,当父进程终止时,其子进程也会终止,并且如果父进程终止,则子进程无法运行。
  • 如果存在服务错误,则操作系统可以终止进程。
  • 硬件故障也可能导致进程终止。

在大多数情况下,进程终止发生在进程执行完成时。所涉及的步骤如下:

  • 父进程向子进程发出 SIGTERM 消息作为启动终止的信号。
  • 接收到此信号后,子进程将执行清理过程,例如释放已分配的资源、关闭共享文件、放弃对共享变量和表的访问等。
  • 然后子进程退出,控制权返回给父进程或操作系统。
广告