操作系统(笔记)

来源:互联网 发布:淘宝注册手机验证码 编辑:程序博客网 时间:2024/05/19 01:13

第一章 操作系统引论

1.1.1 操作系统的目标和作用


定义:操作系统是一组控制和管理计算机软件和硬件资源,合理的对各类作业进行调度,以及方便用户使用的程序的集合。


1.方便性(最重要的考察标准)

使系统可以使用编译命令将用户采用高级语言书写的程序翻译成机器代码。


2.有效性

第一层含义:提高系统资源的利用率。  
第二层含义:提高系统的吞吐量  。


1.使CPU和内存忙起来,资源得到充分利用。

2.数据有序而节省存储空间。

3.合理的组织计算机工作流程。

注:吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。


3.可扩充性


发展过程:无结构——>模块化结构——>层次化结构——>微内核结构


微内核结构:更加方便的增添新的功能和模块,以及对原有的功能和模块进行修改。


1.适应硬件与网络的发展要求。

2.应用层次化的结构。

3.向上兼容(适应以前的程序)


4.开放性


1.能够遵循开放系统互连OSI(open system connection)国际标准。

2.是90年代计算机技术的核心问题


1.1.2  操作系统的应用


1.OS作为用户与计算机硬件系统之间的接口


含义:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。

通过命令方式,系统调用方式,图标-窗口方式来实现与操作系统的通信,并取得它的服务。


软件接口,给用户提供三种方式:

(1)命令方式。(DOS)

(2)系统调用方式。(操作系统提供给用户的唯一接口,类似调用C语言函数)

(3)图形和窗口方式。(windows)



2.OS作为计算机系统资源的管理者

资源分为四类:处理机  存储器   I/O设备(input/output输入输出端口)   文件(数据和程序) 

OS的主要功能:   处理机管理(为各个进程分配并控制处理机)  

                            存储器管理(内存的分配,回收

                            I/O设备管理(I/O设备的分配【回收】,操纵)   

                            文件管理(实现对文件的存取,共享,保护)


3.OS实现了对计算机资源的抽象(作为计算机的扩充机器)

裸机:无任何软件的计算机系统。

覆盖了软件的机器称之为虚拟机。

使用I/O设备软件实现对I/O设备操作的细节(read and write)


1.2 操作系统的发展过程

1.2.1  未配置操作系统的计算机系统


1.人工操作方式

(1)上机用户独占全部资源。

(2)Cpu(Central Processing Unit)及内存等资源会出现周期性空闲。


2.脱机输入/输出方式(Off-line i/o)


脱机I/O技术 :将事先装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些程序和数据时,再从磁带上高速调入内存。


(1)减少了CPU的空闲时间。 

(2)提高了I/O速度。 


1.2.2  单道批处理系统

1. 单道批处理系统(simple batch processing system)的处理过程(50年代)


过程:一批作业(整个一个程序从交到计算机的外存开始到计算机输出结果为止)以脱机方式输入到磁带上,在监督程序的控制下连续处理。


特征:1.自动性(无人干预)(优点:节省人力)

                       (局限性:缺少人机交互的特性,无法修改错误)

          2.顺序性(按进入内存的先后顺序执行,洗衣服一件一件洗)

                       (无法体现程序之间的合作性,所以是缺点

          3.单道性(内存中只保留一道(作业的单位)程序)

                       (使得吞吐量小,对系统资源的利用率很低,缺点

摩尔定律:


 

 


1.2.3  多道批处理系统(60年代)(批处理系统通常指多道)(操作系统的基本类型)


1.定义及特征

 

定义:内存中同时存放多个相互独立的程序。

          多道技术是共享的基础。


特征:   1.多道性:内存中多道程序可并发执行。

             2.无序性:完成时间与进入内存的顺序无关。

             3.调度性:作业从提交到完成经历两次调度。

                             (1)作业调度:外存---->内存(选多个程序占领内存)

                             (2)进程调度:分配处理机(CPU)的过程(选一个程序进入cpu)(单处理机=单CPU)

                                  

2.优缺点


(1)资源利用率高:提高I/O设备的利用率。


(2)系统吞吐量大:CPU和其他资源保持忙碌状态  系统开销小。


         原因:1.资源在绝大多数情况下处于忙的状态。

                   2.完成或运行不下去时才切换。


(3)平均周转时间长

         作业周转时间:作业从进入系统(进入外存)到完成并退出的过程所经历的时间。


(4)无交互能力:修改和调试极不方便。


1.2.4 分时系统


 1.定义:一台主机上连接了多个终端,并且允许多个用户通过多个终端通过交互方式共同使用计算机,共享主机中的资源。


 产生动力:(1)人机交互(边运行边调试)

                  (2)共享主机(设备昂贵)

                  (3)便于用户上机(在终端上输入和控制)


 2.特征:  多路性:即同时性,宏观上同时微观上轮流。

                独立性:每个用户感觉独立上机。

                及时性:主机在较短时间内相应(2-3s)

                交互性:实时对话,修改。


1.2.5 实时系统


 1.实时:及时响应外部事件请求。

 2.应用需求:

 (1)实时控制 :工业生产,武器控制飞机的自动驾驶。

 (2)实时信息处理:订票系统   (极短的时间内对数据进行反应)


1.3 操作系统的基本特征


 (1)并发性:最重要的特征,指的是多个事件在同时时间间隔内发生  举例:龟兔赛跑(交替执行)

   

   注:并行性:指的是多个事件在同一时刻发生(真正的同时)  举例:齐步走

 

        单处理机系统:宏观并发 微观串行

        多处理机系统:可能有并行


 (2)共享性(多道系统出现之后)

          两种资源共享方式 :(1)互斥共享方式   对临界资源的访问   举例:火车厕所,一次一个人,机会均等

                                                  临界资源:打印机硬件;栈,变量,表格等软件。

                                          (2)同时访问方式    多个进程同时访问的资源   如:磁盘,重入码写的文件


 (3)虚拟性:通过某种技术,把一个物理实体转换为若干个逻辑上的对应物。

                        如:虚拟处理器,虚拟内存等。


 (4)异步性 : 进程以不可预知的速度向前推进。(速度上不受干扰)


   注:同步性:任何时刻计算机中活跃的程序同步执行。(时钟提供基本信号)  举例:广场舞大妈听一个BGM

       

1.4 操作系统的主要功能 (是所有软件硬件的管理者)


 

一.命令接口

1.联机用户接口(随时可以和机器之间进行交互)

适用:几乎适用于所有操作系统。


组成:命令+终端处理程序+命令解释程序


过程 : 1.用户在键盘上输入命令

          2.终端处理程序处理命令并显示在屏幕上;(通风报信)

          3.命令解释程序解释并执行该命令;(解释给主机看,把一条命令解释称多条语句给执行)

         联机命令举例:UNIX系统(分时系统):login logout 登入/注销

                                 DOS :copy format

         命令解释程序 : 操作系统最外层,如 MS-DOS:command.com

                                                                   UNIX: shell

2. 脱机用户接口

适用:批处理系统。又称批处理用户接口

组成:JCL(job control language作业控制语言)+作业说明书+命令解释程序

过程:用户对作业的控制用JCL写在作业说明书上,命令解释程序按照作业说明书解释并执行。


二.程序接口

目的:为用户程序访问资源而设计。

组成:一组系统调用

系统调用:一个系统调用是一个能完成特定功能的子程序。

注:返回断点。可继续调用。


1.5 OS结构设计


操作系统的发展阶段:

第一代:无结构OS(传统OS结构)

第二代:模块化OS(传统OS结构)

第三代:分层式OS(传统OS结构)

第四代:微内核OS(现代OS机构)







第二章进程的描述与控制

1.进程的基本概念


 程序在并发环境中的执行过程

 资源分配和独立运行的基本单位


  定义:进程是进程实体的运行过程,是系统进行资源分配和调度的基本单位。


  2.程序的顺序执行

 一个有四条语句的程序段:

S1:             a:=x+2;

S2 :              b:=y+4;

S3 :              c:=a+b;

S4 :              d:=c+b;


执行过程:S1--->S2--->S3--->S4


顺序执行的特征:顺序性:处理机的操作严格按照程序所规定的顺序执行,即每个操作必须在下一个操作之前结束。

                           封闭性:程序在封闭环境下执行,结果不受外界因素影响。

                           可再现性:只要环境和初始条件相同,程序重复执行总会得到相同结果。


3.程序的并发执行


 

并发执行的特征:间断性:共享--->合作--->制约:

                            执行——暂停——执行

失去封闭性:资源状态由多程序改变

不可再现性:相同环境初始条件,重复执行结果不同

故操作系统需要避免不可再现性

 


4.进程的五大特征


1.结构特征(进程有标准结构)


2.动态性(进程最基本的特征)

进程的生命周期:

进程由创建而产生,由调度而执行,由撤销而消亡的过程。


3.并发性:多个进程同在内存中且能在一段时间内同时运行。

4.独立性:能够独立运行,独立分配资源,独立接受调度的基本单位。

5.异步性:进程可以按照各自独立的,不可预知的速度向前推进。


5.进程和程序的关系


(1)进程是一个动态概念,程序是一个静态概念。

(2)进程具有并行特征,程序没有。

(3)进程是竞争资源的基本单位。

(4)一个程序对应多个进程,一个进程为多个程序服务。(互相)


6.进程的基本状态(针对处理机而言的)


就绪状态: 进程已经分配了除处理机以外的所有资源,只要加入处理机就可以开始执行


执行状态: 已经获得CPU的状态。(单处理机系统只能有一个执行状态)


阻塞状态: 正在执行的进程遇到某些事件而无法继续执行时,放弃处理机而进入的状态,又称等待状态。

                 引起阻塞的事件:请求I/O 申请缓存。

 


挂起状态

引入原因:(1)终端用户请求

                 (2)父进程请求

                 (3)负荷调节需要

                 (4)操作系统的需要



7.进程控制块(PCB)(一个PCB几百到几千个字节不等)

1.PCB是OS中最重要的记录型结构。

2.OS用PCB对并行进程进行管理和控制。

3.PCB是进程存在的唯一标致。

4.PCB常驻内存。

5.OS专门开辟PCB区将所有的PCB组织成若干个链表或队列。


PCB中的信息

1.进程标识符

(1)内部标识符:进程唯一的数字编号,给OS使用。

(2)外部标识符:由字母数字组成,给用户使用。

2.处理机状态

(1)通用寄存器8-32个,暂存信息用。

(2)指令计数器 要访问的下一条指令地址。

(3)程序状态字PSW 条件码,执行方式,中断屏蔽标志。

(4)用户栈指针 用户进程拥有的系统栈,存放过程和系统调用参数及调用地址。

3.进程调度信息

(1)进程状态

(2)进程优先级(整数表示 数字越大 占有级别越高)

(3)与调度算法有关信息

(4)事件  (如:阻塞原因)

4.进程控制信息

(1)程序和数据的地址

(2)进程同步和通信机制

(3)资源清单:除CPU之外的所需资源与已经分配资源清单。

(4)链接指针:本进程PCB所在队列的下一个指针。

PCB的组织方式

1.链接方式

把统一状态的PCB,用其中的链接字链接成一个队列。如:就绪队列,阻塞队列(根据不同阻塞原因),空白队列。

2.索引方式

建立就绪索引表,阻塞索引表等,把索引表在内存中的首地址放在内存的专用单元中。

    

 



进程的管理

进程管理中最基本的功能是进程控制


进程控制任务:

进程的创建,终止,进程状态的转变等。


进程控制一般由OS内核实现。



引起创建进程的事件

(1)用户登录(由系统内核创建)

(2)作业调度(由系统内核创建)

(3)提供服务(由系统内核创建)

(4)应用请求——>由自己创建


进程的创建

原语CREAT()按下列步骤创建一个进程(重点)

(1)申请一个空白的PCB

(2)为新进程分配资源

(3)初始化进程控制块

(4)将新进程插入到就绪队列


引起创建进程的事件

(1)用户登录(由系统内核创建)

(2)作业调度(由系统内核创建)

(3)提供服务(由系统内核创建)

(4)应用请求——>由自己创建


PCB的初始化

1.初始化标识信息

2.初始化处理机状态信息

3.初始化处理机控制信息


进程的终止



进程的终止过程

1.从PCB集合中检索出该进程的PCB,从中读出该进程的状态

2.若处于执行状态,终止该进程的执行,并置调度标志为真,重新调度

3.若有子孙进程,将子孙进程终止

4.将进程全部资源归还其父进程或系统

5.将PCB从所在队列或链表中移出


注意

1.BLOCK和WAKEUP是一对作用相反的原语

2.如果在某进程中调用了阻塞原语,则必须在与之有合作关系的另一进程或其他相关进程中安排唤醒原语,以能唤醒阻塞进程,否则,被阻塞进程将永远处于阻塞状态而无机会继续运行。


进程的挂起

挂起原语:SUSPEND()

挂起原语的执行过程:

检查被挂起进程的状态,若处于活动就绪状态,改为静止就绪;若处于活动阻塞状态,就改为静止阻塞状态;若正在执行,则转向调度程序重新调度。


进程的两种制约关系

间接制约:进程间由于共享某种系统资源而形成的相互制约。

(资源争夺)

直接制约:进程间由于合作而形成的相互制约。

(直接信息交换)

进程的两大关系:

互斥:互斥是因为多个进程由于竞争同一种资源而产生的相互排斥的关系。

同步:进程间共同完成一项任务时直接发生相互作用的关系。

同步进程间具有合作关系,在执行时间上必须按一定的顺序协调执行。


临界资源:一次仅允许一个进程使用的共享资源。

如:打印机,磁带机,表格。


临界区:在每个进程当中,访问临界资源的那段程序(代码)

进程必须互斥的进入临界区


同步机制遵循的原则

1.空闲让进

2.忙则等待(不能抢着用)

3.有限等待(假如一个进程等待,规定等待时间)

4.让权等待(当一个进程不能进入自己的临界区,申请临界资源,申请不到时进入阻塞状态,让权指让CPU)

信号量机制:


信号量

信号量是一种数据结构

信号量的值与相应资源的使用情况有关

信号量的值仅由P,V操作改变


整型信号量

整型数(S)(S<=0不可用S>0可用)


P操作(wait)原语

Wait(s):

while  S<=0  do no-op

S:=S-1;


V操作(signal)原语

Signal(s):

S:=S+1;


wait(s)和signal(s)都是原子操作(要么不执行,要么执行完,不允许任何中断)

整型信号量的一大缺点:只要信号量S<=0就不断测试,不满足让权等待。如何解决如下:

记录型信号量

记录型结构,包含两个数据项:

type semaphore=record

              value:integer;

              L:list of process;

              end


value:整型数值

L链表:存放的是进程的PCB链表(是一个阻塞队列,当有进程申请资源申请不到时进入链表当中陷入阻塞状态)


S.value(整形数)为资源信号量的初值表示的是:某类资源的数目。

当S.value>=0时,代表的是系统当中可用资源的数目。

当S.value<0时,绝对值代表等待使用资源的进程个数。

当S.value初值为1时:只允许一个进程访问临界资源,是互斥信号量


wait操作:申请一个单位资源

Procedure wait(s)  (想申请临界资源必须先执行wait,系统有多个阻塞队列)

var S :semaphore;(信号量类型的)

begin

      S.value:=S.value-1;

      If S.value<0 then block(s,L) 

      end


signal操作:释放一个单位资源

Procedure signal(s)

Var S:semaphore;

begin

   S.value:+S.value+1;

   If S.value<=0 then wakeup(s,L)

 end




解决方法  AND型信号量

基本思想:将进程在运行中需要的所有资源,一次性全部分配给进程,待进程使用完后再一起释放。(宁可锦上添花,绝不雪中送炭)


在wait中加入AND条件,

又称AND同步或同时wait操作:Swait

Swait(S1,S2,...Sn)

if S1>=1 and Sn>=1 then 

       for i:=1 to n do

       Si:=Si-1;

       endfor

else

  当发现第一个Si<1就把该进程放入等待队列,并将其程序计数器置于Swait操作的开始位置。

endif


Ssignal(S1,S2,...Sn)

  for i:=1 to n do

  Si:=Si+1;

将所有等待Si的进程由等待队列取出放入到就绪队列

Endfor;


用信号量实现互斥

Var mutex:semaphore:=1;

Begin

      Parbegin

      Process1:begin

                     repeat

                       wait(mutex);(进入区,P申请资源)

                       critical section(使用临界区)

                       signal(mutex);(退出区,V释放资源)

                       remainder section (剩余区)

          until false;

          end;


      Process2:begin


                     repeat

                       wait(mutex);(进入区,P申请资源)

                       critical section(使用临界区)

                       signal(mutex);(退出区,V释放资源)

                       remainder section (剩余区)

          until false;

          end;

 parend               


在互斥时应注意       

wait(mutex) signal(mutex) 必须成对出现

缺wait(mutex)将会引起系统混乱,不讷讷个保证对临界资源的互斥访问。

缺signal(mutex)将会使临界资源永久不被释放。








原创粉丝点击