进程状态控制:
-
新建进程(new),进程进入新建状态,初始化pcb和分配系统资源
-
(就绪)进程创建完成,进入就绪队列等待cpu调度
-
就绪态->运行态,恢复进程运行环境和修改pcb内容和相应队列
-
运行态->终止态 回收pcb和系统资源
-
运行态->就绪态(时间片耗尽或者更高级别进程抢占)保存进程运行环境和pcb,进入就绪队列
-
运行态->阻塞态 缺少事件或系统资源,保存运行环境和pcb进入阻塞队列
-
阻塞态->就绪态 等待事件或资源响应,进入就绪队列

使用原语来进行控制进程状态转换,原语特点:原子操作,一气呵成,不可被中断 原语采用关中断和开终端指令来实现,在核心态状态下的特权指令
关中断指令
原语指令1
原语指令2
开中断指令
状态转换原语的操作
- 更新pcb中的信息
- 剥夺当前进程的cpu使用权需要保存其运行环境
- 某进程开始运行前要先恢复运行环境
- 将pcb插入合适的队列
- 分配/回收资源


进程通信:

进程通信,指进程之间的信息交换 进程是系统分配资源的基本单位
各进程之间的内存地址空间相对独立,一个进程不可以直接访问另一个进程的地址空间
共享存储
- 进程对共享空间的访问必须是互斥的,通过操作系统提供的工具实现(P,V)
- 共享存储的两种形式
- 基于数据结构的存储
- 基于存储区的共享
管道通信
管道间的通信互斥访问,如果没有写满,就不允许读,没有读完,就不允许写
- 管道: 半双工通信,进程间互斥的发送数据
- 命名管道 : 全双工通信,取消的父子进程通信的限制
消息传递
- 直接通信方式,进程间通过消息队列进行通信
- 间接通信方式, 消息发送中间实体(信箱)

进程和线程

用户级线程和内核级线程的对应关系
- 多对一
- 一对一
- 多对多



处理机调度问题

- 高级调度 (作业调度)
- 高级调度是外存和内存之间的调度,从外存的后备队列中挑选一个或多个作业,给它们分配内存等必要资源,创建相应的进程(PCB),使它们获得竞争处理机的权利。每个作业只调入一次,调出一次,作业调入时会创建相应的PCB,作业调出时撤销响应的PCB。高级调度主要指的是调入的问题,因为只有调入的时机需要操作系统来确定,调出的时机必然是作业运行结束才调出
- 中级调度(就绪态-就绪挂起,阻塞态-阻塞挂起)
- 一个进程可能会多次调入,调出内存
- 引入虚拟存储技术,可以把暂时不能运行的进程调至外存等待,等它重新具备了运行的条件并且内存又稍有空闲时,再重新调入内存
- 暂时被调到外存的进程状态位挂起状态,其PCB会常驻内存,PCB会记录进程在外存中的存放位置,进程状态信息等,被挂起的进程PCB会放到挂起队列中
- 中级调度就是决定将挂起队列中的那个进程重新调入内存
- 低级调度(进程调度)
- 从就绪队列中选取一个进程为其分配处理机


调度算法
cpu利用率
系统吞吐量:单位时间内完成作业的数量
总共完成多少作业/总共花费的时间
周转时间:作业提交给系统开始, 到作业完成为止的时间间隔
平均周转时间:各作业周转时间之和/作业数量

调度算法
先来先服务算法公平,考虑每个作业的等待时间,没有考虑每个作业的运行时间,有利于长作业,不利于短作业
短作业优先算法考虑了每个进程的运行时间,没有考虑等待时间,对长作业不友好,有可能导致饿死
- 先来先服务

- 短作业优先

- 高响应比优先算法
- 响应比:等待时间+要求服务时间/要求服务时间


- 时间片轮转调度算法

- 优先级调度算法

- 多级反馈队列调度算法


进程的同步异步

- 空闲让进
- 忙则等待
- 有限等待
- 让权等待




硬件实现进程互斥访问临界区



信号量PV操作


使用信号量机制实现线程同步
pv操作实现同步,在写操作后v,在读操作前p

信号量机制实现前驱关系


生产者和消费者问题
生产者每次生产一个产品放入缓冲区
消费者每次从缓冲区取出一个产品并使用
缓冲区时临界资源,需要互斥访问使用
使用pv信号量实现互斥,同步




哲学家进餐



管程



java中的synchronized就是管程
死锁

不可剥夺的资源的不合理分配,导致死锁 死锁的四个条件
- 资源互斥
- 不可剥夺
- 请求和保持
- 循环等待链(循环等待不一定会发生死锁)
死锁的处理策略
- 预防死锁
- 破环死锁产生的四个必要条件的一个或几个
- 避免死锁
- 使用某种算法防止系统进入不安全状态,从而避免死锁(银行家算法)
- 死锁的检测和解除

预防死锁
- 破坏互斥条件
- 破坏不可剥夺条件
- 破坏请求和保持条件
- 静态分配方法:进程在运行前一次性申请完它所需要的全部资源
- 破坏循环等待条件
- 顺序资源分配法:给系统中的资源分配编号,每个进程必须按编号递增的顺序请求资源,大编号资源不可以逆向回来申请小编号的资源

银行家算法(避免死锁)


死锁的检测与接触


内存管理

内存装入
- 绝对装入
- 静态重定位
- 动态重定位




内存管理
内存保护
- 上下界限寄存器

- 限长寄存器

覆盖与交换
- 覆盖技术 固定区与覆盖区 常驻放入固定区,不被同时使用放入覆盖区

- 交换技术
- 当内存空间紧张时,把内存中的某些进程暂时换出外存,把外存中某些已经具备运行条件的进程换入内存


内存空间分配
- 连续分配




- 动态分配






内存分页存储

分页储存







分段存储



段页式管理



虚拟内存








页面置换算法

- 最佳置换算法:理想化

- 先进先出

- 最近最久未使用置换算法LRU

- 时钟置换算法

- 改进时钟算法



页面分配策略



- 调入页面的时机




文件管理








文件目录

- 文件目录项: 就是一个文件控制块



树形目录不适合文件共享




文件的物理结构(对非空闲磁盘块管理)









文件存储空间管理(对空闲磁盘块管理)







文件的基本操作


文件共享


文件保护



文件系统层次结构


磁盘控制



磁盘调度算法








减少磁盘延时时间






缓冲区

