PART1
一、进程的定义
程序: 一个指令序列; 早期计算机只支持单道程序, 程序的代码放在程序段内, 运行时的数据放在数据段内;
为方便OS管理程序的并发执行, 引入了进程与进程实体的概念 , 系统会为每个运行的程序配置一个进程控制块 PCB
进程的定义 : 进程是进程实体的运行过程, 是系统进行资源分配管理和调度的独立/基本单位;
- 进程实体由 程序段, 数据段, PCB组成 ,由称为进程映像, 简称为进程(严格来说两者是不一样的);
- 创建一个进程实质上是创建进程实体的PCB;
- PCB是进程存在的唯一标志;
- 进程具有动态性;
二、进程的组成
三、进程的组织方式
OS使用 链接方式 和 索引方式来组织进程
- 链接方式 : 使用指针链接各个PCB ,其中执行指针指向当前被CPU运行的进程的PCB, 就绪和阻塞队列指针分别执行处于就绪/阻塞状态的指针
- 索引方式 : 指针指向各个索引表 , OS会为各个PCB建立对应的索引表
四、进程的特征
PART2
一、进程的状态和转换
进程的状态是动态的, OS对进程进行划分状态
- 运行态 : 单核处理机每一时刻最多只有一个进程处于运行态;
- 就绪态 : 已具备运行条件但CPU没有空闲;
- 阻塞态 : 因某一事件暂时无法运行;
- 终止态 : 撤销进程时, 需要回收内存区域,PCB和系统资源;
- 创建态 : 进程正在被创建, OS为其分配资源, 初始化PCB;
进程从无到有的状态切换过程 :
PART3
一、进程控制
1. 定义 : 对OS中的所有进程实施有效的管理, 具有 创建, 撤销, 切换状态等功能; ,即对各种进程状态的转换
2. 进程控制的实现 :
- 用原语实现进程控制;
3. 什么是原语? - 原语在执行期间不允许中断;
- 原语是采用开中断和关中断指令实现;
- 原语需要运行在OS核心态中;
另外 , OS还提供了撤销原语、阻塞原语、唤醒原语、切换原语 用于控制进程的PCB , 其中的阻塞原语和唤醒原语是成对使用的
PART4
一、进程通信
各个进程拥有的内存地址空间相互独立
三种方式实现进程通信 , 共享内存、消息传递、管道通信;
1- 共享内存方式
两个进程通过一段共享的内存交换数据, 且对共享空间的访问必须是互斥的
基于数据结构的共享 : 速度慢且限制较多
基于存储区的共享 : 在内存中单划出一块共享内存, 速度更快
2- 管道通信方式
管道是指用于连接读写进程的一个共享文件 , 其实就是在内存中开辟了一块大小固定的缓冲区
只能使用半双工通信 , 各个进程要互斥地访问管道
3- 消息传递方式
进程的数据用格式化的消息 为单位,分为直接通信方式和间接通信方式
PART5
线程的概念
为了满足一个进程中同时执行多个任务, 引入了线程的概念, 可以理解为轻量级的进程
线程是基本的CPU执行单位, 也是程序执行流的最小单位, 进程只作为除CPU之外的系统资源的分配单元
线程可以分为用户级线程和内核级线程 , 内核级线程的切换需要在核心态下完成
操作系统只看得见内核级线程, 因此只有内核级线程才是处理机分配的单位
多线程模型
- 多对一模型 : 每个用户线程只对应一个内核级线程 , 并发度不高;
- 一对一模型 : 一个用户级线程对应一个内核级线程, 并发能力强; 但一个用户级线程会占用多个内核级线程, 线程管理成本高;
- 多对多模型 : N个用户级线程映射到M个内核级线程上;