第一章 概述
1.1 操作系统的定义
1.1.1 操作系统在计算机系统中所处位置
操作系统位于计算机硬件之上,系统工具之下的一层。
1.1.2 操作系统的定义
控制和管理计算机的软、硬件资源,合理组织计算机的工作流程,以方便用户使用的程序集合。
1.1.3 操作系统的功能:
管理系统资源即计算机系统的硬件资源和软件资源
资源管理功能:处理器管理;存储器管理;设备管理;文件管理;用户接口
1.1.4 两根红线:(两个面向)
面向系统——提高资源利用率
面向用户——提供良好的用户界面、方便用户使用
1.2 操作系统的发展简史
操作系统的发展伴随着计算机体系结构的发展。计算机的发展大致经历了如下几代。
第一代计算机(1945—1955):电子管和手工操作。
第二代计算机(1955—1965):晶体管和批处理系统。
第三代计算机(1965—1980):集成电路芯片和多道程序设计技术。
第四代计算机(1980—1990):大规模集成电路芯片和传统操作系统。
1.2.1 操作系统的发展阶段:四个阶段(P12)
SPOOLing技术:一般的规律是,后一种操作系统阶段的出现,是为了解决前一阶段的矛盾
第一阶段:无操作系统(电子管)——手工操作阶段
·特点: 无任何软件、有人工干预、独占性、串行性
·问题: 当CPU速度提高时,出现人机矛盾
·改进:
- 专业的计算机操作员
- 进行批处理,每一批作业将有专门编制的监督程序自动依次处理
第二阶段:批处理系统(晶体管)——监督程序阶段
·定义: 对某对象进行批量的处理,扩展名为bat。将用户提交的作业进行分类,将操作相似的作业归为一组,然后将一组作业放在系统中自动运行(由监督程序执行)
相似的作业:指按作业执行时的特征,如输入操作比较多,或者作业在执行中多数进行计算操作,等方式进行作业划分的标准
监督程序:实现作业的执行及作业之间的自动过渡,可以缩短作业之间手工操作准备时间,减少人工的干预和操作,尽可能让计算机连续执行作业(过渡和定序)
·背景:
- 系统资源十分昂贵。
- 手工输入作业的速度与CPU的速度不匹配
·解决方案:
- 作业成批进入系统后备队列
- 系统按照一定的策略自动调度作业运行
发展:
单道批处理系统
多道批处理系统
**·特点:**1)资源利用率高、吞吐量大。(能根据作业对系统资源的需求和系统当前状态,充分调度资源)
2)周转时间长,无交互能力(作业进入系统后,系统自动调度,管理员或用户不能干预系统的调度。)
单道批处理阶段(作业):
在作业运行期间,CPU一次仍是执行单道作业。此处的“批”是指多个作业同时在主机中被执行
**单道缺点:**串行化工作,系统资源利用率不高
**·早期/单道批处理:a.**联机批处理 **b.**脱机批处理
联机和脱机:相对于主机是联接或是断开(主机指内存+CPU)
联机批处理:慢速的输入输出处理直接由主机完成
**特点:**作业自动定序,自动过滤,缩短了建立作业和人工操作的时间
**问题:**CPU与IO串行操作,当输入输出时,CPU处于空闲状态
脱机批处理:在主机与慢速的IO设备之间增加了——卫星机,使外设与主机并行工作,提高主机的利用
**特点:**增设卫星机,主机摆脱了 I/O操作,通过卫星机使外设与主机并行工作,提高主机的利用。
**问题:**磁带需要手工拆装,系统的保护不够。
卫星机功能:输入设备通过它把作业输入到输入磁带,输出磁带将作业执行结果输出到输出设备。
第三阶段:执行系统阶段
**·背景:**1)批处理系统阶段,磁带需要人工装卸,这样操作既麻烦又容易引发程序操作的不安全性。
2)在批处理操作过程中,没有一种监控程序,可能会引起用户程序篡改监督程序等问题。
3)批处理过程中,若程序出错,用户是无法对程序进行干预的,只能再次重新执行。
4)20 世纪 60 年代末,通道技术和中断技术的出现,使操作系统进入了执行系统阶段。
第四阶段:多道程序系统阶段(集成电路)
**·背景:**执行系统作业的处理仍然是串行的,系统资源利用率不高。
**·特点:**1)多道
2)宏观上并行(多个作业同时运行)
3)微观上串行(某一时刻,单CPU仅运行)
**·意义:**引入多道程序设计技术,可以提高 CPU 的利用率,充分发挥计算机硬件的并行性。
**·解决问题:**1)存储保护与地址重定位
2)处理器的管理与分配
3)资源的管理与调度。
**·技术问题:**共享系统资源、扩充内存、内存保护
**·多道缺点:**交互性差->分时系统的产生
如何区分单道和多道
·单道:多个作业成批进入输入井,先来后到,依次高速执行
·多道:多个作业成批进入输入井,多道并发执行
·从执行时间上来看:
多道方式下,作业A的执行时间被拆成:ta1+ta2=ta
单道方式下,作业A的执行时间为ta
·如果从时间范围上来看,即从作业进入系统到改作业执行完毕,其执行时间是被拉长的。即折衷问题:用户体验/用户感受到的响应时间,与系统资源的利用率上的问题。
eg**:**多道程序环境下,系统中的作业是共享系统资源->在共享时,某个作业什么时候会释放所占用的资源?
**答:**当该程序在执行中,暂时不需要使用某个资源时,才会暂时释放。
**解释:**在宏观上来看,作业是并发的方式在运行。但是,从微观(某个时刻,某个时间点上)上来看,作业仍是串行方式被执行
eg**:**多道批处理系统中,若有3道作业同时在系统中被执行,则3道作业在系统中被交替执行。那么作业以什么方式进行穿插?或什么时机下某作业会让出正在使用的资源?
**答:**根据用户程序中对于外设的使用时,则单签使用CPU的作业必须释放CPU的使用,供其他作业占用。
**解释:**从宏观上来看,从t1时刻到t2时刻,CPU一起处于繁忙状态,拖忽略作业间的过度时间,即监督程序在其中的执行时间
1.3 操作系统分类(P14)
① 批处理操作系统:
② 分时操作系统:
· 把处理机的运行时间分成很短的时间片,按时间片轮流吧处理机分配给各联机作业使用(各操作系统的时间片长度:Linux:5ms-8ms Windows95:20ms Win10:10ms)
**·技术:**一台主机连接了若干个终端,每个终端有一个用户在使用
**·特点:**同时性、交互性、独占性、及时性
③ 实时操作系统:
响应时间有限同时被正确实行,常用于军事方面
**·特点:**实时响应;高可靠性和安全性;实时操作系统的终端设备通常只是作为执行装置或咨询
④ 通用操作系统
⑤ 网络操作系统
⑥ 分布式操作系统
其他操作系统:
- 个人计算机上的操作系统
- 嵌入式操作系统
- 网络操作系统:手机
- 分布式操作系统
- 智能化操作系统
1.4 系统调用(P22)
1.4.1 系统调用的概念
系统调用是操作系统及其他用户程序获得操作系统服务的途径,实现了用户与计算机硬件之间的一个接口,也是用户程序要求操作系统内核完成某一项工作时的过程调用。
·引入系统调用的原因:
1)从用户角度:方便用户使用计算机系统资源
2)从系统资源的角度:提高资源的利用,保护系统安
**·特点:**1)实现用户与计算机硬件资源之间的一个接口;
2)是对计算机机器指令的扩充;
3)是完成用户要求的特殊过程调用
·执行系统调用时,会引发——访管中断
系统调用与一般程序执行的区别:
(1) 运行状态不同。一般过程调用,其调用和被调用过程或者都是子程序,或者都是系统程序,运行在同一系统状态下:系统态或用户态。系统调用的调用过程是用户程序,它运行在用户态;其被调用过程是系统过程,运行在系统态下。
(2) 进入的方式不同。一般过程调用可以直接通过过程调用语句将控制转移到被调用的过程;而执行系统调用时,由于调用和被调用过程处于不同的系统状态,必须通过访管中断进入。
(3) 代码层次不同。一般过程调用中的被调用程序是用户级程序,而系统调用是操作系统中的代码程序,是系统级程序。
系统调用与子程序调用的异同:
1)来源不同;
2)CPU态不同;
3)系统调用会引发访管中断,而子程序调用不会。
1.4.2 CPU的态
**·概念:**CPU的态即CPU的工作状态,分为核心态和用户态
**·意义:**CPU分态是为了对资源和指令的使用权限进行分类管理
·为区分CPU执行的是系统程序,还是用户程序,同时,也为保护操作系统,而将CPU分为两个状态:
**系统态/管态/核心态:**当前正在执行系统程序,可访问内存所有空间
内存空间通常包括两个部分:系统区,用户区
**用户态/目态:**当前正在执行用程序(用户程序),可访问内存中的用户空间
1.4.3 操作系统发展趋势:(P26)
微内核、嵌入式操作系统、分布式操作系统、多处理器并行操作系统、虚拟化操作系统
1.5 操作系统的特征(P24)
1.5.1 并发性
**·背景:**受到资源共享分配的影响,程序不可能从开始到结束不间断地被执行,执行中必然会出现间断。因此,多任务、多用户环境下程序是并发的方式被执行。
**·并发性:**指两个或多个事件在同一时间间隔内发生(逻辑上“同时”)
区分:并行性:指两个或多个事件在同一时刻发生(物理上“同时”)
·**作用:**为了改善系统资源的利用率并可提高系统的吞吐量,但同时也会使系统的管理更加复杂化
**操作系统的并发特性:**是指计算机系统中同时存在多个运行中的程序,因此,它应该具有处理和调度多个程序同时执行的能力。
**并发的体现:**内存中同时有多个用户的应用程序;多个操作系统程序被启动执行、暂停执行。
操作系统设计时要处理的问题:
操作系统设计实现时必须具有控制和管理程序并发执行的能力。
1.5.2 虚拟性
**·概念:**虚拟性是操作系统中的一种管理技术,它是将物理设备虚拟成逻辑形式,通过某些软件和硬件技术,能够把资源虚拟成用户感官上独占的资源。
**·作用:**1)一方面为了提高系统资源的利用率
2)另一方面也为了方便用户的使用
**·采用的技术:**SPOOLing技术
**·包括:**1)虚拟CPU
2)虚拟存储
3)虚拟设备
1.5.3 共享性
**·背景:**在现代操作系统环境下,多任务及多用户的使用必然会使系统资源变得紧张。程序独占资源的执行方式虽然使得系统管理程序较为简单,但这种方式也会使其他等待相同资源的程序拉长等待时间,不利于提高用户程序的响应时间。同时,某资源被一个程序独占直到程序执行完毕,而该程序在执行中却不可能一直使用这种资源,所以独占方式的资源分配必然导致资源利用率的降低。
·概念:
**·作用:**1)利于系统对于用户程序响应性能的提高
2)有利于提高资源的利用率
资源共享性分配相关的问题是分配策略、信息保护、存取控制等,必须妥善解决这些复杂问题。
共享性和并发性的关系:
1)共享性和并发性是操作系统的两个最基本特征,它们相互影响,相互依存。
2)资源的共享是因为程序并发执行导致的,若程序不是以并发的方式执行,资源也不必进行共享。
3)若系统中资源不能有效地共享使用,程序的并发也就无从说起,操作系统失去并发特性,整个系统性能将很难提升。
1.5.4 不确定性
**·不确定性:**是由操作系统的并发和共享性导致的。操作系统无法确定程序执行时间长短。操作系统的不确定性并不意味着无法控制资源的使用和程序的执行。
第二章 进程控制
2.1 进程的概念
2.1.1 进程的引入原因
①程序顺序执行的特点,不适应现代OS的需要(整个实体占用操作系统全部资源的方式不合时宜)
②程序的结构也不具备并发处理的能力
程序顺序执行及其特征:手工处理阶段以及单道批处理阶段,程序是按顺序化方式在系统中独占全机的去执行
**特征:**依靠监督程序处理,系统资源利用率不高
特点:
①顺序性:程序的执行严格按照顺序方式进行;
②封闭性:按顺序方式执行程序,该程序独占系统全部资源,不受外界因素的影响:
③可再现性:一个程序在初始条件保持不变的情况下,无论在什么环境中运行、什么时间段内运行,都应该有相同的执行结果;(因此OS设计时必须保证,输入条件不变,不受环境及执行时间的限制,其输出结果保持不变)
2.1.2 程序并发执行特征
**并发的概念:**指两个或多个事件在同一时间间隔内发生
**①并发性:**程序的执行在时间上可以重叠,在单处理器系统中可以并发执行;在多处理器环境中可以并行执行;
**②共享性:**它们可以共享某些变量,通过引用这些共享变量就能互相交换信号,从而,程序的运行环境不再是封闭的;
**③制约性:**程序并发执行或协作完成同一任务时,会产生互相制约关系,必须对它们并发执行的次序(即相对执行速率)加以协调;
**④交互性:**由于程序在执行中共享某些变量,所以一个程序的执行可能影响其他程序的执行结果。因此,这种交互必须是有控制的,否则会出现不正确的结果。即使程序自身能正确运行,由于程序的运行环境不再是封闭的,程序结果仍可能是不确定的,计算过程具有不可再现性。
2.1.3 多道程序系统的执行环境特点
**①独立性:**每道程序都是逻辑上独立的,无逻辑的制约关系。即若有充分的资源,每道程序都可以独立执行,且执行速度与其他程序无关,且起止时间也是独立的
**②随机性:**在多用户的环境下,程序的数据的输入与执行开始时间都是随机的
**③资源共享性:**软、硬件资源的共享,会导致制约进程的执行速度
2.1.4 与时间有关的错误
**概念:**在多道程序并发执行的程序共享资源或者互相协作,因其执行速度的不确定性以及多道程序之间缺乏控制所带来的错误。
执行环境的非封闭性、共享资源未得到有效保护、或者是进程先后顺序执行中未执行完毕,有可能会发生时间上的错误。
有三种方式可以避免发生**“与时间有关的错误”**,但在操作系统中只能使用一种方法:在资源分配和使用的过程中通过采取有效的错误来避免。
2.1.5 进程的定义
有独立功能的程序在一个数据集上的一次执行过程。
进程是系统资源分配的基本单位。亦是资源分配的最小单位。
(程序执行的实体,例如一个工作由多人实行,一个人就是一个实体。从静态的角度观察,操作系统是一组程序和表格的集合;从动态的角度观察,操作系统是进程的动态、并发执行,有生存期。进程是执行中的程序。)
(进程是个动态的概念,可以关闭或者持续运行)
2.1.6 并发与并行的异同点
·并行:几道程序同时运行在不同的CPU上,宏观和微观上都是同时发生
·并发:几道程序分时运行在相同的CPU上,在宏观上通知,微观上不一定同时
·并发执行的两种方式:
①进程间的并发执行
②进程内部的并发执行
并行机上,多个CPU是同一时刻,同时运行多个程序。这个同时,是真正意义上的同时,是物理上的并行。
·并发需要解决的问题:
程序的并发执行:一组在逻辑上互相独立的程序或程序段在执行过程中,其执行时间在上互相重叠,即一个程序段的执行尚未结束,另一个程序段的执行已经开始的执行方式
·并发带来的问题:程序序的并发执行会破坏封闭性,同时潜在地破坏可再现性
2.1.7进程与程序的区别
①程序是静态的,存在外存中;进程是动态的,存在内存中,有生存期
②进程的特征是并发的,程序没有
③进程在执行过程中会占用系统资源,操作系统不会以程序为单位分配资源
④进程和程序之间是多对多的关系
i:程序与进程之间是一对多的关系
ii:进程与程序之间是一对多的关系——实验3
2.1.8 Bernstein条件
程序A和程序B,均对数据及Pi进行操作
程序A对数据及Pi读操作,Ra(Pi)
程序A对数据及Pi写操作,Wa(Pi)
程序B对数据及Pi读操作,Rb(Pi)
程序B对数据及Pi写操作,Wb(Pi)
程序A和程序B可以并发执行的条件:
1)Ra(Pi)与Wb(Pi)的交集为空
2)Rb(Pi)与Wa(Pi)的交集为空
3)Wa(Pi)与Wb(Pi)的交集为空
问题:
1)无法解决随机性;存在的程序个数未知,也无法判断哪些程序会使用到相同的共享数据
2)运行时只是部分程序或数据调入内存
基于上述原因,并发执行的程序,无法及时判断其共享的数据集,因此,Bernstein条件理论上是判断并发执行的最有效的条件
2.1.9 进程状态及转换(课本图+PPT图)
①进程状态的引入原因(方便操作系统管理系统中的进程)
新建状态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中,通常是还没有加载到主存中的新进程
运行状态:该进程正在被执行
阻塞状态:进程在等待某些事件,如I/O操作
就绪状态:进程做好了运行准备,只要获得CPU就可以开始执行
消亡状态:操作系统从可执行进程中中撤销了进程,或者自身停止,或者因为某种原因被撤销
②状态间的切换
2.1.10 Linux进程结构以及转换
运行/就绪—— TASK_RUNNING:通过进程是否占有CPU资源来区分
进程调度器:从各个CPU的可执行队列中分别选择一个进程在该CPU上运行
僵死——TASK_ZOMBIE:表示进程已经结束,但是没有从进程表中删除,仅剩task_struct结构这个空壳。task_struct中保存了进程的退出码,以及一些统计信息。用于在子进程在退出的过程中,内核向父进程发送一个信号,通知父进程来“收尸”。父进程可以通过wait系列的系统调用来等待某个或某些子进程的退出,并获取他们的退出信息,然后顺便将子进程的“尸体”(task_struct)也释放掉
可中断睡眠(浅度睡眠)——TASK_INTERRUPTIBLE:表示进程等待某个事件或某个资源。可以被信号唤醒而进入就绪状态等待调度
不可中断睡眠()深度睡眠——TASK_UNINTERRUPTIBLE:因硬件资源无法满足,不能被信号唤醒,必须等到所等待的资源得到之后由特定的方式唤醒
暂停——TASK_STOPPED :一般由运行状态转换而来,等待某种特殊处理
2.1.11 进程的实现PCB
·Process Control Block_进程 控制 块:是进程存在的唯一标识,是操作系统对进程进行控制、管理和调度的一句,它在创建进程时产生,在撤销进程时消亡
eg:PCB的作用?/存在的意义?
举例:OS管理进程——学校管理学生的学籍
OS:PCB = 学校:学籍卡
操作系统管理进程的一种静态信息
·PCB的主要内容:
进程标识符:进程符号名或内部id号
进程当前状态:本进程目前处于何种状态(运行、就绪、等待)
eg:当进程消亡到从系统中删除时,其对应的PCB是否还存在?
答:系统创建一个进程时,就为其创建一个PCB;进程被撤销删除时,相应的PCB也被删除。
2.1.12 进程的组成:code+data+stack+PCB
程序与数据:描述进程本身所应完成的功能
栈
PCB:进程的动态特征,该进程与其他进程和系统资源的关系
2.2 进程控制
2.2.1 四种进程控制的操作:PPT P.75
(创建、撤销)、(阻塞、唤醒)
进程创建:申请空白PCB->填PCB->置“就绪”状态
进程撤销:释放PCB->释放内存->释放所有资源
进程阻塞:置状态为“阻塞”->插入等待队列->停止程序运行->释放所有资源
进程唤醒:置状态为“就绪”->插入就绪队列
2.2.2 进程控制是否允许并发执行?
什么的并发:是为了提高系统吞吐量,实现资源共享的目的
潜在的问题:程序结果的不可再现性、打破程序结果的封闭性
不允许并发的可选择方法:系统调用、原语
2.2.3 原语
定义:把系统态下执行的某些具有特定功能的程序段称为原语(CPU处于关中断状态)
作用:用原语实现进程控制、保护操作系统内核
原语是原子操作(atomicoperation),不可再分 ,要么全做,要么全不做。
地位:
进程控制均须用原语实现
操作系统内核的保护是通过原语 来实现
四种进程操作流程图
进程唤醒原语本身不涉及CPU资源的分配(非抢占式唤醒后即返回)
可抢占式内核中,新加入就绪队列的进程优先级是否高于目前使用CPU的进程优先级