0%

操作系统基础概念

[toc]

2.1 概念和特征#

  • 是资源分配、调度的独立单位

  • 进程包含以下内容:

    1. 程序段(代码段)
    2. 数据段(存数据)
    3. PCB进程控制块( 进程存在的唯一标志)
  • 进程具有动态性,是一个动态的概念。

  • 每个进程具有独立的PCB结构, 资源也独立。

2.2 进程状态机图#

在这里插入图片描述

2.3 进程状态变化时的具体过程#

2.3.1 进程创建#

  • 创建过程:
  1. 分配进程;申请PCB
  2. 分配资源
  3. 初始化PCB
  4. 插入到系统的就绪队列
  • 父进程创建子进程:
    子进程可以继承父进程的所有资源。
    父进程退出时,需要杀光子进程。

2.3.2 进程的终止#

终止有3种触发情况

  • 正常结束——运行完毕
  • 异常结束——越界、非法
  • 外界干预——直接kill进程

终止的触发过程:

  1. 根据进程标识符,找到PCB控制块,读取进程状态
  2. 如果正常执行,则终止进程。 如果有子进程,则杀死子进程
  3. 归还资源给父进程或者操作系统
  4. 将PCB从系统PCB队列删除

2.3.3 进程的阻塞#

阻塞的过程:

  1. 根据标识符找到PCB
  2. 切换PCB状态为阻塞状态
  3. 把PCB插入到等待队列中

2.3.4 进程唤醒#

唤醒的过程:

  1. 根据标识符从等待队列中找到PCB
  2. 移出等待队列,修改运行状态为就绪
  3. 插入到就绪队列

2.3.5 进程切换#

  1. 保存当前处理器上下文信息,更新PCB并移入队列
  2. 选择另一个进程,更新PCB状态
  3. 更新内存管理
  4. 恢复处理器上下文

上面可以看到基本是围绕 PCB、等待队列、就绪队列、进程状态更新这4个概念展开的。

注意调度是一个决策行为, 而切换是一个执行行为, 因此都是先调度,再切换。

2.4 进程的组成#

2.4.1 PCB进程控制块#

pcb控制块在进程创建后, 就常驻内存中
是进程的唯一标志

PCB控制块包含以下内容:

  • 进程描述
    包括进程标识符 和 用户标识符
  • 进程控制和管理
    包括 当前运行状态、 优先级、 入口地址、 外村地址、 进入内存时间、 CPU占用时间、信号量
  • 资源分配清单
    包括 3个段指针(代码段、数据段、堆栈段), 文件描述符, 键盘/鼠标资源
  • 处理器相关信息
    寄存器值
    程序状态字

PCB控制块的组织方式:

  • 链接方式: 各运行状态都有1个队列, 相关状态PCB都会放在链表队列中(因此可以非顺序取出)。
  • 索引方式: 建立一个索引表,指向对应pcb, 即用数组去组织

2.5 进程之间的通信#

进程的通信有3种方式

  • 共享存储方式
    由操作系统系统存储空间调用方式。
    注意用户进程的空间是互相独立的,不会互相访问。

  • 消息传递
    直接通信: 发送到对方的消息队列,从消息队列去
    间接通信: 发信到中间邮箱(非双方进程), 接收方自己去取。

  • 管道通信:
    管道: 链接读写进程之间的共享文件
    功能为互斥、同步
    属于一次性操作, 一旦被读取,数据就被从管道中抛弃
    半双工, 只有1方能操作,要么存入要么写。
    如果要实现双方互动,则需要2个管道。

2.6 linux延申#

linux进程状态解读
在这里插入图片描述

linux下的PCB控制块
在这里插入图片描述

linux中的进程通信方式

在这里插入图片描述