1、多进程

动机

CPU工作模式是不断地取值执行,于是让CPU工作只需要把指令准备好告诉CPU指令的地址即可。
但是CPU执行各种指令需要的时间不一样,如计算指令特别快,IO特别慢(CPU执行计算指令是在电路上工作,而IO需要访问机械设备)导致CPU经常空转,利用率特别低。
于是想到在CPU的工作需要等待其他信息或者数据时,让它可以去执行别的指令,等到需要的资源到了再回来执行刚才的指令。 故而需要多道程序交替执行,即是并发。要使得CPU从正在执行的程序中切换出去可以切回来,必须保存好当时的代码地址、寄存器的数据、以及其他信息等等,所以运行起来的程序和没有在运行的程序是不一样的,于是把运行起来的程序叫做一个"进程",记录它的运行状态的数据叫做PCB(Process Control Block)

组织多个进程

组织多个进程先要区分他们,为此操作系统为每一个进程分配一个唯一的ID
各个进程的状态不一样,可能有的需要等待资源,有的正在执行,有的准备好数据了CPU暂时在执行别的进程,故而需要区分进程的状态,(运行态、就绪态、阻塞态),所以依据进程不同的状态把各个进程PCB放到不同的队列中(就绪队列、阻塞队列)就组织起来了。

如何完成切换

进程切换只需把当前CPU的各个寄存器信息保存到当前执行进程的PCB里面,再把将要执行的下一个进程的PCB信息拷贝到CPU寄存器里面即可。此后CPU就在执行新的程序了。
在这里插入图片描述
切入切出其实都是切换,只需组织好各个进程,当前进程需要切换时切换即可。关于需要切换时,先执行哪一个进程(也即**进程调度**)是一个很深刻的问题,见超链接。

进程分离

多个进程都放在内存中,如何保证进程1不会修改进程2的代码或者数据所在内存呢?
基本思想:通过把物理内存和进程的内存分离,通过内存映射表memory map找到真正的物理内存地址。于是每一个进程都有0000号地址,但是他们的0000号地址在内存条上的物理地址确是不同的。由进程的PCB找到物理地址的工作有操作系统完成,参见内存管理

进程合作

当多个进程要合作完成工作时(比如word跟打印进程),如何保证他们都正常运行,不会乱套(比如进程A读某一刻内存还没有使用到被CPU切换出去了,进程B把那一块改了的情况)呢?于是进程需要合作,要合作当然就需要通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值