操作系统原理之进程管理(第二章)
一、进程的描述
程序的顺序执⾏: 先进⼊内存的程序先执⾏,在⼀个程序执⾏完毕之前,不能执⾏其他程序。
特点:顺序性、 封闭性 、可再现性
程序的并发执⾏:程序并发执⾏是指在同⼀时间间隔内运⾏多个程序。⼀个程序执⾏结束 前,可以运⾏其他程序
- 宏观并行:用户看到多个程序同时向前推进
- 微观串行:任意时刻一个cpu上只有一个程序在执行
特点:
- 间断性:程序在cpu上执⾏时,是时断时续的
- 失去封闭性: 系统的状态不再只对正在执⾏的程序可⻅
- 不可再现性: 同⼀个程序在输⼊相同的情况下多次运⾏,可能出现不同的结果
使用12306买票时,每个用户提交订单,余票都会减少,这体现了 程序并发执行的(失去封闭性)特点
********************************进程**********************************
程序:具有独立功能的 一组指令的集合;静态的、永久的
进程:允许并发执行的程序在某个 数据集合上的运行过程;进程是由正文段、用户数据段及进程控制块共同组成的执行环境;动态的、暂时的
- 正文段:存放被执⾏的机器指令
- 用户数据段:存放⽤户数据
- 进程控制块: 存放进程的运⾏环境
进程的特征:
- 并发性: 多个进程实体能在一段时间间隔内同时运行 ,并发性是进程和现代操作系统的重要特征
- 动态性:进程是实体的执行过程(执⾏程序—>创建进程 ;获得cpu—>执⾏指令; 运⾏中⽌—>被撤销)
- 独立性:独⽴运⾏和资源调度的基本单位
- 异步性: 进程的执⾏时断时续,何时执⾏、何时暂停都⽆法预知
- 结构特征 :进程实体包括⽤户正⽂段、⽤户数据段和进程控制块(pcb)
进程与程序的联系:
- 进程是程序的的一次执行
- 一个程序可以对应多个进程
- 同一个程序可以在不同的数据集合上运行,构成不同的进程
进程控制块:进程控制块是进程实体的⼀部分,是操作系统中最重要的数据结构;进程控制块中记录了操作系统所需要的、⽤于描述进程及控制进程运⾏所需的全部信息
- 进程标识符信息: ⽤于唯⼀标识⼀个进程
- 处理机状态信息:通用寄存器 、指令计数器、 程序状态字psw、 用户栈指针
- 进程调度信息:包括进程状态信息、进程优先级 和进程调度所需的其他信息
- 进程控制信息:包括程序和数据的地址、进程同步和 通信机制、资源清单,以及链接指针
进程的状态:
进程的组织方式:链接⽅式、 索引⽅式 、进程队列
- 链接⽅式:把系统中具有相同状态的进程控制块pcb⽤其中的链接字连成⼀个队列
- 索引⽅式:系统根据所有进程的状态,建⽴索引表,索引表的每⼀个表项指向⼀个pcb物理块
- 进程队列:把具有相同状态的进程控制块⽤队列组织起来
二、 进程的控制
创建:⽤户登录、 作业调度 、提供服务、 应⽤请求 时需要创建进程
操作系统启动并正常工作后,系统中的已有进程在执行时可以通过系统调用创建新进程
创建新进程的步骤
- 1.申请空⽩pcb
- 2.为新进程分配资源
- 3.初始化进程控制块
- 4.将新进程插⼊到就绪队列
阻塞:请求系统服务 、启动某种操作 、新数据尚未到达、 ⽆新⼯作可做 进入阻塞状态
- 1.将进程的状态改为阻塞态
- 2.将进程插⼊相应的阻塞队列
- 3.转到进程调度程序,从就绪队列中选择进程为其分配cpu
唤醒
- 1.将进程从阻塞队列中移出
- 2.将进程状态由阻塞态改为就绪态
- 3.将进程插⼊就绪队列
终止
- 1.从进程pcb中读进程状态
- 2.若进程正在执⾏,则终⽌进程的执⾏
- 3.释放资源
- 4.将终⽌进程的pcb移出
进程控制的原语操作有:创建原语、阻塞原语、唤醒原语、撤销原语
三、操作系统内核
操作系统管理计算机系统资源,提供⽅便的接⼝,扩充硬件的功能等
操作系统内核是计算机硬件的第⼀次扩充 与硬件关系密切
内核的功能:
- ⽀撑功能:中断处理、时钟管理、原语操作
- 资源管理功能 : 进程管理、存储管理、设备管理
什么是中断
中断是改变处理器执⾏指令顺序的⼀种事件;出现中断时,计算机停⽌现在程序的运⾏,转向对这些中断事件的处理,处 理结束后再返回到现⾏程序的间断处
为什么需要中断
引⼊中断机制后,cpu可以与其他设备并⾏⼯作,能有效提⾼cpu的利⽤率
***********************************时钟******************************************
时钟的重要性:时钟是计算机系统的脉搏,计算机的很多活动都是由定时测量来驱动的
时钟的应用:
- 屏幕保护
- 时间显示
- ⽂件时间标记
- cpu分配给进程的时间
计算机系统中的时钟: 实时时钟rtc(cmos时钟)、 os时钟
os时钟产生于pc主板上的定时/计数芯片,在开机时有效,由操作系统控制。
计算机开机加电后,操作系统通过bios获取当前( rtc时钟)的值作为系统时间
操作系统的 时钟机制: 依靠时钟硬件和 时钟驱动程序来保存当前的⽇期和时间 、维持定时器
时钟驱动程序的功能:
- 1)维护⽇期和时间
- 2)递减当前进程在⼀个时间⽚内的剩余执⾏时间,防⽌运⾏超时
- 3)对cpu的使⽤情况记账
- 4)递减报警计数器
*************************系统调⽤************************
系统调⽤:系统调⽤是⼀群预先定义好的模块; 提供⼀条管道让应⽤程序能由此到核⼼程序的服务; 系统调⽤是系统程序与⽤户程序之间的接⼝
⽤户空间:⽤户进程所处的地址空间
⽤户态执⾏:cpu执⾏⽤户空间的代码时,称该进程处于⽤户态执⾏
系统空间:含有⼀切系统核⼼代码的地址空间
系统态执⾏:cpu执⾏系统核⼼代码时,称该进程处于系统态执⾏
系统调用与一般函数调用的区别如下:
- 1) 系统调用运行在系统态,而一般函数运行在用户态。
- 2) 系统调用与一般函数调用的执行过程不同。系统调用执行时,当前进程被中 断,由系统找相应的系统调用子程序,并在系统态下执行,执行结果返回进程。
- 3) 系统调用要进行“中断处理”,比一般函数调用多了一些系统开销。
四、进程同步
同步机制:保证在多任务共享系统资源的情况下,程序执⾏能得到正确的结果
多道程序环境下 进程之间的关系
- 资源共享关系:保证各进程以互斥的⽅式访问 临界资源
- 相互合作关系:保证相互合作的各进程协调执⾏
临界资源:必须以互斥⽅式访问的共享资源称为临界资源
临界区:进程中访问临界资源的那段代码称为临界区
同步机制:保证在多任务共享系统资源的情况下,程序执⾏能得到正确的结果
同步机制应遵循的准则:
- 空闲让进 :没有进程处于临界区,应允许⼀个请求进⼊临界区的进程进⼊
- 忙则等待:临界区已有进程,其他试图进⼊临界区的进程必须等待
- 有限等待:对于要访问临界资源的进程,应保证有限时间内进⼊临界区
- 让权等待:申请不到访问权,应释放处理机,以免浪费cpu资源
同步机制的方法:信号量机制、
******************************信号量机制****************************
信号量机制:⽤信号量的取值来表示资源的使⽤状况,以此为基础实现进程同步;信号量(某种类型的变量,如整型、记录型)
信号量机制分类:
- 整型信号量机制
- 记录型信号量机制
- and型信号量机制
整型信号量机制:整型信号量是表示共享资源状态且只能由特殊的原⼦操作改变的整型量;
原理:定义⼀个整型变量,⽤该变量的值来标记资源的使⽤情况,初始值为1
整型信号量 >=0 有资源可⽤ ;整型信号量 <=0 资源忙,需等待
整型信号量机制中,用于申请资源的是 wait 原子操作
整型信号量机制中,用于释放资源的是 signal 原子操作
记录型信号量机制:原理:定义⼀个记录型变量,⽤该变量的值来标记资源的使⽤情况
s.value>=0时,s.value的值表示资源数量; s.value<0时,s.value的绝对值表示等待队列中 阻塞进程的数量
**************************and型信号量机制***************
基本思想:将进程在整个运行过程中所需要的资源一次性地全部分配给进程
***********************管程*******************************
管程是描述共享资源的数据结构和在数据结构上的共享资源管理程序的集合。 包括变量的定义、变量的初始化代码,以及管理共享资源的过程
管程的说明: 管程是可供程序员调⽤的软件包; 每次只有⼀个进程调⽤管程执⾏,任意时刻管程中只有⼀个活跃进程; 管程是⼀种编程语⾔的构件
五、进程通信
进程通信机制:
- 共享存储器系统(⾼级通信机制 ):相互通信的进程共享某些数据结构或共享存储区
- 消息传递系统(⾼级通信机制 ):进程间通过操作系统提供的⼀组通信程序传递消息
- 管道通信(⾼级通信机制 ):进程间通过管道(链接读写进程的特殊⽂件)进⾏信息通信
- 消息缓冲队列:利⽤消息缓冲区、发送原语和接收原语实现信息通信
六、 线程
线程的概念:线程是进程中可以 独立执行的子任务;线程是进程中的一个实体,是被系统独立调度和分派的基本单位
线程只拥有在运行中必需的资源,包括程序计数器、一组寄存器和 栈,但它可与同一进程的其他线程共享进程所拥有的全部资源。
在支持线程的操作系统中,线程 是被系统独立调度和分派的基本 单位,而进程 则是资源分配的基本单位。
线程分类:
- 内核级线程:依赖于内核
- 用户级线程 不依赖内核
线程控制块:
- 每一个线程都由一个数据结构表示,包括它的基本状态等,这个数 据结构就是线程控制块tcb。
- tcb记录了操作系统需要的、用于描述线程情况及控制线程运行所 需的全部信息
线程与进程的关系
- 1、资源和调度。线程是程序执行的基本单位,进程是拥有资源的基本单位。
- 2. 地址空间资源。不同进程的地址空间是相互独立的,而同一进程中的各 线程共享同一地址空间。
- 3. 通信关系。进程之间的通信必须使用操作系统提供的进程间通信机制, 而同一进程中的各线程间可以通过直接通信。
- 4. 并发性。多进程之间可以并发执行,多线程之间也可以并发执行。
- 5. 系统开销。线程切换的开销比进程切换的开销小
管程的说明 管程是可供程序员调⽤的软件包 每次只有⼀个进程调⽤管程执⾏,任意时刻管程中只有⼀个活跃进程 管程是⼀种编程语⾔的构件