【操作系统】 Operation System 第七章:进程和线程

7.1 进程的定义
进程(process)描述
进程状态(state)
线程(thread)
进程间通信(inter-process communication)
进程互斥与同步
死锁(deadlock)

(1)进程的定义
一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。

7.2 进程的组成
(1)一个进程应该包括
-程序的代码
-程序处理的数据
-程序计数器的值,指示下一条将运行的指令
-一组通用的寄存器的当前值,堆,栈
-一组系统资源(如打开的文件)
总之,进程包含了正在运行的一个程序的所有状态信息。

(2)进程与程序的联系
-程序是产生进程的基础
-程序的每次运行构成不同的进程
-进程是程序功能的体现
-通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。

(3)进程与程序的区别
-进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行,进程有核心态/用户态
-进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存
-进程与程序的组成不同:进程的组成包括程序,数据和进程控制块(进程的状态信息)

7.3 进程的特点
动态性:可动态地创建,结束进程
并发性:进程可以被独立调度并占用处理机运行
独立性:不同进程的工作不互相影响
制约性:因访问共享数据/资源或进程间同步而产生制约

程序 = 算法 + 数据结构
进程控制块(process control block, PCB): 描述进程的数据结构,操作系统管理控制进程运行所用的信息集合。
操作系统为每个进程都维护了一个PCB,用来保存与该进程有关的各种状态信息,PCB是进程存在的唯一标志。

7.4 进程控制块PCB结构
PCB包含下列三大信息
(1)进程标识信息。如本进程的标识,本进程的产生者标识(父进程标识);用户标识

(2)处理机状态信息保存区,保存进程的运行现场信息
->用户可见寄存器,用户程序可以使用的数据,地址等寄存器
->控制和状态寄存器,如程序寄存器(PC),程序状态字(PSW)
->栈指针,过程调用/系统调用/中断处理和返回时需要用到它。

(3)进程的控制信息
调度和状态信息:用于操作系统调度进程并占用处理机使用;
进程间通信信息:为支持进程间的与通信相关的各种标识,信号,信件等,这些信息存在接收方的PCB中;
存储管理信息:包含有指向本进程映像存储空间的数据结构;
进程所用资源:说明由进程打开,使用的系统资源,如打开的文件等;
有关数据结构等连接信息:进程可以连接到一个进程队列中,或连接到相关的其它进程的PCB。

(4)PCB的组织方式
链表:统一状态的进程其PCB成一脸表,多个状态对应多个不同的链表,各状态的进程形成不同的链表,例如就绪链表和阻塞链表
索引表:同一状态的进程归入一个index表(由index指向PCB),多个状态对应多个不同的index,各状态的进程形成不同的索引表,例如就绪索引表,阻塞索引表。

7.5 进程的生命周期管理
进程创建-进程运行-进程等待-进程唤醒-进程结束
(1)进程创建
引起进程创建的三个主要事件:系统初始化->用户请求创建一个新进程->正在运行的进程执行了创建进程的系统调用

(2)进程等待
在以下情况中,进程等待(阻塞)
->请求并等待系统服务,无法马上完成;
->启动某种操作,无法马上完成;
->需要的数据没有到达。

(3)进程唤醒
唤醒进程的原因如下:
->被阻塞进程需要的资源可被满足;
->被阻塞进程等待的事件到达;
->将该进程的PCB插入到就绪队列中。

(4)进程结束
包括以下四种情形:
->正常退出(自愿)
->错误推出(自愿)
->致命错误(强制性)
->被其它进程所杀(强制性)

7.6 进程的状态变化模型
进程的三种基本状态:
进程在生命结束前处于且仅处于三种基本状态之一,不用系统设置的进程状态数目不同。

->运行状态(running):当一个进程正在处理机上运行时;
->就绪状态(ready):一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行;
->等待状态(或阻塞状态blocked):一个进程正在等待某一事件而暂停运行时的状态,如等待资源,等待I/O完成。

进程还有其它的基本状态,包括,
->创建状态(new),一个进程正在被创建,还没被转到就绪状态之前的状态。
->结束状态(exit),一个进程正在从系统中消失时的状态,这是因为进程结束或由于其它原因所导致。

7.7 进程挂起suspend
7.7.1 进程挂起是一种合理且充分地利用系统资源的方式。挂起时,进程没有占用内存空间,处于挂起状态的吧进程映像在磁盘上。
挂起就是把一个进程从内存转到外存。

7.7.2 挂起状态
阻塞挂起状态(blocked-suspend):进程在外存并等待某事件的出现
就绪挂起状态(ready-suspend):进程在外存,但只要进入内存,即可运行

(1)挂起:内存->外存
包括,
阻塞->阻塞挂起:没有进程处于就绪状态;或者就绪进程需要更多的内存资源;
就绪->就绪挂起:当 高优先级阻塞(系统认为会很快就绪的)进程 和 低优先级就绪进程 冲突时,系统会挂起低优先级就绪进程;
运行->就绪挂起:对于抢先式分时系统,当有 高优先级阻塞挂起进程 因为事件而变成 就绪挂起 时,系统可能会把正在运行的进程转到 就绪挂起状态。

(2)在外存中的状态
包括,
阻塞挂起->就绪挂起:当 阻塞挂起的进程 因为相关事件出现时,系统会把 阻塞挂起进程 转化为 就绪挂起状态。

(3)解挂/激活(activate):外存->内存
包括,
就绪挂起->就绪:现在没有就绪进程;当前的 就绪挂起进程 的优先级高于 就绪进程;
阻塞挂起->阻塞:当一个进程释放足够的内存时,系统会把一个高优先级的 阻塞挂起进程(系统认为会很快出现所等待的事件发生) 转为阻塞进程。

7.7.3 从进程角度看待OS
用进程的观点来看待OS,OS包括 用户进程,磁盘管理进程,终端进程等;

以进程为基本结构的OS包括:
最底层scheduler为CPU的调度程序(包括中断处理等);
上面一层为一组各式各样的进程。

7.7.4 状态队列
(1)状态队列是由操作系统来维护的一组队列,用来表示系统当中所有进程的当前状态;
(2)不同的状态分别用不同的队列来表示(就绪队列,各种类型的阻塞队列等);
(3)每个进程的PCB都根据它的状态加入到相应的队列当中,当一个进程的状态发生变化时,它的PCB从一个状态队列中脱离,加入到另一个状态队列里。

7.8 为什么使用线程

因此,需要满足:实体间能够并发地执行;实体之间共享相同的地址空间。->线程

待补充完整
参考资料
https://www.bilibili.com/video/av6538245?p=19

发布了29 篇原创文章 · 获赞 19 · 访问量 4437

猜你喜欢

转载自blog.csdn.net/iwanderu/article/details/103946398
今日推荐