第一章:
OS作为用户与计算机系统之间的的接口,通信方式:命令方式、系统调用、图标-窗口
软硬件资源:处理机、存储器、IO设备、文件
硬件->物理接口->IO软件->文件操作->窗口
OS的基本特性:并发、引入进程、共享、虚拟、异步
OS的主要功能:
处理机:进程控制、进程同步(互斥与同步)、进程通信、调度
存储器:内存分配和回收、内存保护、地址映射、内存扩充
设备:缓冲管理、设备分配、设备处理
文件:文件存储空间管理、目录管理、文件的读写管理和保护
操作系统与用户之间的接口:用户接口、程序接口
现代操作系统:系统安全、网络功能和服务、支持多媒体
客户/服务器模式:
组成:客户机、服务器、网络系统
优点:数据分部处理和存储、便于集中管理、灵活性和可扩充性、易于改编应用软件
微内核:
内核小
基于客户/服务器模式
机制与策略分离
采用面向对象
基本功能:进程管理、低级存储器管理、中断和陷入处理
第二章:
程序并发执行(只有在不存在前趋关系的程序之间才可能执行)
间断性
失去封闭性:共享资源
不可再现性:并发执行的速度不一定一致,异步性
进程:
进程实体:程序段、相关的数据段和PCB(进程控制块)
创建/撤销进程:创建/撤销PCB
定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
基本状态:就绪状态(具备除CPU外所有必要资源)、执行状态、阻塞状态(IO请求、申请缓冲区失败等)
创建状态:创建进程实体未完成,进程不能被调度执行
终止状态:进程结束或被终止或出错等进入的状态
挂起操作:挂起->进程静止
原因:终端用户需要;父进程需求;负荷调节需要;操作系统的需要
转换:活动就绪->静止就绪
活动阻塞->静止阻塞
进程管理中的数据结构:内存表、设备表、文件表、进程管理的进程表(PCB)
PCB作用:记录了操作系统所需的,用于描述进程的当前情况以及管理进程运行的全部信息(非独立 程序 独立运行 并发执行)
作为独立运行基本单位的标志
能实现间断性的运行方式(保存cpu现场信息)
提供进程管理所需要的信息(程序和数据信息)
提供进程调度所需要的信息(进程状态、优先级调度等信息)
实现与其他进程的同步与通信(信号量)
PCB信息:进程标识符:
外部/内部标志符
处理机状态:通用寄存器、指令寄存器、程序状态字、用户栈指针
进程调度信息:进程状态、进程优先级、进程调度所需其他信息、执行->阻塞的事件
进程控制信息
组织方式:线性方式;链接方式;索引方式
进程控制:
操作系统内核:紧靠硬件的软件层次,常驻内存
对软件进行保护;提高OS运行效率
功能:
支撑功能:提供基本功能以支撑模块工作:中断处理、时钟管理、原语操作
原子操作:不可分割的基本单位。在执行过程不可被中断,在系统态下执行
资源管理:进程管理(通常放在内核)、存储器管理(同上)、设备管理(大部分同上)
进程的创建:
层次结构:子进程可以继承父进程所有资源
子进程撤销时应将父进程给的资源归还
父进程撤销时,需撤销所有子进程
引起创建的事件:用户登录;作业调度;提供服务;应用请求
进程创建:申请空白PCB(获得唯一的数字标识符);为新进程分配运行所需的资源;初始化进程控制块(标识信息、处理机状态信息(程序计数器指向程序入口地址,栈指针指向栈顶)、处理机控制信息(就绪状态或静止就绪状态,最低优先级));进程插入就绪队列
进程的终止:
事件:正常结束<-进程完成
异常结束<-异常事件(越界、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、IO故障等)
外界干预<-外界请求
进程的阻塞与唤醒:
事件:向系统请求共享资源失败
等待某种进程的完成
新数据尚未到达
等待新任务的到达
进程的挂起与激活
进程同步:
基本概念:
两种制约关系(同一系统多个进程间):间接相互制约、直接相互制约
临界资源
临界区:访问临界资源的代码
检查临界资源是否被使用的代码:进入区
恢复临界资源被使用标志:退出区
剩余区
遵循规则:空闲让进;忙则等待;有限等待;让权等待
硬件同步机制:
关中断
利用test and set指令实现互斥
利用swap指令
信号量机制:
整型信号量S:
两个原子操作:P,V操作(不可中断)
记录型信号量:在整型信号量基础上增加一个进程链表指针
AND型信号量:进程所需所有资源一次性分配,待进程使用完后一次性释放
信号量集:在AND基础上,每次进程申请或释放的资源量应大于等于分配下限值
信号量的应用:
实现进程互斥:
互斥信号量mutex :初始值为1、取值范围-1,0,1
1:未有进程进入需要互斥的临界区;
0:有一个进程进入需要互斥的临界区,另一个必须挂入阻塞队列;
-1:有一个进程正在临界区运行,另一个阻塞在信号量队列中
实现前趋关系:两个进程共享公用信号量用来决定语句执行先后顺序
管程机制:
定义:共享数据结构抽象->共享资源,对共享数据结构抽象的特定操作称为一组过程
共享数据结构以及对应于这个结构的一组过程所组成的资源管理程序共同构成一个操作系统的资源管理模块->管程
面向对象,封装,内部数据结构和过程互相唯一地对应,具体实现对外不可见
共享资源<---管程<---进程(同时只能有一个进程进入管程,有效实现互斥)
条件变量:
每个条件变量保存了一个链表,用于记录因该条件变量而阻塞的所有进程
进程通信:
类型:
共享存储器系统:共享数据结构(低级)、共享存储区
管道通信:互斥、同步、存在
消息传递系统:消息(报文)->通信命令->信息传递
直接通信:OS的发送原语->目标进程
间接通信:共享中间实体
客户机/服务器系统:
套接字(一个通信标识类型的数据结构):基于文件型->套接字关联特殊文件(类似于管道)
基于网络型:发送进程->申请套接字、分配端口;
接收进程:拥有公认的套结种子和端口,监听端口等待客户请求
接收进程收到请求->接收连接->通信->关闭接收进程的套接字
远程过程调用和远程方法调用:RPC,客户存根(通过此来进程远程调用)
负责处理的进程:本地客户进程、远程服务器进程
步骤:调用者、本地客户存根、消息建立、消息传递、服务器存根、处理消息参数、消息返回、本地客户进程、客户存根、本地调用者进程
消息传递通信的实现方式:
直接消息传递:
直接通信原语:
对称寻址方式:发送/接收均提供对方标识符(不足之处)
非对称寻址方式:发送:需接收名称//接收:接收任何进程消息,需要发送方进程id或名字
消息格式:定长(单机)、变长(适合用户需求,开销大)
进程同步方式:1.发送/接收阻塞:无缓冲时;2.发送不阻塞,接收阻塞,接送等待发送唤醒;3.发送/阻塞均不阻塞,独立处理自己的事情
通信链路:发送/接收通信需要的链路
显示建立,用于计算机网络
系统自动建立,单机系统
单向/双向通信链路
实例:Send、Receive
消息缓冲队列:
数据结构:
消息缓冲区(链式结构体)
PCB有关通信的数据项:队列队首指针、互斥mutex、资源信号量
发送原语:发送区->申请缓冲区->获取接收进程内部标识符->插入标识符(消息缓冲区插入消息队列)
接收原语:缓冲区复制->接收区->释放缓冲区
信箱通信:信箱(中间实体->暂存消息(非实时通信))
信箱结构:信箱头(存放信箱的描述信息)、信箱体(信箱格)
信箱通信原语:1.用于创建和撤销;2.消息的发送和接收(共享邮箱)
信箱类型:私用(单向接收信息,读取私有权);公用(采用双向通信链路);共享邮箱(需指明共享者)
线程:
引入:进程:提高资源利用率和系统吞吐量
1.拥有资源的独立单位;2.独立调度和分派(PCB)
线程:提高资源利用率和系统吞吐量,提高并发性,减少时空开销(进程切换时需要较大时空开销)
作为调度和分派的独立单位
比较:
调度基本单位(同一进程的线程切换时不切换进程,不同进程的线程则会;线程切换只需保存和设置少量寄存器内容)
并发性
拥有资源(仅有能保证独立运行的资源),可访问创建该线程的进程的资源(同一进程的线程拥有相同的地址空间->共享性)
独立性:比进程差,共享进程的内存地址空间和资源
系统开销
支持多处理机系统
线程状态和线程控制块:
三个状态:就绪、执行、阻塞
线程控制块TCB:控制和管理线程的信息记录
线程标识符、一组寄存器(程序计数器、状态寄存器、通用寄存器)、运行状态、专有存储区、信号屏蔽、优先级、堆栈指针(用户态和核心态)
多线程OS中的进程属性:可拥有资源的基本单位、多个线程并发执行、非可执行的实体
实现:
方式:
内核支持线程KST(内核通过TCB感知和控制线程)(以线程为调度单位,多少内核线程则拥有多少cpu时间)
四个优点:同时调度;一个阻塞其他运行;支持很小的数据结构,开销小;内核采用多线程->提高速度和效率
缺点;用户线程切换开销大,用户态->内核态->用户态
用户级线程ULT(以进程为调度单位,轮流法->进程获得时间片一样)
优点:不需内核干预,减少开销;调度算法与OS无关;线程的实现与OS无关
缺点:系统调用导致进程阻塞->所有线程阻塞
内核只分配一个cpu给进程,线程不能同时执行
组合方式:KST/ULT线程
用户级线程十分多路复用内核支持线程
连接方式:多对一、一对一、多对多(兼容前两者)
线程实现:
内核支持线程:与进程类似(任务数据区PTDA->TCB)
用户级线程的实现:
运行时系统:管理和控制线程的函数集合(驻留在用户空间)(线程需要资源时需通过运行时系统进行相应系统调用获得)
内核控制线程:
ps:内核级线程阻塞则LWP(内核控制进程)也阻塞
创建和终止:
终止的线程尚未分离资源,仍可被其他线程调用从而恢复线程(等待线程终止->调用线程)