笔记目录
1.进程
进程
是操作系统对一个运行程序的逻辑抽象,也是操作系统分配系统资源的最小逻辑单元。
1.1 多道程序系统
所谓多道程序设计系统
是指CPU由一个进程快速切换至另一个进程,使得每个进程各运行几十或几百毫秒,在某一个时刻CPU只能运行某一个进程,在1秒内操作系统可能运行着多个程序,这样就产生了一个错觉,认为操作系统是同时运行多个程序,所谓的伪并行
就是这个情形。
1.2 并行与并发
并行
:多核心处理,多任务在同一时刻由多个CPU核心处理,执行的任务达到并行的效果。
并发
:在单处理器领域,同一个时刻只有1个任务执行,由CPU调度策略控制,任务交替执行。
1.3 进程的创建和终止
1.3.1 进程创建
在UNIX系统中,可以通过fork
函数创建新的进程,这个系统调用会创建一个与调用进程相同的副本,调用fork之后这两个进程拥有相同的内存映像、同样的描述符、同样的打开文件,之后子进程执行execve
命令开始执行和修改内存映像并运行一个新的程序。
1.3.2 写时复制
进程在创建之后,父子进程各自拥有专属自己的虚拟地址空间,,如果其中某个进程修改了内存空间的内容,这个修改对另一个进程是不可见的。在UNIX系统中,子进程的初始化地址空间是父进程的副本,父子进程通过写时复制技术进行写隔离,已达有一个进程尝试修改内存地址的内容,就会首先复制出来一份空间,然后修改写入。
1.3.3 进程终止
进程任务也有终止的一刻,那么进程终止有以下条件引起:
- 正常退出
- 出错退出
- 严重错误
- 被动杀死
在UNIX系统中,通过系统调用exit
函数,进程进入退出状态。
1.3.4 进程回收和僵死进程
当一个进程由于某种原因终止,。操作系统并不是立即把它回收清除,而是将进程标记为终止状态,直到它被父进程回收,当父进程回收已终止的子进程时,内核将子进程的退出状态传递给父进程,父进程回收退出的子进程;一个标记为终止的进程还未被父进程回收的进程称之为僵死进程
。
2.进程状态
2.1 五状态模型
2.2 七状态模型
3.控制结构
进程可将其视为一个资源容器,该容器聚集了相关资源,包括地址空间,线程,打开的文件,保护许可等,进程的控制结构被称为一个叫进程控制块
来描述,简称PCB
。
3.1 链表维护
操作系统将不同进程状态的进程分别维护一个链表进行进程的维护:
3.2 索引表维护
与之链表相反的策略是维护一个索引表,将不同状态的进程维护成一个索引表进行维护:
3.3 进程地址空间
进程的内存逻辑包括如下内容:
- 只读代码段
- 读写数据区
- 运行时堆空间
- 共享内存映射区域
- 用户栈空间
- 内核虚拟空间(代码、数据、堆栈等)(用户空间不可见)
4.上下文切换
CPU同一时刻只能运行一个程序,当一个程序的CPU时间片执行完毕,CPU需要调度执行另一个进程,而此时CPU需要做进程的切换,操作系统需要做上下文切换的各种工作:
1.保存处理器上下文环境:将CPU程序计数器和寄存器的值保存到当前进程的私有堆栈里
2.更新当前进程的PCB(包括状态更变)
3.将当前进程移到就绪队列或者阻塞队列
4.根据调度算法,选择就绪队列中一个合适的新进程,将其更改为运行态
5.更新内存管理的数据结构
6.新进程内对堆栈所保存的上下文信息载入到CPU的寄存器和程序计数器,占有CPU