- 绪论
- OS硬件模型:冯,诺伊曼模型5部分:内存(MDR和MAR),处理单元(ALU和TEMP),控制单元(PC程序计数器和IR指令寄存器), 输入,输出
- OS的形成与发展
- 手工操作阶段
- 脱机输入输出(缓冲区或者spooling技术)
- 批处理技术
- 多道程序设计
- OS基本类型
- 技术:
- 单道批处理技术
- 解决人机矛盾中,CPU和I/O设备不匹配的矛盾中形成的
- 多道批处理技术
- 高效利用CPU的资源
- 特点:多道,宏观上并行,微观上串行;
- 优点:资源利用率高,系统吞吐量大;缺点:用户响应的时间比较长,不提供人机交互能力
- 单道批处理技术
- 批处理OS:用户脱机使用计算机或者批处理
- 分时OS:多路性,交互性,独占性
- 实时OS:提供及时响应和高可靠性
- 其他类型OS:嵌入式,集群,网路,分布式OS(统一,共享,透明,自治)
- 技术:
- OS特征
- 并发性
- 共享性(互斥共享和同时访问)
- 虚拟性
- 异步性
- OS分层
- 内部层次结构
- 软件分层
- 操作系统的性能指标:
- 资源利用率,吞吐量,周转时间,平均周转时间
- 进程的处理机制
- 持续透明,杀死或重新执行;等待或持续
- 系统调用和函数调用的区别:
- 系统调用比函数调用更加安全,但开销会增加
- 系统启动时,堆栈切换和权限的切换,常用调用时无堆栈切换
- X86中断处理:iret与ret,retf
- iret弹出EFI,AGS和SS/ESP
- ret弹出EIP
- retf弹出CS(code Segement)与EIP
- OS的体系结构
- 模块组合结构
- 层次结构
- 微内核结构:适合分布式系统
- 进程和线程管理(作业管理,处理器管理):控制,同步,通信,调度,死锁
- 进程
- 定义:执行中的文件,即程序和程序运行的状态
- 特点:动态性,并发性,独立性,异步性和结构性
- 组成:进程控制块(PCB),程序段和数据段
- 进程转换图(省略)
- 操作系统的内核功能:中断,时钟和原语相关
- 进程间通信:
- 共享存储器系统:内存
- 消息传递系统
- 定义:以消息为单位,直接利用一组通信命令(原语或者信号量)来实现通信
- 直接通信:直接把消息发送给接收进程,接收进程从消息缓存队列中取得消息
- 间接通信:发送给某个中间件实体,类似于程序中的MQ
- 管道通信系统(pipe):
- 类似于一个OS类
- 特点:半双工通信,数据只能单向流动,只能存在于子父进程中,如linux的kill命令
- 只有一个线程时可临时放弃,进程则不同放弃,原语也不可中断
- 特征:
- 管程类的数据只能被局限于管程内进行访问
- 进程只有通过调用管程才能
- 每次仅允许一个进程在管程内执行某个过程
- 信号量(Semophore):
- 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段;
- OS是管理者,优先级高于进程
- 信号量可表示系统资源二代数量,由Dijsktra提出
- 主要由一个整型变量(sem)和两个原子(记录型信号量)操作
- P, V->wait(S),signal(S);表示资源信号量,前者保证互斥,后者保证释放
- P过程:
- 检查s.value>=0是否成立
- 成立:表示存在该类资源,则将该资源分配给进程,将s.value-1;
- 不成立:表示该资源已经分配完毕,进程自我阻塞,放弃处理机;
- 检查s.value>=0是否成立
- V过程:
- 释放一个资源,执行操作s.value+1
- 执行后,若s.value>0,表示存在该资源;
- s.value<=0表示信号量在等待队列中,仍然继续等待;
- 释放一个资源,执行操作s.value+1
- 实现进程同步:V(s)完成后进行释放,P(s)检查是否互斥;
- 实现进程互斥:在一个进程中先P(s)进行加锁和进入临界区,结束和用V(s)进行释放相应的资源;
- 实现前驱关系:用P(s)检测前者是否已经完成,用V(s)表示前者已经完成;
- 信号(signal):与信号配合使用,用于通知接收进程某个事件已经发生
- 套接字(socket):与其他通信机制不同的是,它可用于不同进程间的通信
- 线程间通信(与同步互斥的方法有交叉):
- 锁机制:
- 互斥锁:提供了以排他方式防止数据结构被并发修改的方法
- 条件变量:条件变量可以以原子的方式阻塞进程。对条件的测试是在互斥锁的保护下进行的,条件变量始终与互斥锁一起使用
- 读写锁:允许多个线程同时读共享数据,而对写操作是互斥的
- 信号量机制(Semaphone):包括无线线程信号量和命名线程信号量
- 信号机制(Signal)类似进程间的信号处理,但是主要用于线程同步,所以线程没有数据通信机制
- 锁机制:
- 作业:计算机完成某项任务而要求计算机所做的工作集合,可由多个进程组成,一般存在于批处理OS
- 线程(多个组成进程):为了更好使多道程序并发,共享相同的地址空间。指令执行流量最小单位,CPU调度的基本单位。
- 线程与进程的比较
- 资源
- 进程是资源分配单位,线程是CPU的调度单位;
- 进程拥有完整资源平台,而线程只独立指令流执行的必要资源
- 调度:三态状况几乎一致
- 并发性:线程能减少并发的时空开销,共享内存和文件资源,可直接通信。
- 资源
- 线程的实现方式:
- 多对多模型(轻量级进程)
- 优点:开发者能够创建所用的用户级线程
- 举例:SOLARIS2,IRIX,HP-UX
- 多对一模型(用户-线程级)
- 优点:线程在用户空间进行管理,效率相对较高
- 缺点:只要一个用户阻塞则全部阻塞
- 举例:POSIX,PTHREDS,Solaris Thread
- 一对一模型(内核级线程)
- 优点:相对独立,并发性好
- 缺点:创建,终止和切换相对较大,创建用户线程,同时创建内核线程,以线程为单位耗费更多时间
- 举例:Windows,Solaris,Linux
- 多对多模型(轻量级进程)
- 不同os对线程的支持:
- 单进程系统。MSDOS
- 单进程多线程。PSOS,如路由器
- 多进程系统。传统unix
- 多进程系统。现代UNIX
- 为什么PCB是进程存在的唯一标志?
- PCB是一个能与其他进程并发执行的数据结构,因此,PCB是为了保证程序的并发执行能力。
- 调度
- 处理器的三级调度:高级调度(作业:一组进程)->中级调度(内存管理与扩充)->低级调度(运行频率很高)
- 进程切换调度程序SWITCH主要任务:
- 保存现运行进程的现场信息
- 就绪队列中选择一个在内存且最优资格运行的进程,以免使其占用CPU
- 为新选中的进程恢复现场
- 调度的基本准则:CPU使用率,吞吐量,周转时间,等待时间,响应时间
- 进程调度的方式:抢占式(剥夺),非抢占式(非剥夺)
- 引起进程调度的原因:
- 进程结束
- 因某种原因:如I/O请求,P操作,阻塞原语
- 执行完系统调用等系统程序后返回用户进程
- 高优先级的进程进入
- 分时系统中,分配给进程的时间片已用完
- 带权周转时间 = 作业周转时间/作业实际运行时间
- 典型调度算法:
- 作业调度
- 先来先服务FCFS
- 短进程优先SPN
- 优点:具有最优平均周转时间
- 缺点:可以产生饥饿;预估未来
- 最高相应比
- 相应比 = 作业响应时间 /估计运行时间
- 特点:不可抢占,关注进程的等待时间
- 优先级调度算法
- 静态优先级:按进程类确定,按作业的资源要求确定,按用户类型和要求确定
- 动态优先级:根据进程占有CPU时间的长短来确定,根据就绪进程等待CPU时间的长短确定
- 进程调度
- 时间片轮RR
- 时间片:分配处理机资源的时间基本单位
- 时间片结束,按FCFS切换到下一个片
- 缺点:时间片太长退化成FCFS,时间片太小产生大量切换影响系统的吞吐量,时间片长度合适
- 多级反馈队列MFQ
- 定义:就绪队列分成独立的队列,每一个队列一个策略,前台交互,后台批量处理
- 固定优先级:无前台,无后台可能会导致饥饿
- 时间片轮转:每个都得到一些队列分配
- 公平共享调度 Fair Sharing Schedule
- 一些用户组比其他更重要
- 时间片轮RR
- 作业调度
- 进程
操作系统-速记版(个人幕布导出)
最新推荐文章于 2023-03-06 22:16:23 发布