Linux教程

操作系统-第三章-进程管理

本文主要是介绍操作系统-第三章-进程管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、进程定义、特征

定义:是程序的一次动态执行,是计算机进行资源分配和调度的一个基本单位。
特征:动态性、并发性、独立性、异步性、结构性。

2、进程状态转换图

在这里插入图片描述

3、进程同步与互斥–前驱图、生产者与消费者

4、进程通信类型

进程通信指进程之间的信息交换,因为进程是系统分配资源的基本单位,因此进程拥有的内存地址空间相互独立,为保证安全,一个进程无法直接访问另一个进程的资源。
在这里插入图片描述

方案一 共享存储

为两个进程设立一个共享存储区,两个进程需要互斥(通过PV操作)的访问共享空间。

共享存储分为 基于数据结构 和 基于存储区 两种

基于数据结构:只能放固定数据结构的数据,速度慢,限制多,是一种低级通信方式

基于存储区:数据形式由进程控制,是高级通信方式
在这里插入图片描述

方案二 管道通信

管道通信只能使用半双工,一段时间内只能单向通信。管道就是内存中的缓冲区,缓存区未满时不能读数据,缓冲区未空不能写数据。当写入方将缓冲区写满后,读入方才能开始读,只有读入方将缓冲区读空以后,缓冲区才能重新被写入数据。

管道满时,写进程的write()调用将被阻塞,管道空时,读进程的read()调用将被阻塞

对于管道来说,两个读进程之间,两个写进程之间,读进程与写进程之间都是互斥的。

两个写进程可能会覆盖写入以及乱序写入

由于管道中的数据在读进程读取之后便丢失了(这与文件不同,文件读取不改变文件里的值),因此两个读进程一起读的话可能会导致错误(想读的已经被读走了,只能读不该读的了)
在这里插入图片描述

方案三 消息传递

进程间通过 “发送消息”、“接受消息”这两个 原语 来进行数据交换

类似与邮件,有一个消息信箱作为进程间消息的中转站,进程要先将消息发送到信箱中去,进程收到消息后将消息挂到消息队列上

消息类似于网络报文,分为消息头和消息体两部分。消息头包括 发送进程id,接受进程id,消息类型,消息长度等(和计网完全类似)
在这里插入图片描述

注意:

共享存储方式中,两个进程必须互斥的访问共享空间

管道通信方式,一个管道只能实现半双工通信,要想实现全双工通信,需要设置两个管道(两个缓冲区)

6、线程与进程之间区别、线程状态转换图

线程是CPU调度的一个基本的单位,一个进程可以有多个线程。线程没有自己的资源,它只和其他线程共享进程资源。进程的调度同步等操作由操作系统完成,而线程既能由操作系统完成,也可由用户程序控制。

线程状态转换图
在这里插入图片描述

这篇关于操作系统-第三章-进程管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!