进程管理:进程 | 进程控制 | 进程通信

进程管理

2.1 进程的概念、组成和特征

概念

程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。

进程(Process):是动态的,是程序的一 次执行过程。

组成

一个进程实体(进程映像)PCB、程序段、数据段组成。 进程是动态的,进程实体(进程映像)是静态的。 进程实体反应了进程在某一时刻的状态(如:x++后,x=2)

进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。

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

  • PCB进程控制块,是进程存在的唯 一标志

    • 请添加图片描述
  • 程序段

    • 程序代码(指令序列)
  • 数据段

    • 运行过程中产生的各种数据(如:程序中定义的变量)

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

PCB的作用
  • 作为独立运行基本单位的标志
    • PCB还进程存在的唯一标识,随着进程的创建而创建消亡结束而消亡
  • 能实现间断性运行方式
    • 进程堵塞而暂停运行时的CPU现场信息保存在PCB中,以进程调度时恢复CPU现场使用
  • 提供进程管理所需要的信息
    • PCB中记录了程序和数据在内、外存始址指针,以及进程所需资源清单等
  • 提供进程调度所需要的信息
    • PCB中记录了进程的状态、优先级、已执行时间等。
  • 实现与其它进程的同步与通信
    • PCB中有响应的同步信号量

特征

  • 动态性
    • 进程的最基本特征
  • 并发性
  • 独立性
    • 进程能独立运行、独立获得资源、独立接受调度的基本单位
  • 异步性
    • 各进程以不可预知的速度向前推进,可能导致运行结果的不确定性
  • 结构性

2.2 进程的状态与转换

进程的状态

  • 创建态
    • 操作系统会为进 程分配资源、初始化PCB
  • 就绪态
    • 进程已具备运行条件, 但由于没有空闲CPU,暂时不能运行
  • 运行态
    • CPU会执行该进程对应的程序(执行指令序列)
  • 阻塞态
  • 终止态
    • 下CPU,系统回收资源

进程状态的转换

请添加图片描述

进程PCB中,会有一个变量 state 来表示进程的当前状态。

进程的组织方式

  • 线性方式

    • 将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中

    • 实现简单、开销小,但每次查找时都需要扫描整张表,

      因此适合进程数目不多的系统。

  • 链式方式

    • 按照进程状态将PCB分为多个队列
    • 操作系统持有指向各个队列的指针
  • 索引方式

    • 根据进程状态的不同,建立几张索引表
    • 操作系统持有指向各个索引表的指针

2.3 进程控制

基本概念

  • 实现进程状态的转换
  • 用“原语”实现
原语

原语是一种特殊的程序段,它的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断

可以用 “关中断指令”和“开中断指令”这两个特权指令实现原子性

CPU执行了关中断指令之后,就不再例行 检查中断信号,直到执行开中断指令之后 才会恢复检查。

进程控制相关的原语

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

程序的运行

CPU中会设置很多 “寄存器”,用来存 放程序运行过程中所 需的某些数据。

  • 一些寄存器eg:
    • PSW:程序状态寄存器
    • PC:指令寄存器,存放当前正在执行的指令
    • IR:指令寄存器,存当前正在执行的指令
    • 通用寄存器:其他一些必要的信息

进程控制会导致进程状态的转换。无论哪个进程控制原语,要做的无非三类事情:

  1. 更新PCB中的信息

    a. 所有的进程控制原语一定都会修改进程状态标志

    b. 剥夺当前运行进程的CPU使用权必然需要保存其运行环境

    c. 某进程开始运行前必然要恢复期运行环境

  2. 将PCB插入合适的队列

  3. 分配/回收资源

2.4 进程的通信

各进程拥有的内存地址空间相互独立。一个进程不能直接访问另一个进程的地址空间。为了保证进程间的安全通信,操作系统提供了一些方法。

请添加图片描述

共享存储

请添加图片描述

两进程对共享空间的访问必须是互斥的(eg:互斥工具P、V操作)

  • 基于数据结构的共享(低级通信方式)
  • 基于存储区的共享(高级通信方式)

消息传递

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

请添加图片描述

  • 直接通信方式
    • 消息直接挂到接收进 程的消息缓冲队列上

请添加图片描述

  • 间接通信方式
    • 消息要先发送到中间实体(信箱)中,因此 也称“信箱通信方式”。Eg:计网中的电子 邮件系统

请添加图片描述

管道通信

(“管道”一个大小固定的缓冲区)

请添加图片描述

  1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道
  2. 各进程要互斥地访问管道。
  3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
  4. 如果没写满,就不允许读。如果没读空,就不允许写
  5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux进程管理进程通信是操作系统中非常重要的概念。我可以为您提供一些关于这两个主题的基本信息。 1. 进程管理: 在Linux中,进程是指在执行中的程序实例。进程管理包括创建、调度、终止和监控进程的活动。以下是一些关于进程管理的关键概念: - 进程标识符(PID):每个进程都有一个唯一的PID,用于标识和跟踪进程。 - 进程状态:进程可以处于运行、就绪、阻塞或终止等不同状态。 - 进程调度:操作系统根据特定算法决定哪个进程应该在给定时间内运行。 - 进程创建:通过fork()系统调用创建子进程,或者通过exec()系列系统调用加载新程序镜像并替换当前进程。 - 进程终止:进程可以自愿终止,或者由其他进程(如父进程或操作系统)强制终止。 - 进程监控:可以使用系统工具(如ps、top)或编程接口(如proc文件系统)来监控和管理进程。 2. 进程通信进程通信是指进程之间交换数据和信息的机制。在Linux中,有多种方法可以进行进程间通信,包括: - 管道(Pipe):用于在父子进程或具有亲缘关系的进程之间进行通信。 - 信号(Signal):用于向进程发送简单的通知或中断信号。 - 共享内存(Shared Memory):允许多个进程共享同一块物理内存,以便快速高效地进行数据交换。 - 消息队列(Message Queue):进程可以通过消息队列传递和接收消息。 - 信号量(Semaphore):用于实现进程间的互斥和同步操作。 - 套接字(Socket):适用于网络编程,允许不同主机上的进程进行通信。 这只是对Linux进程管理进程通信的简要介绍,如果您有任何具体问题或深入了解的需求,请随时提问!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值