转载:https://blog.csdn.net/qq_35564813/article/details/80651259
操作系统作用
存储管理
管理目标:提高利用率、方便用户使用、提供足够的存储空间、方便进程并发运行
1)存储分配与回收
为进程分配存储空间
2)存储保护
防止进程间相互干扰、相互保密:如:访问合法性检查
3)地址映射(交换)
进程逻辑地址到内存物理地址的映射
4)存储扩充(覆盖、交换和虚拟存储)
在不增加物理内存的情况下向用户提供海量存储空间、提高内存利用率、扩大进程的内存空间
处理机管理
在多道程序环境下,处理机的分配和运行都是以进程为基本单位,因而对处理机的管理归结为对进程的管理
1)进度调度
为进程分配处理机,以充分利用处理机资源和提高系统性能:核心为调度算法
2)进程控制
创建、撤销、挂起、封锁进程—主动改变进程的状态,通过撤销/系统调用实现
3)进程同步
协调进程间的关系 互斥/同步
同步机制 如锁、信号量
4)进程通讯
进程间的信息交换
设备管理
任务:分配与回收设备 驱动设备 响应I/O请求
目的:提高I/O设备利用率 方便使用I/O设备
1)缓冲管理
解决CPU与I/O 速度不匹配 ,提高两者的利用率,缓冲机制:单缓冲、双缓冲、缓冲池
2)设备分配与回收
根据用户的I/O请求和相应的分配策略,为该用户分配外设以及通道、控制器等,在多用户间共享I/O设备资源
3)设备处理
控制设备工作、设备中断请求 设备驱动程序,实现CPU与通道和外设之间的通信
4)设备独立性
设备独立性:指用户程序与屋里设备无关,即提供同一的I/O设备接口,使应用程序独立于物理设备,提供适应性
文件管理
解决软件资源的存储、共享、保密和保护
1)文件存储空间管理
分配、回收文件空间,解决如何存放信息,以提高空间利用率和读写性能
2)目录管理
解决信息检索问题。实现文件按名存取,共享与保护
3)文件读写和存取控制
实现对文件的具体访问,防止文件被破坏
4)文件操作的一般管理
实现对文件的创建、删除、打开、关闭等操作
用户接口
目标:提供一个友好的用户访问操作系统的接口。操作系统向上提供三种接口
1)命令接口
键盘命令:供用户用于组织和控制自己的作用运行
2)程序接口
系统调用:供用户程序和系统程序调用操作系统功能
3)图形接口
窗口菜单:用户利用鼠标、图标等图形用户界面工具,可以直观、方便、有效地使用系统服务和各种应用程序和使用工具
操作系统定义
是管理和控制计算机系统中各种硬件和软件资源,合理地组织计算机工作流程的系统软件,是用户与计算机之间的接口
操作系统的特征
1、并发
并发是指两个或多个事件在同一时间间隔内发生
微观上是程序在分时地交替执行
2、共享
共享是指系统中的资源可供内存中多个并发执行的进程共同使用
(1)互斥共享方式
如打印机、磁带机。在一段时间内只允许一个进程访问该资源
(2)同时访问方式
如磁盘设备
3、虚拟
虚拟是指一个物理上的实体变为若干个逻辑上的对应物。比如说虚拟处理器,虚拟内存,虚拟外部设备
4、异步
在多个程序环境下、允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停、以不可预知的速度向前推进、这就是进程的异步性
操作系统最基本的特征是并发与共享、两者互为存在条件
进程管理
程序基本概念
程序执行的两种方式:
- 顺序执行:一个计算的若干操作必须按照严格的先后次序顺序地执行,这类计算过程就是程序的顺序执行结果
- 并发执行:指一组在逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,即一个程序段的执行尚未结束、另一个程序段的执行已经开始的这种执行方式
进程基本概念
-
定义
进程是指一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位。
程序封闭性是指 进程执行结果只取决于进程本身,不会受到外界影响 -
进程和程序的区别
- 进程是动态的,程序是静态的
程序本身可以作为软件资源而长期存在
进程是程序的一次执行过程,有一定的生命周期 - 进程具有并发特性,而程序没有
进程是一个可以独立运行的单位,是作为资源申请和调用单位存在的,能与其他进程并发执行
而程序不能作为一个独立运行的单位而并发执行 - 程序和进程没有一一对应关系
通过多次执行、一个程序可对应多个进程
通过调用关系、一个进程可包含多个程序 - 各个进程在并发执行过程中会产生相互制约关系
因为进程是竞争资源的基本单位,从而其并发性受到系统自己的制约, 而程序却没有
- 进程是动态的,程序是静态的
-
进程的组成
进程通常有程序、数据集合和进程控制块PCB三部分组成。程序和它操作的数据是进程存在的静态实体,而专门的数据结构PCB用来描述进程当前的状态、本身的特性等当进程被中断时,操作系统会把程序计数器和处理器寄存器(上下文数据)保存在PCB中的对应位置,进程状态已被改变为其他的值,例如阻塞或就绪状态
PCB是进程存在的唯一标识。故操作系统是根据进程控制块来对并发执行的进程进行控制和管理
PCB包含的数据结构主要有:进程标志信息、进程控制信息、进程资源信息、CPU现场信息
每个进程包含独立的地址空间,进程各自的地址空间是私有的,只有执行自己地址空间中的程序,且只能访问自己地址空间中的数据,相互访问会导致指针的越界错误
对进程的管理和控制功能是通过执行各种原语实现的,如创建原语
进程状态
- 运行状态
- 就绪状态
- 阻塞状态
- 新建状态
- 退出状态
进程创建
- 给新进程分配一个唯一的标识符
- 给进程分配空间
- 初始化进程控制块
- 设置正确的连接
- 创建或扩充其他数据结构
线程
线程的基本概念
引入线程,是为了减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能
线程最直接的理解就是"轻量级进程“” ,它是一个基本的CPU执行单元,也是程序执行流的最小单位
线程共享进程拥有的全部资源
线程不拥有系统资源,但是 它可以访问进程所拥有的系统资源
线程没有自己独立的地址空间,它共享它所属的进程的空间
线程的实现
1、用户级线程
2、内核级线程
进程间通信
- 共享存储
- 消息存储
- 管道通信:固定大小、半双工通信,即某一时刻只能单向传输
- 共享文件
处理机调度
调度的层次
1、作用调度,又称高级调。就是内存与辅存之间的调度
2、内存调度,又称中级调度。引入中级调度是为了提高内存利用率和系统吞吐量。使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当他们具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些具备运行条件的就绪进程再重新调入内存
3、进程调度,又称低级调度。按照某种方法和策略从就绪队列中选取一个进程给CPU
进程调度方式
- 非剥夺调度方式
- 剥夺调度方式
典型的调度算法
- 先来先服务调度算法(FCFS)
- 短作业优先(SJF)调度算法
从后备队列中选择一个或若干个估计运行时间最短的作业,将他们调入内存运算 - 短进程优先(SPF)调度算法
从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行 - 优先级调度算法
根据能否抢占进程,可将调度算法分为:
(1). 非剥夺式优先级调度算法
(2). 剥夺式优先级调度算法
根据进程创建后其优先级是否可以改变,分为:
(1). 静态优先级。优先级在创建进程时确定,且在进程的整个运行期间保持不变。
(2). 动态优先级。可动态调整优先级 - 高响应比优先级调度运算
- 时间片轮转调度算法
- 多级反馈队列调度算法
进程同步
基本概念
- 临界资源
我们把一次仅允许一个进程使用的资源称为临界资源 - 同步
同步亦称直接制约关系,他是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系
实现临界区互斥的基本方法
软件实现方法
硬件实现方法
- 中断屏蔽方法
当一个进程正在使用处理机执行它的临界区代码时,要防止其他进程再进入临界区方法的最简单方法是禁止一切中断发生。因为CPU只在中断发生时进行进程切换,这样屏蔽中断就能保证当前运行进程将临界区代码顺利地执行完 - 硬件指令方法
信号量
信号量只能被两个标准的原语wait(S)和signal(S)来访问,也可以记为“P操作” 和 “V操作” 。
原语是指完成某种功能且不被分割不被中断执行的操作序列,通常可由硬件来实现完成不被分割执行特性的功能
- 利用信号量实现同步
- 利用信号量实现进程互斥
管程
管程是由一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程
死锁
所谓死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进
死锁产生的条件
- 互斥
- 不剥夺
- 请求和保持
- 循环等待
死锁的处理策略
- 预防死锁
设置某些限制条件,破坏产生死锁的四个必要条件中的一个或者几个,以防止发生死锁 - 避免死锁
在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免死锁
银行家算法
- 死锁的检测及解除
通过系统的检测机构及时地检测出死锁的发生,然后采取某种措施解除死锁
内存管理
程序执行过程
- 编译:由编译程序将用户源代码编程成若干个目标模块
- 连接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块
- 装入:由装入程序将装入模块装入内存运行
逻辑地址空间与物理地址空间
覆盖与交换
- 覆盖
- 交换
连续分配管理方式
- 单一连续分配
- 固定分区分配
可以有大小相等的分区和大小不等的分区
会有内部碎片 - 动态分区分配
会有外部碎片,可以通过紧凑技术来解决(就是操作系统不时地对线程进行移动和整理,需要动态重定位寄存器支持)
非连续分配管理方式
- 分页存储管理
- 分段存储管理
- 段页式管理方式
虚拟内存管理
-
传统存储管理方式的特征
- 一次性:作业必须一次性全部装入内存,方能运行
- 驻留性:作业被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束
-
局部性原理
- 时间局部性
如果程序中的某条指令一旦执行,不就以后该指令可能再次执行;如果某数据被访问过,不久后该数据可能再次被访问
所以时间局部性是通过将进行使用的指令和数据保存到高速缓存存储器中 - 空间局部性
一旦程序访问了某个存储单元,在不久之后, 其附近的存储单元也会被访问
所以空间局部性通常是使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现
- 时间局部性
页面置换算法
- 最佳置换算法(OPT)
- 先进先出页面置换算法
- 最近最久未使用置换算法(LRU)
文件系统
文件的概念
文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文件文档、图片、程序等。
在用户进行的输入、输出中,是以文件为基本单位
文件的属性
名称、标识符、类型、位置、大小、保护、时间-日期-用户表示
文件的逻辑结构
- 无结构的文件(流式结构)
无结构文件是最简单的文件组织形式。无结构文件将数据按照顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节为单位 - 有结构文件(记录式文件)
- 顺序文件
文件中的记录一个接一个地顺序排列,记录通常是定长的,可以顺序存储或以链表形式存储- 串结构
记录之间的顺序与关键字无关,通常按照存入时间的先后排列 - 顺序结构
指文件中的所有记录按照关键字顺序排列
- 串结构
- 索引文件
- 索引顺序文件
索引顺序文件是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的所有记录分为若干组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项 - 直接文件或离散文件
给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址
- 顺序文件
目录结构
文件控制块和索引
- 文件控制块
FCB用来存放控制文件所需要的各种信息的数据结构。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项
FCB主要包含以下信息:- 基本信息
- 存取控制信息
- 使用信息
- 索引节点
目录结构
- 单级目录结构
整个文件系统中只建立一张目录表,每个文件占一个目录项 - 两级目录结构
将文件目录分为主文件目录和用户文件目录。主文件目录记录用户名及相应用户文件目录所在的存储位置 。用户文件目录项记录该用户的FCB信息 - 多级目录结构
- 无环图目录结构
引入改种目录结构是为了实现文件共享
文件共享
- 基于索引节点(硬连接):共享文件指向同一索引结点
- 基于符号链(软连接):保存共享文件的路径名
文件保护
- 口令保护:通过口令访问文件
- 加密保护:对文件进行加密处理
- 访问控制:根据访问者的身份进行限制
文件系统层次结构
文件系统类型:FAT32 、 NTFS 、 ext2 、 ext3 、 ext4
目录实现
- 线性列表
- 哈希表
文件实现
- 文件分配方式
- 连续分配
- 链接分配
- 索引分配
文件存储器的空间管理
- 空闲表法:把所有空闲块组织成表
- 空闲链表法:把所有空闲块组织成链表
- 位示图:利用二进制的每位记录空闲块
- 成组链接:空闲表和空闲链表的结合,适合大的文件系统
磁盘调度算法
-
FCFS(先来先服务算法)
-
最短寻找时间优先算法(SSTF)算法
-
扫描(SCAN)算法(又称电梯算法)
-
循环扫描(C-SCAN)算法
区别:
总结:
I/O管理
I/O控制方式
- 程序直接控制方式
- 中断驱动方式
允许I/O设备主动打断CPU请求并请求服务,从而“解放”CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作 - DMA方式
DMA方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放”CPU
DMA特点:
1. 基本单位是数据块
2. 所传送的数据,是从设备直接送入内存的,或者相反
3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预,整块数据的传送是在DMA控制器的控制下完成的
- 通道控制方式