章节内容:
章节内容可以理解为主要围绕计算机硬件来讲解的:
计算机硬件包括: 1、CPU(进程管理) 2、内存条(内存管理) 3、硬盘(文件管理) 4、显示器、键盘、鼠标,打印机(设备管理)
这样就容易理解整个计算机系统了。
章节一:绪论
主要讲解了操作系统为何产生以及发展。思考一下,刚开始把一堆CPU,内存,硬盘和鼠标键盘给你,你要怎么用起来,要想对他们进行各种协助就要一个东西来管理。最初的硬件是通过人工来管理的,特别选择女性来管理,因为各个插头的拔插和连接需要很细心。但是慢慢的发现这样很麻烦,就开始有脱机输入输出技术--》批处理技术--》操作系统。
现代操作系统最基本的特征是:并发和共享。
操作系统的五大功能:处理器管理、存储器管理、文件管理、设备管理、提供用户接口
并行性:两个或多个事件在同一时间同时发生
并发性:两个或多个事件在同一时间间隔发生,交替进行。
操作系统分类:批处理、分时、实时、嵌入式、网络、集群、分布式。
用户态和核心态: 用户态: 用户程序执行时机器所处的状态 权限小,只能执行特定指令。
核心态:操作系统管理程序执行时机器所处的状态 权限大,能执行特权指令。 特权指令:I/O指令、设置中断屏蔽指令、清理内存指令、设置时钟指令。
核心态只向用户提供接口,使得用户态能执行特定的指令和中断等。
操作系统的体系结构: 1、模块组合结构 2、层次结构 3、微内核结构(为了实现分布式系统环境,内核(普通用户进程)只留下最基本的功能,其他由运行在服务器进程来实现,形成 “客户/服务器”模式。客户拥有微内核
章节二:进程管理
进程和线程 比较:
1、调度:进程是拥有资源和独立调度的基本单位 线程只是独立调度单位,运行时资源属于进程。
2、拥有资源: 不管是有无线程的操作系统,进程都是拥有资源的基本单位,而线程只拥有极少的私有资源(程序计数器、一组寄存器、栈。用来保存线程的执行历史和线程的执行状态,这些资源也是进程的)
3、并发性:有线程的操作系统,进程可以并发,线程也可以并发。可以理解为一个程序有好几个进程,每个进程又有好几个线程。
4、系统开销:进程大(切换进程时要保存运行环境,重新启动时又要回复) ,线程小(自己本来就那么一点可怜的资源,开销肯定小)
进程包括: 程序段、数据段、进程控制块(是进程存在的唯一标志,因为在进程的整个生命期终,系统总是通过进程控制块进行控制的)
基础的基本状态:运行、就绪、阻塞。只有阻塞是主动的,没有资源就自己阻塞,其他都是被动的。
死锁产生的四个必要条件:互斥、请求与保持(没有得到新的资源前现在拥有的资源不释放)、不剥夺、环路等待(你等我我等你释放资源)
用户级线程和内核级线程区别:
进程通信:
处理器的三级调度: 运行频率:高级调度(作业调度)<中级调度< 低级调度(进程调度)
每次高级调度(作业调度)必须解决两个问题:1、决定操作系统可以接纳多少作业 2、决定接纳哪些作业
中级调度:可以理解为 操作系统将外存上的页面调入内存。
调度的评价标准: 1、CPU利用率 2、系统吞吐量 3、响应时间 4、周转时间
常见调度算法: 1、先来先服务 2、短作业优先 3、优先级(作业调度、进程调度) 4、时间片轮转 5、高响应比优先 6、多级队列(若干个独立的队列) 7、多级反馈队列(多个队列形成一条链,前面的队列执行了后面的队列才执行)
同步与互斥:
互斥:进程-资源-进程
同步:进程-进程
如何区分:只要是同类进程即为互斥关系,不同类进程即为同步关系。
临界资源和临界区:
临界资源:属于系统资源
临界区:属于进程,是进程访问临界资源的代码块。
同步应遵循的准则:
经典同步问题:
死锁:产生原因是几个进程因竞争系统资源或相互通信而处于永久阻塞状态。
根本原因:竞争资源 重要原因:进程推进顺序不当
处理死锁的四种方法:
饿死:因为等待时间过长而饿死,比如在优先级分配算法中,不断的有高优先级的进程产生,则低优先级的进程总是分配不到处理器,则会饿死。 饿死是有机会分配到处理器,只是时间比较长,而死锁是相互缺乏资源不能分配处理器。
章节三:内存管理
内存管理是指由于计算机所有的运行程序都是要放在内存条上才能运行的,但是内存条属于紧缺资源,所以得合理利用,通过合理的分配算法并设置虚拟内存的方法来扩充内存大小。
连续分配管理方式:
内部碎片和外部碎片:内存被分成各个分区,内存中分区里没有被利用的碎片是内部碎片,在内存中没有被利用的是外部碎片。
如:分片管理---固定分区(将内存分成固定大小的多个分区)---有内部碎片
分段管理---动态分区(要用多大的内存空间就开辟多大的)----最终整个内存中会剩余比如20MB,而任何进程所需要的都不止20MB,从而这20MB就是外部碎片。
非连续分配管理方式:
注意:不管是连续分配管理还是非连续分配管理,都是一次性将用户作业都放入内存中,这样很难满足一些大型的用户作业,有可能用户作业不能全部调入内存,那就阻塞了。
虚拟内存管理
面对大型的用户作业,无法一次性全部调入内存的情况下,那就得引入虚拟内存了。因为用户作业中有些程序是不频繁使用的,所以可以先放在外存上,当需要的时候再调入内存。这就利用的是局部性原理。
局部性原理:大多数程序在执行时,在一个较短的时间内仅使用程序代码的一部分,程序所访问的存储空间也是局限于某个区域。
请求分页存储管理方式:
利用上面讲到的基本分页存储管理方式将用户作业分页,然后利用虚拟内存管理技术,先将程序部分调入内存,其他的当需要的时候再从外存中调入。
请求分页 = 基本分页 + 请求调页功能 + 页面置换功能
页面置换算法:
抖动现象和Belady异常:
抖动:刚调出的代码又调入,反复这样就是抖动。
Belady异常:先进先出算法中,缺页率会随着所分配的物理块数的增加而增加。其他置换算法没有Belady异常。
请求分段存储管理系统:跟请求分页存储管理类似,先分段,然后调入一部分分段进入内存开始运行。
章节四:文件管理
上一章节讲的是对内存的管理,这一章讲的是对外存的管理。主要涉及的就是存在外存中的文件的结构,以及如何快速的找到指定的文件。
文件系统 = 文件 + 管理文件的软件 + 数据结构
文件系统包括4层:
磁带和磁盘的特点是:磁盘是随机存取,磁带是顺序存取。
磁盘访问时间 = 寻道时间 + 旋转延迟 + 传输时间
文件保护:防止文件受到物理破坏和非法访问
文件目录的实现: 1,线性表 2,散列表
调度算法:
磁盘管理:
章节五:设备管理
I/O软件设计的基本思想是:将设备管理软件组织成一种层次结构。其中底层软件与硬件相关,用来屏蔽硬件的具体细节;高层软件则为用户提供一个友好的、清晰而统一的接口。
I/O软件的层次结构:
I/O设备的4种控制方式:
SPOOLing系统:由磁盘中的输入井和输出井,内存中的输入缓冲区和输出缓冲区。
设备控制器:设备一般由机械部分和电子部分组成,其中设备的电子部分通常称为设备控制器。
设备控制器应具备的功能:
缓冲的实现方法: 1,采用硬件缓冲器实现 2,在内存划出一块存储区
设备分配依据的主要数据结构:设备控制表(DCT),设备控制器控制表(COCT),通道控制表(CHCT),系统设备表(SDT)
设备分配算法:1,先来先服务 2,优先级高者优先
假脱机技术(SPOOLing):将独占设备改造成共享设备,从而提高设备利用率和系统的效率。例如:打印机,在打印机中设置缓冲区,要打印的东西都放到缓冲区中,这样一次根据分配算法打印就实现了假脱机。