操作系统引论
操作系统的定义
操作系统是配置在计算机上的第一层软件,是对硬件系统的首次扩充
操作系统的目标和作用
作用
1、作为用户与计算机硬件系统之间的接口
命令方式
系统调用方式
图标-窗口方式
2、计算机系统资源的管理者
3、实现了对计算机资源的抽象
操作系统的基本特性
并发
并行与并发
并行是指两个或多个事件在同一时刻发生。
并发是值两个或两个事件在同一时间间隔内发生
在多道程序环境下,并发是指在一段时间内宏观上有多个程序在同时运行,但在单机处理机系统中,每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行
共享
虚拟
异步
进程的描述和控制
程序并发执行的特征
间断性
失去封闭性
运行结果不可再现性
进程定义的引入
在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性,以及其运行结果不可再现性的特征。由此决定的通常的程序是不能参与并发执行的,否则,程序的运行也就失去了意义。为了能使程序并发执行,并且可以对并发执行的程序加以描述和控制,引入了进程的概念。
进程的结构
程序段+相关数据段+PCB
PCB是进程存在系统中的唯一标志
进程的标准定义
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程的特征
并发性
多个进程实体同时存在于内存中,且能在同一时间段内同时运行
独立性
进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位
异步性
进程的控制
进程控制一般都是由OS内核中的原语来实现的
原语:若干条指令组成,用于完成一定的功能的过程,它们是原子操作,要麽全部完成,要麽全部不完成
进程同步
进程同步的基本概念
对多个相关进程在执行次序上进行协调,使并发执行的程序之间按照一定的规则共享系统资源,使程序的执行具有可再现性
同步机制遵循的规则
有限等待
保证等待的进程在有限的时间能获得资源的使用权,防止死等状态
让权等待
当进程获得不了资源使用权时,应该立即释放处理机,避免进程陷入忙等状态
硬件同步机制
关中断
Test and Set指令
Swap指令
信号量机制
整型信号量
记录型信号量
AND型信号量
信号量集
管程机制
管程的定义
一个管程定义了一个数据结构和能为并发进程锁执行的一组操作,这组操作能同步进程和改变管程中的数据
线程
线程的引入
如果说引入进程的目的是为了使程序能够并发执行,以提高资源利用率和系统吞吐量,那么,在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性
线程的基本概念
比进程更小的基本单位,用以提高程序并发执行的程度,以进一步改善系统的服务质量
tip:一个误区:传统OS中,进程是作为独立调度和分派的基本单位,因而进程是能独立运行的基本单位。但是在引入线程的OS中,已把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位
线程之间的同步机制
互斥锁mutex
信号量
条件变量
线程之间的通信方式(参考juc)
共享内存
消息传递
由于多线程共享地址空间和数据空间,所以多个线程间的通信是一个线程的数据可以直接提供给其他线程使用,而不必通过操作系统(也就是内核的调度),线程间通信的目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制
死锁
死锁的起因,通常是源于多个进程对资源的争夺,不仅对不可抢占资源进行争夺时会引起死锁,而且对可消耗资源进行争夺时,也会引起死锁
死锁的定义
如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的
死锁产生的条件
请求和保持
获得资源的进程可以发起新的资源请求,若新的资源被占用,进程被阻塞,但是原本占有的资源不会释放
不可抢占
进程已经获得的资源在未使用完成之前不能被其他进程抢占,只能自己释放
循环等待
发生死锁时,必然有个进程——资源的循环链