操作系统 整理

第一章 绪论

1.操作系统的地位:紧贴系统硬件之上,所有其他软件之下,是其他软件的共同环境
2.操作系统的定义:操作系统是计算机系统中的一个系统软件,它是这样一些程序模块的集合——它们能以尽量有效、合理的方式组织和管理计算机的软硬件资源,合理地组织计算机的工作流程控制程序的执行向用户提供各种服务功能,使得用户能够灵活、方便、有效地使用计算机,使整个计算机系统能高效地运行,是计算机与用户之间的接口。
3.操作系统的功能:
(1) 处理机管理:完成处理机资源的分配、调度和回收等功能。
(2) 存储管理:提高利用率、方便用户使用、提供足够的存储空间、方便进程并发运行。内存的分配、保护和扩充。
(3) 设备管理:方便设备的使用、提高CPU和I/O设备利用率。
(4) 信息管理:解决软件资源的存储、共享、保密和保护。
(5) 用户接口:提供一个友好的用户访问操作系统的接口。
4.操作系统的特征:
(1) 并发:在计算机系统内同时存在多个程序,宏观上这些程序是同时向前推进的。(并发:同一时间段;并行:同一时刻)
(2) 共享:多个进程共享有限的计算机系统资源,操作系统对系统资源进行合理分配和使用,资源在一个时间段内交替被多个进程所用。(互斥共享、同时访问)
(3) 虚拟:一个物理实体映射为若干个对应的逻辑实体(分时或分空间),是操作系统管理系统资源的重要手段,可提高资源利用率。
(4) 异步:进程的执行顺序和执行时间的不确定性。

第二章 用户接口与作业管理

1.程序的启动方式:
(1) 命令方式:命令提示符下输入命令,回车执行。
(2) 批处理方式:以命令方式启动执行批文件,依次执行批文件中的命令。
(3) EXEC方式:在一个程序中运行另一个程序。
(4) 由硬件装入程序和启动程序执行
(5) 自启程序:自己装入自己,并启动自己开始执行的程序。(由引导程序、程序主体组成)
2.作业的基本概念:
(1) 从用户角度:在一次应用业务处理过程中,从输入开始到输出结束,用户要求计算机所做的有关该次业务处理的全部工作。(作业由不同顺序的作业步组成)
(2) 从系统角度:作业=数据(作业体)+作业说明书(作业控制语言)
3.作业的建立
(1) 作业的输入:将作业的程序、数据和作业说明书从输入设备输入到外存,并形成有关初始信息。
①联机输入方式(预输入方式):外围设备和主机直接连接。
②脱机输入方式:利用低档个人计算机作为外围处理机进行输入处理。
③直接耦合方式:将主机和外围低档机通过一个公用的大容量外存直接耦合。
④SPOOLING系统:假脱机。
⑤网络输入方式:用户需要将计算机网络中某一台主机上输入的信息传送到同一网络中的另一台主机上进行操作或执行。
(2) 作业控制块(JCB)的建立:在作业建立时系统根据作业说明书建立JCB。
4.用户接口
(1) 程序级接口:系统为用户在程序一级提供有关服务而设置,由一组系统调用命令组成。
(2) 操作级接口:为用户提供各种命令。(脱机方式:系统执行过程中用户无法干预(批处理);联机方式:用户直接参与控制作业执行)
(3) 图形用户接口
5.系统调用与普通过程调用
相同点:
(1) 改变指令流程
(2) 重复执行和公用
(3) 改变指令流程后需要返回原处
不同点:
(1) 运行在不同的系统状态:一般过程调用,其调用程序和被调用程序都运行在相同状态(用户态);系统调用时,调用程序在用户态,被调用程序在系统态(核心态)。
(2) 通过软中断进入:一般调用过程通过过程调用语句直接由调用过程转向被调用过程;系统调用必须通过系统调用指令,由软中断转向相应处理程序,CPU由用户态转为系统态。
(3) 返回问题:一般调用过程在被调用过程执行完毕后,直接返回调用过程;系统调用在被调用过程执行完毕后,必须首先对系统中所有要求运行的进程进行优先级分析。

第三章 进程管理

一、概述

1.进程的执行:
(1) 顺序执行:单道批处理系统的执行方式,具有独立功能的程序独占CPU直至得到最终结果的过程。
①顺序性
②封闭性:独占全部资源,计算机的状态只由该程序的控制逻辑决定。
③可再现性:初始条件相同则结果相同。
(2) 并发执行:一组在逻辑上互相独立的程序或程序段在执行时间客观上互相重叠(一个程序或程序段的执行尚未结束,另一个程序或程序段的执行已经开始)。
①间断(异步)性:一个程序可能执行中途停下,失去原有的时序关系。
②失去封闭性:共享资源,受其他程序的控制逻辑的影响。
③失去可再现性:外界环境在程序的两次执行期间发生变化。
2.并发执行的条件:达到封闭性和可再现性。
3.进程的定义:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。(进程是程序的一次执行活动)
4.进程的特征:
(1) 动态性:进程是动态产生的。
(2) 独立性:各进程的地址空间相互独立,除非采用进程间通信手段。
(3) 并发性:任何进程都可以同其他进程一起向前推进。
(4) 异步性:每个进程都以其相对独立的不可预知的速度向前推进。
(5) 结构化:进程=代码段+数据段+PCB
5.进程和程序的区别
(1) 进程是动态的,程序是静态的。
(2) 进程是暂时的,程序是永久的。进程是一个状态变化的过程,程序可长久保存。
(3) 组成不同:进程的组成包括程序、数据和PCB。
(4) 对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
(5) 进程具有并发特征,程序没有。
(6) 进程是竞争计算机资源的基本单位。

二、进程的描述

1.进程的组成:进程=程序+数据+进程控制块PCB
2.进程控制块PCB:进程的控制结构,是进程的唯一标识。
(1) PCB结构的全部或部分常驻内存。
(2) PCB随进程的创建而填写,随进程的撤销而释放。
(3) 系统利用PCB来控制和管理进程,PCB是系统感知进程存在的唯一标志。
(4) 进程与PCB是一一对应的。
3.进程上下文:对进程执行活动全过程的静态描述。
(1) 用户级上下文:进程的用户地址空间,包括用户正文段、用户数据段和用户栈。
(2) 寄存器级上下文:程序寄存器、处理机状态寄存器、栈指针、通用寄存器的值。
(3) 系统级上下文:静态部分(PCB和资源表格)、动态部分(核心栈)。
4.PCB的组织方式
(1) PCB表
①系统把所有PCB组织在一起,并把它们放在内存的固定区域,构成了PCB表。
②PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度。
(2) 链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表(就绪链表、阻塞链表)。
(3) 索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index表(就绪索引表、阻塞索引表)。
5.进程的状态及其转换
(1) 核心态和用户态
(2) 进程的三种基本状态
①就绪态:进程已经具备运行条件,无CPU暂时不能运行。
②执行态:进程占有了包括CPU在内的全部资源,并在CPU上运行。
③等待态:进程因等待某种事件的发生而暂时不能运行的状态。
(3) 三种基本状态的转换
①就绪->运行:调度程序选择一个新的进程运行。
②运行->就绪:时间片用完;进程被中断(高优先级进程处于就绪状态)。
③运行->等待:进程等待某一事件的发生。
④等待->就绪:所等待的事件发生。
(4) 其它状态
①创建状态:OS已完成为创建一进程所必要的工作,但还没有允许执行该进程。
②终止状态:终止后进程移入该状态,不再有执行资格,表格和其它信息暂时保留。
③挂起状态:把一个进程从内存转到外存。
(5) 挂起进程模型:由于进程优先级的引入,一些低优先级进程可能等待较长时间,从而被对换至外存。
①就绪挂起状态:进程在外存,但只要进入内存,即可运行。
②阻塞挂起状态:进程在外存并等待某事件的出现。
③阻塞到阻塞挂起:没有进程处于就绪状态或就绪进程要求更多的内存资源。
④就绪到就绪挂起:有高优先级阻塞进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程。
⑤运行到就绪挂起:对抢先式分时系统,有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态。
(6) 激活:把一个进程从外存转到内存。
①就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程。
②阻塞挂起到阻塞:一个进程释放足够内存时,系统会把一个高优先级阻塞挂起进程转为阻塞状态。
在这里插入图片描述

三、进程控制

1.进程控制的功能:完成进程创建与撤销、阻塞与唤醒、挂起与激活;完成进程状态的转换。
2.进程创建原语:为进程创建一个PCB,赋予一个统一进程标识符,为进程映像分配空间,初始化进程控制块,设置相应的链接(把新进程加入到就绪队列的链表中)。

Procedure Create(n, S0, P0, M0, R0)
Begin 
   i :=GetInternalName(n);  //n为被创建进程的外部标识符
   i.id := n;   i.priority := P0;  //初始化PCB,P0为进程优先级
   i.CPU_State := S0;  //S0为处理机的初始状态  
   i.Mainstore := M0;  //M0为初始内存数
   i.resources := R0;  //R0为所需资源清单 
   i.status := Ready;
   j := EP; i.parent := j;  //插入家族队列
   i.progeny :=;  j.progeny := i;
   i.sdata := RQ;  insert( RQ, i );  //插入就绪队列,i.sdata是一个与进程状态有关的指针
End;

3.进程撤销原语:释放内外存空间,关闭所有打开文件,释放共享内存段和各种锁定的lock,撤销其子孙进程,释放PCB。
导致进程被撤销的原因:
①完成任务后正常终止。
②由于错误导致非正常终止;祖先进程要求撤销某个子进程。

Procedure Destroy(n)  //n为调用者提供的进程的外部标识
Begin 
  Sched := false;
  i :=GetInternalName(n);
  Kill(i);
  if  Sched then Scheduler   else continue;
End;
Procedure Kill(i)
Begin 
  if  i.status = “Running”  then
       stop(i); Sched := True;  //如果进程正在运行,则立即停止运行,并设置调度标志为真
  remove(i.sdata, i);
  for all S∈i.progeny do Kill(S);
  for all r∈Main store∪                  i.resources  do
      Release(r);
   Release (PCB(i))
End;(Kill是可递归的)

4.进程阻塞原语:保护中断现场,置进程的状态为“等待态”,将其插入该事件的等待队列WQ(r),转进程调度。
阻塞原因:进程期待的某事件尚未出现时,进程调用阻塞原语把自己阻塞起来。

Procedure block(r)  //r为指向等待原因的对应等待队列的指针
Begin
  i := EP;  //从执行进程的指针获得进程的内部标识符i
  stop(i);  //停止进程i
  i.status := “blocked”;
  i.sdata := WQ(r);
  insert(WQ(r), i);
  scheduler;  //进程调度程序
End;

5.进程唤醒原语
(1)唤醒原因:进程等待的事件发生,等待队列中的进程被唤醒。
(2)唤醒进程的2种方法:
①由系统进程唤醒(等待公共资源)
②由事件发生进程唤醒(等待私有资源)

Procedure wakeup(n)
Begin 
  i := GetInternalName(n);
  remove( WQ(r), i );  //从相应的等待队列中摘下被唤醒的进程
  i.status := “Ready”;  //状态置为就绪态“Ready”
  i.sdata := RQ;
  insert( RQ, i);  //插入就绪队列
  continue;  //唤醒进程返回或转进程调度
End;

6.挂起原语:将进程从活动就绪状态或阻塞状态变为相对静止的就绪挂起状态或阻塞挂起状态。
进程的挂起方式:
①发命令的进程自身挂起。
②挂起具有指定标识符的进程。
③将某进程及其全部或部分“子孙”进程挂起。

procedure Suspend(n, a)        /* 挂起指定标识符n的
Begin                                          进程的进程原语*/
  i := GetInternalName(n);     /* 参数a是用于保存该
  S := i.status;                              进程PCB副本的内存区*/
  if S=“Running” then stop(i);
  a := copy PCB(i);
  if S=“blockeda” then i.status := “blockeds” 
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码真的好难打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值