操作系统笔记(持续更新)

计算机系统

计算机是如何工作的?(采用“存储程序”工作方式)

程序在执行前:

数据和指令事先存放在存储器中,每条指令和每个数据都有地址,指令按序存放,指令由OP、ADDR字段组成,程序起始地址置pc

开始执行程序:

第一步:根据pc取指令

第二步:指令译码

第三步:取操作数

第四步:指令执行

第五步:回写结果

第六步:修改pc的值

继续执行下一条指令

程序启动前,指令和数据都存放在储存器中,形式上没有差别,都是0/1序列

采用“存储程序”工作方式:程序由指令组成,程序被启动后,计算机能自动取出一条一条指令执行,在执行过程中无需人的干预。

指令中需给出的信息:

操作性质(操作码)

源操作数1或/和源操作数2(立即数、寄存器编号、存储地址)

目的操作数地址(寄存器编号、存储地址)

存储地址的描述与操作数的数据结构有关

汇编指令:用助记符和标号来表示的指令(与机器指令一一对应)

指令:包含操作码和操作数或其他地址码(机器指令用二进制表示,汇编指令用符号表示)

高级语言转换为机器语言程序:

两种转换方式:“编译”和“解释”

编译程序:将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可。

解释程序:将高级语言语句逐条翻译成机器指令并执行,不生成目标文件。

一、操作系统的特征(并发、共享、虚拟、异步)

并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。

并行:指两个或多个事件在同一时刻发生。

操作系统的并发性指计算机系统中同时存在着多个运行着的程序。

共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

两种资源共享方式:

互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但一个时间段内只允许一个进程访问该资源。

同时共享方式:允许一个时间段内多个进程“同时”对它们进行访问。(交替地对资源进行访问)

并发性指计算机系统中同时存在着多个运行着的程序。

共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。

虚拟是指一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。

虚拟技术:空分复用技术,时分复用技术。

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停的,以不可预知的速度向前推进,这就是进程的异步性。(只有系统拥有了并发性,才有可能导致异步性)

二、操作系统的发展与分类

手工操作阶段

主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低。

单道批处理系统

主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升。

主要缺点:内存中仅能一道程序运行,只有该程序运行结束后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成,资源利用率依然很低。

多道批处理系统:

主要优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持“忙碌”状态,系统吞吐量增大。

主要缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)

实时操作系统

主要优点:能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。

在实时操作系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时操作系统的特点是及时性和可靠性。

硬实时操作系统:必须在绝对严格的规定时间内完成处理。

软实时操作系统:能接受偶尔违反时间规定。

三、操作系统的运行机制和体系结构

指令(特权指令、非特权指令)

两种处理器状态

用户态(目态):此时CPU只能执行非特权指令。

核心态(管态):特权指令、非特权指令都可执行。

两种程序

内核程序:操作系统的内核程序是管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。

应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。

内核(时钟管理、中断处理、原语、对系统资源进行管理的功能)

内核时计算机上配置的底层软件,是操作系统最基本、最核心的部分。

实现操作系统内核功能的那些程序就是内核程序。

时钟管理:实现计时功能。

中断处理:负责实现中断机制。

原语:是一种特殊的程序,处于操作系统最底层,是最接近硬件的部分,这种程序的运行具有原子性——其运行只能一气呵成,不可中断,运行时间较短、调用频繁。

对系统资源进行管理的功能:进程管理、存储器管理、设备管理。

操作系统的体系结构(大内核、微内核)

大内核:将操作系统的主要功能模块都作为系统内核,运行在核内心。

优点:高性能

缺点:内核代码庞大,结构混乱,难以维护。

微内核:只把最基本的功能保留在内核

优点:内核功能少,结构清晰,维护方便。

缺点:需要频繁地在核心态和用户态之间切换,性能低。

四、中断、异常

本质:发生中断意味着需要操作系统的介入,开展管理工作。由于操作系统的管理工作需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断才能实现多道程序并发执行。

用户态——》核心态是通过中断实现的,并且中断时唯一的途径。

中断的分类

内中断(异常、例外、陷入):自愿中断(指令中断)、强迫中断(硬件故障、软件故障)。

信号的来源:CPU内部与当前执行的指令有关。

外中断:外设请求、人工干预。

信号的来源:CPU外部与当前执行的指令无关。

五、系统调用

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。

系统调用相关处理涉及对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行。

系统调用的背后过程:

传递系统调用参数->执行陷入指令(用户态)->执行系统调用相应服务程序(核心态)->返回用户程序

注意:1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态。

2.发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。

3.陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令。

凡是与资源有关的操作、会直接影响到其他进程的操作,一定需要操作系统的介入,即需要通过系统调用来实现。

系统调用发生在用户态,对系统调用的处理发生在核心态。

执行陷入指令会产生内中断,使处理器从用户态进入核心态。

六、进程

PCB:称为进程控制块,系统为每个运行的程序配置一个数据结构,用来描述进程的各种信息(如程序代码存放位置)。

进程的定义:程序段、数据段、PCB三部分组成了进程实体。一般情况下,我们把进程实体就简称为进程。注意:PCB是进程存在的唯一标志。

1.进程是程序的一次执行过程。

2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

3.进程时具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

程序段:程序代码存放的地方。

数据段:程序运行时、产生的运算数据,就存放在数据段内。

PCB:操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息。

进程的组织

链接方式:按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针。

索引方式:根据进程状态的不同,建立几张索引表。操作系统持有指向各个索引表的指针。

进程的特征:动态性、并发性、独立性、异步性、结构性。

七、进程的状态

进程的三种基本状态

运行态:占有CPU,并在CPU上运行。

就绪态:已经具备运行条件,但由于没有空闲的CPU,而暂时不能运行。

阻塞态:因等待某一事件而暂时不能运行。

进程的另外两种状态

创建态:进程正在被创建,操作系统为进程分配资源、初始化PCB。

终止态:进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销PCB。

八、进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

用原语实现进程控制。原语的特点是执行期间不允许中断,这种不能被中断的操作即原子操作。

原语的功能

1.更新PCB中的信息。

2.将PCB插入合适的队列。

3.分配/回收资源。

相关原语:进程的创建、进程的终止、进程的阻塞、进程的唤醒、进程的切换。

九、进程通信(共享存储、管道通信、消息传递)

共享存储

两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。

共享存储的两种方式:基于数据结构的共享、基于存储区的共享

基于数据结构的共享:这种共享方式速度慢、限制多,是一种低级通信方式。

基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下这种共享方式速度更快,是一种高级通信方式。

管道通信

“管道”是指用于连接读写进程的一个共享文件,其实就是在内存中开辟一个固定的缓冲区。

1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。

2.各进程要互斥的访问管道。

3.数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。

4.如果没写满,就不允许读。如果没读空,就不允许写。

5.数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

消息传递

进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

消息传递的两种方式:直接通信方式、间接通信方式

直接通信方式:消息直接挂到接收进程的消息缓冲队列上。

间接通信方式:消息要先发送到中间实体(信箱)中。

九、线程概念多线程模型

线程的概念:线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得进程内可以并发处理各种任务。引入线程后,进程只作为除CPU之外的系统资源的分配单元。

线程的属性:

1.线程是处理机调度的单位。

2.多CPU计算机中,各线程可占有不同的CPU。

3.每个线程都有一个线程ID、线程控制块(TCB)

4.线程也有就绪、阻塞、运行三种基本状态。

5.线程几乎不拥有系统资源。

6.同一进程的不同线程之间共享进程的资源。

7.由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预。

8.同一进程中线程的切换,不会引起进程的切换。

9.不同进程中线程的切换,会引起进程切换。

10.切换同进程内的线程,系统开销很小。

11.切换进程,系统开销较大。

线程的实现方式:

用户级线程:由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责,用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。

内核级线程:由操作系统内核完成管理工作,线程的调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。

十、处理机调度(高级调度、中级调度、低级调度)

高级调度

按一定的原则从外存上处于后备队列的作业中挑选一个(或多个)作业,给它们分配内存等必要资源,并建立相应的进程(建立PCB),以使它们获得竞争处理机的权利。

高级调度是外存和内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。

中级调度

引入虚拟存储技术后,可将暂时不能运行的进程调至外存等待,等它重新具备了运行条件且内存稍有空间时,再重新调入内存(可以提高内存利用率和系统吞吐量)暂时调到外存等待进程状态为挂起状态。PCB并不会一起调到外存,而是会常驻内存。PCB中会记录进程数据再外存中的存放位置,进程状态等信息,操作系统通过内存中的PCB来保持对各个进程的监控、管理。被挂起的进程PCB会被放到挂起队列中。中级调度就是要决定将哪个处于挂起状态的进程重新调入内存。

低级调度:(进程调度)

其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。

十一、进程调度(低级调度)的时机切换与过程调度方式

进程调度(低级调度):就是按照某种算法从就绪队列中选择一个进程为其分配处理机。

不能进行进程调度与切换的情况:

1.在处理中断的过程中。中断处理过程复杂,与硬件密切相关,很难做到在中断处理过程中进行进程切换。

2.进程在操作系统内核程序临界区中。

3.在原子操作过程中(原语)。原子操作不可中断,要一气呵成。

进程调度的方式

非剥夺调度方式:又称非抢占方式,只允许进程主动放弃处理机,在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。

剥夺调度方式:又称抢占方式,当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,即立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

进程切换与过程

进程调度是指从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另外一个进程,后一种情况就需要进程切换)

进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。

进程切换的过程主要完成了:

1.对原来运行的进程各种数据的保存。

2.对新的进程各种数据的恢复。

注意:进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在进程切换上,而真正用于执行进程的时间减少。

十二、调度算法的评价指标

CPU利用率:

利用率=忙碌时间/总时间

系统吞吐量:单位时间内完成作业的数量。

周转时间:是指作业被交给系统开始,到作业完成为止的这段时间间隔。它包括四个部分:作业在外存后备队列上等待作业调度(高级调度)的时间、进程在就绪队列上等待进程调度(低级调度)的时间、进程在CPU上执行的时间、进程等待I/O操作完成的时间。后三项在一个作业整个处理过程中,可能发生多次。

等待时间:指进程/作业处于等待处理机状态时间之和,等待时间越长,用户满意度越低。

对于进程来说,等待时间就是指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实进程也是在被服务的,所以不计入等待时间。

对于作业来说,不仅要考虑建立进程后的等待时间,还要加上作业在外存后备队列中等待的时间。

响应时间:指从用户提交请求到首次产生响应所用的时间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值