Linux系统 —— 进程系列 - 进程状态 :僵尸与孤儿

时间:2024-12-12 07:00:08

我们以一个问题来理解一下:操作系统os是怎么对软硬件进行管理的?答案是:先描述,再组织

  

我们先拿硬件来举例子:实际上,因为操作系统要管理硬件,所以操作系统os也要创建数据结构(struct_device)

这个数据结构里包含的就是目标设备的所有属性,那么就说明struct_device可以直接或者间接获得我们对应的数据

   

  

上面这张图可以称之为设备队列,而下面的图片叫做运行队列

   

  

我们都知道,在内存当中,每一种设备都要对应一种struct_device结构体,当我们读磁盘读网卡的时候如果设备上对应的设备没有就绪,那么我们的进程就要阻塞等待了,那么在操作系统中我们如何理解阻塞等待呢?我们可以在数据结构体里加上一个等待队列

  

  

所以我们对应的每一个设备它都有一个等待队列

  

我们假设我们的CPU正在运行,当运行的时候执行我们的代码(假设是scanf)需要就绪读取,读取的时候OS发现需要去读取键盘,然后OS去检查键盘的状态,然后发现键盘没有任何活跃的状态,那么你这个进程无法读到键盘的任何数据进程就无法继续执行了,所以操作系统把这个进程从cpu上拿下来啊,并且把这个进程从运行队列当中移走然后把它链入到我们对应的特定设备的等待队列当中,那么这个进程就不会再被调度了,那么这个进程此时就处于阻塞状态

  

只有在运行队列里的进程才会被CPU调度,不在运行队列里转而在设备队列里等待,那么这个进程就叫做阻塞