概述
第一章
操作系统的目标与应用环境有关。
查询系统中所用的OS,希望能提供良好的人—机交互性;推动分时系统形成和发展也是
工业控制、武器控制以及多媒体环境下的OS,要求其具有实时性;
微机上配置的OS,则更看重的是其使用的方便性。
操作系统的性质
- 方便性
2. 有效性:提高系统资源的利用率(推动操作系统发展的主要动力)、提高系统的吞吐量(合理组织计算机的工作流程,加速程序的运行,缩短程序的运行周期) - 可扩充性:无结构—模块化结构—层次化结构—微内核结构
4. 开放性(兼容性)
操作系统的作用
- OS作为用户与计算机硬件系统之间的接口:
OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
- OS作为计算机系统资源的管理者:
计算机系统可将多种硬件和软件资源分为四类:处理机(分配和控制处理机)、存储器(内存的分配与回收)、I/O设备(I/O设备的分配(回收)与操纵)以及文件->包括数据和程序(文件的存取、共享和保护)。
3. OS实现了对计算机资源的抽象(数据结构和I/O操作命令)
推动操作系统发展的主要动力
- 不断提高计算机资源利用率
2. 方便用户
3. 器件的不断更新换代
4. 计算机体系结构的不断发展
5. 不断提出新的应用需求
操作系统的发展过程
20世纪50年代中期,出现了第一个简单的批处理OS->60年代中期开发出多道程序批处理系统->推出分时系统->与此同时,用于工业和武器控制的实时OS->20世纪70到90年代,了微型机、多处理机和计算机网络、微机OS、多处理机OS和网络OS
单道批处理系统 (实现对作业的连续处理)
多道批处理系统(提高资源的利用率和系统吞吐量)
设计现代操作系统的主要目标是提高资源利用率和方便用户。
单道批处理系统实在解决人机矛盾和cpu和I/O设备速度不匹配的矛盾中发展起来的。
在单处理机环境下的多道程序设计具有多道、宏观上同时运行和微观上交替运行的特点。
批处理系统有着高的资源利用率和系统吞吐量;分时系统能获得及时响应;实时系统具有实时特征。
共同具有并发、共享、虚拟和异步四个基本特征。
共享:资源复用
临界资源:在一段时间内只允许一个进程访问的资源,称为临界资源。Ex打印机属于临界资源
并发和共享是多用户多任务OS的两个最基本的特征,它们互为存在的条件。
虚拟
- 时分复用技术(空闲时间)
Ex虚拟处理机技术、虚拟设备技术
2.频分复用技术:信道(称为频带)
3. 空分复用技术:存储器的空闲空间分区
异步
多道程序、多个进程并发执行
操作系统的主要功能(引入OS的主要目的是,为多道程序的运行提供良好的运行环境)
处理机的管理功能
- 进程控制
2. 进程同步
3. 进程通信
4. 调度:作业调度和进程调度。
内存分配(静态和动态):作业装入
1.静态:不能申请新空间、不能移动
2.动态:允许作业在运行过程中继续申请新的附加内存空间,也允许作业在内存中“移动”。
地址映射
多道程序、逻辑地址与其在内存空间中的物理地址并不相一致(数组下标)、为保证程序能正确运行、需要在硬件的支持下完成。
内存扩充
虚拟扩大内存,实现请求调入功能、置换功能。
设备管理应具有缓冲管理、设备分配和设备处理以及虚拟设备等功能。
文件管理功能
1. 文件存储空间的管理
2. 目录管理
- 文件的读/写管理和保护:文件的读/写管理、保护。
操作系统与用户之间的接口
1.用户接口(联机、脱机、图形用户接口)
2.程序接口
分层结构的主要缺点是系统效率降低。
经常利用“机制与策略分离”的原理来构造OS结构:
机制:实现某一功能、具体执行机构。
策略:在机制的基础、参数和算法实现该功能的优化,或达到不同的功能目标。
微内核功能:进程(线程)管理、低级存储器管理、中断和陷入处理
DAG
重量表示执行时间、不能连续。
第二章
进程
- 就绪(Ready)状态:分配到除CPU以外的所有资源。
2.执行(Running)状态:进获得CPU,程序正在执行的状态。
(原语)
3.阻塞(Block)状态:正在执行的进程由于发生某事件暂时无法继续执行。
- 挂起(Suspend):挂起进程从内存换出到外存。
- 唤醒(wakeup):执行的过程,首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。
- 激活(active)
引起创建进程
1.用户登录。
2.作业调度。
3.提供服务。(系统内核为用户创建新进程)
4.应用请求。(用户进程自己创建新进程)
引起进程阻塞和唤醒的事件
1.向系统请求共享资源失败。
2.等待某种操作的完成。
3.新数据尚未到达。
4.等待新任务的到达。
两种制约关系
- 间接(互斥)
系统实施统一分配,用户在使用之前先提出申请,不允许用户进程直接使用。
2.直接(同步)
它们之间的相互合作。
进程的异步性
进程在运行过程中是否能获得处理机运行与以怎样的速度运行,并不能由进程自身所控制。
临界资源:
在一段时间内只允许一个进程访问的资源。
OS管理的这些数据结构
一般分为以下四类:内存表、设备表、文件表和用于进程管理的进程表(PCB)。
生产者消费者(进程同步)
数组buff表示缓冲池
整型变量counter计数,计算商品,两个进程共享变量counter
生产和消费者满足互斥(提出申请,才能使用)和同步(相互合作)
输入指针in指向生产者将存放数据的存放单元:
每当生产者进程生产并投放一个产品后,输入指针加1;输入指针加1表示成 in=(in+1)% n。
输出指针out来指示消费者将取数据的存储单元:
每当消费者进程取走一个产品后,输出指针加1,输出指针加1表示成out=(out+1)% n。
(in+1) mod n=out时表示缓冲池满;in=out表示缓冲池空。
生产者进程中局部变量nextp
用于暂时存放每次刚生产出来的产品
消费者进程中局部变量nextc
用于存放每次要消费的产品。
Mutex为互斥信号量,初值为1,取值范围为(-1,0,1)。
Mutex=1,表示两个进程皆未进入需要互斥的临界区;
Mutex=0时,表示有一个进程进入临界区;
Mutex=-1时,表示有一个进程正在临界区运行,另外一个进程被阻塞在链表中,需要被当前已在临界区的进程退出时唤醒。
进程调度相关
进程状态:
指明进程的当前状态,进程调度和对换时的依据;
进程优先级:
用于描述进程使用处理机的优先级别的一个整数,优先级高的进程应优先获得处理机。
事件:
是指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。
操作系统内核相关
中断处理
Ex系统调用、键盘命令的输入、进程调度、磁盘驱动等。
时钟管理
Ex时间片用完时,需要时钟管理产生一个中断信号,促使调度程序重新进行调度。
原语操作
Ex原语和一般的程序区别。原子操作在系统态下执行,常驻内存。
操作系统内核功能
1.支撑(中断处理、时钟管理、原语操作)
2.资源管理(进程、存储器、设备管理)
同步机制
让权等待、空闲让进、有限等待、忙则等待
信号量机制
1.主要
wait(S)申请临界资源,p
signal(S)释放临界资源,v
- 分类:整型(不遵循让权等待->S<=0,wait就会不断测试)、记录型(遵循让权等待、比整型多了一个value代表资源数目还有一个list指针)
记录型详解
- >value资源信号量,绝对值表示资源数目(<=0分配完毕)
S>list初值为空,暂无阻塞(对它wait表示申请,signal归还)
利用信号量实现前驱关系ex:wait(S)
设置一个初始值0的信号量S,signal放前驱之后,wait放后继之前
利用信号量实现进程互斥ex:wait(mutex)
设置一个初始值1的信号量mutex,临界区放在wait和signal之间
管程
作用:利用共享数据结构抽象地表示系统中的共享资源
形式为:condition x, y(变量可表示为X.wait和X.signal或cwait(x)和csignal(x))
每个条件变量保存一个链表。
x.wait(或cwait(x)):正在调用管程的进程因x条件需要(x条件为false时)被阻塞或挂起,则调用x.wait将自己插入到x条件的等待队列上,并释放管程,直到x条件变化。此时其它进程可以使用管程。
x.signal (或csignal(x)):正在调用管程的进程发现x发生了变化,调用x.signal,重新启动一个因x条件而阻塞或挂起的进程。
信号量
分类:互斥(初始化为1)和资源
互斥信号量mutex:
实现诸进程对缓冲池的互斥使用
资源信号量empty和full:
分别表示缓冲池中空缓冲区和满缓冲区的数量。
读者-写者问题 (Reader与Writer)
wmutex:互斥信号量
readcount(整型变量): 记录谁是第一个读者,计数器、是一个临界资源,对Readcount的访问采用互斥的方式进行,因此设置一个互斥信号量rmutex。
rmutex:互斥信号量,对Readcount互斥访问。
进 程 通 信->信息交换
分类:共享存储器:数据结构(低级)储存区(高级)、管道通信:pipe文件、消息传递系统格式化的消息,高级,分为直接和间接、客户机-服务器系统主流、多对进程同时通信时端口和物理线路的多路复用问题
消息传递通信详解
对称
send(receiver,message):发送一个消息给接收进程
receive(sender,message):接收Sender发来的消息
Ex;Send(P2,m1),receive(P1,m1)
非对称
send(p,message):发送一个消息给进程P。
receive(id,message):接收来自任何进程的消息(id变量可设置为进行通信的发送方进程id或名字)
线程=进程-资源共享
进程崩溃,会导致其所属进程的所有线程崩溃
第三章
处理机调度(资源分配)
吞吐量
在单位时间内系统所完成的作业数
作业控制块JCB
作业运行的三个阶段和三种状态
- 阶段:收容、运行、完成
- 状态:后备、运行、完成
作业调度也称接纳调度
根据计算机的系统规模、运行速度、作业大小、以及能否获得较好的系统性能等情况作出适当的抉择的。
计算公式
周转时间=作业完成时间-作业提交时间
带权周转时间=作业周转时间/作业实际运行时间
抢占与非抢占
优先权数越小,优先级越高
采用SJF算法时,人—机无法实现交互
高响应比优先
死锁->无法向前推进进程(银行家算法避免死锁)
银行家算法
请求(request)资源:如果请求资源失败,请求进程将会被阻塞或循环等待。
使用(use)资源:进程对资源进行操作,如用打印机进行打印;
释放(release)资源:当进程使用完后自己释放资源。
可利用资源向量Available
Available[j]=K,表示系统中现有Rj类资源K个。
Max(最大需求矩阵或总需求量)
Max[i,j]=K,表示进程i需要Rj类资源的最大数目为K。
分配矩阵Allocation(已分配量)
Allocation[i,j]=K,表示进程i当前已分得Rj类资源的数目为K。
需求矩阵Need(未来需要量)
Need[i,j]= Max[i,j]- Allocation[i,j]
银行家算法详解
Requesti是进程请求向量
Request i[j]=K,表示进程Pi需要K个Rj类型的资源。
当Pi发出资源请求后
Request i[j]≤Need[i, j],便转向Max(最大需求矩阵或总需求量); 否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。
Request i[j]≤Available[j],便转向分配矩阵Allocation(已分配量); 否则,表示尚无足够资源,须等待。
分配资源
Available[j] = Available[j] - Request i[j];
Allocation[i, j] = Allocation[i, j] + Request i[j];
Need[i, j] = Need[i, j] - Request i[j];
第四章
存储器管理->冯诺依曼
高速缓存cache
三级存储器:CPU寄存器,主存,辅存(寄存器和主存储器又被称为可执行存储器)
程序运行步骤->装入内存,转变为一个可执行程序(3步)
1.编译:由编译程序对用户源程序进行编译,形成若干个目标模块
2.链接:由链接程序(Linker)将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块。形成逻辑地址的阶段
3.装入:由装入程序(Loader)将装入模块装入内存。
主存储器
简称内存或主存,保存进程运行时的程序和数据,也称可执行存储器。
寄存器
对寄存器的访问速度最快,主要存放操作数,或用作地址寄存器加快地址转换速度。
缓存(高速、磁盘)
高速缓存
存储器,介于寄存器和存储器之间,备份主存中较常用的数据,减少处理机对主存储器的访问次数,提速。
磁盘缓存
暂时存放频繁使用的一部分磁盘数据和信息,利用主存中的部分存储空间暂时存放从磁盘中读出(或写入)的信息。
连续分配存储管理(单一、 固定分区、动态分区分配(可变分区分配))
单一连续分配:
系统区和用户区两部分,整个内存的用户空间由该程序独占。
固定分区分配:
分几个用户区(用户1,用户2...),分区按其大小进行排队
最早出现,每个分区的大小固定,造成存储空间的浪费。
动态分区分配(可变分区分配):
空闲分区、空闲分区链,刚开始是个大分区后面分化成不同功能的部分
可将所有的空闲分区链接成一个双向链
分区分配
分配、回收
动态分区分配算法
基于顺序搜索的动态分区分配算法
1.首次适应(first fit,FF)算法
地址递增的次序链接,优先利用内存中低址部分的空闲分区
2.循环首次适应(next fit,NF)算法
从上次找到的空闲分区的下一个空闲分区开始查找
3.最佳适应(best fit,BF)算法
容量以从小到大的顺序形成一空闲分区链
4.最坏适应(worst fit,WF)算法
最大的空闲区,容量以从小到大的顺序形成一空闲分区链,适用于不太大的系统。
基于索引搜索的动态分区分配算法
1. 快速适应(quick fit)算法
分类搜索法,容量大小,每一类具有相同容量的所有空闲分区
2.伙伴系统(buddy system)
2的k次幂
3. 哈希算法
动态可重定位分区分配
1.紧凑:把原来分散的多个空闲小分区拼接成一个大分区
- 动态重定位
地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的。
- 动态重定位分区分配算法
对换(Swapping):交换技术
分页存储管理方式(连续和非连续)
连续存储:存在外零头,浪费存储空间。“紧凑”需要系统额外开销。
非连续存储:允许将一个进程的程序和数据存储在多个独立的分区中,充分利用内存空间。
离散分配方式(分页、分段、段页)
1.分页存储管理方式
将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。将内存的物理空间划分成若干个物理块或页框。
2.分段存储管理方式
将用户的地址空间分为若干个大小不同的段,每段可定义一组相对完整地信息。作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息
- 段页式存储管理方式。
先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。同时配置段表和页表,段表的内容与分段系统略有不同,它不再是内存始址和段长,而是页表始址和页表长度。
段表寄存器
用于存放段表始址和段表长度TL
页是信息的物理单位,段是信息的逻辑单位
第五章
虚拟存储技术:从物理上增加内存容量、从逻辑上扩充内存容量(用户所感觉到的内存容量会比实际内存容量大得多)具有请求调入功能和置换功能
内存分配策略
1.固定分配局部置换
2.可变分配全局置换
3.可变分配局部置换
进程总的页面访问次数
A = S + F(成功+失败)
缺页率
f=F/A(失败/访问次数)
页面置换(访问的页面不在内存,而需把它们调入内存,但内存已无空闲空间)算法
- 最佳置换算法(OPT):淘汰页面永不使用
2.先进先出(FIFO)
3.最近最久未使用置换算法(LRU):最久未使用的页面予以淘汰->赋予每个页面一个访问字段,并利用它来记录一页面自上次被访问以来所经历的时间t,淘汰时选择t最大的页面。
4.Clock置换算法(NRU):循环队列,访问位为“0”,选择该页淘汰
5.最少使用置换算法(LFU):最近时期使用最少的页面作为淘汰页->每个页面设置一个移位寄存器,用来记录该页面被访问的频率。
6.页面缓冲置换算法(PBA)
“抖动”状态
运行的进程太多,排队等待页面调进/调出的进程数目增加,每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作
第六章
I/O系统的基本功能
1. 隐藏物理设备的细节
2. 与设备的无关性
3.提高处理机和I/O设备的利用率
目前对I/O设备有四种控制方式:
1.轮询的可编程I/O方式;
2.中断的可编程I/O方式;
3.直接存储器访问方式;
4.I/O通道方式。
软件/硬件(RW/HW)接口
I/O系统的分层(3层)
1.中断处理程序。
2.设备驱动程序。进程和设备控制器之间的通信程序,将上层发来的抽象I/O请求转换为对I/O 设备的具体命令和参数,装入控制器的命令和参数寄存器中。
3.设备独立性软件。设备命名、设备分配和数据缓冲
进程之间的切换是通过中断来完成的
设备驱动程序的功能:空闲完成忙则等待
常用的I/O控制方式是中断驱动和DMA方式
很多驱动程序的基本部分已经固化在ROM中
DMA控制器(3部分)
1.主机与DMA控制器的接口
2.DMA控制器与块设备的接口
3.I/O控制逻辑
寄存器
1.命令/状态寄存器CR:用于接收从CPU发来的I/O命令,或有关控制信息,或设备的状态。
2.内存地址寄存器MAR:在输入时,它存放把数据从设备传送到内存的起始目标地址,在输出时,它存放由内存到设备的内存源地址。
- 数据寄存器DR:用于暂存从设备到内存,或从内存到设备的数据。
4.数据计数器DC:存放本次CPU要读或写的字(节)数。
DMA工作过程
当CPU要从磁盘读入一数据块时,便向磁盘控制器发送一条读命令。该命令被送入命令寄存器CR中。同时,需要将本次要读入数据在内存的起始目标地址送入内存地址寄存器MAR中。将要读数据的字(节)数送入数据计数器DC中。还须将磁盘中的源地址直接送至DMA控制器的I/O控制逻辑上。然后启动DMA控制器进行数据传送。
DMA控制器每读入一个字(节)的数据,送入数据寄存器,将字节传送到MAR所指示的内存单元中,对MAR加1,DC减1,若DC内容为0,则传送完毕,由DMA控制器发出中断请求。
虚拟设备把一个物理设备变换成多个对应的逻辑设备
磁盘设备的I/O控制主要采取DMA方式
发出磁盘I/O请求后
用户程序-系统调用处理程序-设备驱动程序-中断处理程序
最后
以上就是强健山水为你收集整理的计算机操作系统期末复习总结的全部内容,希望文章能够帮你解决计算机操作系统期末复习总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复