1. 什么是进程
进程(process):一个运行起来的程序,就是进程!,我们可以在任务管理中看到进程。
进程是操作系统进行资源分配的基本单位,引入进程的目的,就是为了能够实现多个任务并发执行的效果~
2. 进程的管理
所谓的进程管理,其实就是分为两步:
1.描述一个进程:使用结构体/类,把一个进程有哪些信息,表示出来
2.组织这些进程:使用一定的数据结构,把这些结构体/对象,放到一起
2.1 进程的结构体(PCB)有哪些属性?(属性非常多,只挑几个核心的)
- pid : 每个进程需要有一个唯一的身份标识
- 内存指针:当前这个进程使用的内存是哪一部分 (进程运行的时候,使用了哪些内存上的资源)
- 文件描述符表:进程每次打开一个文件,就会产生一个“文件描述符”(标识了这个被打开的文件),一个进程可能会打开多个文件,对应了一组文件描述符,把这些文件描述符放到一个顺序表这样的结构中,就构成了文件描述符表(进程运行的时候,使用了哪些硬件上的资源)
2.2 Cpu资源相关的属性
这些属性都是辅助进行进程调度
-
进程状态,可以简单的认为,进程状态主要是两个
就绪态:该进程已经准备好,随时可以上CPU执行
阻塞态:该进程暂时无法上CPU执行 -
进程的优先级
进程之间的调度不一定是“公平”的,有的需要优先调度 -
进程的上下文
上下文,就是描述了当前进程执行到哪里这样的“存档记录”,进程在离开CPU的时候就要把当前运行的中间结果“存档”,等到下次进程回来CPU上,再恢复之前的“存档”,从上次的结果继续往后执行。
具体到进程,所谓的上下文具体指的就是进程运行过程中,CPU内部的一系列寄存器的值,进程离开CPU就需要把这些寄存器的值,保存到PCB的上下文字段中~进程下次回来CPU,再把PCB中的值给恢复到 -
进程的记账信息
统计了每个进程,在CPU上执行了多久了~可以作为调度的参考依据
2.3 进程的组织
操作系统往往使用双向链表这样的结构来组织PCB
- 创建一个进程,就是创建一个链表的节点
- 销毁一个进程,就是把链表的节点给删除了
- 遍历进行列表,就是在遍历链表~
2.4 内存分配–内存管理
操作系统对内存资源的分配,采用的是空间模式-------不同进程使用内存中的不同区域,互相之间不会干扰
一个进程无法直接干预另一个进程的内存内容~ 进程的独立性,每个进程有自己独立的地址空间
2.5 进程间通信
所谓的进程间通信,就是在隔离性的前提下,找一个公共的区域,让两个进程借助这个区域来完成数据交换