操做系统核心原理-3.进程原理(上):进程概要

进程管理、内存管理和文件管理是操做系统的三大核心功能,那么什么是进程呢?顾名思义,进程就是进展中的程序,或者说进程是执行中的程序。当一个程序被加载到内存以后就变为了进程。所以,咱们能够获得:进程=程序+执行。本篇将会对进程、进程模型、进程状态以及进程的缺陷等进行学习,为后续学习进程调度与进程通讯打下坚实基础。编程

1、进程是什么鬼?

1.1 从工做到进程

  进程在Multics操做系统出现以前被叫作工做(Job),工做是IBM用于多道批处理程序设计中的概念。因为历史缘由,Multics操做系统的研发人员不肯意承用IBM发明的术语,因而将工做改成了进程(Process)。并发

1.2 实现CPU的多道编程

  在计算机发展的初期,单一操做员单一控制终端,CPU使用率很低。为了提升CPU利用率,人们想要将多个程序同时加载到计算里并发执行。因而,这些同时存在于计算机内存中的程序就被称为进程。进程的出现,让每一个用户感受到本身在独占CPU。所以,能够说进程就是为了在CPU上实现多道编程而出现的概念,以下图所示。学习

  人们发明进程是为了支持多道编程,而进行多道编程的目的则是为了提升计算机CPU的利用率(或者说系统的吞吐量)。例如,若是一个进程有20%的时间使用CPU进行计算,另外80%的时间用来进行I/O,则在单道编程下CPU的利用率只有20%。单若是同时运行两个这样的进程,即便用2道编程,则CPU只在两个进程同时进行I/O时才会处于闲置状态,所以CPU利用率将会提升到:1-0.8*0.8=0.36=>36%。同理,若是同时运行更多的进程,CPU利用率会逐步提升,直到某个临界点为止。(PS:这里的例子忽略了进程切换所须要的系统消耗)spa

2、进程模型

2.1 三个视角看进程模型

  (1)物理视角:从物理内存的分配来看,每一个进程占用一片内存空间,从这点上看,进程其实就是内存的某片空间。因为在任意时刻,一个CPU只能执行一条指令,所以任意时刻在CPU上执行的进程只有一个,而到底执行哪条指令是由物理程序计数器指定。所以,在物理层面,全部进程共用一个程序计数器,只是CPU在不停地作进程切换操作系统

  (2)逻辑视角:从逻辑层面来看,每一个进程均可以执行,也能够暂时挂起让别的进程执行,以后又能够接着执行。因此,进程须要想办法保持状态才能在下次接着执行时从正确的地点开始。所以,每一个进程都有本身的计数器,记录其下一条指令所在的位置。(从逻辑上来讲,程序计数器能够有多个)线程

  (3)时序视角:从时间来看,每一个进程都必须往前推动。在运行必定时间后,进程都应该完成了必定的工做量。换句话说,每次进程返回,它都处在上次返回点以后。哲学家有云:“一我的不能两次踏入同一条河流”。设计

2.2 进程模型如何实现

  (1)物理基础:进程的物理基础是程序,程序又运行在计算机上,所以计算机上要运行程序首先要解决进程的存储:给进程分配内存,使其安身立命。因为多个进程可能同时并存,所以须要考虑如何让多个进程共享同一个物理内存而不发生冲突。OS经过内存管理来解决这个问题。指针

  (2)进程切换:进程运行其实是指进程在CPU上执行,那么如何将CPU在多个进程之间进行切换也是一个问题。OS经过进程调度来解决这个问题。所谓进程调度,就是决定在何时让什么进程来使用CPU。blog

3、进程的层次与状态

3.1 进程的层次结构

  一个进程在执行过程当中能够经过系统调用建立新的进程,这个新的进程就称为子进程,而建立子进程的进程则被称为父进程进程

  子进程又能够再建立子进程,因而这样子子孙孙地建立下去就造成了所谓的进程树

3.2 进程的状态转换

  基本的进程状态主要有3种:执行、阻塞和就绪,以下图所示:

  那么,进程被挂起阻塞有哪些缘由呢?首先是一个进程在运行过程当中执行了某种阻塞操做,例如读写磁盘。(因为阻塞操做须要等待结果后才能继续执行,所以OS将把这个进程挂起,让其余进程运转)其次是一个进程执行的时间太长了,为了公平,OS将其挂起从而让其余进程也有机会执行。

PS:固然,上述阐述的3种典型状态并非惟一的分类方式,事实上,许多商业OS的进程都不止3个,好比Windows的进程就有7种状态。

4、进程管理概要

4.1 须要的手段

首先看看一我的的出生对一个社会来讲意味着什么?在一我的出生后,医院须要为其创建记录,该记录包括诸如姓名、性别、体重、父母信息、什么时候何地出生等信息,而后会经过该记录来登记户口,办理身份证等等。办完手续以后,这我的就正式存在,称为一个公民。固然,咱们得goverment就能够对这我的进行各类管理了,好比你不能乱说话,不能乱游行等等。

  与一个社会管理人的过程相似,OS要管理进程就须要维护进程的一些信息,OS用于维护进程记录的结构就是进程表或进程控制块(Process Control Block,PCB)。那么进程表里有什么记录呢?通常来讲,维护的记录应该包含:寄存器、程序计数器、状态字、栈指针、优先级、进程ID、建立时间、所耗CPU时间、当前持有的各类句柄等等。

4.2 建立的过程

  通常来讲,OS建立进程的步骤以下图所示:

  在不一样的OS中,建立进程的方法也不一样,例如Windows中是经过系统调用完成进程建立的,这个系统调用就是CreateProcess。

4.3 处理的问题

  人类社会最大的问题就是资源分配,进程管理的最大问题也是如此。虽然进程没有自我意识,但咱们的本性仍是追求公平的。除了公平,还须要考虑:效率。因而,公平与效率就成了进程管理中永恒的主题。

4.4 进程的缺陷

  假定有两部都很好地岛国爱情动做片,都只放映一次,之后就不再放映了。并且,这两部片子仍是同时放映(狗血剧情啊!),还在两个不一样的小房间放映。而你在同一时间只能作一件事情,因此你不得不放弃另一部。进程亦是如此,这也是进程的缺点,若是想要同时作两件或多件事情,进程就不够用了。而且,若是进程在执行的过程当中发生阻塞,例如等待输入,整个进程就将被挂起(暂停),而没法继续执行。这样,即便进程里面有部分工做不依赖于输入数据,也没法推动。

  所以,为了解决上述两个问题,人们发明了线程。

  

  欲知后事如何,还听下回分解。

参考资料

邹恒明,《操做系统之哲学原理》,机械工业出版社

 

相关文章
相关标签/搜索