操作系统概念-----多进程管理

操作系统的核心就是多进程管理

单个CPU如果顺序执行程序,效果如图. 读磁盘是一个很消耗时间的操作
在这里插入图片描述
但是读磁盘并不是一个需要cpu的操作,所以cpu在读磁盘的时候去如果去执行程序B的话,cpu利用率就会增加
在这里插入图片描述
那么问题来了,当从程序A切换到B再切换回去的时候,如何知道已经执行到哪里了呢? 这时候就需要有一个数据结构来存储 cpu切换之前的状态 叫做 PCB.

PCB

PCB用来描述一个进程.一个操作系统中,运行着多个PCB,操作系统是如何管理的
在这里插入图片描述

进程的状态

操作系统根据进程的状态将进程分类
在这里插入图片描述
当一个进程需要处理IO事件的时候,操作系统就把该PCB放到 阻塞队列中,等IO读取完毕后操作系统再将 PCB 放回 就绪队列.

多进程如何调度

当一个线程需要读写磁盘的时候,操作系统会将该线程状态设置为 wait 然后放入等待队列中.
然后调用调度器 调度器 通过算法获得下一个需要执行的PCB 把当前的PCB和下一个PCB进行交换
在这里插入图片描述

多进程如何切换

上面说了操作系统如何选出下一个将要被CPU调度的进程,那么接下来看进程是如何切换的.

swich(pCur,newCur){
	pCur.ax = CPU.ax;
	pCur.bx = CPU.bx;
	...
	pCur.cs = CPU.cs;

	CPU.ax = newCur.ax;
	CPU.bx = newCur.bx;
	....
	CPU.cs = newCur.cs;
}

很简单,就是把新的进程的PCB给CPU就可以自动执行了

多进程的影响

多个进程在执行的时候, 同时都被放在了内存中. 那么进程A可能就会操作到进程B里面的数据.

线程1
------------------
mov ax, 10010b
mov [100], ax
-------------------
线程2
-------------------
100: 10023
-------------------

这样直接就会把内存100的数据改掉,而这内存100本了是线程2所使用的.
操作系统使用 内存映射表 来解决这个问题
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值