操作系统2019-08-27

整理笔记
死锁习题
PV操作
调度算法

操作系统试题一

(1)、CLOCK算法的关键是:每一次进行替换指针的位置就从替换数移到下一个位置,每一次进行访问时,则指针保持不动。
eg:在某请求分页管理系统中,一个作业共5页,作业执行时一次访问如下页面:1,4,3,1,2,5,1,4,2,1,4,5,若分配给该作业的主存块数为3,采用Clock页面置换算法,试求出缺页中断的次数及缺页率。

图片.png

(2).在请求分页管理系统中,若采用FIFO页面淘汰算法,则当分配的页面数增加时,缺页中断次数可能增加或减少

随着内存的增大:缺页次数增加的现象:称之为 Belady 现象(异常现象);
我们都知道常用的页面淘汰算法有五种:
1 FIFO: 先进先出
2 :最近最久未用置换算法 LRU
3 LFU 最近访问频率最低的
4 NUR 最近没有使用页面淘汰算法( clock
5: 最佳置换算法:( OPT
这五种算法可见简单的将其分为两类,堆栈型算法和非堆栈型算法;
注意:堆栈型算法:最新压入到堆栈中的永远在栈顶;栈顶是刚刚访问过的,栈底是最久没有访问过的;
LRU和LFU、OPT都 是堆栈型算法,
但是 FIFO非堆栈型算法
非堆栈式算法可能出现 Belady 问题,是栈式算法不会出现类似问题;

所谓Belady现象是指:管理中,发生缺页时的置换算法采用FIFO( 先进先出 )算法时,如果对-个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。

缺页中断的次数是由页面数量,页面置换算法与页面走向三个因素决定的,题目中采用FIFO,页面数增大,但是页面走向不确定,所以缺页次数可能增大页可能减小,比如Belady异常。

(3). spooling技术是空间换取时间的技术:(假脱机技术):
(白话:申请打印机的一个进程现在输出井上申请一个空闲盘块区,将打印的数据送人其中,若该打印机空闲,则占用打印,否则加入等待队列。这样,对每一个进程而言,打印机是独享的,对于打印机而言,是被共享的)

(1)提高了I/O速度.从对低速I/O设备进行的I/O操作变为对输入井或输出井的操作,如同脱机操作一样,提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾.
(2)设备并没有分配给任何进程.在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表.
(3)实现了虚拟设备功能.多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.

SPOOLing技术如何使一台打印机虚拟成多台打印机? 答:将一台独享打印机改造为可供多个用户共享的打印机,是应用SPOOLing技术的典型实例。具体做法是:系统对于用户的打印输出,但并不真正把打印机分配给该用户进程,而是先在输出井中申请一个空闲盘块区,并将要打印的数据送入其中;然后为用户申请并填写请求打印表,将该表挂到请求打印队列上。若打印机空闲,输出程序从请求打印队首取表,将要打印的数据从输出井传送到内存缓冲区,再进行打印,直到打印队列为空。

(4)临界资源多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如输入机、打印机磁带机等。如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
进程同步:进程同步机制的主要任务,是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则或时序共享系统资源,并能很好地相互合作,从而使进程的执行具有可再现性。
进程的异步性:在多道程序环境下,由于存在着间接相互制约关系与直接相互制约关系,进程在运行过程中是否能获得处理机运行、以及以怎样的速度运行,并不能由进程自身所控制,由此会产生对共享变量或数据结构等资源不正确的访问次序,从而造成进程每次执行结果的不一致--->进程的异步性。这种差错往往与时间有关,为了杜绝这种差错,必须对进程的执行次序进行协调,保证诸进程能按序执行。
(5).提出分页管理的目的是为了提高内存空间的利用率;提出分段管理的目的除了可以提高内存空间的利用率(相对分区管理而言)外,主要是为了更好的实现程序的共享和动态链接,方便用户编程。p158
磁盘是块设备,打印机与键盘是字符设备。I/O设备大致分为两类:块设备和字符设备。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备。字符设备是指在I/O传输过程中以字符为单位进行传输的设备

.png

有一个两道作业的批处理系统,作业调度采用短作业优先的调度算法,进程调度采用抢占式调度算法....例题


进程同步(pv操作):

信号量S是一个特殊变量,包含一个整数值,在信号量上可以执行两个原子操作:
wait(S)用来接收信号(P操作)
signal(S)用来发送信号(V操作),
这两个操作仅能对信号量处于加1或减一操作,意味着每次只能对某类临界资源进行一个单位的申请或释放。
吃苹果例子q

设信号量的当前值为x:
信号量的值如果为负数(不为空), 那么等待的进程数为 -x个;;信号量的值如果为正数, 那么空闲的资源数为x个。

进程同步的四种方法:

进程同步的四种方法
互斥量是信号量的一种特殊情况,当信号量的最大资源数=1就是互斥量了。互斥其实是信号量的一种特殊形式。互斥可以保证在某一时刻只有一个线程可以拥有临界资源。信号量可以保证在某一时刻有指定数目的线程可以拥有临界资源。


批处理系统(Batch OS)
多道程序系统(Multiprogramming System)
分时系统(Time-sharing System)
实时系统(Real-time System)
操作系统操作(Operatin-system Operations)

批处理系统
批处理系统主要用于大型系统,用于提高作业吞吐量(Throughout,单位时间内执行作业的数量)的系统。
批处理中基本无交互,存在两种调度:

  1. Job Schedule(作业调度),即将所要做的作业放到内存上,主要负责工作的道数,属于高级调度。
  2. CPU Schedule(进程调度),即在内存中CPU选择执行某个工作,属于低级调度。

多道程序系统
优点:1. Improve CPU utilization 2% –> 100%(in theory)
注:但程序道数越多,系统消耗(overhead)越高,会造成CPU有效利用率降低

  1. Improve memory and I/O device utilization.
  2. Increase system throughout.
    特点:
  3. 多道
  4. 无序(unordered),执行是无序的,即用户不知道进程状态,但系统知道当前进程的状态
  5. 调度性(scheduling)
    缺点:交互性低

分时系统
定义:将CPU的执行时间分成一个个的时间片(time slice),多用户中的每个用户轮转时间片,非常适合交互型作业。
Memory sharing(储存共享) + time sharing(时间共享) –> multiprogramming(多道系统) + interaction(交互)
时间片的选择必须大雨系统内的中断切换时间,且时间段切换需要有度!!!
分时系统特点:

  1. 交互性强,因其主要为交互型作业设计;
  2. 多道(路)性;
  3. 及时性;
  4. 独占性。
    影响分时操作系统性能的因素:
  5. 用户数目;
  6. 时间片大小;
  7. 每次时间片切换是对换的数据量。
    分时系统是一个通用系统,即不限制任务的数目和状态。

实时系统:
定义:实时系统主要用于专用系统(used in dedicated application),有着非常严格的固定时间要求(well-defined fixed-time constraints)。
按照deadline不同可分为硬实时(hard real-time)和软实时(soft real-time):
硬实时操作系统: deadline要求高,即要求在很短的时间片内处理

  1. Secondary storage (disk) limited or absent;
  2. Data stored in memory, or read-only memory(ROM).
    软实时操作系统:deadline要求较低,即可在较长时间片内处理,但是,还是需要在一个时间片内处理
  3. Limited utility in industrial control of robotics;
  4. Useful in multimedia, virtual reality, etc.
    实时系统特性:
  5. 及时性;
  6. 独占性(双工:两端都有计算机做相同操作以防一端计算机出现故障,用于火箭和导弹控制)
  7. 多路性;
  8. 交互性(略有限)。

操作系统操作:
Dual-mode operations(双模式操作):User mode(用户模式/目标态) && kernel mode(内核模式/管理态)
相应的,操作系统指令分为特权指令(privileged instruction)和非特权指令。
特权指令:clear memory, set time, I/O instruction.
非特权指令:read time
对于将数据输出到显示屏的操作,就通过了系统调用(system call)产生了一次自陷(trap)从而从用户模式切换到了内核模式。
在IO的读写操作中,操作系统如何判断是否在该进程指定的内存空间进行读写操作?
CPU中配置了一组寄存器(base register & length register),在每次进行I/O操作时即可判断该进程是否越界(< base || > base + length)。当出现以上两种状态时CPU即产生越界中断。每个进程的base register & length register均存储在操作系统区的进程控制块(PCB: Process Control Block)中,当每个进程被创建之初,该进程控制块就被创建与操作系统区,里面记录了该进程的相关信息,类似于一种数据结构。

批处理系统常用调度算法:
①、先来先服务:FCFS
②、最短作业优先
③、最短剩余时间优先
④、响应比最高者优先
分时系统调度算法:
①、轮转调度
②、优先级调度
③、多级队列调度
④、彩票调度
实时系统调度算法:
①、单比率调度
②、限期调度
③、最少裕度法

银行家算法

银行家算法.png



第四章

王道:

第一章:计算机系统概述

  1. 操作系统的并发性是通过分时实现的;并行性需要有相关硬件的支持,如多流水线或多处理机硬件环境。
    异步:多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停的,它以不可预知的速度向前推进,这就是程序的异步性;异步性使得操作系统运行在一种随机的环境下,可能导致进程产生与时间有关的错误(就像对全局变量的访问顺序不当会导致程序出错一样),然而,只要运行环境相同,操作系统就需保证多次运行进程后都能获得相同的结果。

第二章: 进程管理

2.1 进程、线程

  1. PCB是进程存在的唯一标志。从结构上看,进程实体是由程序段、数据段、PCB三部分组成。进程需要结束运行时,系统首先置该进程为结束态,然后再进一步处理资源释放与回收等工作。一个进程从运行态变成阻塞态是主动的行为,从阻塞态变成就绪态是被动行为,需要其他相关进程的协助。任何进程都是在操作系统的内核支持运行的,是与内核紧密相关的。
  2. 把进程控制用的程序段称为原语,原语的特点是在执行过程中不允许中断,它是一个不可分割的基本单位。(p31)。。先有资源的调度,然后才有进程的切换。
    进程的最大数目取决于系统内存的大小,因为进程创建需要占用系统内存来存放PCB的数据结构。

p(33):
处理机中各寄存器值,当进程被切换时,处理机状态信息 都必须保存在相应的PCB中,以便在该进程重新执行时,能再从断点继续执行。
在一个系统中,通常存在着许多进程,有的处于就绪状态,有的处于阻塞状态,而且阻塞的原因各不相同。为了方便进程的调度和管理,需要将各进程的PCB用适当的方法组织起来。目前,常用的组织方式有链接方式和索引方式两种。链接方式将同一状态的PCB链接成一个队列,不同状态对应不同的队列,也可以把处于阻塞状态的进程的PCB,根据其阻塞原因的不同,排成多个阻塞队列。索引方式是将同一状态的进程组织在一个索引表中,索引表的表项指向相应的PCB,不同状态对应不同的索引表,如就绪索引表和阻塞索引表等。
程序段 就是能被进程调度程序调度到CPU执行的程序代码段。注意,程序可以被多个进程共享,就是说多个进程可以运行同一个程序。
一个进程的 数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果。
内核态:
CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序。

用户态:
只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取。

为什么要有用户态和内核态:
由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 – 用户态 和 内核态。

用户态与内核态的切换:
所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输入等. 而唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作.
这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令
这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)

切换的工作流程如下:
① 用户态程序将一些数据值放在寄存器中, 或者使用参数创建一个堆栈(stack frame), 以此表明需要操作系统提供的服务.
② 用户态程序执行陷阱指令
③ CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的一部分, 他们具有内存保护, 不可被用户态程序访问
④ 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler).
他们会读取程序放入内存的数据参数, 并执行程序请求的服务
⑤ 系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果

  1. 进程通信是指进程之间的信息交换,PV操作是低级操作方式,高级通信方式是指以较高的效率传输大量数据的通信方式,高级通信方式有三种:共享存储,消息传递,管道通信,再加:文件映射,套接字。

① 共享存储

在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换。在对共享空间进行写/读操作时,需要使用同步互斥工具(如 P操作、V操作),对共享空间的写/读进行控制。共享存储又分为两种:低级方式的共享是基于数据结构的共享;高级方式则是基于存储区的共享。操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,而数据交换则由用户自己安排读/写指令完成。
需要注意的是,用户进程空间一般都是独立的,要想让两个用户进程共享空间必须通过特殊的系统调用实现,而进程内的线程是自然共享进程空间的。
共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种最有效的方式,不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进程。
注意共享内存并未提供同步机制,也就是说,在第一个进程结束对共享内存的写操作之前,并无自动机制可以阻止第二个进程开始对它进行读取。所以通常需要用其他的机制来同步对共享内存的访问,例如前面说到的信号量。
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据:一次从输入文件到共享内存区,另一次从共享内存区到输出文件.

② 消息传递

在消息传递系统中,进程间的数据交换是以格式化的消息(Message)为单位的。若通信的进程之间不存在可直接访问的共享空间,则必须利用操作系统提供的消息传递方法实现进程通信。进程通过系统提供的发送消息和接收消息两个原语进行数据交换。
直接通信方式:发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息。
间接通信方式:发送进程把消息发送到某个中间实体中,接收进程从中间实体中取得消息。这种中间实体一般称为信箱,这种通信方式又称为信箱通信方式。该通信方式广泛应用于计算机网络中,相应的通信系统称为电子邮件系统。

③ 管道通信
管道实际上是一种固定大小的缓冲区,管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在于内存中。它类似于通信中半双工信道的进程通信机制,一个管道可以实现双向 的数据传输,而同一个时刻只能最多有一个方向的传输,不能两个方向同时进行。管道的容 量大小通常为内存上的一页,它的大小并不是受磁盘容量大小的限制。当管道满时,进程在 写管道会被阻塞,而当管道空时,进程读管道会被阻塞。

管道通信是消息传递的一种特殊方式。所谓“管道”,是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入(写)管道;而接收管道输出的接收进程(即读进程),则从管道中接收(读)数据。为了协调双方的通信,管道机制必须提供以下三方面的协调能力:互斥、同步和确定对方的存在。
管道是一种文件。

  1. 线程
    引入进程的目的是为了更好地使多道程序并发执行,提高资源利用率和系统吞吐量,增加并发程度;
    引入线程的目的是为了减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
    线程最直接的理解是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合、堆栈 组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单元,线程自己不拥有系统资源,只拥有一点儿在运行中不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建于撤销另一个线程,同一个进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪阻塞运行三种基本状态。
    引入线程后,进程的内涵发生改变,进程只作为除CPU外系统资源的分配单元,线程则作为处理机的分配单元。----->线程是独立调度的基本单位,进程是拥有资源的基本单位。
    线程不能创建进程。

2.1.8 习题

一.3、进程之间交换数据不能通过 访问进程地址空间 的途径进行。因为:每个进程包含独立的地址空间,进程各自的地址空间是私有的,只能执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误。因此进程之间不能直接交换数据,但可以利用OS提供的共享文件、消息传递、共享存储区等进行通信。
一.4、 OS 引入进程的概念,是为了从变化的角度动态地分析和研究程序的执行。。进程不一定需要用户显式地撤销,进程可在完成时撤销或在出现内存错误时撤销。
一.7、一个进程的状态变化可能会引起另一个进程的状态变化:eg:一个进程的时间片用完,就会引起另一个就绪状态进程的运行;可能不会的情况:eg:一个进程有阻塞态转为就绪态就不会引起其他进程的状态变化。
一.12、并发进程失去封闭性,是指并发进程共享变量,其执行结果与速度有关:程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响,也就是说,进程在执行过程中不管是不是停顿地执行、还是走走停停,进程的执行速度都不会改变它的执行结果,失去封闭性后,不同速度下的执行结果不同。
一.15、不论是系统支持的线程还是用户级线程,其切换不一定需要内核的支持。eg:若有一个内核进程,它映射到用户级后有多个线程,那么这些线程之间的切换不需要在内核级切换进程,也就不需要内核的支持。在用户级线程中,有关线程管理的所有工作都由应用程序完成,无需内核的干预,内核意识不到线程的存在。
用信箱实现进程间互通信息的通信机制有两个通信原语:发送原语、接受原语。
一.20、C语言编写的程序在使用内存时一般分为三个段:正文段(即代码和赋值数据段)、数据堆段、数据栈段;二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段;由此可以确定全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级在PCB内。
一.30、 用户登录成功会导致创建新进程:因为 用户登录成功后,系统要为此创建一个用户管理的进程,包括用户桌面、环境等等,所有用户进程都会在该进程下创建和管理。
设备分配不会创建新进程:因为 设备分配是通过在系统中设置相应的数据结构实现的,不需要创建进程,这是操作系统中I/O核心子系统的内容。

————————————————————————

2.2 处理机调度

处理机调度是对处理机进行分配,即从就绪队列中按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。



操作系统视频课

教学内容:
① 操作系统结构
② 中断及系统调用
③ 内存管理
④ 进程及线程
⑤ 处理机调度
⑥ 同步互斥
⑦ 文件系统
⑧ I/O子系统
实验:
① 系统启动及中断
② 物理内存管理
③ 虚拟内存管理
④ 内核线程管理
⑤ 用户进程管理
⑥ CPU调度
⑦ 同步与互斥
⑧ 文件系统


  1. 计算机系统:包括 硬件子系统 与 软件子系统
    硬件:cpu、主存储器、I/O控制系统,外围设备
    软件:包括系统软件(关键系统软件:操作系统 与 语言处理程序)、支撑软件、应用软件。

图1 实验.png
图2 实验.png
图3 实验环境.png

一、进程:

进程包含了正在运行的一个程序的所有状态信息:包括(代码、数据、状态寄存器{CPU状态CRO、指令指针IP}、通用寄存器{AX、BX...}进程占用系统资源{打开文件、已分配文件...})---->这些内容构成进程控制块

1. 进程

1.进程与程序的区别
进程是动态的,程序是静态的,进程是程序的执行,进程有用户态;进程是一个状态变化的过程,程序可长久保存;进程的组成包括程序、数据、进程控制块
2. 进程控制块(PCB):管理和运行进程所用的信息集合。对进程的所有操作都是对进程操作块操作的(PCB)。
操作系统用PCB描述进程的基本情况以及运行变化的过程;PCB是进程存在的唯一标志,每个进程在OS中有一个对应的PCB;

2. 进程控制块(PCB)

1.> 进程控制块包含:①进程标识信息 ② 处理机现场保存 ③ 进程控制信息
、进程控制信息:包括① 调度和状态信息:调度进程和处理机使用情况;② 进程间通信信息:进程间通信相关的各种标识;③ 存储管理信息:指向进程映像存储空间数据结构 ④ 进程所用资源:进程使用的系统资源,如打开文件等; ⑤ 有关数据结构连接信息:与PCB相关的进程队列。

  1. 进程控制块的组织
    ① 链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表;
    ② 索引表:指针

3. 进程的状态

  1. 进程的生命周期划分:进程创建、执行、等待、抢占、唤醒、结束
    进程创建
    1>. 系统初始化时
    2>. 用户请求创建一个新进程
    3>. 正在运行的进程执行了创建进程的系统的调用
    进程阻塞(等待):当一个进程在逻辑上不能继续运行时,它就会被阻塞,典型的例子①它在等待可以使用的输入②能够运行的进程被迫停止,因为操作系统调度另一个进程占用了CPU。(在第一种情况下,进程挂起是程序自身固有的原因(在键入用户命令行之前,无法执行命令);第二种情况则是由系统技术上的原因引起的(由于没有足够的cpu,所以不能使每个进程都有一台它私用的处理器))只有进程自身才能知道何时需要等待某种事件的发生。
    进程抢占:
    1>. 高优先级进程就绪
    2>. 进程执行当前时间用完
    唤醒进程:
    1>. 被阻塞进程需要的资源可被满足
    2>. 被阻塞进程等待的事件到达
    进程只能被其他进程或操作系统唤醒。
  2. 进程的三种状态
    ① 运行态(该时刻进程实际占用CPU)
    ② 就绪态(可运行,但因为其他进程正在运行而暂时停止)
    ③ 阻塞态(除非某种外部事件发生,否则进程不能运行 )
    调度程序的主要工作就是决定应当运行哪个进程、何时运行及它应该运行多长时间 。
    运行--->就绪:处于运行状态的进程在其运行过程中,由于分配给它的CPU时间片用完而让出CPU。
    图4 三状态进程模型.png

4. 进程挂起

三状态进程模型主要讨论与CPU相关的这些状态,实际上在进程当中还有一类与存储有关,也就是说进程一部分放在外存里的,与虚拟存储相关联的,这就是挂起进程模型。
处于挂起状态的进程映像在磁盘上,目的是减少进程占用内存,那么更多的内存可以给其他进程使用。
(新加的两种状态,是描述在外存中的进程状态,其他的状态是不会在外存里的):
等待(阻塞)挂起:进程在外存并等待某事件的出现(相当于加一个关于进程位置的信息。)
就绪挂起:进程在外存,但只要进入内存,即可运行。

图5 进程挂起模型.png

1. 挂起:把一个进程从内存转到外存
①等待到等待挂起:没有进程处于就绪状态或就绪进程要求更多内存资源。
②就绪到就绪挂起:当有高优先级等待(系统认为很快就绪的)进程和低优先级就绪进程。
③运行到就绪挂起:对抢先式分时系统,当有高优先级等待挂起进程因事件出现而进入就绪挂起,而这时没有足够空间,就把正在运行的这个进程就绪挂起。
在外存时的状态转换:
① 等待挂起到就绪挂起:当有等待挂起进程因相关事件出现。
2.激活:把一个进程从外存转到内存:
① 就绪挂起到就绪:没有就绪进程或挂起的就绪进程优先级高于就绪进程。
② 等待挂起到等待: 当一个进程释放足够内存,并有高优先级等待挂起进程。

5. 状态队列

根据进程状态不同,PCB加入相应队列,进程状态变化时,它所在的PCB会从一个队列换到另一个 。(不同队列表示不同状态(就绪队列、各种等待队列))

二、线程

线程是进程的一部分,描述指令流执行状态,它是进程中的指令执行流的最小单位,是CPU调度的基本单位。 一个进程里有多个线程,线程并发 。
原来的进程变成是资源分配的角色,与指令流相关的东西就不放在进程里了,每个指令流调用函数时,它必须有自己独立的堆栈,把它剥离出来,变成这里的线程的组成部分,线程是负责处理机调度的对象,,把关于执行流的状态信息变成是线程控制块,线程控制块从属于进程控制块(PCB),用指针指向PCB,,因此可以在一个进程里提高并发程度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容

  • 输入输出系统 ——I/O系统 I/O系统的组成 包括: 需要用于输入、输出和存储信息的设备; 1、需要相应的设备控...
    一萌新一阅读 1,101评论 0 1
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,743评论 0 5
  • # 第一章复习题答案p3 1、计算机系统由哪些部分组成? 2、什么是计算机的操作系统?答:操作系统是计算机的一种系...
    叛逆闲人阅读 3,134评论 0 0
  • 第一章:操作系统引论 计算机系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的...
    溪的风阅读 2,702评论 0 2
  • 01 第一次约会 正月十五闹元宵,听说晚上有舞龙灯,这给了我们初次约会的契机。借着夜幕的掩护,我忐忑地坐在他...
    小林魔女阅读 762评论 4 11