Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.5数据结构4.6总结

4.5 数据结构

操作系统就是一个程序,和其他任何程序一样,他也有一些很重要的数据结构用来跟踪各种各样的重要信息片段。要跟踪每个进程的状态,比如,操作系统让所有的就绪态进程放在一个进程表里面,同时,用一些额外的信息来跟踪运行态的进程。操作系统还必须以某种方式来跟踪阻塞态的进程;当I/O事件完成时,操作系统必须确保唤醒正确的进程,并让它准备再次进入运行态。

/****************图片暂时未能上传*********************/

图4.5中是xv6内核中操作系统所需要用来跟踪每个进程所需的信息形式。寄存器上下文会为停止的进程保留其寄存器中的内容。当一个进程被终止,他的寄存器会被保存着这块内存区域中;操作系统可以通过这些寄存器的还原(例如,将他们的值回存到物理寄存器)来重新运行进程。我们将在关于上下文切换的章节中对这项技术进行深入的学习。

从图中你还可以看到进程可能的其他状态,而不仅仅是运行,就绪和阻塞。有时候一个系统中,当一个进程被创建时,他有一个初始状态。与此同时,进程在结束退出而并没有被清除(Unix系统中称作僵死状态)时也有一个最终状态。这种状态对于其他进程(通常是创建该进程的父进程)检查进程的返回值和查看刚刚结束的进程是否完美运行很有用(通常,类Unix系统中程序在成功完成一个任务以后会返回0值,否则非零)。在完成时,父进程会调用一个函数(比如wait())来等待子进程完成,并告知操作系统可以清理已经消亡的进程的相关数据结构。

 

补充:数据结构——进程列表

操作系统里有各种各样重要的数据结构。进程列表就是第一个这样的数据结构。它是很简单的一个,当然,任何操作系统都有同时运行多个程序的能力,与这个数据结构的类似,从而可以监控操作系统所有运行态的进程。有时候人们采用一些存储进程信息(如进程控制块PCB)的个体数据结,一个关于C数据结构中包含每个进程信息的好玩的方法。

(此处翻译太凌乱,由于该节内容概括性太强,作者大脑无法运作,down 机了)。,

 

 

4.6总结

到这里,我们已经介绍了操作系统中最基本的概念:进程。这只是一个有关运行态程序的概览。有了这个概念,我们现在就要接触到比较底层的东西了:低级别机制用来实现进程,高级别策略用于智能的调度进程。,通过机制和策略的结合,我们构建了一个关于操作系统虚拟化CPU的概图。

你可能感兴趣的:(操作系统,操作系统,虚拟化,进程状态)