【操作系统】进程

1、进程的概念

程序和进程的区别

程序:是静态的,就是个存放在磁盘里的可执行文件,如:QQ.exe。

进程:是动态的,是程序的一次执行过程,如:可同时启动多次QQ程序。

同一个程序多次执行会对应多个进程。

如下图,我们可以通过QQ.exe打开多个程序,但每一个QQ程序都对应着唯一的进程。

在这里插入图片描述

在这里插入图片描述

2、进程的组成

进程由PCB、程序段和数据段组成。PCB是给操作系统用的,程序段、数据段是给进程自己用的。

程序段、数据段、PCB三部分组成了进程实体(进程映像),引入进程实体的概念后,可把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

注:进程是动态的,进程实体(进程映像)是静态的。

PCB(Process Control Block):进程控制块

思考:操作系统作为进程的管理者,要怎么区分各个进程呢?

当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证 号”—— PID(Process ID,进程ID)

操作系统要记录PID、进程所属用户ID(UID),还要记录给进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件),并且记录进程的运行情况(如:CPU使用时间、磁盘使用情况、网络流量使用情况等)。

这些信息都被保存在PCB 中,操作系统需要对各个并发运行的进程进行管理,但凡管理时所需要的信息,都会被放在PCB中。

PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB 。

程序段

包含程序指令。

数据段

包含运行过程中产生的各种数据。

3、进程的特征

  • 动态性(动态性是进程最基本的特征):进程是程序的一次执行过程,是动态产生、变化和消亡的。

  • 并发性:内存中有多个进程实体,各个进程可并发执行。

  • 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位。

  • 异步性:各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题。

  • 结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成。

4、进程的状态与转换

在这里插入图片描述

在这里插入图片描述

  • 进程正在被创建时,它的状态是“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB。

  • 当进程创建完成后,便进入“就绪态”, 处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。

    • 当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行。
  • 如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。

  • 在进程运行的过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的响应)。在这个事件发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,并让它进入“阻塞态 ”。

  • 一个进程可以执行 exit 系统调用,请求操作系统终止该进程。 此时该进程会进入“终止态”,操作系统会让该进程下CPU ,并回收内存空间等资源,最后还要回收该进程的PCB。当终止进程的工作完成之后,这个进程就彻底消失了。

Q1:那如何区分上述这五种状态呢?

A1:进程PCB中,会有一个变量 state 来表示进程的当前状态。如:1表示创建态、2表示就绪态、3表示运行态… 为了对同一个状态下的各个进程进行统一的管理,操作系统会将各个进程的PCB组织起来。

补充说明:运行态—>阻塞态是进程主动选择的行为。

而阻塞态—>就绪态不是进程自主能控制的,是一种被动行为

5、进程控制

定义

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

进而言之,就是要实现进程状态转换

如何实现进程控制?

使用“原语”来实现。

原语是一种特殊的程序, 它的执行具有原子性。也就是说,这段程序的运行必须一气呵成,不可中断。

进程控制相关的原语

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

无论哪个进程控制原语,要做的无非三类事情:

1、更新PCB中的信息

2、将PCB插入合适的队列

3、分配/回收资源

6、进程通信(IPC)

在这里插入图片描述

什么是进程通信?

进程间通信 ( Inter-Process Communication,IPC ) 是指两个进程之间产生数据交互。

为什么进程通信需要操作系统支持?

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。

共享存储

  • 基于数据结构的共享:比如共享空间里只能放 一个长度为10的数组。这种共享方式速度慢、 限制多,是一种低级通信方式。

  • 基于存储区的共享:操作系统在内存中划出一 块共享存储区,数据的形式、存放位置都由通 信进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式。

消息传递(间接通信方式)

进程间的数据交换以格式化的消息 ( Message) 为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

管道通信

进程通信——管道通信“管道”是一个特殊的共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的内存缓冲区

  • 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信, 则需要设置两个管道。

  • 各进程要互斥地访问管道(由操作系统实现)

  • 当管道写满时 ,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。

  • 当管道读空时 ,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。

  • 管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:①一个管道允许多个写进程, 一个读进程 (2014年408真题高教社官方答案);②允 许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据 (Linux 的方案 ) 。
    醒读进程。

  • 管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。对此,通常有两种解决方案:①一个管道允许多个写进程, 一个读进程 (2014年408真题高教社官方答案);②允 许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据 (Linux 的方案 ) 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值