美文网首页
深入理解计算机系统笔记 2020-10-23

深入理解计算机系统笔记 2020-10-23

作者: White夏天baby | 来源:发表于2020-10-24 21:48 被阅读0次

1.7.1

进程是操作系统中一个正在运行的程序的一种抽象。即一个正在运行的程序就是一个进程。在一个系统上可同时运行多个进程,而每个进程都好像在独占的使用硬件。而并发运行,是一个进程的指令与另一个进程的指令交错执行。在大多数系统中,需要运行的进程数时多于可以运行他们的CPU个数的。传统系统在一个时刻只能执行一个程序,而先进的多核处理器同时执行多个程序。一个CPU看上去像是在并发执行多个程序,这是通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制称为上下文切换

操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文,包括许多信息,如PC和寄存器文件当前的值,以及主存的内容。在任何一个时刻,单处理器系统都只能执行一个进程代码。当操作系统决定把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程上下文,恢复新进程上下文,然后将控制权交给新进程,新进程就会从他上次停止的地方开始。如下图所示。

进程的上下文切换

示例中有两个并发进程。hello和shell。最开始只有shell进程在运行,即等待命令行的输入。当我们让他运行hello程序时,shell通过调用一个专门的函数,即系统调用,来执行我们的请求,系统调用将控制权传递给操作系统。操作系统将保存shell进程的上下文,创建一个新的hello进程及其上下文,然后将控制权传递给新的hello进程。hello进程终止后,操作系统将恢复shell进程上下文,并将控制权传回给他,shell进程会继续等待下一个命令行的输入。

如图所示,从一个进程切换到另一个进程是由操作系统内核管理的。内核是操作系统代码常驻主存部分。当应用程序需要操作系统的某些操作时,如读写文件,它就执行一条特殊的系统调用指令,将控制权传递给内核,然后内核执行被请求的操作,并返回应用程序。注意,内核不是一个独立进程,它是系统管理全部进程所用代码和数据结构的集合。

实现进程这个抽象概念,需要低级硬件和操作系统软件之间的紧密合作。

个人理解:

把CPU内核虚拟成一个人,把shell虚拟成上级发来的电报,把hello虚拟成一份秘密文件。

首先上级发来了名为shell的电报文件,第一条指令是,运行hello文件上的命令。CPU读到命令后,标记自己读到了第一条指令。然后去存放文件的区域,找出hello文件,打开看了之后,hello文件上有一条指令,指令是把下面的这条数据(hello world)抄到一个黑板上(屏幕)上去。于是CPU就把hello world抄到了黑板上。完成后,CPU拿回shell文件,找到上次标记点继续向下读。文件的第二条指令是,原地待着,等待下一条电报指令。

无论是shell文件还是hello文件,它们都是“死的",CPU这个人去执行这些文件中的命令时,这个执行过程就是进程。

进程的上下文切换:个人理解图

可以说CPU执行shell或者hello文件的一些列过程是进程,但是不能说CPU这个人是进程。CPU是用来管理进程的,如开始一个进程,暂时休息保存一个进程,再次执行保存的进程,结束一个进程。大概就是这么个意思。

相关文章

网友评论

      本文标题:深入理解计算机系统笔记 2020-10-23

      本文链接:https://www.haomeiwen.com/subject/bnnpmktx.html