进程管理—进程的基础知识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、进程的定义、组成、组织方式、特征

在这里插入图片描述
程序段存在内存的低地址部分,然后数据段存放在内存的高地址部分。CPU执行时候只需要去内存的低地址部分取出程序的指令,然后一条一条执行就可以了。如果寻找程序中定义的变量,只需要去内存的数据段寻找就可以了。
在这里插入图片描述
操作系统作为系统的管理者,他要让程序实现并发的执行,他要找个各个程序所存放代码的位置(程序段),这些数据记录在什么地方?除此之外,在这个阶段,系统之外的IO设备还有其他的一些资源可能分配给正在运行的不同程序,每一个当前运行的程序被分配了哪些系统资源,这些信息也是需要记录下来的,这样才可以方便操作系统管理,因此引入了进程、进程实体的概念。
操作系统在每个程序执行之前,都会为即将执行的程序创建一个PCB的数据结构,PCB会存放操作系统用于管理这些正在运行的程序所需要的各种各样信息,比如程序代码存放的位置。
由PCB(进程控制块)、程序段、数据段三部分构成了进程实体(进程映像)。
在这里插入图片描述
在这里插入图片描述
进程的组成
在这里插入图片描述
用户标识符ID:进程所属哪个用户。
在这里插入图片描述
另外的一些分类方式,基本与上面差不多。
在这里插入图片描述
在这里插入图片描述
进程的组织
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
进程的特征

进程是资源分配、接受调度的基本单位。
在这里插入图片描述
总结
PCB是操作系统为了管理各个并发执行的程序所建立的数据结构,因此这个程序结构肯定存放的对并发的进程管理的数据。
在这里插入图片描述

二、进程的状态与转换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个时候进程处于创建态。而如果这个进程运行结束或者遇到一些bug时候,进程就需要被撤销,撤销的过程也不是一瞬间能够完成的,操作系统需要回收分配给进程的资源,比如说一个进程分配了一个打印机,就需要把这个打印机进行回收,另外分配给进程的内存区域也需要进行回收,最后删除进程相关的PCB,这样才完成进程的撤销的过程。所以说,在一个进程停止之后,还需要一些后续的操作,在进程后续工作的情况下,这个进程就处于所谓的终止态。
在这里插入图片描述
在这里插入图片描述
进程的另外两种状态
在这里插入图片描述
进程状态的转换
在这里插入图片描述
总结
在这里插入图片描述

三、进程控制

在这里插入图片描述
在这里插入图片描述
进行控制就是要实现绿色所表示的箭头。
在这里插入图片描述
如何进行进程的控制?
在这里插入图片描述
进程创建完成之后,会把进程的PCB放入到就绪队列当中,这是由创建态到就绪态的一个过程,之后如果一个进程被CPU调度,然后就会从就绪态转变为运行态,这个过程我们需要做的就是把进程的运行环境给恢复,修改PCB内存(就是将PCB当中的状态标志位从就绪态变为运行态),并且把进程的PCB从就绪队列中取出来,然后进程就可以开始处理运行。

为什么要恢复进程运行的环境呢?因为这个进程可能之前运行到一半被切换了,所有这个进程的中间结果其实是被保存在PCB中的,所以这个进程被再次调度的时候,需要把它之前的运行环境给恢复过来。

当这个进行在执行的过程当中,如果通过系统调用的方式发出了等待某个事件的请求,那么就需要把这个进程当前运行的环境保存下来,用于之后这个进程还可以接着往下面执行,并且还可以把进程中PCB的标志位从运行态改变为阻塞态,然后把进程的PCB放入相应事件的阻塞队列中。

类似的,如果从阻塞态转换为就绪态,需要修改PCB的内容,并且把PCB从阻塞队列放到就绪队列当中。如果说进程他在阻塞队列当中是在等待某种系统资源的分配,操作系统还需要将系统资源分配给这个进程。

像其他的运行态到就绪态的转换,运行态到终止态的转换,都需要修改PCB当中的内容,并且有的时候还需要回收系统资源或为进程分配系统资源,可以看到进程的状态切换中间所需要做的事情是比较复杂的,我们需要修改PCB的内容,并且把PCB放到相应的队列当中。

思考问题,假如一个进程把它的PCB从一个队列放到了另一个队列当中,但是我们并没有把PCB当中的状态标志位改成相应的新的状态,那么这种情况其实是很危险的,极有可能导致系统错误,因为这个时候PCB所处的队列和PCB的状态标志就不一致了,那么为了防止这个问题,就使用了所谓的原语实现进程的控制。原语的特点就是执行期间不允许中断,只能一气呵成。
在这里插入图片描述
不可中断的操作就称为原子操作。
原语采样“关中断指令”和“开中断指令”实现。
当原语相关的代码开始执行之前,会先执行一个关中断指令,执行了关中断指令之后,如果此时有一个外部中断信号进入,这个外部中断信号会被暂时忽略,不被处理,所以这就保证了原语的一系列处理不被中断,只有之后执行了开中断指令之后,再接受到一个外部中断信号,这个时候才会转入到中断处理程序,然后开始处理,所以可以看到通过关中断和开中断就可以实现原语这种一气呵成的操作,也就是前面提到的把PCB放到一个队列当中,并且还需要保证PCB当中的数据也被修改,这种操作就可以通过原语来实现。

关中断和开中断指令的权限是非常大的,如果一个用户进程可以随意使用这两种指令的话,那么就意味着用户进程可以永远不被中断,他会一直霸占到CPU资源,这样显然是很危险的事情,显然关中断和开中断指令是一种特权指令,必然只能在核心态下执行。

所以原语肯定也是运行在核心态的。操作系统内核那里提到过原语,他是操作系统内核的一部分。
在这里插入图片描述
操作系统提供的进程相关的原语
在这里插入图片描述
用于实现进程终止工作的撤销原语,撤销原语完成了一系列的工作,无非就是更新一些PCB的内容,回收系统资源这样一些事情。如果说处于一个运行态的进程,它运行正常结束或者说运行过程当中由于一些bug导致了异常结束(整数除以0),这种情况会使用撤销原语来使进程从运行态转变为终止态,最后完成终止态的一系列工作之后,这个进程就被彻底撤销了,另外如果一个进程处于就绪态或者阻塞态,此时如果有外界干预(比如说用户主要请求撤销这个进程),这个时候操作系统也会使用撤销原语,来时进程之间从就绪态/阻塞态直接转变为终止态,然后完成一系列的工作之后,最后把进程彻底的干掉,像外界干预比如使用windows的任务管理器来杀进程的这样操作就是外界干预。
在这里插入图片描述
操作系统还提供了进程的阻塞和进程的唤醒相关的原语。
阻塞原语和唤醒原语所做的一系列操作也是更新PCB中的信息或者把它插入到合适的队列这样的一系列工作,那么如果一个正在运行的进程正在等待系统分配某种资源或者等待某种事件的发生,操作系统就会使用阻塞原语,那进程进行阻塞,由此进程会由运行态变为阻塞态。当进程等待的事件发生之后,系统又会使用唤醒原语,来把刚才阻塞的进程,从阻塞态转变为就绪态,需要注意的是进程的唤醒这一事件其实就是进程所阻塞的时候等待的事件,因此阻塞原语和唤醒原语必须成对使用。进程因为什么事件被阻塞,就应该因为什么事情被唤醒。
在这里插入图片描述
另外操作系统提供了进程的切换,进程切换提供了相关的原语,其实实现的也是PCB的一些操作。
在这里插入图片描述
总结

在这里插入图片描述

四、进程通信

在这里插入图片描述
在这里插入图片描述
共享存储:操作系统会为两个进程分配一个共享空间,两个进程之间的通信就可以通过共享空间来进行完成,需要注意的是这两个进程对共享空间的访问必须是互斥的,当进程1往共享空间写数据的时候,进程2是不允许访问共享空间的,只有进程1把共享空间的访问释放了,进程2才可以进行读操作,而这个互斥主要通过操作系统的同步互斥工具来实现的(P、V操作)。
在这里插入图片描述
管道通信:开辟的固定大小的缓冲区,这个缓冲区一般和内存页面是一样大小的,像linux系统中一个管道对应的缓冲区的大小是4KB。

进程对管道的访问时互斥的,与共享空间的访问是一样的,当进程1往里面写数据的时候,进程2是不允许访问管道的,只有进程1把管道的访问给释放了,进程2才可以开始读。

管道通信的数据传输是怎么实现的,首先进程1会往管道里面写数据,当管道里面的数据写满了以后,进程2才可以往外面读数据,而只有数据全部被读出去以后,进程1才可以继续往里面写数据。

在这里插入图片描述
消息传递:每个进程都有一个消息缓冲队列,如果另外一个进程想给它发送消息的时候,这个进程首先会创建好消息体,然后通过发送原语,发送给目标进程,这个消息就被挂到了目标进程的消息缓冲队列的队尾。然后目标的这个进程会通过接收原语来依次把队列中的消息一个一个取走,然后进程处理。(直接通信的方式)
在这里插入图片描述
在这里插入图片描述

间接通信方式:系统会为各个进程的通信管理一个信箱,而这个信箱中可能有各种各样的消息,并且这些消息可能是不同的进程之间通信的一些消息,具体是由哪个进程发,哪个进程接收,这些都是在消息头里包含的一些数据,所以并不担心这些消息会被取错,那么如果有一个进程想给另外一个进程发送消息的话,这个消息会用发送原语先发送到中间实体,之后读进程再用接收原语再从信箱中取走属于自己的消息。

在这里插入图片描述
总结
在这里插入图片描述


总结

本节主要学习了进程的定义、组成、组织方式以及特征。
进程的状态与转换。
进程的控制。
进程的通信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值