操作系统学习笔记----进程/线程模型----Coursera课程笔记 进程/线程模型 0. 概述 0.1 进程模型
多道程序设计
进程的概念、进程控制块
进程状态及转换、进程队列
进程控制----进程创建、撤销、阻塞、唤醒、...
为什么引入线程
线程的组成
线程机制的实现
用户级线程、核心级线程、混合方式
允许多个程序同时进入内存运行,目的是为了提高CPU系统效率
1.2 并发环境与并发程序并发环境:
一段时间间隔内,单处理器上有两个货两个以上的程序同时处于开始运行但尚未结束的状态,并且次序不是事先确定的。
并发程序:
在并发环境中执行的程序
定义:Process
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和CPU调度的独立单位。
进程又称任务
程序的一次执行过程
是正在运行程序的抽象
对CPU的抽象,将一个CPU变幻成多个虚拟的CPU
系统资源以进程为单位分配,如内存、文件、...
每个进程具有独立的地址空间
操作系统将CPU调度给需要的进程
查看当前系统中有多少个进程:
Linux:ps命令
PCB:Process Control Block
又称:进程描述符、进程属性
操作系统用于管理控制进程的一个专门数据结构
记录进程的各种属性,描述进程的动态变化过程
PCB是系统感知进程存在的唯一标志
进程与PCB是一一对应的
进程表:所有进程的PCB集合
进程表的大小一般固定
并发度:最多支持多少个进程
PCB的内容包含什么:
进程描述信息
进程控制信息
所拥有的的资源和使用情况
CPU线程信息
进程描述信息
进程标识符(process ID)唯一,通常是一个整数
进程名,通常给予可执行文件名,不唯一
用户标识符(user ID)
进程组关系
进程控制信息
当前状态
优先级
代码执行入口地址
程序的磁盘地址
运行统计信息(执行时间、页面调度)
进程间同步和通信
进程的队列指针
进程的消息队列指针
所拥有的的资源和使用情况
虚拟地址空间的状况
打开的文件列表
CPU现场信息
寄存器值(通用寄存器、程序计数器PC、程序状态字PSW、栈指针)
指向该进程也标的指针
Linux:task_struct
2. 进程状态及状态转换 2.1 进程状态运行态:进程占用CPU,并在CPU上运行
进程从就绪状态被调度后,进程进入运行状态
就绪态:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行
等待态(或阻塞态):正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。
在进程等待的条件满足时,进入就绪状态等待系统调用
创建态:
已完成创建一个进程所必要的工作,PID、PCB
但尚未同意执行该进程,因为资源有限
终止态:进程执行完成后,进程进入终止态
可完成一些数据统计工作
资源回收
挂起态(Suspend):用于调节负载
进程不占用内存空间,其进程映像交换到磁盘上保存
就绪 --> 运行:调度程序选择一个新的进程运行
运行 --> 就绪:只有两种情况
1. 运行进程用完了时间片
2. 一个高优先级进程进入就绪状态,抢占正在运行的进程
运行 --> 等待:当一个进程等待某个事件发生时
1) 请求OS服务器
2) 对资源的访问尚不能进行
3) 等待I/O结果
4) 等待另一个进程提供信息
等待 --> 就绪:所等待的事件发生了
以下两种状态转换不可能发生
等待 --> 运行:操作系统在进行调度时不会从阻塞(等待)队列进行挑选进程执行,而是从就绪队列中选取。
就绪 --> 等待:就绪态虽然准备就绪,但是还没有执行,无法进入等待态。