操作系统
什么是操作系统?
操作系统是管理系统资源,控制程序运行,改善人机界面,提供各种服务,并合理组机计算机工作流程和为用户使用计算机提供良好接口的系统软件
操作系统主要任务之一就是对资源进行管理,有序的控制软硬件资源的分配、使用和回收,使资源能够共享,资源共享的三种管理技术:资源虚拟、资源抽象、资源
OS种基本类型、性质、五个功能?
处理器管理,存储管理,设备管理,文件管理,用户接口
什么是多道程序设计?
多道程序设计:任何时刻都允许多道程序在系统中同时执行。 特性: 从宏观上看并行; 从微观上看串行,各程序轮流占用CPU,交替执行。 目的:提高CPU的利用率,充分发挥计算机硬件的并行性。
什么是并发,为什么要并发?
并发是指在一段时间内,宏观上 系统中有多个程序在“同时”运行。
CPU与系统IO速度不匹配问题
提高了CPU利用率; 提高了主存和I/O设备利用率; 改进了系统吞吐率; 充分发挥了系统并行性。
进程
进程定义:
具有独立功能的程序在某个数据集合上的一次运行活动,也是系统进行资源分配和保护的基本单位。
进程与程序的区别
(1)程序是静态的,进程是动态的。程序是有序代码的集合;进程是程序的一次执行。 (2)进程是暂时的,程序是永久的。 (3)进程还是操作系统资源分配和保护的基本单位,程序没有此功能。 (4)进程与程序的不是一一对应关系。一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。 (5)进程与程序的结构不同。
进程的组成
进程控制块Process Control Block 灵魂,进程存在的唯一标志。 程序:描述了进程要完成的功能,是进程执行时不可修改的部分。 数据:进程执行时用到的数据(用 户输入的数据、常量、变量) 工作区:参数传递、系统调用时使 用的动态区域(堆栈区)
进程执行状态
1.如果系统中有N个进程,运行态的进程最多几个,最少几个;就绪态进程最多几个,最少几个;等待态进程最多几个,最少几个?
单核:1,0,n-1, 0, n,0
当运行的进程都发起I/O请求且都没有完成时,运行进程为0,就绪进程为0,阻塞进程为n。
-
有没有这样的状态转换,为什么?
等待—运行; 就绪—等待
没有这样的转换,因为进程转化为阻塞态是进程主动进行的。进程转为就绪态为进程被动进行的,所以可以推断没有等待态(阻塞态)-运行态和就绪态-等待态(阻塞态)。
-
一个状态转换的发生,是否一定导致另一个转换发生,列出所有的可能
新建-就绪 ===》 运行-就绪
就绪-运行 ===》 无
运行-就绪 ===》就绪-运行
运行-等待 ===》就绪-运行
等待-就绪 ===》就绪-等待
运行-结束 ===》就绪-运行
线程
线程
线程是操作系统进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位。 线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流),这就是多线程。
线程的特点
线程作为CPU基本调度单位;与进程中的所有线程共享进程的资源。 线程的切换快且开销小; 共享进程资源; 进程中的线程之间互相通信不必调用内核; 可伸缩性。进程中的多个线程可并发执行,在多CPU系统中还可并行执行;
线程与进程的关系
线程是进程的一个组成部分,线程由进程创建,一个进程中至少存在一个线程,线程还可以创建其它线程。 进程依然是资源分配和保护的基本单位,线程只能使用其所在进程的资源。 线程是进程中能够独立执行的实体(控制流),是处理器调度和分派的基本单位
系统调度的基本单位是线程而不是进程
小结
引入线程,是为了减少程序并发执行时所付出的时空开销,使得并发性更好。 线程也叫轻型进程,是进程一个可执行的实体单元。 线程的特点:线程作为CPU基本调度单位,其状态有:就绪、运行、阻塞等;进程中都所有线程共享进程的存储空间和分配资源。 线程的实现:内核级线程,用户级线程 Linux进程控制fork()、exit()
死锁
产生死锁的条件(同时满足)
互斥:临界资源为互斥使用 不可剥夺(非抢占):一旦占有就直到使用完毕,由进程释放 占有和等待:进程在请求资源得不到满足而等待时,不释放已占有资源 环路(循环等待):各进程对资源的占有和请求形成环路
处理死锁
(1)预防死锁:通过某些限制条件的设置,去破坏产生死锁的四个必要条件; (2)避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态; (3)检测死锁:及时检测死锁的发生,并确定与之相关的进程、资源,从而采取措施清除死锁; (4)解除死锁:撤消或挂起某些进程以回收一些资源,用于解脱另一些处于死锁的进程。
破坏死锁条件
占有并等待条件
要是占有并等待资源的条件不成立,经常使用两种资源分配策略:静态分配资源(也称预分配资源)和释放已占用资源
可抢夺条件
抢占式资源分配策略:入股一个进程已经占有了某些资源又要申请新资源,而新资源不能满足必须等待时,系统可以抢夺进程已有的资源
循环等待条件
按需分配资源:要使循环等待条件不成立可采用按序分配的资源分配策略。
存储
分页式存储
优点
没有外碎片,每个内碎片不超过页大小。 程序不必连续存放。
主要缺点:
程序要一次全部装入内存才能执行。 采用动态地址变换机构会增加计算机的成本和降低处理机的速度。 各种数据结构(页表,空闲页表)要占用一定的内存空间,而且系统要花费一定的时间来建立和管理这些表格。 依然存在内碎片。
分段式存储
分区管理、分页管理均按一维线性空间分配,很难利于程序和数据的共享
段的共享:只需将该进程的段表中某个表项的首地址项,设置为共享段首址即可
段的保护(两种方式)
地址越界保护
采用段表中的存取保护位(存取方式)实现段的保护
特点
没有内碎片,外碎片可以通过内存紧缩来消除。
便于实现共享,即允许若干个进程共享一个或者多个段
分页式分段式比较
段页式存储
段页式:逻辑上(进程)分段,物理上(内存)分页
逻辑上分段,保持了模块逻辑上的完整性、易于共享和保护,以及段的动态增长
物理上分页有效地减少碎片,提高内存利用率
分页虚存系统硬件支撑
内存管理单元MMU完成逻辑地址到物理地址的转换功能,它接受逻辑地址作为输入,物理地址作为输出,直接送到总线上,对内存单元进行寻址
什么是缺页中断?
缺页中断就是要访问的页不在主存,产生缺页中断,需要操作系统将其调入主存后再进行访问
页面置换算法
先进先出淘汰算法(FIFO):淘汰最先调入内存的页面
最久未使用淘汰算法(LRU):淘汰最久未被访问的页面
LRU近似算法(页面置换)
页面置换算法
SPOOLing技术
在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机操作。
SPOOLing技术,实际上就是一种磁盘缓冲技术
FCB
文件控制块 (FCB)是OS为每个文件建立的唯一数据结构,其中包含了全部文件属性,其目的是既便于用户的操作和使用,又便于操作系统对文件的管理和控制。 一个文件由两部分组成 :FCB 和文件体(文件信息)。有了 FCB 就可以实现文件的“按名存取”
流式文件和记录文件
文件逻辑结构分:流式文件,记录式文件。 流式文件指文件内的数据不再组成记录,只是依次的一串信息集合,可以看成是只有一个记录的记录式文件。 文件常按长度来读取所需信息,也可用插入特殊字符作为分界。 记录式文件包含若干逻辑记录,逻辑记录是文件中按信息在逻辑上的独立含意划分的信息单位。
IO设备类型
块设备
是指信息存取是以数据块为单位的一类设备。主要用于存储信息,如磁盘
特征:传输速率较高、可寻址存取、I/O系统采用DMA方式
字符设备
指信息存取是以字符为单位的一类设备。主要用于数据的输入和输出,如打印机等。
特征:传输速率较低 ;不可寻址存取;I/O控制采用中断驱动方式
资源分配角度分类
独占设备:指在一段时间内只允许一个用户(进程)访问的设备,大多数低速的I/O设备,如打印机等属于这类设备。因为独占设备属于临界资源,所以多个并发进程必须互斥地进行访问。
共享设备:指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘。
虚拟设备:指通过虚拟技术将一台独占设备变换为若干台供多个用户(进程)共享的逻辑设备。一般可以利用假脱机技术(SPOOLing技术)实现虚拟设备。
IO控制方式
程序I/O方式
用户进程通过CPU向外设发送一条I/O指令后,循环测试外设以等待外设对此指令的处理完毕。直到完毕,再同样处理下一条I/O指令……直到传输结束
缺点:(CPU与外设、外设之间)串行工作、无法“感知并处理”其他重要的事情(如设备的错误)
中断处理方式
中断方式完全实现了CPU与外设之间的并行
主要是针对字符设备,不适合块设备
直接存储访问I/O(DMA, Direct Memory Access)
利用内存与外设之间的专用通道,由DMA控制器代替CPU,实现数据的传输(需占用计算机总线)
(1)以数据块为基本单位进行I/O;
(2)数据直接从设备送入内存,或直接从内存送入设备;
(3)仅在传送开始或结束时才需CPU干预,并行程度高
I/O通道控制方式
I/O通道方式是DMA方式的发展,它可进一步减少CPU的干预。
一个通道可连接多个控制器,一个控制器可连接多个设备。
设备独立性
什么是设备独立性
所谓设备独立性是指,用户在编制程序时所使用的设备与实际使用的设备无关,也就是在用户程序中仅使用逻辑设备名
逻辑设备名
逻辑设备名,是用户自己指定的设备名(或设备号),它是暂时的、可更改的。
物理设备名
物理设备名,是系统提供的设备的标准名称,它是永久的、不可更改的。
1.设备独立性的概念
设备独立性的基本含义是: 应用程序独立于具体使用的物理设备。
为了实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名称来请求使用某类设备;而系统在实际执行时,还必须使用物理设备名称。因此,系统须具有将逻辑设备名称转换为某物理设备名称的功能。
2、设备独立性软件
(1)执行所有设备的公有操作
① 对独立设备的分配与回收;
② 将逻辑设备名映射为物理设备名;
③ 对设备进行保护,禁止用户直接
访问设备;
④ 缓冲管理;
⑤ 差错控制;
⑥ 提供独立于设备的逻辑块。
(2)向用户层软件提供统一接口
无论何种设备, 它们向用户所提
供的接口应该是相同的。 例如,
对各种设备的读操作,在应用程
序中都使用read; 而对各种设备
的写操作,也都使用write。
3.逻辑设备名到物理设备名映射的实现
为实现设备的独立性,系统必须设置一
张逻辑设备表,用于将应用程序中所使用的
逻辑设备名 映射 为物理设备名。
当进程使用逻辑设备名请求分配I/O设
备时,系统在逻辑设备表中建立一个表目,
填入应用程序中使用的逻辑设备名、系统分
配的物理设备名、以及设备驱动程序的入口
地址。
(2)逻辑设备表的设置方式第二种方式是为每个用户设置一张逻辑设备表。将逻辑设备表放入用户进程的PCB中,这样,不同用户可以使用相同的逻辑设备访问物理设备。
第一种是在整个系统中只设置一张逻辑设备
表,这要求所有用户不能使用相同的逻辑设
备名。
(1)设备分配时的灵活性。当进程使用物理设备名请求设备时,如果设备忙碌,进程会阻塞。当进程使用逻辑设备名请求某类设备时,系统可将任一台空闲的设备分配给进程,仅当所有设备全忙碌时,进程才会阻塞。
(2)易于实现I/O重定向。I/O重定向,指用于I/O操作的设备可以更换,而不必改变应用程序。例如:当调试程序时,可将程序的所有输出送往屏幕显示;如果将输出结果打印时,不必修改应用程序,只须将I/O重定向的逻辑设备表中的显示端,改为打印机。
用户空间的IO软件
I/O系统调用 。
Spooling系统:构成虚拟设备。
缓冲技术
是两种不同速度的设备之间传输信息时平滑传输过程的常用手段。
- 用来解决CPU与外设之间以及设备与设备之间速度不匹配问题
- 解决系统中I/O负荷不均衡问题
- 有效减少I/O次数,从而提高I/O速度
- 可以减少对 CPU的中断频率,放宽对中断响应时间的限制
- 提高 CPU和 I/O设备之间的并行性
可变分区分配算法
首次适应算法
空闲区:按首地址递增排列
最佳适应算法
空闲区:按长度递增排列
最坏适应算法
空闲区:按长度递减顺序