操作系统(三)

本文详细介绍了操作系统中的进程管理,包括进程概述、进程控制块(PCB)、进程状态及其转换、线程管理和处理机/CPU调度。讨论了进程的创建、运行、等待、结束,以及状态队列的管理。同时,提到了线程的概念,比较了线程与进程的区别,并介绍了几种线程实现方式。此外,还讲解了进程控制的基本系统调用,如创建、加载和执行进程。最后,探讨了处理机调度的重要性,分析了各种调度算法,如FCFS、SJF、RR和多级反馈队列等。
摘要由CSDN通过智能技术生成

引言

续接上文,这次磕进程管理~

文章导读

  • 进程概述
  • 进程控制块
  • 进程的状态
  • 线程管理
  • 进程控制
  • 处理机/CPU调度
  • 同步&互斥
  • 信号量与管程
  • 进程间通信的方式

一、进程概述

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

进程的组成

  • 程序的代码
  • 程序处理的数据
  • 程序计数器中的值(下一条将运行指令的地址)
  • 一组通用的寄存器的当前值,堆,栈
  • 一组系统资源(如打开的文件)

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

进程与程序的区别
1.进程是动态的,程序是静态。程序是有序代码的集合;进程是程序的执行,进程会涉及到核心态和用户态的切换。
2.进程是暂时的,程序是永久的。进程是一个状态变化的过程,程序可长久保存。
3.进程与程序的组成不同。
进程=程序+数据+进程控制块

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

二、进程控制块

PCB:操作系统管理控制进程运行所用的信息集合。
PCB是用来描述进程的数据结构。操作系统为每个进程维护了一个PCB,用来保存与该进程有关的各种状态信息。

PCB中存储的信息

(一)进程标识信息
如本进程的标识,本进程的产生着标识(父进程标识),用户标识等。

(二)处理机状态信息保存区
用户可见寄存器,用户程序可以使用的数据,地址等寄存器;
控制和状态寄存器,如程序计数器,程序状态字;
栈指针,系统带调用/中断处理和返回时需要用到它。

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

PCB的组织方式

1.链表:同一状态的进程其PCB成一链表,多个状态对应多个不同的链表。如就绪链表,阻塞链表。
2.索引表:同一状态的进程归入一个index表,多个状态对应多个不同的index表。如就绪索引表,阻塞索引表。

注:一般会选择链表,因为可能面临进程创建,销毁等调度导致进程状态发生变化,所以链表能够更加灵活的插入和删除。

三、进程的状态

3.1 进程生命周期管理

操作系统对于进程有一些生命周期的管理,大致有:

  • 进程创建
  • 进程运行
  • 进程等待
  • 进程唤醒
  • 进程结束

进程创建

场景:
1.系统初始化。
2.用户请求创建一个新进程。
3.正在运行的进程执行了创建进程的系统调用。

进程运行

内核选择一个就绪进程,让它占用处理机并执行(和处理机调度算法有关)。

进程等待(阻塞)

场景:
1.请求并等待系统服务,无法马上完成。
2.启动某种操作,无法马上完成。
.需要的数据没有到达。

注:进程只能自己阻塞自己,因为只有进程自身才能知道何时需要等待某种时间的发生。

进程唤醒

场景:
1.被阻塞进程需要的资源可被满足。
2.被阻塞进程等待的事件到达。
3.将该进程的PCB插入到就绪队列。

注:进程只能被别的进程或操作系统唤醒

进程结束

场景:
正常退出(自愿)
错误退出(自愿)
致命错误(强制)
被其他进程所杀(强制)

3.2 进程的三种基本状态

三种基本状态有
运行状态:当一个进程正在处理机上运行时。
就绪状态:一个进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。
等待(阻塞)状态:一个进程正在等待某一事件而暂停运行。

其他基本状态
创建状态:一个进程正在被创建,还没被转到就绪状态之前的状态。
结束状态:一个进程正在从系统中消失时的状态。

到目前为止我们的认知应该是这个亚子...

图片来源于网络

注:就绪也叫活动就绪;阻塞也叫活动阻塞

3.3 挂起

学习操作系统应该都有听过挂起状态,有了阻塞为什么还要挂起呢,进程挂起和阻塞有什么区别,都将在下面整理。

挂起:把一个进程从内存转到外存
进程在挂起时,不会占用内存空间。处在挂起状态的进程映像在磁盘上

挂起状态
阻塞挂起状态:进程在外存并等待某事件的出现。
就绪挂起状态:进程在外存,但要进入内存,即可运行。

注:阻塞挂起也叫静止阻塞;就绪挂起也叫静止就绪

非挂起与挂起间的状态转换
阻塞->阻塞挂起:没有进程处于就绪进程或就绪进程要求更多内存资源时,会进行这种转换,以提交新进程或运行就绪进程。

就绪->就绪挂起:当有高优先级阻塞进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程。

运行->就绪挂起:对抢先式分时系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到就绪挂起状态。

挂起与挂起间的状态转换
阻塞挂起->就绪挂起:当有阻塞挂起进程因相关事件出现时,系统会把阻塞挂起进程转换为就绪挂起进程。

挂起与非挂起的状态转换
解挂/激活:把一个进程从外存转到内存。
就绪挂起->就绪:没有就绪进程或就绪进程优先级高于就绪进程时。
阻塞挂起->阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起,进程转换为阻塞进程。

增加了挂起状态后,我们的认知应该更新为这个亚子:

3.4 状态队列

进程的状态这个多,操作系统是怎么管理的呢?操作系统维护了一组队列,表示系统中所有进程的当前状态。

简单来说,每个进程的PCB都根据它的状态加入到相应的队列中,当一个进程的状态发生变化时,它的PCB从一个状态队列中脱离出来,加入到另一个队列。

四、线程管理

多进程编程下,进程之间如何通信,共享数据。进程的维护开销较大,创建时需分配资源,建立PCB;撤销时,回收资源,撤销PCB;进程切换时,

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值