什么是多进程图像?
-
如何使用CPU呢?
让程序执行起来
-
如何充分利用CPU呢?
启动多个进程,交替执行
-
启动了的程序就是进程,所以是多个进程推进
操作系统只需要把这些进程记录好,要按照合理的次序推进(分配资源,进行调度)
这就是多进程图像。
有关fork()的详细说明:fork()执行时,会产生一个子进程,该子进程与父进程除了进程号外,一模一样,fork()返回的值是子进程的号,而子进程返回的值是0。所以从if(!fork()){};可以判断是否为子进程还是父进程,从而实现叉子的效果!
PCB:用来记录进程信息的数据结构,切换进程改变PCB
把进程按照状态进行分类:新建态,就绪态,运行态,阻塞态,终止态
多进程图像:多进程如何交替?
pCur为当前进程
启动磁盘读写;开始写;(写磁盘比较慢)将该进程放在就绪态;schedule();从就绪状态中选择下一个进程开始工作。
switch_to(pCur,pNew);//把这个进程的状态用PCB保存起来,把接下来的PCB赋给各个寄存器。
进程调度
多进程图像:多进程如何影响?
多个进程同时存在于内存会相会影响。当进程随机切换时,有时候,会影响操作的结果,需要在线程执行时候对某一段程序进行上锁操作!
要修改counter,两个counter的话会由于进程的切换导致,结果就会出错。
怎么解决,给进程上锁