操作系统概念——第3章 进程

文章目录

  • 本章重难点
  • 3.1 进程的概念
    • (2)区分:程序(program)、进程(process)、处理器(processor)
  • 3.2 内存映像
    • (2)问题:程序如何转换为进程
  • 3.3 内核数据结构
  • 3.4 进程状态与上下文
    • 3.4.1 进程状态
      • (2)进程状态图
    • 3.4.2 上下文
      • (2)上下文转换
  • 3.5 进程的创建和终止
    • 3.5.1 进程的创建
      • (1)采用先fork()再exec()的优点

本章重难点

(1)内存映像
(2)状态与上下文
(3)状态转换图
(4)内核数据结构
(5)PCB

3.1 进程的概念

(1)进程的定义:
进程是运行的程序实例
(进程可以理解是对CPU的抽象化)

(2)区分:程序(program)、进程(process)、处理器(processor)

① 程序:是被动实体(静态),存储在磁盘上的可执行文件
② 进程:是活动实体(动态),有一个程序计数器PC表示下一条要执行命令的地址
③ 处理器:CPU

3.2 内存映像

(1)内存中进程结构:
操作系统概念——第3章 进程_第1张图片

(2)问题:程序如何转换为进程

① 当一个可执行文件被装入内存时,程序才能成为进程
理解:操作系统定义了可执行文件的格式(WIN:PE LINUX:ELF),编译器描述了可执行文件在内存中的规范。可执行文件(描绘未来在内存的样子)通过加载器解析(代码数据载入内存)成为了进程

3.3 内核数据结构

(1)进程控制块:
每个进程在操作系统内用进程控制块(PCB)来表示
操作系统概念——第3章 进程_第2张图片
理解:
① 每个进程对应一个PCB
② PCB是操作系统管理进程创建的数据结构,PCB属于操作系统内核存储在内存中,而非进程本身
③ 上下文=程序计数器+寄存器

3.4 进程状态与上下文

3.4.1 进程状态

(1)5个基本状态
新的(New):进程正在被创建
阻塞(Waiting):进程等待某个事件的发生
就绪(Ready):进程等待分配处理器
运行(Running):进程正在被执行
终止(Terminated):进程完成执行

(2)进程状态图

关注状态与状态之间的转换关系
操作系统概念——第3章 进程_第3张图片

3.4.2 上下文

假设:CPU内所有寄存器的值都会对指令造成影响
析:CPU从指令寄存器中读出下一条指令的地址,执行时CPU内寄存器可能对指令产生影响。而操作系统无法知道哪些寄存器会对该指令造成影响。
(1)定义:
CPU内所有寄存器的值构成了上下文

(2)上下文转换

操作系统概念——第3章 进程_第4张图片
一个事件可能有多次进程转换,因为信息在进程和进程之间是不同的,所以需要上下文转换。

理解:如何进行上下文转换(PCB的信息存储机制)
(1)当前处于Running状态的进程的信息保存在CPU中,不需要PCB另外保存
(2)当发生状态转化(Running–>Waiting)时,发生系统调用,PC指向中断服务管理程序。 程序将CPU寄存器的值(该进程的上下文)复制到PCB中,并采样进程调度算法选择下一个运行的进程。

3.5 进程的创建和终止

3.5.1 进程的创建

进程在执行过程中,能通过创建进程系统调用创建多个新进程。大多数操作系统根据一个唯一的进程标识符pid(整数)来识别进程。
1. fork():
子进程复制父进程的地址空间(PCB、内存映像),仅pid与父进程不同
② 两个进程都继续执行fork()之后的指令。子进程fork()调用的返回值为0,父进程>0
理解:为什么限制子进程只能使用父进程的资源?
防止创建过多的进程带来系统超载

2. exec():
① 解析另一个可执行文件,将二进制文件装入内存,覆盖原有内存映像

(1)采用先fork()再exec()的优点

进程的创建是先复制父进程的地址空间,再解析另一个可执行文件,覆盖原有内存映像。
① 允许程序员在fork()和exec()之间操作
① 两个进程能相互通信,并按照各自的方法执行
② 父进程能创建更多的子进程
③ 如果在子进程运行时没有什么可做,父进程可以系统调用wait()把自己移除就绪队列等待子进程的终止

你可能感兴趣的:(操作系统,操作系统)