计算机操作系统OperationSystem
2016-12-26 21:41:44 31 举报
AI智能生成
操作系统
作者其他创作
大纲/内容
引论
作用
为用户提供硬件接口
合理分配计算机资源
发展
单道批处理系统
内存中只有一道作业
多道批处理系统
作业在外存上排成队列
作业调度程序
分时系统
多用户共享资源
时间分片
实时系统
特性
并发
并发是多个事件在同一段时间内发生
进程
为了使多个程序并发执行
独立运行并作为资源分配的基本单位
线程
资源复用
功能
OS结构
进程管理
概念
程序顺序执行
下一个操作对上一个有依赖关系
前趋图
有向无循环图
用于描述进程先后关系
并发
多个程序并发执行
共享系统资源
资源被一个程序占用,其他必须等待
进程
结构
程序
数据
控制块
定义
程序的一次执行
系统资源分配调度的独立单位
基本状态
就绪
分到CPU可立刻执行
就绪队列
执行
单核单个
阻塞
I/O 申请缓存
阻塞队列
其他状态
挂起
检查、修改
创建
终止
进程控制块
PCB
记录了进程的当前情况和控制信息
进程标识
程序计数器
下一条指令
用户栈指针
进程状态
优先级
进程控制信息
程序地址
进程队列中下一个进程的地址
常驻内存
链接
执行指针
就绪指针
阻塞指针
索引
就绪表
阻塞表
...
进程控制
进程创建
进程图
子进程可继承父进程的文件、缓冲区
事件
用户登录
作业调度
提供服务
打印进程
应用请求
游戏
键盘输入进程
画面渲染进程
Create()
申请PCB
分配资源
内存
初始化PCB
进程标识和父进程标识
状态信息
子主题
子主题
就绪态
插入就绪队列
进程终止
事件
正常
Holt
异常
越界
保护错
读只读文件
非法指令
数据当指令
特权指令
用户执行OS指令
运行超时
等待超时
I/O 故障
外界干预
死锁
父进程
请求
终止
过程
PCB集合检索出对应PCB
终止进程
终止子孙进程
归还进程资源
将PCB移除对应队列
阻塞/唤醒
事件
请求系统服务
无工作可做
特定操作
I/O
数据未到达
过程
进程自身主动的行为
挂起/激活
挂起
就绪 -> 静止就绪
阻塞 -> 静止阻塞
PCB存入内存
激活
父进程或者用户请求激活
进程同步
concept
constraint
直接
进程合作
间接
共享资源
打印机
critical resource
临界资源应该被互斥调用
producer--consumer
description
n个缓冲区( 0 ~ [n-1])
下一个可投放用缓冲区
in
下一个可获取缓冲区
out
产品计数器
count
空
in == out
满
(in +1)mod n == out
伪代码
https://github.com/fancive/learnOs/blob/master/2.3/producer_consumer
临界区
进程中访问临界资源的代码段
互斥的进入临界区
执行这段代码前先检查资源是否正在被访问
进入区
退出区
规则
空闲让进
忙则等待
有限等待
让权等待
不能进入临界区则立刻释放
不能陷在进入区
semaphore
interger
资源数量
S
操作
wait
S --
if S <=0 do no-op
signal
S++
record
integer 在 s <=0 wait 会不断触发
https://github.com/fancive/learnOs/blob/master/2.3/2.3.2_record_semaphore
AND
integer 和 record 都只能解决单个资源的问题
要么全部分配,要么都不分配
set
record 只能每次加减一个同类资源
无法控制资源数量 只能判断是否大于0
https://github.com/fancive/learnOs/blob/master/2.3/2.3.2_semaphore_set
usage of semaphore
管程
definition
抽象
用数据结构抽象共享资源
把对数据结构的操作定义为过程
eg
request
release
管程内部访问
数据结构 + 过程 = 管程
和进程不同
私有数据结构
PCB
共享资源的抽象
进程调用管程的过程实现操作共享资源
conditional varieble
防止进程调用管程时因挂起或者阻塞而长时间不释放
多个条件变量
var x,y,z : condition
链表
保存因该原因阻塞的进程
提供操作
x.wait
将调用的进程插入x条件的等待队列
x.signal
x条件变化 启动因x而挂起或者阻塞的进程
background
每个进程都需要自备wait 和 signal
进程同步问题
进程通信
type
shared-memory system
共享数据结构
共享存储区
message passing system
pipeline
消息传递实现
消息传递问题
消息缓冲队列
0 条评论
下一页