在封闭环境运行,占有全机资源
第二章——进程管理
操作系统内核
计算机硬件第一次扩充
功能
支撑功能
中断
改变处理器执行顺序
为什么
使cpu与其他设备并行工作
提高CPU效率
支持系统异步性
类型
同步中断
也称内部中断或异常
举例:除法出错、溢出
异步中断
也称外部中断
原因
由其他硬件设备随机产生
分类
外部可屏蔽
由I/O设备产生中断
分类
把寄存器的IF标志设为0
编程中断控制器
外部不可屏蔽
紧急事件引起,硬件故障
引起中断原因
人为设置中断
断点
程序性故障
除数为0
硬件故障
I/O设备
外部事件
通过键盘、鼠标中断
中断响应
响应条件
寄存器的IF标志设置1表示中断
响应时机
cpu每执行完一条指令就检测是否有 外部中断信号
单重中断处理
系统关闭中断、保护断点
转中断处理程序
保护现场
如何找到中断服务子程序
①中断向量
对信号编号
不可屏蔽中断向量、异常向量
固定的
可屏蔽中断向量
对中断控制器编程改变
②中断描述符表
一个系统表
存储中断、异常处理入口地址信息
时钟管理
计算机脉搏
计算机很多活动由定时测量驱动
系统内核利用时钟机制防止进程垄断cpu、资源
两个时钟
实时时钟RTC
BIOS获取RTC时钟的时间为系统初试时间
系统开机之后,启动可编程间隔定时器(系统自己时间硬件)
OS时钟(CMOS)
一块芯片、主板上
操作系统时钟机制
定时测量
依靠OS时钟管理硬件(可编程间隔定时器)
晶振、计数器、保持寄存器
依靠时钟驱动程序完成
时钟中断处理程序
维护日期、时间
递减当前进程时间片
对CPU使用情况记账
递减报警计数器
维护定时器
保存当前日期
原语
资源管理功能
进程管理
存储管理
设备管理
系统调用
预先定义好模块
是系统程序与用户程序之间接口
系统调用与用户调用
用户态、系统态
用户态执行
用户空间指用户进程所处地址空间
用户进程不能访问其他进程空间
系统程序能访问其他进程用户空间
系统态
一切系统核心代码地址空间
CPU执行系统核心代码即系统态
区别
系统调用在系统态、用户调用在用户态
执行过程不同
系统调用执行时、当前进程被中断、由系统找相应系统调用子进程,在系统态下执行
系统调用要进行中断处理、开销多
分类
进程控制类系统调用
文件控制类
设备管理类
通信类
信息维护
优点
编程更容易
提高系统安全性
操作系统本质
操作系统本身是软件
本质是数据结构+算法
进程是操作系统管理的实体
进程同步
概念
主要任务
对资源共享的进程,保证互斥方式访问临界资源
对合作关系进程,保证进程协调执行
临界区是访问临界资源的代码
遵循准则
空闲让进
忙则等待
有限等待
让权等待
申请不到资源就释放
信号量机制
进程同步问题
生产者消费者
wait、signal成对出现
先对资源信号量:empty、full进行wait操作
然后对互斥信号量wait操作
管程
原因
信号量机制使大量同步操作分散在各个进程,管理麻烦
定义
描述共享资源的数据结构、管理程序的集合
内容;
变量定义
变量初始化
管理共享资源
进程描述
是操作系统最核心的概念
并发执行
顺序执行
特点
顺序性
封闭性
在封闭环境运行,占有全机资源
可再现性
并发执行
概念
同一时间间隔运行多个程序
微观上,任意时刻cpu只有一个程序执行
特点
间断性
每个程序在CPU上运行都是时断时续的
失去封闭性
不可再现性
概念
进程定义
并发执行可能在同一个数据集上,也可能在不同数据集
允许并发执行的程序在某个数据集合上的运行过程
由正文段、用户数据段、进程控制块共同组成的环境
正文:存放被执行的机器指令
用户数据段;存放执行时直接进行操作的用户数据
控制块:存放程序运行环境
进程特征
并发性
动态性
从创建,到获取cpu指令。终止、撤销的动态过程
独立性
没有引入线程之前是资源调度的基本单位
异步性
进程执行时断时续、什么时候执行,什么时候暂停不确定
结构特征
正文段
用户数据段
进程控制块
进程和程序比较
区别
程序是静态、进程是动态的
程序是永久的、进程是暂存的
存在实体不同
程序是指令的集合
进程包含了正文、数据段、pcb
联系
进程是程序的一次执行
进程对应一个特定的程序
一个程序可以对应多个进程
几个进程可以并发执行相同程序代码
PCB
进程控制块是进程实体存在的标志
包含内容
进程标识符
处理机状态信息
进程切换时,为了是当前的进程不被
通用寄存器
指令计数器
程序状态字PSW
用户栈指针
进程调度信息
进程状态信息
进程优先级
所需要的其他信息
进程控制信息
程序、数据地址
进程同步
通信机制
资源清单
链接指针
进程状态
三种基本状态
就绪态
一旦获得CPU就可以运行
执行态
CPU正在运行、有N个CPU的系统,任意时刻都有N个进程处于执行态
阻塞态
由于等待资源、某个事件暂停执行
转换
进程不能由阻塞态转为执行态
由阻塞到就绪是唤醒
由执行到阻塞是阻塞过程
Linux进程状态
可运行TASK_RUNNING
可中断等待TASK_INTERRUPTIBLE
不可中断等待TASK_UNINTERRUPTIBLE
暂停状态TASK_STOPED
僵死状态TASK-ZOMBIE
进程组织
对进程的组织由定义数据结构实现
链接方式
具有相同状态的PCB链接起来
索引
根据进程状态建立索引表,索引指向PCB物理块
进程队列
把进程组成队列
进程控制
创建
需要创建新进程情况
用户登录
应用请求
用户发出指令
提供服务
操作系统代表用户执行功能
作业调度
执行可能
父子进程并发执行
父进程等待、子执行完毕
新进程地址空间
子进程共享父的地址
子进程有独立地址
系统调用创建
步骤
申请空白pcb
为新进程分配资源
初始化pcb
插入到就绪队列
常用接口函数
fork()
fork()函数功能
为新进程分配pid
为新进程获取进程描述
指定内存地址空间
完成初始化工作
返回进程pid
阻塞
进行阻塞的情况
新数据尚未到达
无新工作可做
请求系统服务
启动某种操作
过程
进程状态改为阻塞态
进程插入阻塞队列
转进调度程序、从就绪进程中选择进程为其分配cpu
唤醒
过程
从阻塞队列移出
进程状态改成就绪态
进程插入就绪队列
终止
终止也叫撤销
终止情况
进程正常执行完毕。调用系统调用,请求删除进程
一个进程调用系统调用终止另一个进程
父终止子进程
子进程使用了超过它所分配资源
分配给子进程的任务不需要
父进程退出,子也退出
即级联终止
终止过程
读PCB的进程状态
如果正在执行,终止执行
如果有子孙进程,终止子孙
释放资源
将终止的进程PCB移出
操作系统启动
加电自检
找启动盘
进程通信
分类
共享存储器
基于共享数据结构
如生产消费问题中的,有界缓冲区
基于共享存储区
消息传递系统
间接通信
暂存消息的共享数据结构
直接通信
利用发送程序
管道
管道文件、 在外存中
消息缓冲队列
包含
数据结构、发送原语、接受原语
每个进程都有
消息缓冲区
进程标识符、消息长度、消息正文、指向下一个缓冲区指针
线程
描述
进程的实体
系统独立调度和分派基本单位
包含
pc(程序计数器)、寄存器、栈
分类
用户级
不依赖内核
创建、撤销、切换与内核无关
内核级
依赖内核
比较
调度与切换速度
内核级线程由内核调度
用户级由用户线程包过程完成
内核级切换慢,用户级切换快
系统调用
内核级线程进行系统调用、只阻塞该线程
用户则阻塞所属进程
执行时间
内核级每个线程独享一个cpu
用户级线程以进程为单位,多个线程共享一个cpu
线程控制块
线程标识符信息
处理机状态信息、线程调度信息、线程控制
线程与进程对比
资源调度
线程是执行的基本单位、晋城市拥有资源的基本单位
地址空间
进程地址不同、统一进程线程共享同一地址空间
通信
进程之间通信使用通信机制
线程访问全局变量
并发性
多进程可以并发,多线程也可以并发
开销
进程开销大、线程开销小
线程控制
创建
用户线程
调用线程库实现
步骤
申请空白控制块
初始化控制块
插入所属进程就绪队列
内核线程
内核创建
终止
原因
正常结束
异常结束
外界干预
过程
线程库调用线程终止原语
内核由内核调用线程调用终止原语
①从tcb读该线程状态
②如果正在执行就终止、调度标志为真
把tcb从所在队列中移出
调度切换
用户线程在程序内进行调度、通常采用非抢占式
阻塞与唤醒
阻塞事件
新数据没到达
请求系统服务
启动某种操作
用户线程
阻塞过程(由小到大)
停止线程执行、状态改成阻塞态
线程tcb插入阻塞队列
所属进程状态改成阻塞
所属进程pcb插入阻塞队列
控制传递交给进程调度事件、重新进程调度
唤醒(由大到小)
先唤醒进程、改状态
把pcb插入就绪队列
线程改状态
tcb移出阻塞,已入就绪队列
内核线程
阻塞过程
停止运行,改状态
tcb插入阻塞队列
控制传递交给调度程序
唤醒
把用户线程的唤醒去掉进程唤醒就可可以了,因为内核线程没有所属进程