本文已参与「新人创作礼」活动,一起开启掘金创作之路。
进程
- 进程的组织:PCB + 程序段 + 数据段
- 所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB
PCB
运行中的程序会有一个称为PCB的数据结构,这个数据结构是用来记录当前程序运行的状态信息的,包含内容如下:
进程的状态
在一个进程的活动期间至少具备三种基本状态,即运行状态、就绪状态、阻塞状态。
- 当然还有创建状态、结束状态
进程的转换
- 进程无法从阻塞态直接转化为运行态
进程的组织--链接方式
PCB是通过链表组织的,把具有相同状态的进程链在一起,组成各种队列。
- 为什么采用链表?因为可能面临进程创建,销毁等调度导致进程状态发生变化,所以链表能够更加灵活的插入和删除。
多进程切换
多进程交替运行需要:内存管理+调度+上下文切换
什么时候发生进程切换?
不能进行进程调度的时刻:
- 原子操作
- 中断操作
- 进程在临界区运行时
内存管理
当多进程交替时,我们应该考虑内存管理的问题,两个进程之间内存应该是不互相影响的
解决的办法:进程的地址映射
也就是说,进程1的映射表将访问限制在进程1范围内,进程1根本访问不到其他进程的内容。也就是[100]只是逻辑上的地址,其对应一篇内存上的物理地址,即使不同进程间都有逻辑地址100,但其对应的物理空间不同
合作问题:
在处理共享资源时,应该给共享的资源进行上锁。等待该资源被开锁,下一个进程才能使用