目录
先来先服务(FCFS, First Come First Serve)
短作业优先(SJF, Shortest Job First)
高响应比优先(HRRN, Highest Response Ratio Next)
程序执行
-
程序顺序执行的特征
顺序性:处理机按照程序所规定的顺序执行,即每一操作结束后开始下一个操作。
封闭性:程序执行时资源的状态(除初始状态外)只有本程序才能改变它,执行结果不受外界因素影响(程序运行时独占全机资源)。
可再现性:环境和初始条件相同,当程序重复执行时,都可获得相同的结果。
-
程序并行执行的特征
间断性:并发执行时,共享系统资源,以及为完成同一项任务而相互合作,程序之间形成了相互制约的关系。
失去封闭性:并发执行的程序共享资源,任一程序在运行时,其他环境都必然会受到其他程序的影响。
不可再现性:程序在并发执行时,由于失去了封闭性,其计算结果必将与并发程序的执行速度有关,从而使程序的执行失去了可再现性。换言之,程序经过多次执行后,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。
进程与线程
进程的概念
-
由于程序并行执行的特征,引入进程的目的是为了使进程实体并发执行,实现操作系统的并发性和共享性(最基本的两个特征)。
-
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,。包括程序的代码本身和当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
-
程序和进程的区别:
程序:是静态的,就是个存放在磁盘里的可执行文件。
进程:是动态的,是程序的一次执行过程,是一个活动的实体。同一个程序多次执行会对应多个进程。
-
进程实体(进程映像)组成——PCB、程序段、数据段
PCB、程序段、相关的数据段构成了进程实体(又称进程映像)
PCB是进程存在的唯一标志。操作系统通过PCB来描述进程的基本情况和活动过程,进而控制管理进程。操作系统需要对各个并发运行的进程进行管理,管理时所需要的信息存储在PCB中。为了使参与并发执行的每个程序(含数据)都能独立地运行,在操作系统中登记状态信息的数据结构,称为进程控制块(PCB)。当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”—— PID(Process ID,进程ID)。操作系统区分各个进程就是通过PID以及进程所属用户ID(UID)来区分的。所以操作系统要记录PID、UID,还要记录给进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件),还要记录进程的运行情况(如:CPU使用时间、磁盘使用情况、网络流量使用情况等)。这些信息都被保存在PCB中。
-
注意:进程则是动态的,进程映像是静态的。
-
PCB是给操作系统用的,程序段和数据段是给进程自己用的。所谓创建进程,实质上是创建进程映像中的PCB,而撤销进程,实质上是撤销进程的PCB。
-
进程典型的定义有:
①进程是程序的一次执行过程。
②进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
③进程是具有独立功能的程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单位。 -
引入进程实体后,进程可定义为:“进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。”
要注意这里说的系统资源是指处理机、存储器和其他设备服务于某个进程的“时间”,例如把处理机资源理解为处理机的时间片才是准确的。因为进程是这些资源分配和调度的独立单位,即“时间片”分配的独立单位,这就决定了进程一定是一个动态的、过程性的概念。
进程的特征
进程是由多道程序的并发执行而引出的,和程序是两个不同的概念。拥有以下特征:
并发性:指多个进程实体同时存于内存中,能在一段时间内运行。并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是是程序能与其他进程的程序并发执行,以提高资源利用率。
动态性:动态性是进程最基本的特征。进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。
独立性:指进程实体(PCB,程序段,数据段)是能独立运行、独立获得资源和独立接受调度的基本单位。凡未建立PCB的程序,都不能作为一个独立的单位参与运行。
异步性:由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果的不可再现性,在操作系统中必须配置相应的进程同步机制。
结构性:每个进程都配置一个PCB对其进行描述。
进程的状态与转换
-
进程的三种基本状态
由于多个进程在并发执行时共享系统资源,致使它们在运行过程中呈现间断性的运行规律。
- 就绪态。进程获得了除处理机外的一切所需资源,一旦得到处理机,便可立即运行。系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列。
- 执行态。进程正在处理机上运行。在单处理机环境下,每个时刻最多只有一个进程处于运行态。而在多处理机系统中,则有多个进程处于执行状态。
- 阻塞态。又称等待态或封锁态。指正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行时的状态,亦即进程的执行受到阻塞。此时引起进程调度,OS把处理机分配给另一个就绪进程,而让受阻进程处于暂停状态,这种暂停状态称为阻塞态。通常系统将处于阻塞态的进程也排成一个队列,称该队列为阻塞队列。在较大的系统中,为了提高系统效率,根据阻塞原因的不同会设置多个阻塞队列。
注意:区别就绪态和阻塞态。就绪态是指进程仅缺少处理机,只要获得处理机资源就立即运行;而阻塞态是指进程需要其他资源(包括处理机)或等待某一事件。
之所以把处理机和其他资源划分开,是因为在分时系统的时间片轮转机制中,进程在运行过程中实际上要频繁地转换到就绪态;而其他资源(如外设)的使用和分配或某一事件的发生(如I/O操作的完成)对应的时间相对来说很长,进程转换到等待态的次数也相对较少。
-
创建状态和终止状态
- 创建态。进程正在被创建,尚未转到就绪态。创建进程通常需要多个步骤:首先申请一个空白的PCB,并向PCB中填写一些控制和管理进程的信息;然后又系统为该进程分配运行时所必需的资源;最后把该进程转入就绪态。
- 结束态。进程正从系统中消失,可能是进程正常结束或其他原因中断退出运行。进程需要结束运行时,系统首先必须将该进程置为结束态,然后进一步处理资源释放和回收等。
进程PCB中,会有一个变量 state 来表示进程的当前状态。方便对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来。
-
挂起操作和进程状态的转换
挂起操作:当该操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。与挂起操作对应的操作是激活操作。
正在执行的进程挂起后,暂停执行。
就绪状态的进程挂起后不接受调度。
阻塞进程挂起后不能直接转换为就绪(需先激活)。
-
挂起操作的引入是基于系统和用户的如下需要:
①终端用户的需要。当终端用户在自己的程序运行期间发现有可疑问题,希望暂停自己的程序的运行。
②父进程请求。有时父进程希望挂起自己的某个子进程。
③负荷调节的需要。系统把一些不重要的进程挂起。
④操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。 -
挂起和阻塞态的区别:
挂起:由系统或程序发出,移至辅存中去。(不释放CPU,可能释放内存,移到外存去)
阻塞态:在抢占资源中得不到资源,被动的挂起在内存,等待某种资源或信号量将它唤醒。(释放CPU,不释放内存)
其中,创建→活动就绪:在当前系统的性能和内存的容量均允许的情况下,完成对进程创建的必要操作后,相应的系统进程将进程的状态转换为活动就绪状态。
创建→静止就绪:考虑到系统当前资源状况和性能的要求,不分配给新建进程所需资源,主要是内存,相应的系统将进程状态转为静止就绪状态,被安置在外存,不参与调度,此时进程创建工作尚未完成。
-
进程管理中的数据结构
在操作系统中登记状态信息的数据结构,在操作系统中登记状态信息的数据结构,用于控制和管理进程的称为进程控制块(PCB)。
PCB作为进程实体的一部分,记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。它使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。
-
PCB的具体作用:
①作为独立运行基本单位的标志。PCB是进程存在的唯一标志。
②能实现间断性运行方式。在多道程序环境下,当进程因阻塞而暂停运行时,它必须保留自己运行时的CPU现场信息。在有了PCB后,系统就可将CPU现场信息保存在被中断进程的PCB中,供该进程再次被调度执行时恢复CPU现场时使用。
③提供进程管理所需信息。
④提供进程调度所需信息。
⑤实现了其他进程的同步通信。 -
PCB中的信息:
①进程标识符。进程标识符用于唯一地标识一个进程。其中包括外部标识符(创建者提供)和内部标识符(OS设置)。
②处理机状态。也称为处理机的上下文。主要由处理机中各种寄存器中的内容组成,包括通用寄存器、指令计数器、程序状态字PSW、用户栈指针等。
③进程调度信息。包括进程状态、进程优先级、事件和进程调度所需的其他信息。
④进程控制信息。包括程序和数据的地址、进程同步和通信机制、资源清单和链接指针。 -
进程的组织方式
线性方式。即将系统中所有的PCB都组织在一张线性表中,将该表的首地址存放在内存的一个专用区域中。该方法实现简单、开销小,但每次查找时的需要扫描整张表,因此适合数目不多的系统。
链接方式。即把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。
索引方式。即系统根据所有进程状态的不同,建立几张索引表。
进程的通信
-
进程通信是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。
PV操作是低级通信方式,高级通信方式是指以较高的效率传输大量数据的通信方式。高级通信方式方法主要有以下三类。
-
共享存储,在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换。为避免出错,各个进程对共享空间的访问应该是互斥的。各个进程可使用操作系统内核提供的同步互斥工具(如P、V操作)。操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,而数据交换则由用户自己安排读/写指令完成。</