OS-李治军-L9-多进程图像

多进程图像

启动多个程序-》多个进程推进-》操作系统记录进程、分配资源、进行调度。
操作系统根据PCB来进行管理的。

问题:多进程如何组织?
Process Control Blocck是用来记录进程信息的数据结构。
就绪队列:有一些进程在等待执行。
磁盘等待队列:有一些进程在等待资源。
...
管理进程-》把PCB加入到不同的队列当中。
医院看病-》在诊室排队-》去检查化验-》等待结果-》再回来给医生看,重新排队

问题:多进程如何交替?
交替=队列操作+调度+切换
一个磁盘读写的栗子:
队列操作
schedule() -》 getNext(ReadyQueue)

两组简单的调度方法:

  • FIFO:很公平,但没有考虑任务的区别
  • Priority:优先队列,但如何设定不同的优先级呢?

切换方法,PCB保存cpu所有寄存器信息,再被放到内存当中。

问题:多进程如何互相影响?都在内存中,有相同的CPL,被别人偷窥了怎么办?
采用基地址+偏移量的方法
在每个程序内,偏移量都是从0开始。
但是程序的基地址不一样,那么最后得到的值就不一样。

问题:多进程如何合作:
交替执行:进程1放到一半被切出去了,进程2进来了,又在原地放怎么办?

生产者-消费者模型
有人往框里放苹果,有人从框里取苹果。但会出现下面这个问题:

核心在于进程同步:要有一个合理的推进顺序,生产者的生产周期必须是完备的,不能被打断,否则会乱套
这就需要给counter资源计数上锁

总结:

posted @ 2020-10-24 00:08  HermioneGranger  阅读(73)  评论(0)    收藏  举报