并发和共享是多用户(多任务)OS的两个最基本特征,也是互为存在的条件。没并发就不存在共享,有并发就必须有共享管理。
特点:能有效支持多处理机运行,因此适合分布式系统。
基本概念:
基本功能:
优点:
缺点或存在的问题:
作用:描述程序的顺序和并发执行情况
特点:有向无循环图
定义:(1)进程是进程实体在计算机中的运行过程;(2)是系统进行资源分配和调度的基本单位
进程实体:即进程的映像,由PCB+程序+数据构成,其中PCB描述了进程进而控制进行,进程的创建与撤销本质上是对PCB进行操作
进程的特征:
进程的状态:
三状态模型:
创建状态和终止状态的引入:
挂起操作的引入:
进程控制块PCB的作用:
进程控制块PCB的组织方式:
目的:对多个相关进程执行的次序进行协调,使并发的各进程能按一定规则合理共享系统资源且合作,进而使程序执行可再现
两种制约关系:
临界资源:不能被多个进程同时访问的资源
临界区:每个进程中访问临界资源的一段代码,为此把一个访问临界资源的循环进程描述为【进入区、临界区、退出区、剩余区】
同步机制应遵循的规则:
整型信号量:通过两个原子操作(执行时不可被中断)实现对整型信号量S(表示资源数目)的控制
wait(s){
while s<=0; //do no-op,进程忙等,未遵循让权等待
s:=s-1; //s>=0时
}
signal(s){
s:=s+1;
}
记录型信号量:除了用于代表资源数目的信号量外,再增加一个进程链表指针,用于链接所有等待的进程
typedef struct{
int value; //表示资源数目即资源信号量,当其为1时表示只允许一个进程访问临界资源,value就是互斥信号量
struct process_control_black *list;
}semaphore;
wait(semaphore *S){
S->value--; //进程请求一个资源
if(S->value<0) //表示该资源已分配完毕
block(S->list); //自我阻塞,让权等待,加入到信号量链表中
}
signal(semaphore *S){
S->value++; //释放资源,可用资源数目+1
if(S->value<=0) //表示信号量链表中仍有等待该资源的进程被阻塞
wakeup(S->list); //将信号量链表中的第一个等待进程唤醒
}
AND型信号量:为了避免进程僵持造成死锁,在分配资源时将进程运行所需的全部资源一次性分配
信号量集:为降低思死锁概率,确保系统安全,当所申请的资源数量低于某一下限时,进行管制
作业:多道批处理系统中,程序从外存调入内存的基本单位
作业控制快JCB:作业在系统中存在的标志,保存了系统对作业进行管理和调度所需的信息,对JCB进行的各项操作就是作业在系统中的运行过程
作业调度:根据JCB中的信息,按照一定的调度算法,从外存的后备队列中选取某些作业调入内存,为其创建必要的进程、分配必要的资源后,将新创建的进程排在就绪队列上等待调度。
调度算法:
优点:简单可靠;有利于长作业;有利于CPU繁忙型作业
缺点:效率低;不利于短作业(带权周转时间长);不利于I/O繁忙型作业
优点:简单可靠;平均等待时间、平均周转时间最少
缺点:不利于长作业,存在黏附现象(易造成饥饿导致死锁);未考虑作业的紧迫性;是否真的短作业优先取决于用户提供的估计执行时间
死锁的定义:一组进程中每个进程都在等待仅有该组的另一个进程才能引发的事件,从而使这组进程处于僵持状态,则称该组进程处于死锁状态。
产生死锁的必要条件:
处理死锁的方法:
1-3的的死锁防范程度依次减弱,但资源利用率提高,以及进程因资源因素而阻塞的频度下降,即并发程度提高。
如何避免:在进程动态的申请过程中,先计算此次分配的安全性,若分配后不会导致系统进入不安全状态则分配资源
系统的安全状态:指系统能按某种进程推进顺序为每个进程分配资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利完成,此时该推进顺序称安全序列。若找不到安全序列,则称系统为不安全状态。安全状态下的系统不会产生死锁。
银行家算法:每次分配时检查所申请的资源数量是否小于need和可用资源,若小于则将假定分配后的情况做一个安全性检查,若结果安全,则分配,进行下一个申请的处理
首次适应FF:空闲区以地址递增的次序链接,分配时从链首开始顺序查找,直到找到一个大小能够满足的第一个分区,之后按照作业的大小从分区中划出一片区域(修改表),若不能找到则分配失败。
循环首次适应NF:与FF类似,但分配时从上次找到的空闲区的下一个空闲区开始顺序查找
最佳适应BF:空闲区以容量递增的次序链接,分配时从链首开始顺序查找,直到找到一个大小能够满足的第一个分区,之后按照作业的大小从分区中划出一片区域(修改表,修改排序),若不能找到则分配失败。
最坏适应WF:与BF相反,空闲区以容量递减的次序链接
基本任务:借助页表,实现从逻辑地址到物理地址的转换
基本的地址变换机构:采用硬件实现,页表存放在内存中
具有快表的地址变换机构: 由于基本的地址变换机构需要访问两次内存(访问页表、写入数据),为增加利用率,增设一个具有并行查询能力的高速缓冲寄存器(快表),存放常用的页表项。
分段:作业的地址空间依据逻辑关系被划分成若干段,故逻辑地址由段号和段内地址够成
段表:逻辑空间到内存空间的映射,由段号、段长、基址
地址变换机构:
分页和分段的主要区别:
定义:指具有请求调入功能和置换功能,能从逻辑上对内存加以扩充的一种存储器系统。
基本原理:基于局部性原理,在程序装入时,将程序的一部分装入内存,其余部分留在外存,就可以启动程序执行,在执行过程中,根据需要将信息调入或换出。
特征:
请求页表机制:为满足页面换进换出的需要,在请求页表中增加四个字段
缺页中断机构:与一般中断相比有两个区别
地址变换机构:地址变换时先检索快表
最佳置换算法:淘汰以后永久不使用的页面,或是在最长时间内不再被访问的页面(不可实现)
先进先出的页面置换算法:淘汰最先进入内存的页面
LRU:与最佳置换相反,淘汰过去最长时间没被使用的页面
LFU: 淘汰在最近时期最少使用的页面
引入原因:
数据项:基本数据项(描述某种对象某种属性的字符集,也叫字段)、组合数据项
记录:一组相关数据项的集合(关键字标识唯一)
文件:有结构文件(若干个相关记录组成)、无结构文件(可看成一个字符流)
文件的属性:类型、长度、物理位置、建立时间
文件的类型:
文件系统的层次结构:最底层是对象及属性、中间层时对对象操纵和管理的软件集合、最上层时文件系统的用户接口
文件操作:
文件控制块FCB:描述和控制文件的数据结构,通常包含文件的基本信息(文件名、文件物理位置、文件逻辑结构、文件物理结构)、存取控制信息(权限)、使用信息(建立日期、修改日期、当前占用等)
索引结点:把文件名和文件描述信息分开,减少平均启动磁盘次数,把文件描述信息单独形成一个称为索引结点的数据结构
磁盘索引结点:
内存索引结点:在磁盘索引结点上增加