理解进程

一. 什么是Process

源代码(静态的)经过编译连接之后形成可执行程序(例如.exe后缀), 双击运行程序, 程序通过操作系统加载到内存单元中, 操作系统将CPU执行权转交给程序, CPU执行程序中一条条指令, 处理相应的数据, 并完成一定的功能, 这个执行过程就是进程(动态的).

二. Process由5部分组成

1. 代码段

2. 数据段
3. CS:IP
4. 寄存器(注意: 进程切换回保存现场, 包括寄存器中的值, 所以每个进程的寄存器中的内容都是独立的)
5. 资源(内存, 文件系统, 网络等)

这其实就是程序运行时的状态信息

三. Process与程序的关系

1. 进程是动态的, 程序是静态的.

2. 进程分为用户态和核心态.
问题: 为什么进程具有核心态?
有一个进程, 用于读取磁盘中的文件, 该进程执行期间需要使用到文件系统, 但是此时进程处于用户态, 无法直接调用文件系统, 所以该进程就会委托操作系统来调用文件系统, 这时的进程就处于核心态.

3. 进程和程序是多对多关系
一个进程通过调用关系可以具有多个程序, 一个程序通过运行多次可以产生多个进程.

4. 科学家做菜模型 - 理解程序和进程
科学家 - CPU
菜谱 - 程序
食材 - 数据
做菜过程 - 进程

CPU具有识别进程优先级的能力, 例如 做菜 和 包扎伤口 这两个进程, 包扎伤口更加重要.

四. 进程的特点

1. 动态性
1) 进程动态产生
2) 进程状态切换(用户态, 核心态)
3) 进程切换(进程a和进程b通过处理机调度进行切换)

2. 并发性
并发和并行的区别?
并发: 一段时间内
并行: 一个时间点

3. 独立性
进程之间不会相互影响, 这种机制由页表实现.

4. 制约性
同步 互斥

五. 进程控制块(PCB)

1. 如何设计操作系统的进程管理机制?
程序 = 算法 + 数据结构

PCB就是用于描述进程的数据结构, 存储了程序运行时的状态信息.

2. PCB由3部分组成
1) 进程标识信息
进程PID
所属用户
父进程PID

2) 处理机状态信息
寄存器
PSW(flag寄存器)
PC(存储下一条指令的地址)
栈指针(过程调用, 系统调用, 中断处理)

3) 进程控制信息
调度信息
进程间通信信息
内存管理
文件系统
父子进程间关系(通过队列或链表表示)

3. PCB组织方式
1) 链表(方便插入和删除)
2) 索引表

六. 进程的六个生命周期

1. create
1) 系统初始化
2) 用户请求创建
3) 进程内创建

2. run

3. wait

4. wake up

5. exit
1) 正常退出
2) 错误退出
3) 严重错误退出 (例如进程a尝试访问进程b的内存空间时, OS会强制其退出)
4) 由其它进程杀死

七. 进程状态变化模型

 

八. 进程挂起模型

挂起: 进程没有占用内存空间

1. 分类
1) 阻塞挂起状态: 外存上, 等待事件
2) 就绪挂起状态: 外村上, 等待进入内存 (一进入内存就可以被执行)

2. 状态队列
由OS维护系统中所有进程的当前状态.

举例: 就绪队列和阻塞队列

 

posted on 2018-11-10 10:14  ert999  阅读(142)  评论(0编辑  收藏  举报

导航