xxxxlec16-lab6 SPOC讨论 · os_course_exercises
习题
【操作系统】王道考研 笔记总结目录(持续更新)_karshey的博客-CSDN博客_操作系统王道考研笔记
理论
系统调用=系统调用指令=广义指令
并发和共享互相依存,没有并发就没有虚拟和异步
一条高级语言的代码翻译过来可能会对应多条指令
程序的原子性:要么不执行,要么执行完
程序的原子性是用来描述程序的状态(运行的连贯性)
命令接口面向用户
系统调用发生在用户态,对系统调用的处理发生在核心态。执行陷入指令会产生内中断,使处理器从用户态进入核心态
PCB是进程控制块
进程间并发,就相当于是图书馆别人要在你的位置写作业,只能是先清理桌子,把你的东西先收走
线程间并发,就是寝室里别人在你桌上写作业,就直接放上去了,不再清理桌子
进程映像=程序段+数据段+PCB,PCB是一直放在RAM中的,不管进程是否挂起
前者为内核级,后者为普通级,普通临界群可以进行调度和切换,内核程序临界区不行
带权周转时间是为了在周转时间相同时,更好的比较用户满意度
比如:一人上厕所等了10分钟,用了1分钟;另一人等了1分钟,用了10分钟
两人周转时间一样,但满意度肯定不一样
短作业优先一开始到达的进程只有一个的话,无论它运行时间是多少,都先运行它,如果运行时间一样时,则先处理先到达的进程
响应比大于等于1
一般是让进程切换所用的费用不超1%,则为合适的时间片
若当前进程因时间片用完而让出处理机时,该进程应转变为(就绪)状态
critical section 临界区
Peterson
一个人让时,另一个人用
两者都让时,先让的那个先用
我客气一下,如果你再客气的话,我就不客气了
都是通过c语言来给梳理逻辑,并不是真的用c语言实现的
前驱就是事前加锁,事后解锁
实现互斥需要前v后p
多生产者多消费者问题中的多是多种类
吸烟者问题要实现随机不.random = random%3了 ?
哲学家进餐每次需要占用两个临界资源(其余问题都是一个)
管程类似java的类,用了封装的思想
死锁小结
循环等待是死锁的必要不充分条件
静态策略:预防死锁
破坏互斥
先把两个保存在输出进程中,这样在他们看来就不是互斥的了
缺点:很多时候无法破坏互斥条件。有的资源无法改造,有时候是为了系统安全
破坏请求和保持条件
如图,a类只需资源1,b类只需资源2,c类需要资源1和2,但在这种策略下,一有资源1就会给a,一有资源2就给b,除非a和b用完,否则永远轮不到c
动态策略:避免死锁
流程
手写
找得到
找不到
小结
死锁检测与解除
死锁算法就是尽量让进程变成孤立点,一开始选择不孤立不阻塞的点,然后把他所有边消去