操作系统——进程管理
1 进程?


describe:
进程的状态:


noting
进程控制:
原语的作用

noting;
阻塞原语和唤醒原语

切换原语:

进程通信

线程:

多对多


处理及调度

各个调度之间的关系和区别


进程调度时机切换

进程调度算法(低级调度)
FCFS:按先后顺序排列,时间轴画出来计算 周转时间,等待时间,平均周转时间,带权周转时间(除法),平均带权周转时间;若有i/o操作则等待时间=周转时间-实际run-i/o操作

noting:
SJF短作业优先(shortest job first)选择当前已经到达的作业中运行时间最短的
非抢占式:

抢占式:和上面不同的是,(要运行进程必须等上一个进程结束再比,这个是,来一个进程比一次)




然后就是三个抢占式或者剥夺式的算法
时间片轮转 RR 优先级调度 还有 多级反馈队列
共通点就是 会根据一个标准也就是他们的区别 来选择调度哪一个进程的问题
RR 1 给当前到达的进程分别分配一个时间片运行
2注意当时间片耗尽时,是否要插在新来的进程的后面
优先级调度 :设置一个变量 优先级,优先级高的抢占cpu运行
1 当每次有新的进程到达时,都要与当前运行的进程进行优先级的比较,低下高上
2 多个,那就一起比。
多级队列反馈:

信号量机制
记录型信号量

1 cpu随机的为各个进程服务
2 打印机使用的过程中是需要占用资源,而cpu是可以离开
3 当已有的资源全部分配完毕,再次访问该资源,则Wait(阻塞)在队列中
4 当使用完打印机资源,则增加信号量,唤醒阻塞在队列中的进程
5 当s.value =-1 则有一个进程等待 以此类推


连起来了,,,
linking记录型信号量

explainatin:
1 若P1先运行,P2后运行
则代2一定运行在代4之前
2 反之
则 P2阻塞到等待队列去 s=-1, p1完成后,s——>0 唤醒阻塞队列中的进程
则 保证代2一定运行在代4之前
信号量机制实现前驱关系

生产者——消费者问题


ex: 当先上锁,生产者进行P操作,发现满,一直阻塞在P里,然后消费者无法进行临界区的访问,结果也阻塞


多生产者多消费者


生产者的动作: 消费者动作
1 生产产品 1检查产品数量
2 检查缓冲区的是否为空 3 拿走缓冲区的产品
4把产品放入缓冲区 5更新缓冲区
6更新产品数量 6 吃掉产品
不用设置互斥信号量的原因



吸烟者问题

ex:他的这个分析 十分清晰,首先 关注有几对同步关系,设置相应的信号量
1——>多
多 ——>1

读者写者问题


ex: 读进程优先,写进程会饿死
解决

ex:
1 增加一个信号量W
2在写进程前后添加p(w) v(w)实现写
3 在读进程前后添加p(w) v(w)实现写进程优先
毒邪毒(读写读)
写进程会阻塞在p(rw) 处等待读进程v(rw)
哲学家进餐:


0 生产和 消费之前,我都得检查一下 产品的数量 full or 0 都偶得阻塞 等待 signal(full) 以及 signal(empty)
1 并发生产,编译器函数阻塞,实现有先后顺序
2两个消费者 ,阻塞在wait(empty),
if(我生产的是第一产品 那么我得唤醒一下阻塞的empty)
同样的
if(我消费的是第一个产品,那么我得唤醒一下阻塞的full)

银行家算法

