在清楚操作系统的作用之前,我们必须先了解操作系统的概念,那么什么是操作系统呢?操作系统是计算机系统中的系统软件,是能有效的组织和管理计算机中的软硬件资源、并且能合理的组织计算机中的工作流程,并能向用户提供各种服务使计算机能高效运行的一组程序模块的集合。那么它的作用肯定是相对于的我们人类来说的(对人没用的算什么作用),OS作为用户与计算机硬件系统之间的接口(API/CUI/GUI)。
操作系统的目标
(1)方便性:配置OS后计算机系统更容易使用
(2)有效性:改善资源利用率;提高系统 吞吐量
(3)可扩充性:OSde结构(如层次化的结构:无结构发展->模快化结构->层次化结构->微内核结构)
(4)开放性:OS遵循世界标准范围。
操作系统的作用:
(1)OS作为用户与计算机硬件系统之间的接口(API/CUI/GUI)
即:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
(2)OS是计算机系统资源的管理者(处理机、存储器、I/O设备、文件)
处理机管理是用于分配和控制处理机 存储器管理是负责内存的分配与回收 I/O设备管理是负责I/O设备的分配(回收)与操纵文件管理是用于实现文件的存取、共享和保护
(3)OS实现了对计算机资源的抽象(OS是扩充机/虚拟机)
————————————————————————————————————————
1.无操作系统
(1)人工操作方式
最典型的就是第一台电子计算机ENIAC,是完全手工进行控制的。这种方式的特点是 用户独占全机,CPU需要等待人工操作,利用率很低。
(2)脱机输入输出方式
为了解决cpu与I/O设备之间速度不匹配的矛盾,人们引入了脱机输入输出方式。
脱机输入输出方式就是指程序和数据的输入输出是在外围机的控制下,而不是在主机的控制下完成的。脱机输入输出方式相比于人工操作,减少了主机的等待时间(装带、卸带、将数据从低速的io设备传到高速的磁盘上都是在脱机情况下完成的,不占用主机时间),提高了io设备的处理速度(当处理机运行中需要数据时,是直接从高速磁盘调入内存的,而不是从低速的io设备,从而缓和了io设备与处理机的不匹配的矛盾),附加一句,如果输入输出在主机的控制下完成,那么就叫这种方式为联机输入输出。
2.单道批处理操作系统
(1)解决问题:
单道批处理系统是在解决人机矛盾和CPU与I/O设备速度不匹配矛盾的过程中形成的。批处理系统旨在提高系统资源的利用率和系统的吞吐量。(但单道批处理系统仍不能充分利用资源,故现在已很少用)
单道批处理分为:联机批处理、脱机批处理
联机批处理:CPU直接控制作业输入输出
脱机批处理:由外围机控制作业输入输出
(2)缺点:
系统资源利用率低(因为内存中只存在一道程序,I/O请求成功前CPU都处于空闲状态)
(3)特征
自动性。正常情况下,一批作业能自动依次运行,无需人工干预。
顺序性。各道作业是顺序进入内存,FCFS
单道性。内存中任何时候只能有一道作业。
3. 多道批处理操作系统
在多道批处理系统中,用户提交的作业都先存放在外存并且排成一个队列,改队列称为"后备队列";然后由作业调度程序按照一定的算法,从该队列中选择若干个作业调入内存,使他们共享处理机和系统中的各个资源,以达到提高资源利用率和系统吞吐量的目的。
优点:
资源利用率高(资源指CPU、存储器、设备、数据)
系统吞吐量大(系统吞吐量指系统在单位时间完成的总工作量(作业数量))
缺点:
平均周转时间长(作业的周转时间是指从作业进入系统开始,直至其完成并退出系统为止所经历的时间。)
无交互能力
特点:
多道:内存同时存在多个作业
宏观上并行:同时有多道程序在内存运行,某一时间段上,各道程序不同程度地向前推进。
微观上串行:任一时刻最多只有一道作业占用CPU,多道程序交替使用CPU。
还需解决的问题:
处理机管理问题
内存管理问题(内存分配和保护)
I/O设备管理问题
文件管理问题(文件的组织和管理)
作业管理问题
用户与系统的接口(OS还应提供用户与OS的接口,方便用户操作)
分时操作系统
如果说推动多道批处理系统产生的动力是提高资源利用率和系统吞吐量,那么推动分时操作系统的动力就是用户的需要。
分时系统是指在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过自己的键盘,以交互的方式使用计算机,共享主机中的资源。
PS:推动分时系统形成和发展的主要动力是用户的需要:交互、共享主机、方便上机。
关键问题:
及时接收(多路卡和缓冲区):作业直接进入内存、不允许一个作业长期占用处理机
即时处理(划分时间片):多个用户分时使用主机,每一用户分得一个时间片,用完这个时间片后操作系统将处理机分给另一用户,如此循环,每一用户可以周期性地获得CPU使用权,这样每一用户都有一种独占CPU的感觉。
特征:
多路性:允许同一主机联接多台终端。
独立性:每一用户独占一个终端;每个用户感觉不到其他用户的存在。
及时性:用户请求能及时响应。
交互性: 可进行广泛的人机对话。
实时操作系统
虽然多道批处理系统已经获得了较为令人满意的资源利用率和响应时间,但是仍然不能满足一下两个领域的需要:
(1)实时控制
(2)实时信息处理
实时系统(Real-Time System)是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
特征:
多路性
对实时处理系统,系统按分时原则为多个终端服务;
对实时控制系统,系统经常对多路现场信息进行采集;以及对多个对象或多个执行机构进行控制。
独立性
实时处理系统,每个终端用户向实时系统提出服务请求时,彼此独立;
实时控制系统,对信息的采集和对对象的控制彼此不干扰。
及时性(开始截止时间/完成截止时间)
交互性(仅限于访问专用服务程序)
可靠性(多级容错措施保障系统和数据安全)
操作系统的进一步发展
微机操作系统:
单用户多任务操作系统
多用户多任务操作系统
多处理机操作系统
网络操作系统
分布式操作系统
嵌入式操作系统
3、操作系统的基本特性
3.1并发
并发是指在内存中放多道作业, 在一个时间段上来看,每一道作业都能不同程度地向前推进。但在任何一个时间点上只能有一道占用CPU。
两个概念:
串行:在内存中每次只能放一道作业,只有它完 全执行完后别的作业才能进入内存执行。
并行: 存在于有多个CPU的环境中, 在内存中放多道作业,在任一时间点上都可能有多道作业在不同的CPU上同时执行。
3.2共享
系统中的资源可供多个并发的进程共同使用。
根据资源属性的不同,有两种资源共享方式:
互斥共享方式(临界/独占资源)
同时访问方式
PS:并发和共享是OS的两个最基本的特性,二者互为条件!
3.3虚拟
通过某种技术将一个物理实体映射为若干个逻辑上对应物(如CPU;一个屏幕可看成多个屏幕-窗口)。或将多个物理实体映射为一个逻辑实体(如虚拟存储是内存和外存的虚拟)。
虚拟是操作系统管理系统资源的重要手段,可提高资源利用率。
CPU——多道程序设计技术/每个用户(进程)的“虚拟处理机"
存储器——每个进程都占有的地址空间(指令+数据+堆栈)
I/O设备——打印机、多窗口或虚拟终端
3.4异步
不确定性:什么时候开始,执行多久时间,终止时间
4、操作系统的主要功能
4.1、处理机管理功能:进程控制、进程同步、进程通信、调度(作业调度、进程调度)
4.2、存储器管理功能:内存分配、内存保护、存储扩充、地址映射
4.3、设备管理功能:缓冲管理、设备分配、设备处理
4.4、文件管理功能:文件存储空间的管理、目录管理、文件的读 /写管理和保护
4.5、操作系统与用户之间的接口:命令接口、程序接口、图形接口
4.6、现代OS的新功能:
系统安全:为保障数据的保密性、完整性和可用性,常使用的技术:认证技术、密码技术、访问控制技术、反病毒技术
网络功能和服务:网络通信、资源管理、应用互操作
支持多媒体
5、操作系统的结构设计
传统的操作系统结构
无结构OS
模块化OS结构
分层式OS结构
现代OS结构——微内核结构
————————————————————————————————————————
进程就是一个正在运行的程序的抽象,是程序的一次运行过程(这里我们思考一下,什么叫"正在运行",以我的想法,就是内存中有该程序的地址空间,寄存器中保存着该程序的状态数据。地址空间中的数据的寄存器中的数据统称为"运行时上下文")。
进程实体(简称进程):程序块、相关的数据、进程控制块PCB
进程的特征:
结构性:由程序(段)、数据(段)、进程控制块(PCB)三部分组成;
动态性:进程是程序的执行过程;
并发性:多个进程可同存于内存中,能在一段时间内同时运行;
独立性:独立运行的基本单位,独立获得资源和调度的基本单位;
异步性:各进程按各自独立的不可预知的速度向前推进。
进程与程序的区别:
(1)程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。程序是静态的,进程是动态的;
(2)程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的;
(3)进程更能真实地描述并发,而程序不能;
(4)进程是由程序和数据、进程控制块PCB三部分组成的;
(5)进程具有创建其他进程的功能,而程序没有
(6)同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程 。
进程的3种状态及转换
就绪状态(Ready R态):存在于处理机调度队列中的所有进程,它们已经准备就绪,一旦得到CPU,就立即可以运行。这些进程所处的状态为就绪状态。
就绪队列:处于就绪状态的进程按一定的策略排队,同一时刻可有多个就绪队列。
运行状态(Running E态):正在运行的进程所处的状态为运行状态。
等待/阻塞/睡眠状态(Wait/Blocked B态):若一进程正在等待某一事件发生(如等待输入输出工作完成),这时,即使给它CPU,它也无法运行,称该进程处于等待状态(阻塞、 睡眠、封锁状态)。
阻塞队列:根据阻塞原因可以设置多个队列。
进程控制块PCB
PCB是OS中最重要的记录型数据结构
PCB是OS感知进程存在的唯一标志。
进程与PCB是一一对应的。
PCB随进程创建而建立,随进程结束而回收
PCB应常驻内存
作用:
将一个不能独立运行的程序变成一个可以独立运行的基本单位,一个能与其他进程并发执行的进程。
进程描述信息:
进程标识符(process ID):唯一,通常是一个整数
进程名:通常基于可执行文件名(不唯一)
用户标识符(user ID):进程组关系
间接相互制约关系:系统资源竞争,进程间彼此无关
直接相互制约关系:进程间合作,彼此相关
临界资源(Critical Resource/CR):一次仅允许一个进程访问的资源。
临界区(Critical Section/CS):临界段,在每个程序中,访问临界资源的那段程序。
还应注意不同临界区的临界资源,是不存在互斥的
如程序段A、B有关于变量X的临界区,而C、D有关于变量Y的临界区,那么,A、B之间需要互斥执行,C、D之间也要互斥执行,而A与C、B与D之间不用互斥执行。
同步机制应遵循的规则
空闲让进
忙则等待
有限等待(有限时间等待,以免“死等”)
让权等待(不能进入自己的临界区时,应及时释放处理机,以免进程陷入“忙等”)
信号量机制
整型信号量:定义为一个整型量,由两个标准原子操作wait(S)(P操作)和signal(S)(V操作)来访问。
P(S) 或 wait(S):
while S≤0
do no-op;
S:=S-1;
V(S) 或 signal(S):
while S>0
do no-op;
S:=S+1;
两种操作皆为原语操作。
进程同步练习题:
思考题:
1、桌上有一空盘,最多允许存放一只水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。
试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。
提示:设置一个信号量表示可否向盘中放水果,一个信号量表示可否取桔子,一个信号量表示可否取苹果。
解:
设置三个信号量S,So,Sa 。
S:表示可否向盘中放水果,初值为1。
So:表示可否取桔子,初值为0。
Sa:表示可否取苹果,初值为0。
2、有一个仓库,可以存放A和B两种产品。存储空间充分大,但要求:
(1) 每次只能存入一种产品(A或B)
(2) -N<A产品数量-B产品数量<M。
其中,N和M是正整数。试用P、V操作描述产品A与B的入库过程。
提示:设两个信号量Sa、Sb
Sa:表示允许A产品比B产品多入库的数量
Sb:表示允许B产品比A产品多入库的数量
解:设:
互斥信号量mutex,初值为1。
Sa:表示允许A产品比B产品多入库的数量,初值为M-1; 即B的数量为0,A最多为M-1
Sb:表示允许B产品比A产品多入库的数量,初值为N-1;即A的数量为0,B最多为N-1
3、问题描述:假定阅览室最多容纳100人阅读,读者进入时,必须在门口的登记表上登记,内容包括:姓名、座号等;离开时要撤销登记内容。用P、V操作描述读者进程的同步算法。
4、问题描述:理发店由一个有几张凳子的等待室和一个放有一张理发椅的理发室组成。若没有理发的人员,理发师睡觉;若顾客到来,且所有的椅子占满,则该顾客离开理发店;若理发师正在理发,则该顾客就找一张椅子坐下等待;若理发师在睡觉,则该顾客唤醒理发师。设计一个理发师和顾客的协调程序。
5、问题描述:设公共汽车上,司机和售票员的活动分别为:
司机:启动汽车; 正常行车; 到站停车;
售票员:上下乘客;关车门; 售票; 开车门;上下乘客;
用P、V原语描述:在汽车不断到站,停车,行驶的过程中。两个人的同步活动
————————————————
(Ps:书上的经典同步问题)
所谓进程通信是指进程之间信息交换。
高级通信:用户可直接利用OS提供的一组通信命令高效传送大量数据。分为:
共享存储器系统(Shared-Memory System) :进程间通过共享某些数据结构或共享存储区进行通信。
消息传递系统 (Message Passing System)
直接通信:发送进程直接把消息发送给接收者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。也称为消息缓冲通信
**间接通信:**发送进程将消息发送到某种中间实体中(信箱),接收进程从(信箱)中取得消息。也称信箱通信。在网络中称为电子邮件系统。
思考:直接通信与间接通信方式的主要区别?
前者需要两进程都存在,后者不需要。
管道(Pipe)通信 (共享文件方式)
习题: 进程A1、A2,…An1通过m个缓冲区向进程B1、B2、…Bn2不断发送消息。发送和接收工作遵循下列规则:
(1)每个发送进程一次发送一个消息,写入一个缓冲区, 缓冲区大小等于消息长度
(2)对每个消息,B1,B2,…,Bn2都须各接收一次,读 入各自的数据区内
(3)m个缓冲区都满时,发送进程等待,没有可读消息 时,接收进程等待。
试用P、V操作组织正确的发送和接收工作。
提示:每个缓冲区只需写一次但要读n2次,因此,可以看成n2组缓冲区,每个发送者要同时写n2组缓冲区中相应的n2个缓冲区,而每个接收者只要读它自己对应的那组缓冲区的对应单元。
Sin[n2]=m,表示每组缓冲区中可放的(空的)缓冲区的数目,初值为m;
Sout[n2]=0,表示每组缓冲区中可取的(已用的)缓冲区的数目,初值为0;
先将问题简化:
设缓冲区的大小为1
有一个发送进程A1
有二个接收进程B1、B2
设有信号量Sin[1] 、Sin[2] 初值为1
设有信号量Sout[1] 、Sout[2] 初值为0
————向目标前进一步
解:
设缓冲区的大小为m
有一个发送进程A1
有二个接收进程B1、B2
设有信号量Sin[1] 、Sin[2] 初值为m
设有信号量Sout[1] 、Sout[2] 初值为0
到达目标:
解:
设缓冲区的大小为m
有n1个发送进程A1….An1
有n2个接收进程B1…Bn2
设有n2个信号量Sin[n2] 初值均为m
设有n2个信号量Sout[n2] 初值均为
————————————————————————————————————————
线程:是进程中的一个实体,是被系统独立调度的基本单位。
线程的引入
引入进程的目的是为了使多个程序更好的并发执行,改善资源利用率、提高系统效率。
引入线程则是为了减少并发执行时所付出的时空开销,使并发粒度更细、并发性更好。
进程的两个基本属性
进程是一个资源分配的基本单位。
进程是一个可独立调度和分派的基本单位
引入线程的好处
创建一个新线程花费时间少
线程的终止时间比进程短;
同进程内的线程切换时间比进程短;
因为同一进程内的线程共享内存和文件,因此它们之间相互通信无须调用内核
适合多处理机系统
线程的属性
轻型实体:基本不拥有资源
独立调度的基本单位
可以并发执行
共享进程资源
————————————————————————————————————————