第一次作业:深入源码分析进程模型

时间:2021-09-02 07:08:46

作业内容

挑选一个开源的操作系统,深入源码分析其进程模型,具体包含如下内容:

  • 操作系统是怎么组织进程的
  • 进程状态如何转换(给出进程状态转换图)
  • 进程是如何调度的
  • 谈谈自己对该操作系统进程模型的看法

1、什么是进程

  进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

  狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
  广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是 操作系统动态执行的 基本单元,在传统的 操作系统中,进程既是基本的 分配单元,也是基本的执行单元。
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括 文本区域(text region)、数据区域(data region)和 堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有 处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为 进程 [3] 
  进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
  进程具有如下特征:
  动态性:进程的实质是程序在 多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
  并发性:任何进程都可以同其他进程一起并发执行
  独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
   异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
  结构特征:进程由程序、数据和 进程控制块三部分组成。
  多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
 
2、进程的组织
 
  进程程序块:
  进程创建时,操作系统就新建一个PCB结构,它之后就常驻内存,任一时刻可以存取, 在进程结束时删除。PCB是进程实体的一部分,是进程存在的唯一标志。

当创建一个进程时,系统为该进程建立一个PCB;当进程执行时,系统通过其PCB 了 解进程的现行状态信息,以便对其进行控制和管理;当进程结束时,系统收回其PCB,该进 程随之消亡。操作系统通过PCB表来管理和控制进程。

表2-1 PCB通常包含的内容
进程描述信息 进程控制和管理信息 资源分配清单 处理机相关信息
进程标识符(PID) 进程当前状态 代码段指针 通用寄存器值
用户标识符(UID) 进程优先级 数据段指针 地址寄存器值
  代码运行入口地址 堆栈段指针 控制寄存器值
  程序的外存地址 文件描述符 标志寄存器值
  进入内存时间 键盘 状态字
  处理机占用时间 鼠标  
  信号量使用    

表2-1是一个PCB的实例,PCB主要包括进程描述信息、进程控制和管理信息、资源 分配清单和处理机相关信息等。各部分的主要说明如下:

  1) 进程描述信息
  进程标识符:标志各个进程,每个进程都有一个并且是唯一的标识号。
  用户标识符:进程归属的用户,用户标识符主要为共享和保护服务。

  2) 进程控制和管理信息
  进程当前状态:描述进程的状态信息,作为处理机分配调度的依据。
  进程优先级:描述进程抢占处理机的优先级,优先级高的进程可以优先获得处理机。

  3) 资源分配清单,用于说明有关内存地址空间或虚拟地址空间的状况;所打开文件的 列表和所使用的输入/输出设备信息。

  4) 处理机相关信息,主要指处理机中各寄存器值,当进程被切换时,处理机状态信息 都必须保存在相应的PCB中,以便在该进程重新执行时,能再从断点继续执行。

  在一个系统中,通常存在着许多进程,有的处于就绪状态,有的处于阻塞状态,而且阻塞的原因各不相同。为了方便进程的调度和管理,需要将各进程的PCB用适当的方法组织起来。目前,常用的组织方式有链接方式和索引方式两种。链接方式将同一状态的PCB链接成一个队列,不同状态对应不同的队列,也可以把处于阻塞状态的进程的PCB,根据其阻塞原因的不同,排成多个阻塞队列。索引方式是将同一状态的进程组织在一个索引表中,索引表的表项指向相应的PCB,不同状态对应不同的索引表,如就绪索引表和阻塞索引表等。
  
   程序段
  程序段就是能被进程调度程序调度到CPU执行的程序代码段。注意,程序可以被多个进程共享,就是说多个进程可以运行同一个程序。
 
  数据段
  一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。
 
3、状态
第一次作业:深入源码分析进程模型 进程的三个基本状态
  进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。
  1) 就绪状态 (Ready)
  进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个 优先级来划分 队列。例如,当一个进程由于时间片用完而进入 就绪状态时,排入低 优先级队列;当进程由 I/O操作完成而进入就绪状态时,排入高优先级队列。
  2) 运行状态(Running):
  进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在 阻塞状态),通常会自动执行系统的空闲进程。
  3) 阻塞状态( Blocked):
由于进程等待某种条件(如I/O操作或 进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。
 
4、进程调度
 
  无论是在 批处理系统还是 分时系统中,用户进程数一般都多于 处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用 处理机。这就要求进程调度程序按一定的策略,动态地把 处理机分配给处于就绪队列中的某一个 进程,以使之执行。
  非剥夺方式:
  分派程序一旦把 处理机分配给某进程后便让它一直运行下去,直到进程完成或发生
第一次作业:深入源码分析进程模型 进程调度
某事件而阻塞时,才把处理机分配给另一个进程。
  剥夺方式:
  当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的 处理机,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、 时间片原则。
  例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。假如它们就按P1、P2、P3的 顺序执行,且不可剥夺,则三进程各自的 周转时间分别为20、24、
26个单位时间,平均 周转时间是23.33个时间单位。
  假如用 时间片原则的剥夺调度方式,可得到:
  可见:P1、P2、P3的 周转时间分别为26、10、6个单位时间(假设时间片为2个单位时间),平均周转时间为14个单位时间。
  衡量进程调度性能的指标有: 周转时间、响应时间、CPU-I/O执行期。
   算法:
  先进先出:
  算法总是把 处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。
  例如,有三个进程P1、P2和P3先后进入就绪 队列,它们的执行期分别是21、6和3个单位时间,执行情况如下图:
  对于P1、P2、P3的 周转时间为21、27、30,平均周转时间为26。可见,FIFO算法服务质量不佳,容易引起作业用户不满,常作为一种辅助 调度算法
  
  短进程优先:
  最短CPU运行期优先 调度算法(SCBF--Shortest CPU Burst First)
  该算法从就绪 队列中选出下一个“CPU执行期最短”的进程,为之分配 处理机
  例如,在就绪 队列中有四个进程P1、P2、P3和P4,它们的下一个执行
第一次作业:深入源码分析进程模型 进程调度
期分别是16、12、4和3个单位时间,执行情况如下图:
P1、P2、P3和P4的 周转时间分别为35、19、7、3,平均周转时间为16。
该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测
  
  轮转法:
  前几种算法主要用于 批处理系统中,不能作为 分时系统中的主 调度算法,在分时系统中,都采用 时间片轮转法。
  简单轮转法:系统将所有就绪进程按FIFO规则排队,按一定的时间间隔把 处理机分配给队列中的进程。这样,就绪队列中所有进程均可获得一个时间片的 处理机而运行。
  多级 队列方法:将系统中所有进程分成若干类,每类为一级。
  
  多级反馈队列:
  多级反馈 队列方式是在系统中设置多个就绪队列,并赋予各队列以不同的优先权。
 
5、浅谈操作系统
  操作系统是 用户计算机接口,同时也是计算机 硬件和其他 软件的接口。 操作系统的功能包括管理 计算机系统硬件、软件及数据资源, 控制程序运行,改善 人机界面,为其它 应用软件提供支持,让 计算机系统所有资源最大限度地发挥作用,提供各种形式的 用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着 计算机硬件资源,同时按照 应用程序的资源请求,分配资源,如:划分 CPU时间, 内存空间的开辟,调用 打印机等。
  从1946年诞生第一台电子计算机以来,它的每一代进化都以减少 成本、缩小 体积、降低 功耗、增大 容量和提高 性能为目标,随着计算机硬件的发展,同时也加速了操作系统的形成和发展。
  今日情况:
  大型机与嵌入式系统使用很多样化的操作系统。在服务器方面Linux、UNIX和 WindowsServer占据了市场的大部分份额。在超级计算机方面,Linux取代Unix成为了第一大操作系统,截止2012年6月,世界超级计算机500强排名中基于 Linux的超级计算机占据了462个席位,比率高达92%。随着智能手机的发展,Android和iOS已经成为目前最流行的两大手机操作系统。  
  2012年,全球 智能手机操作系统市场份额的变化情况相对稳定。智能手机操作系统市场一直被几个手机制造商巨头所控制,而安卓的垄断地位主要得益于三星智能手机在世界范围内所取得的巨大成功。2012年第三季度,安卓的市场份额高达74.8%,2011年则为57.4%。2013年第一季度,它的市场份额继续增加,达到75%。虽然 Android 占据领先,但是苹果 iOS 用户在应用上花费的时间则比 Android 的长。虽然在这方面 Android 的数字一度接近苹果,但是像 iPad 3 这样的设备发布之后,苹果的数字还是会进一步增长。Windows Phone 系统在 8.1 版发布后市场份额稳步提高,应用生态正在改善,众多必需应用不断更新,但是速度还略嫌迟缓。微软收购了诺基亚,发展了许多OEM厂商,并不断发布新机型试图扭转WP的不利局面,小有成效。——百度百科