操作系统目录:
第 1 章 计算机系统概述
进程管理(2~4)
第 2 章 进程与线程
第 3 章 处理机调度
第 4 章 进程同步与死锁
第 5 章 内存管理
第 6 章 文件管理
第 7 章 I/O管理
文章目录
2.1.1 进程的定义、组成和组织方式、特征
早期计算机:只支持单道程序
- 内存:
程序段:程序的代码
数据段:程序运行时处理的数据(变量…)
多道程序技术:内存同时存放多道程序
为了方便操作系统管理,引入了进程、进程实体。
1. 进程的定义
进程是进程实体的运行过程,是系统进行资源配和调度的一个独立单位
2. 进程的组成:PCB、程序段、数据段
操作系统所需的数据都在PCB中
程序段和数据段:存放程序本身的运行所需的数据
3. 进程的组织
进程的组织方式:链接方式、索引方式
- 链接方式:
· 执行指针:指向当前处于运行态的进程
· 就绪队列指针:指向当前处于就绪态的进程,通常会把优先级高的进程放在队头
· 阻塞队列指针:指向当前处于阻塞态的进程
4. 进程的特征
动态性、并发性、独立性、异步性、结构性
2.1.2 进程的状态与转换
1. 进程的状态
进程是程序的一次执行
三种基本状态:运行态、就绪态、阻塞态
另外两种状态:创建态、终止态
2. 进程状态间的转换
就绪态–>运行态
运行态–>就绪态
运行态–>阻塞态
阻塞态–>就绪态
——————————————
创建态—>就绪态;运行态—>终止态
2.1.3 进程控制
1. 什么是进程控制
实现进程状态之间的转换
2. 如何实现进程控制
修改PCB内容和相应队列
- 用原语实现进程控制
进程的创建:创建原语(创建态—>就绪态)
进程的终止:撤销原语(就绪态/阻塞态/运行态—>终止态)
进程的阻塞和唤醒:阻塞原语(运行态—>阻塞态)唤醒原语(阻塞态—>就绪态)
进程的切换:切换原语
2.1.4 进程通信
什么是进程通信
进程通信就是指进程之间的信息交换。
各进程拥有的内存地址空间相互独立,一个进程不能直接访问另一个。
1. 共享存储:
互斥的
分为:基于数据结构的共享(低级)、基于存储区的共享(高级)
2. 管道通信:
半双工通信,如果要实现双向通信,需要设置两个管道
3. 消息传递:
进程间的数据交换以格式化的消息为单位
操作系统的两个原语:发送消息/接收消息两个原语进行数据交换。
消息传递方式:直接通信方式、间接通信方式
2.1.5 线程概念和多线程模型
为什么要引入线程
每个进程可以包含多个线程
线程是一个基本的CPU执行单元,也是程序执行流的最小单元。
带来的变化
- 资源分配和调度:
· 传统,进程是资源分配、调度的基本单位。
· 引入线程后,进程是资源分配的基本单位,线程是调度的基本单位。 - 并发性
· 传统,只能进程间并发。
· 引入线程后,进程之间可以并发,进程内的各线程之间也可以并发。 - 系统开销
· 传统,进程间并发,需要切换进程的运行环境,系统开销大。
· 线程间并发,不需要切换进程环境,系统开销小。
线程的属性
· 线程是处理机调度的单位。
· 多CPU计算机中,各个线程可占用不同的CPU。
· 每个线程都有一个线程ID、线程控制块TCB
· 线程也有就绪、阻塞、运行三种基本状态
· 线程几乎不同系统资源,系统资源几乎都在进程那里
· 同一进程中线程切换,不会引起进程切换。但是…,会…
· 切换线程,系统开销小。切换进程,系统开销大。
线程的实现方式
用户级线程:所有的线程管理工作都由应用程序负责。无需操作系统干预。
内核级线程:线程的管理工作由操作系统内核完成。
二者组合:将n个用户级线程映射到m个内核级线程上。
内核级线程才是处理机分配的单位。
多线程模型
多对一模型:
一对一模型:并发能力很强,系统开销大。
多对多模型:n个用户级线程映射到m个内核级线程。