一、操作系统引论
1、操作系统作用
1)为用户与计算机硬件系统之间提供接口;2)管理计算机系统资源;3)对计算机资源进行抽象。
2、操作系统发展:
1)无操作系统的计算机系统:用户直接使用操作系统;
2)单道批处理系统:将作业输入到磁带上,每次调用一道作业进入内存;
3)多道批处理系统:将作业输入到磁带上,每次调用几道作业同时进入内存;特点:提高了CPU、内存、I/O设备的利用率,增加系统的吞吐量。
4)分时系统:按时间片,调入内存中的作业轮流执行;特点:人机交互,多用户使用
5)实时系统
3、微机的发展
1)单用户单任务操作系统:只允许一个用户上机,且只允许用户程序作为一个任务运行,MS_DOS
2)单用户多任务操作系统:MS_WINDOWS
3)多用户多任务操作系统:可以同时允许多个用户使用,Unix,Linux
4、操作系统特性
1)并发性:进程与线程是并发的基础,进程:资源分配的基本单位;线程:独立运行和调度的基本单位;
2)共享性:系统中的资源可以供多个应用程序共同使用;
3)虚拟技术:包括时分利用(虚拟处理器、虚拟设备)和空分复用(虚拟磁盘、虚拟内存)。
4)异步性:进程只能在获得资源后才能执行,在获取到指定资源之前处于等待状态。
5、操作系统主要功能:CPU管理、内存管理、设备管理、文件管理
二、进程管理
1、进程三种状态
1)就绪状态:等待分配CPU开始执行;
2)执行状态
3)阻塞状态:由于I/O或资源请求,暂时放弃处理机;
2、进程控制模块(PCB)
1)PCB是进程存在的唯一标志;
2)PCB模块包含的信息:进程标识符、处理机状态、进程调度信息、进程控制信息;
3、原子操作:要么不做、要么做完;系统对进程的控制要采用原子操作。
4、进程的创建
1)申请空白的PCB;
2)为新进程分配资源;
3)初始化PCB;
4)将新进程插入到就绪队列;
5、进程的删除
1)根据被终止进程的标志符找到其PCB,从中读取进程状态;
2)若该进程正在执行,应立即终止该进程的执行;
3)若该进程还有子进程,还应终止其所有子进程;
4)归还进程申请的所有资源,要么归还给父进程、要么归还给系统;
5)移除PCB信息;
6、进程同步主要任务:对多个相关进程在执行次序上进行协调,以使并发执行的多个进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
7、进程同步机制
1)信号量:用S记录系统中可供访问的某一资源,S是一个整型变量,但这一整型量只能由两个原子操作访问:wait(S)和signal(S);
a、整型信号量:但S<=0时,进程会不停测试,直至S>0,占用CPU资源;
b、记录型信号量:S<=0时,进程自我阻塞,放弃处理机,并将该进程加入至等待链表中;
c、AND型信号量:当进程需要多个临界区资源时,为防死锁,要么一个都不分配,要么全部分配;
2)管程(资源管理程序):所有进程访问临界资源都需要向管程申请,管程来决定该进程是进入临界区还是等待。另外,还需要多个条件变量记录正在调用管程的进程执行情况,如阻塞原因等。
8、进程通信
1)共享存储器
2)消息传统系统
3)管道通信系统
9、线程特性
1)线程可以理解为轻型进程;其本身拥有较少的资源(TCB、寄存器等),但可以共享进程资源;是独立运行和调度的最小单位;
2)引入线程后,进程不再是一个可执行的实体。
3)线程所占资源少、且一个进程中的多个线程具有相同的地址空间,所以线程切换代价比进程切换代价小;
4)同一个进程中的线程间切换不会引起进程切换,但不同进程间线程的切换会引起进程切换。
10、线程间同步和通信
1)互斥锁;2)条件变量;3)信号量
11 、调度算法
1)先来先服务调度算法:有利于长作业,不利于短作业
2)短作业优先调度算法:不利用长作业
3)优先权调度算法:静态优先权、动态优先权(优先权随时间改变)
4)时间片轮转调度算法
5)多级反馈队列调度算法:设置多个就绪队列,为各个队列设置不同的优先级,不同优先级队列对应的时间片不同,优先级越高,时间片越短;新进行内存的进程排在优先级最高的队列,当时间片结束还未执行完毕则转入第二队列的队尾;只有当前一优先级队列为空时才能执行下一优先级队列。
12、产生死锁的必要条件
1)互斥使用:对于某一资源,一段时间内只允许一个进程使用;
2)请求与保持:进程已经保持了至少一个资源,但又提出了新的资源请求;
3)不剥夺条件:在资源使用结束之间,其他进程不能剥夺该进程的使用权;
4)环路等待条件:发生死锁时,必然有另一进程占用着当前进程所需要的资源,而另一进程又在等待该进程占用的资源;
13、预防死锁:
1)摒弃“请求与保持”条件:进程必须一次性申请其所需的所有资源;
2)摒弃“不剥夺条件”:当一进程申请资源失败时应该立即释放其所占用的资源;
3)摒弃“环路等待”条件:所有进程对资源的请求必须严格按照资源序列递增的次序提出;
14、死锁的检测与解除
1)解除方法:剥夺资源、撤销进程
三、存储器管理
1、多级存储器
1)存储层次可以分为三层:寄存器、主存(内存)、辅存(磁盘);
2)不同层次之间还有相应的高速缓存以减小不同层次间读写速度不匹配程度;简单来说,主存也即寄存器和辅存之间的高速缓存;
3)不同层次的存储器读写效率不一样,读写速度越快,成本越高。
4)寄存器、主存、高速缓存等属于操作系统管理的范畴,断电后数据会丢失;而磁盘属于设备管理的范畴,断电后数据不会丢失。
2、程序装入
1)绝对装入方式:程序的逻辑地址和实际内存地址完全一致,不需要重定位,这种方式只适合单道批处理系统;
2)可重定位装入方式:将程序装入内存后,立即重新计算其绝对地址。
3)动态运行时装入方式:将程序装入内存后,不立即计算其绝对地址,而是等真正需要该模块时才重新计算其绝对地址。
3、程序链接方式
1)静态链接:直接把目标模块及所需要的库链接成为一个整体,链接完成后不再拆开;
2)装入时动态链接:在程序装入内存时,边装入边链接;
3)运行时动态链接:当一个模块需要时才去链接;
4、内存分配方式
1)连续分配:程序装入到一块连续的内存区域当中
a、单一连续分配:只适用于单用户单任务操作系统
b、固定分区分配:把内存区域划分为多个分区,每个分区装入一个程序;固定分区大小的划分有两种方式:相等、不相等,相等时可能引起内存浪费或部分大型程序无法执行
c、动态分区分配:建立空闲分区链或空闲分区表,当需要内存时,去链中寻找大小匹配的内存区域;
分区匹配算法:首次适应算法(第一个块大小能满足的区域)、循环首次适应算法(从上次一次查找的地方开始向后查找,相较于前一种方法,可以使空闲分区更均匀)、最佳适应算法(能满足要求,且是当前最小的空闲分区,导致很多小的碎片无法再利用)、快速适应算法(建立多个链表,大小相等的空闲分区放置到同一链表当中,需要使用时,直接取出相应链表的第一块分区给程序使用,不进行切割;但会导致分区回收复杂)。
d、伙伴系统:无论已分配分区还是未分配分区,其大小均是2的k次幂,这种方法分配和回收时都可能会引起多次切割。
e、哈希算法:以分区大小作为关键字,使用时取出对应分区的地址;
f、可重定位分区分配:当分区大小总和大于程序所需要内存时,可以通过“紧凑”的方法将内存进行整理,将分散的区域拼接在一起,其他程序需要重定位。
g、对换:将内存中暂时不能运行的进程或暂时不用的程序和数据调出到外存上,以腾出足够的内存空间。对换的单位可以是:进程、页、段;
2)离散分配方式
a、分页式存储:将进程的逻辑地址空间划分成若干大小相等的页面,将内存空间也划分成大小相等的存储块,将进程的页装入到内存空间的存储块当中,并建立页表即页至物理块的映射。
b、分段式存储:将程序按功能划分为若干大小不同的段,段的存储位置可以不连续;
c、分页和分段的区别:页是信息的物理单位,页本身没有实际含义,主要是为了提高内存的使用效率,而段是信息的逻辑单位,段有其完整的的信息,主要是为了满足用户需要;页的大小固定且相等,其大小由系统决定,而段的大小并不固定,其大小由用户所编写的程序决定;页的地址空间是一维的,而段的地址空间是二维的;段更适合信息共享。
d、段页式存储:将每个段分成若干页,地址结构:段号、段内页号、页内地址
5、虚拟存储器
当作业很大或都有大量作业需要运行时,引起内存不足;解决方案:扩展逻辑内存。
1)基础:
局部性原理:即在一较短时间内,程序的执行只局限于某个部分;相应地,它所访问的存储空间也局限于某个区域;
2)虚拟存储:
程序运行之前,没有必要将所有模块装入内存,仅将需要的页或段装入内存,其余部分暂留在盘上;当内存不足时,将暂时不需要的段或页对换到盘上;相当于扩展内存。
3)虚拟存储器特征:多次性,一个作业被分成多次调入内存运行;对换性,允许作业在运行时被换出;虚拟性,用户看到的内存容量远大于实际容量;
4)虚拟存储器实现方法:
(I)分页存储管理方式
a、三要素:页表机制、缺页中断机构、地址变换机构
b、页面置换算法:最佳置换算法(所被淘汰的页面将是以后永不使用的,或许是在最长时间内不再被访问的页面,该方法无法实现,只能用于评价其他方法)、先进先出页面置换算法(总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰)、最近最久未使用置换算法(选择最近最久未使用的页面进行置换,需要硬件支持)、最少使用置换算法(选择最近时期他用最少的页面作为淘汰页,需要硬件支持)、页面缓冲算法(将要被淘汰的页暂时不移出内存,而是放移动到一个链表后部,当达到一定数量后再移出)
(II)分段存储管理方式
a、三要素:段表机制、缺段中断机构、地址变换机构
四、设备管理
未完待续...