第二节-进程的描述与控制
第二节-进程的描述与控制
进程的概念:理解进程和程序的区别
进程的组成:一个进程由哪些部分组成
进程的特征:进程有哪些重要特征
进程的概念,组成和特征
进程的概念
进程的组成-PCB
操作系统要记录PID,进程所属的用户ID(UID),还要记录给进程分配了那些资源(如分配了多少内存,正在使用那些I/O设备,正在使用那些文件),还要记录进程的运行情况(如CPU的使用时间,磁盘的使用情况,网络流量的使用情况等)这些信息都被保存在一个数据结构:PCB(Process Control Block),即 进程控制块 中。
操作系统对进程的管理工作所需的信息都存在PCB中。
进程(进程实体)的组成
还有 程序段和数据段,他们是给进程自己使用的,PCB是给操作系统使用的。
进程实体就相当于一个 快照,是一瞬间的不变的静态的,而进程是动态的
程序段,数据段,PCB三部分组成了进程实体(进程映像)一如进程实体的概念后,可以把进程定义为:进程是进程实体的 运行过程,是系统进程 资源分配 和 调度 的一个独立单位。
注意:PCB 是 进程存在 的唯一标识!
进程的特征
1)动态性
2)并发性
3)独立性
4)异步性
5)结构性

小结
进程的状态与转换
进程的状态:创建态,就绪态,运行态,阻塞态,终止态
进程的五状态模型(丁字裤模型):
为了同一个状态下的各个进程进行管理,操作系统会将各个进程的PCB组织起来:
进程的组织-链接方式
进程的组织-索引方式(不重要)
总结
进程的控制
进程的控制的主要功能是对系统中所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换等功能。(反正进程控制就是要是实现进程状态转换)。
- 什么是进程控制?
- 如何实现进程控制?(用原语实现)
- 进程控制的原语
- 进程的创建
- 进程的终止
- 进程的阻塞
- 进程的唤醒
- 进程的切换
如何实现原语的”原子性“
原语的执行具有原子性,执行过程是一气呵成的,期间不允许被中断,可以用”关中断指令“和“开终端指令”时间原子性:
正常情况下:CPU每执行完一条指令都会例行检查是否有中断信号需要处理,如果有就暂停运行当前这段程序,转而执行相应的中断处理程序。
但是如果有”关中断指令“,CPU在执行”开中断指令“之前就不会去检查外部的中断信号
进程控制的相关原语
1)进程创建:
创建原语:操作系统在创建一个进程的时候使用的原语。
- 申请一个空白的PCB
- 为新进程分配所需资源
- 初始化PCB
- 将PCB插入到就绪队列
创建原语,就是吧一个进程从创建态变为就绪态
2)进程终止
撤销原语:就绪态/阻塞态/运行态->阻止态->回收
- 从PCB集合中找到终止进程的PCB
- 若进程正在运行,立刻剥夺CPU,将CPU分配给其他进程
- 终止其他子进程(进程之间的关系是树结构)
- 将该进程拥有的全部资源归还给父进程或操作系统
- 删除PCB
引发进程中止的事件:
- 正常结束
- 异常结束
- 外部干预
3)进程的阻塞和唤醒
4)切换原语
总结
进程的通信
进程之间通信(Inter-Process Communication,IPC)指的是两个进程之间产生数据交互。
共享存储
进程可以申请一块 共享存储区 这个区域的数据其他进程也可以访问!
为了避免出错,冲突等,各个进程对共享存储区域的访问应该是 互斥 的 ,
各个进程可以使用操作系统内核提供的同步互斥工具(如P、V操作)
基于数据结构的共享
基于数据结构的共享:比如共享空间只能存放一个长度为10的数组。这种共享方式速度慢,限制多,是一种低级通信方式。
基于存储区的共享
基于存储区的共享:操作系统在内存中划出一块存储区,数据的形式,存放位置都是通信进程控制的,而不是操作系统。这种方式共享速度快,是一中 高级通信 方式
信息传递
进程之间的数据交换以 格式化的消息(Message)为单位。进程通过操作系统提供的 ”发送消息“/“接收消息” 的两个 原语 来进行数据交换。
格式化的消息:消息头(谁发送,发给谁等),消息体
直接通信方式
消息发送进程要指明接收消息的进程ID
进程P向进程Q发消息,先封装好msg,调用send发送给Q,在进程Q的PCB中的消息队列里接收到消息,Q再使用receive获取P发送的消息即可。
间接通信方式
通过“信箱” 间接的通信,因此又称为 “信箱通信方式”。
注意体会和直接通信的区别。
管道通信
管道(pipe):FIFO
进程P写数据到管道,进程Q从管道读数据
这个数据的流向是单项的
管道和共享内存的区别:
共享存储的区域,随便你写数据到哪里,哪里有位置你就写在哪里,不依次,
而管道通信室先进先出,从头到尾的写,取数据也是从头到尾的读,依次。(数据流)
管道只能采用半双工通信,某一时间端只能实现单向传输,如果需要实现双向同时传输,需要申请两个管道。
总结
线程的概念
引入线程之后,线程成为了程序执行的最小基本单位
所谓线程可以理解为 “轻量级的进程”
线程 是一个 基本的CPU执行单位,也是程序执行流的最小单位,不仅进程可以并发执行,进程里面的线程也可以并发执行
引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机,内存地址空间,都是分配给进程的的)
引入线程-带来的变化
线程的属性
线程的实现方式和多线程模型
线程的实现方式
用户级线程(UserLevel Thread,ULT):
是程序员通过线程库实现的
1)线程管理是由线程库来完成的
2)线程切换不需要CPU的变态(用户态-》内核态)
3)操作系统不能意识到用户级线程的存在
内核级线程

多线程模型
一对一模型
多对一模型

多对多模型
总结
线程的状态与转换
线程的状态与转换
基本上和进程是一样的:只需要关注这三个状态:
组织与控制
与进程的组织与控制差不多:
控制进程的数据结构:进程控制块(PCB)
控制线程的数据结构:线程控制块(TCB)