王道考研-操作系统学习笔记
- 联机命令接口(交互式命令)&脱机命令接口(批处理命令接口)
- 单道批处理程序时的监控程序是操作系统的原型,多道批处理程序时操作系统正式诞生
- 运行机制
- 两种指令
- 特权指令
- 非特权指令
- 两种状态(用PSW 寄存器的某个标记位表示)
- 核心态(管态)
- 用户态(目态)
- 两种程序
- 应用程序
- 内核程序
- 两种指令
- 中断和异常
- 本质:在多道批处理后引入了中断机制,本质:中断发生之后需要操作系统介入,进行一些管理工作
- 用户态-->核心态的切换是通过【中断】实现的,且中断是唯一的途径
- 核心态-->用户态的切换是通过一个特权指令,奖PSW寄存器的标记设置为“用户态”即可
- 中断分为两大类
- 内中断(信号来源:CPU内部,与当前执行的指令有关,也成为异常、陷入)
- 自愿中断(如内核系统调用)
- 强迫中断(硬件故障,缺页。软件中断,除0)
- 外中断(信号来源:CPU外部,与当前执行的指令五关)
- 外设请求(IO操作完成)
- 人工干预(用户强制中断执行)
- 内中断(信号来源:CPU内部,与当前执行的指令有关,也成为异常、陷入)
- int 指令(interrupt 又称为 陷入 rap访管指令,在用户态调用,立即引发内中断,处理系统调用的相关代码进入核心态)
- CPU 每执行一条指令后就会去检查是否有中断发生
- 进程
- 进程由PCB(进程控制块)、程序段、数据段组成
- 进程控制-- 实现进程各种状态的转换,通过原语实现 ,原语是被 【关中断】和【开中断】指令包含的原语代码,CPU不会被外部中断打断
- 进程控制原语(阻塞原语和唤醒原语需要成对出现 )
- 更新PCB中的信息
- 将PCB 插入合适队列
- 分配回收资源
- 进程通信指是进程间的信息交换
- 共享存储(必须互斥、PV操作)
- 基于数据结构的共享,低级通信
- 基于存储区域的共享,高级通信
- 消息传递(以格式化的消息message为单位,通过操作系统提供的发送接收消息原语进行数据交换)
- 直接通信,消息直接挂到接收进程的消息队列
- 间接通信,消息要先发到中间实体
- 管道通信
- 半双工通信,同一个时刻只能向一个方向通信,两个管道实现全双工
- 需要互斥,写满write 阻塞,读空read阻塞。
- 没写满,不允许读,没读空,不允许写。
- 共享存储(必须互斥、PV操作)
- 线程
- 传统的进程是执行流调度的最小单位,现在线程是CPU执行的基本单元,进一步提高了系统的并发度。
- 进程只作为除CPU之外的系统资源的分配单元
- 线程实现方式
- 用户级线程,线程通过应用程序的线程库创建,在用户空间,由用户程序负责调度,操作系统看不到
- 内核级线程,线程通过操作系统内核创建,由内核调度。在内核空间。
- 多线程模型
- 多对一、一对一、多对多
- 调度机
- 不能调度的情况:1、处理中断的过程中 2、操作系统内核临界区中不能进行调度 3、原语不能进行调度
- 进程切换
- 对原来运行进程的各种数据的保存
- 对新的进程的各种数据的恢复(计数器、程序状态字、各种数据寄存器等处理机现场信息,一般保存再进程控制块中、进程控制块在队列中、常驻内存)
- 多级反馈队列调度算法:多个队列优先级从高到低,时间片从小到大
- 进程同步、互斥
- 进程异步,各并发执行的进程以各自独立的、不可预知的速度向前推进,(步调不一致)
- 进程同步,直接制约关系,协调多个多个异步进程的工作次序,使他们之间相互合作(步调一致)
- 互斥指临界资源的访问方式(识别临界资源)
- 代码分为:进入区、临界区、退出区、剩余区
- 遵循原则:空闲让进、忙则等待、有限等待、让权等待
- 进程互斥的软件实现方法
- 进程互斥的硬件时间方法
- 中断屏蔽方法(开/关中断指令)
- 优点:简单、高效;缺点:不适用多处理机,只适用操作系统内核进程、不适用用户进程
- TestAndSet(TS指令、TSL testandsetLock) 是用硬件实现的,执行过程不会被中断
- SWAP 指令
- 中断屏蔽方法(开/关中断指令)
- 信号量实现进程互斥、同步、前驱
- 实现互斥:
- 分析出临界区
- 设置互斥信号量 mutex 设置为1
- (信号量是指操作系统中的某种资源,临界区也可以是一个资源)
- (进程)程序代码先对互斥信号量进行P操作,
- (进程)程序代码再对互斥信号量进行V操作
- 实现同步(由于进程并发执行,时间片轮转、程序内顺序执行、程序间存在异步性,同一个程序的多个进程(线程)间的代码片段交替执行次序是不确定的)
- 需要先分析什么地方需要实现同步关系(进程间代码片段1要比代码片段2先执行)
- 设置同步信号量S,初始为0
- 在“前操作”之后执行V(S)
- 在“后操作”之前执行P(S)
- 实现前驱(多级同步关系)
- 需要为每一对前驱关系各设置一个同步变量
- 在“前操作”之后对响应的同步变量执行V操作
- 在“后操作”之前对响应的同步变量执行P操作
- 实现互斥:
- 内存
- 操作系统负责内存的分配和回收
- 连续分配
- 固定分区分配
- 动态分区分配 z
- 非连续分配
- 页框(物理块)是内存的分配和回收单位,实际物理地址还是字节,是由页号+页内偏移量计算得到的,计算机实际操作的地址仍然是字节
- 逻辑地址和物理地址的转换
- 计算进程内页号(逻辑页号),计算方法:地址除以页大小
- 计算进程内页面内偏移量(页内便宜量),计算方法:地址模页大小
- 根据页表得到实际物理块号
- 根据物理块号(块大小可以得到物理地址)+页内偏移量得到 物理地址
- 页表项大小的计算
- 页表在内存中是连续存储的,数组存储而不是键值对,比如页表项是3个字节大小,逻辑0号页,对应的物理地址存在0~2 三个字节中
- 每个进程有一个页表,页表有页号和块号组成
- 每个页表项长度是相同的,页号是隐含的,这样通过数组就能实现页号和块号的对应,计算页表项长度的方法
- 未运行时页表启始地址和页表长度(校验页号是否合法)是放在进程pcb中,当进程被调度时,放入ptr页表寄存器中。
- 因为时间局部性和空间局部性引入了快表机制,又称为联想寄存器(TLB),内存中页表又称为慢表。
- 单级页表的问题
- 页表必须连续存放,如果页表很大,需要占用很多连续的页框
- 没必要让整个页表常驻内存,大部分情况只需要特定的几个页表就可以
- 多级页表的大小不能超过一个页面
- 基本分段管理(和分页管理不同是分配的单位不一样)
- 按照程序自身逻辑 划分为若干段,各段之间不相邻,段内地址连续,段内地址从0开始
- 页是信息的物理单位,分页的主要目的是为了实现离散分配,提高利用率,仅仅是系统管理需要,对用户是不可见的
- 段是信息的逻辑单位。分段的主要目的是为了更好的满足程序员的需求。一个段通常包含着一组属于一个逻辑模块的信息。分段是对用户可见的,用户编程时需要显示的给出段名
- 页大小时固定由系统决定的,段的长度不固定。决定于用户编写的程序。分页是一维的,分段是二维的
- 分段更容易实现信息的共享和保护(因为分段是按照代码逻辑划分的,可控制)
- 段页式内存管理
- 一个程序有一个段表,每个段项对应一个页表。一个进程可能有多个页表
- 连续分配
- 逻辑上对内存空间进行扩充(虚拟内存)
- 覆盖、交换
- 虚拟内存技术
- 传统的缺点:一次性装入内存、一直驻留内存
- 请求调页
- 页换出
- 实现逻辑地址和物理地址的转换
- 内存保护
- LRU (最近最少使用算法)
- 从当前的访问位置,向前追溯访问历史,最久没被用到的元素,被淘汰掉。
- 驻留集:分配给进程的物理块集合,常驻内存
- 操作系统负责内存的分配和回收
- 文件管理
- 在很多操作系统中磁盘块的大小设置和内存页大小一致,便于内存和外存间的数据交换
- 外存的管理方式和内存思路一样,分块、逻辑地址和物理地址及映射表
- FAT (显式连接文件分配表)整个磁盘仅仅有一张,索引文件每个文件都有一个分配表
- 平时使用的个人电脑是把一个磁盘划分为多个逻辑卷,在大型操作系统中,也可以由多个磁盘组成一个逻辑卷
- Unix 系统使用“成组链接法”跟踪空闲磁盘号,试用超大文件系统,由超级块记录
- 两种打开文件表
- 系统的打开文件表(整个操作系统只有一张),提供了打开技术器,一共被多少进程打开
- 用户进程的打开文件表
- 磁盘初始化
- 低级格式化,划分扇区
- 磁盘分区
- 逻辑格式化(创建文件系统)
- 自举程序(bootstrap),ROM 存放了一个很小的“自举装入程序”,完整的自举程序装在启动块中
- IO控制方式
- 程序控制方式(轮询:CPU干预频率高:传送单位字:IO设备--》CPU寄存器--》内存:CPU和IO 串行工作)
- 中断驱动方式(中断,每个指令执行末尾检查中断:CPU每次IO操作之前和完成之后CPU介入,干预频率低:每次中断一个字节:IO设备--》CPU寄存器--》内存:CPU和IO并行处理,传输大量数据需要很多中断,耗费CPU)
- DMA方式(直接内存访问:仅仅在传送一个或者多个数据块开始结束时才需要CPU干预:每次读写一个块:IO设备--》内存:CPU 和IO并行,性能进一步提高。只能读写连续块,否则也需要CPU多次干预)
- 通道控制方式(通道是一种硬件,弱鸡版CPU,可以识别并执行一系列通道指令:每次读写完一组块数据CPU干预:IO设备-》内存:实现复杂,需要专门硬件支持)
- 注意的问题:
- 完成一次读写操作的流程
- CPU干预的频率
- 数据传送的单位
- 数据的流向
- 主要的缺点和优点
- 什么是脱机技术
- 脱离主机(CPU)的控制进行输入和输出的操作。缓解CPU和设备间的速度矛盾,实现数据的预输入和缓输出。纸带机-》外围控制-》磁带-》计算机
- 假脱机(SPOOLING) 用软件的方式模拟脱机技术。用输入井模拟外围控制机+磁带