导图社区 操作系统(一、二章)
消息传递:进程间的信息以格式化的消息为单位。消息传递机制实现 进程通过操作系统的发送消息和接收消息两个原语进行数据交换。 直接通信方式:发送进程直接把消息发送给接收进程,并将他挂载接收进程的消息缓冲区中,接收进程从消息缓冲区中取得消息。 简介通信方式:发送进程将消息发送给中间实体(信箱)接收进程从中间实体取出。
编辑于2022-10-27 18:55:42 四川省操作系统
第一章:计算机系统概述
第一节:基本概念
操作系统是对计算机软硬件进行分配和管理
并发、共享、虚拟(多道程序设计技术)、异步。 并发和共享是最基本的两个特征。只要运行环境相同,操作系统就必须保证多次运行程序后都获得相同的结果。
命令接口
联机命令接口:交互式命令接口
脱机命令接口:批处理命令接口
程序接口:由一组系统调用组成(由库函数实现,通过用户程序间接使用)。用户通过系统调用来请求操作系统为其提供服务。
第二节:发展历程
手工操作阶段
批处理阶段
单道批处理系统:自动性、顺序性、单道性(内存总仅有一道程序运行)
多道批处理系统:多道、宏观上并行,微观上串行(不提供人工交互能力)
分时操作系统
按时间片轮流的让各个用户的作业使用。同时性、交互性、独立性
实时系统
硬实时系统:必须在规定时间内完成
软实时系统:可以超粗规定时间
分布式系统
若干计算机相互协作完成同一任务
个人计算机系统
Windows、Linux、Macintosh
第三节:运行环境
操作系统执行两种不同性质的程序:操作系统内核程序、用户自编程序
特权指令、非特权指令。用户态(目态)、核心态(管态、内核态)。 切换到用户台的指令也是特权指令。 原语、中断机制、始终管理
中断:外部中断(来自CPU外部的事件)如:I/O结束中断、时钟中断 异常:内部终端(来自CPU内部的事件)如:地址越界、除数为0 异常分为: 故障:通常由指令执行引起的异常:非法操作码、缺页故障、除数为零、运算溢出 自陷(Trap):用于在用户态下调用操作系统 终止:出现了CPU无法继续执行的硬件故障。如:控制器出错、存储器校验错(在CPU运行时要访问一些硬件,这是发现硬件出现了故障。)
故障和自陷属于软件中断,终止和外部中断属于硬件中断
第四节:结构
分层法:每层只能调用邻近它的低层的功能和服务。优点:便于调试和验证、易扩充和易维护。 缺点:合理定义各层比较困难、效率较差。
模块化:操作系统划分为具有一定独立性的模块。 各模块间通过接口通行。 优点:提高了设计的正确性和可维护性、增强了适应性、加速了开发过程。 缺点:模块间的规定难以满足对接口的实际需求、无法找到一个可靠的决定顺序。 内聚性:模块内部的紧密程度。越高越好 耦合性:模块间的相互联系和影响程度。越低越好
宏内核:单内核、大内核。Windows、iOS、macOS、Linux
微内核:采用C/S模式,将移除内核部分分为若干服务程序。借助微内核通信。 “机制与策略分离”的原理。机制位于内核,策略位于外部。 内核功能:低级存储管理(进程或线程间的通信、进程的切换、进程调度、同步) 低级存储器管理(页表机制和地址变换机制) 中断和陷入处理(捕获所发生的中断并进行中断响应处理,具体处理由由服务器来处理。) 特点:扩展性灵活性、可靠性安全性、可移植性、分布式计算 微内核结构的主要问题是性能问题,应为需要频繁的在用户态和核心态切换,开销大
外核:给每个用户分配整个资源的一个子集。
第五节:操作系统的引导
激活CPU,读取ROM中的boot程序,将指令寄存器置为BIOS的第一条指令 硬件自检,启动BIOS程序,检查没有硬件故障 加载带有操作系统的硬盘,自检后BIOS将控制权交给怕、启动顺序排在第一位的存储设备,加载其引导扇区的内容到内存中 加载主引导记录MBR,MBR告诉CPU去硬盘的那个分区找操作系统。(分区找到) 扫描硬盘分区表,(活动分区、非活动分区)找到活动分区后将控制权交给活动分区 加载分区引导记录PBR,读取活动分区第一个扇区(分区引导记录PBR)其作用是找到引导操作系统的程序(启动管理器) 加载启动管理器,加载操作系统
第五节:虚拟机
第一类虚拟机:虚拟机作为用户态的一个进程运行,不允许执行敏感指令
第二类虚拟机:VMware workstation X86
第二章:进程与线程
第一节:进程与线程
进程映像(程序段、数据段、PCB构成:进程实体)是静态的,进程是动态的。
PCB是进程存在的唯一标志
异步性导致结果不可再现性,所以必须为此佩慈进程同步机制
运行态、阻塞态、创建态(创建完成就放入就绪队列,如果没有完成就还是在创建态)、结束态(先设置为结束态,然后再处理资源释放和回收 ) 注:挂起 进程创建时为之创建PCB,常驻内存,进程结束时才删除。只能通过PCB感知该程序存在。 创建时资源分配不足就等待,并不是失败
组织:连接方式(同一状态连链接一个队列)、索引方式(同一状态放在同一张索引表中,表项指向相应的PCB) 注:程序可以被多个进程共享
进程通信
共享存储:通信进程之间存在一块可直接访问的共享空间。需使用互斥工具 低级共享:基于数据结构 高级共享:基于存储区的共享 数据交换由用户自己安排读/写指令完成
消息传递:进程间的信息以格式化的消息为单位。消息传递机制实现 进程通过操作系统的发送消息和接收消息两个原语进行数据交换。 直接通信方式:发送进程直接把消息发送给接收进程,并将他挂载接收进程的消息缓冲区中,接收进程从消息缓冲区中取得消息。 简介通信方式:发送进程将消息发送给中间实体(信箱)接收进程从中间实体取出
管道通信:以字符流方式将信息送入管道 采用半双工方式 要实现父子进程之间互动通信需要两个管道。可以双向传输数据
线程是基本的CPU执行单元,也是程序执行流的最小单元。是被调度和分配的基本单位,不拥有自己的资源(共享其进程的资源,进程时资源分配的基本单位)
用户级线程(ULT)、内核级线程(KLT,切换时需要用户态转到核心态,开销大) 线程库:内核级(操作系统提供,会导致系统调用),用户级(用户空间中) 线程模型:一对一、多对一、多对多
第二节:处理机的调度
高级调度(作业调度,每个作业只调入一次调出一次)中级调度(内存调度)低级调度(进程调度)
CPU利用率:有效工作时间/(有效工作时间+空闲等待时间) 系统吞吐量:单位时间CPU完成的作业数量 周转时间:作业提交到完成的时间 带权周转时间=作业周转时间/实际运行时间 等待时间:等待处理机执行的时间之和 响应时间
抢占调度方式(剥夺方式)非抢占调度方式(非剥夺方式) 闲逛程序
调度算法
先来先服务(FCFS)非抢占式,利于cpu繁忙型作业
短作业优先(SJF)对长作业不利(饥饿)平均等待时间和平均周转时间最短
优先级调度:抢占式和非抢占式优先级调度算法,静态优先级、动态优先级
高响应比优先级算法:响应比=(等待时间+要求服务时间)/要求服务时间 克服了饥饿现象,非抢占式
时间片轮转调度算法:分时系统 时间片大:退化为FCFS 小:系统开销大
多级队列调度算法:设置多个队列,不同队列设置不同调度算法,同意队列设置不同优先级,不同的队列本身也可设置优先级
多级反馈队列调度算法:不必事先估计执行时间
模式切换:用户态和核心态之间切换 上下文切换:发生在内核态,改变cpu中的进程
第三节:同步与互斥
临界资源:一次只能允许一个进程使用的资源,访问临界资源的代码为临界区 空闲让进、忙则等待、有限等待、让权等待(不一定要实现)
实现互斥的方法
软件实现:单标志法(违背空闲让进)双标志法先检查(先循环,违背忙则等待) 双标志后检查法(先设置True,产生饥饿)peterson's Al(增加turn变量,违背让权等待)
硬件实现方式:屏蔽方法 硬指令方法(违背让权等待,可能导致饥饿) TestAndSet指令 Swap指令
信号量:整形信号量(违背让权等待)记录型信号量(设置堵塞队列)
利用信号量实现同步、利用信号量实现互斥、利用信号量实现前驱关系
管程:共享资源的数据结构及其一组方法所组成。 1、管程的数据只能被局部与管程的过程访问 2、一个进程只能通过调用管城内的过程才能进入访问数据 3、每次只允许一个进程在管城中执行某个过程 4、实现了进程间的同步(条件变量)、互斥(进入管程)
经典同步问题:生产者-消费者问题、苹果-橘子问题、读者-写者问题(设置count)哲学家进餐问题(一次拿起所有的资源) 、吸烟者问题
第四节:死锁
死锁条件:互斥条件 、不剥夺原则、请求并保持条件、循环等待条件(只是必要条件)
死锁处理策略:死锁预防、避免死锁、死锁的检测和解除
死锁预防:破坏互斥条件、破坏不可剥夺(释放自己的资源)、破坏请求并保持条件(一次申请完所有资源)、破坏循环等待条件(对资源 排序)
死锁避免:安全状态、银行家算法 不在安全状态可能会产生死锁,在安全状态一定不会产生死锁
死锁检测和死锁解除:资源分配图、死锁定理(不可完全化简的资源分配是死锁) 死锁解除:资源剥夺法、撤销进程法、进程回归法
第三章:内存管理
区别条件变量(管程,没有值)和信号量(有值,代表资源剩余量)
设置互斥信号量初值为1,同步的初值由用户决定
二进制代码和常量放在正文段,动态分配的存储区放在数据堆段,临时使用的变量放在栈段(函数传参、未赋值的局部变量) 同一个进程(线程)可以通过系统调用被多个进程(线程)使用 对进程的控制和管理使用的时原语
进程不能访问其他进程空间,线程是自然共享进程空间的
保护错:PC机用户再程序访问不可访问的地址时出现的错误
常驻内存的只是操作系统内核,其他部分仅在需要时才调入 进程被终止时其子孙进程也会被终止
变态的过程是有成本的,要消耗不少的时间,频繁的变态会影响系统的性能
核心态到用户态由操作系统完成。用户态到核心态的转换是硬件完成(注意“转换”通过设置标志位来区分用户态和核心态)
系统调用:请求调用的是用户,运行在用户态。具体执行是操作系统内核程序执行运行在内核态
中断时PC的值由隐指令(硬件)保存。 中断是操作系统夺回CPU使用权的唯一途径
多任务操作系统:同一时间可以运行多个用户程序
广义指令:系统调用命令