首先声明,这只是本人学习操作系统的笔记,并不是权威的,只能作参考。
进程
启动了的程序就是进程
进程就是进行(执行)中的程序。
进程和程序的区别
- 进程有开始和结束,程序没有。
- 进程会走走停停,走停对程序无意义。
- 进程需要记录ax、bx、...,程序不用。
CPU 就是不断地取址执行的设备。多道程序,交替执行,以此来提高CPU利用率。
PCB
PCB(Process Control Block):用来记录进程信息的数据结构
PCB保存了一个进程的执行现场,操作系统依靠PCB来感知一个进程。
多进程的组织:PCB+状态+队列。
如何组织多个进程:用PCB放在不同的队列里,用状态来推进这多个进程,进行状态转化。
交替切换,是多进程图像实现的灵魂。
进程调度,是一个很深刻的话题。
操作系统要支持多进程图像,需要做到的事情
- 组织多个进程:根据PCB、状态,形成不同的队列,放在不同的位置。
- 完成进程切换:调度、选择下一个进程,得到下一个进程的PCB,然后将CPU的寄存器和存放在进程PCB中的信息来进行互相的交换、互相的覆盖(盖住、盖上、扣住)。
- 对多个进程之间的相互影响要进行分离(为什么会相互影响?因为这多个进程要交替执行,都得放在内存中,这样CPU才能取址执行):多个进程同时存在于内存中,可能会出现互相操作对方内存的情况,所以需要对多进程的地址空间进行分离(内存管理的主要内容),具体是通过每个进程各自的映射表来管理内存,比如进程1的映射表中100地址对应的物理内存地址,和进程2的映射表中100地址对应的物理内存,是不同的,这就实现了进程间内存分离,使得多个进程在内存中能够很好地共存。
- 实现进程之间的合作:核心在于进程同步(合理的推进顺序):比如对于一个共享的变量counter,一个进程在写counter时,给counter上锁,阻断其他进程访问counter,另一个进程在使用counter前,会检查counter锁,只有前一个进程给counter开锁后,后一个进程才能给counter上锁并操作counter。
如何形成多进程图像(总结):
多进程图像,是操作系统最核心的图像。
- 读写PCB(操作系统通过PCB才能感知到多个进程),OS中最重要的结构,贯穿始终。
- 要操作寄存器完成切换。
- 要写调度程序。
- 要有进程同步与合作。
- 要有地址映射。