操作系统 进程的状态和转换 进程控制 进程通信

本文详细介绍了进程的定义、组成及特征,包括PCB、程序段和数据段。阐述了进程的组织方式(链接和索引)以及进程状态的转换,如创建、运行、阻塞和终止。此外,还探讨了进程控制的目的和操作,如进程的创建、终止、阻塞和切换。最后,讨论了进程间的通信机制,如共享存储和管道通信,以及消息传递的特点和应用场景。
摘要由CSDN通过智能技术生成








前言


本文所有内容均由个人整理,如有差错,敬请斧正。




进程的定义 组成 特征

一、定义

程序:静态的,存放在磁盘里的可执行文件,如:QQ.exe。
进程:动态的,是程序的一次执行过程,如:可同时启动多次QQ程序。
              同一个程序多次执行会对应多个进程


程序段,数据段,PCB(进程控制块)三部分组成进程实体(进程映像),进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

注:严格来说进程和进程实体并不一样,进程实体是静态的,进程则是动态的,一般情况下可以认为进程实体就是进程。可以说“进程由程序段,数据段,PCB三部分组成”

二、组成

1、PCB

操作系统通过PCB来管理进程,包含操作系统对进程进行管理所需的各种信息,是进程存在的唯一标志
PCB

2、程序段,数据段

程序段:存放要执行的代码
数据段:存储程序运行时所产生的运算数据,如全局变量,局部变量

进程的组成

PCB 是给操作系统用的。
程序段、数据段是给进程自己用的。

三、特征

在这里插入图片描述

进程的组织方式

管理进程就是管理进程的PCB,在一个系统中通常有数十、数百乃至数千个进程(PCB),操作系统需要采用适当的方式将它们组织起来。

1、链接方式

按照进程状态将PCB分为多个队列,此时操作系统持有指向各个队列的指针
在这里插入图片描述

2、索引方式

根据进程状态的不同,建立几张索引表,此时操作系统持有指向各个索引表的指针
在这里插入图片描述

注:进程的组织讨论的是一个进程内部的构成问题,而进程的组织方式讨论的是多个进程之间的组成方式问题

进程的状态和转换

1、基本状态(运行,就绪,阻塞)

在这里插入图片描述

创建态,就绪态

在这里插入图片描述

运行态

在这里插入图片描述

在这里插入图片描述

阻塞态

在这里插入图片描述

终止态

在这里插入图片描述

2、进程状态的转变

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

进程控制

目的

实现进程状态的转换
具有创建进程、撤销已有进程、实现进程状态转换的功能

在这里插入图片描述

进程的创建

在这里插入图片描述

进程的终止

在这里插入图片描述

进程的阻塞和唤醒

在这里插入图片描述

进程的切换

在这里插入图片描述

总结

在这里插入图片描述

进程通信

进程之间的信息交换
进程是分配系统资源的单位(包括内存地址空间),因此个进程拥有的内存地址空间相互独立,为了安全,一个进程是不能直接访问另一个进程的地址空间
在这里插入图片描述

共享存储

在这里插入图片描述

管道通信

在这里插入图片描述
1.管道只能采用半双工通信,某一时间段内只能实现单向传输,如果要实现双向同时传输,则需要设置两个管道
2. 各进程要互斥的访问管道
3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走,当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
4. 如果没写满就不允许读,如果没读空,就不允许写
5. 数据一但被读出,就从管道中被抛弃,读进程只能有一个,否则可能会有读错数据的情况

消息传递

进程间的消息传递以格式化的消息为单位。进程通过操作系统提供的“发送消息/接受消息”两个源语进行数据交换
在这里插入图片描述

总结

提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

1.目的: 自行编制模拟程序,通过形象化的状态显示,深入理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。 2. 内容及要求: 1) 设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。 2) 独立编写、调试程序。进程的数目、进程状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择。 3) 合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。 4) 设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。 5) 代码书写要规范,要适当地加入注释。 6) 认真进行预习,完成预习报告。 7) 实验完成后,要认真总结,完成实验报告。 3.使用的数据结构及说明: 在本实验中,主要用到的数据结构是PCB的结构,其中PCB的数据结构如下: struct PCB { int P_Id; //PCB的ID号 char P_Name[10]; //PCB的名称 char P_State[10]; //PCB状态 int P_Runtime; //PCB的所需要的运行时间 int P_Requiry; //PCB所需要的资源要求 struct PCB * next ; //PCB块的下一个指针 } ; 其中,P_Id,和P_Name用来标示一个进程,而P_State用来标示进程的五种状态:Create_state,Ready_state,Block_state,Run_state,Exit_state。P_Runtime标示要完成一个进程所需要的时间。P_Requiry标示一个进程的执行所需要的其他条件,当其他的条件满足,则P_Requiry置1,否则置0。Struct PCB * next 用来指向同一队列中的下一个PCB块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值