面试复习之操作系统

操作系统概述

概念

操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。

特征(并发、共享、虚拟和异步)

并发和共享是操作系统两个最基本的特征(互为存在条件)

操作系统的虚拟技术可归纳为:

  • 时分复用技术(如处理器的分时共享);
  • 空分复用技术(如虚拟存储器)

目标和功能

  • 计算机系统资源的管理者
    • 处理机管理(可以归结为进程管理,包括进程控制、进程同步、进程通信、死锁处理、处理机调度等)
    • 存储器管理(主要包括内存分配、地址映射、内存保护与共享和内存扩充等)
    • 文件管理(包括文件存储空间的管理、目录管理及文件读写管理和保护等)
    • 设备管理(主要包括缓冲管理、设备分配、设备处理和虚拟设备等)
  • 用户与计算机系统之间的接口
    • 命令接口(联机控制方式和脱机控制方式,联机是交互式的,脱机是批处理的)
    • 程序接口(由一组系统调用组成)
    • 图形接口GUI,GUI最终是通过调用程序接口实现的。
  • 扩充机器

系统调用提供的服务

  • 进程的创建与管理
  • 主存管理
  • 文件访问,目录和文件系统管理
  • 设备处理(I/O)
  • 保护(例如, chmod(), umask(), chown() )
  • 网络

系统调用的类型

  • 进程控制:end,abort,terminate,allocate,free memory(例如,fork(), exit(), wait())
  • 文件控制:create,open,close,delete,read file etc(例如,open(), read(), write(), close())
  • 设备控制(例如,ioctl(), read(), write())
  • 信息维护(例如,getpid(), alarm(), sleep())
  • 通信(pipe(), shmget(), mmap() )

主要关注前一个,接口和扩充机器只需要有个印象。

发展分类

  • 手工操作阶段
  • 批处理(单道和多道,多道宏观上并行、微观上串行)
  • 分时(同时性、交互性、独立性、及时性)
  • 实时(硬实时、软实时)
  • 网络和分布式(网络操作系统的特点是网络中各种资源的共享及各台计算机之间的通信,分布式操作系统中的若干计算机相互协同完成统一任务)
  • 个人操作系统(Windows、Linux、Macintosh)

另外还有嵌入式操作系统、服务器操作系统、多处理器操作系统等

运行机制

  • 操作系统内核程序(管态、内核态,一些与硬件关联较紧密的模块处于最低层,如时钟管理、中断处理、设备驱动等,其次是运行频率较高的程序,如进程管理、存储器管理和设备管理等)
  • 用户自编程序(目态)

内核

  • 时钟管理
  • 中断机制
  • 原语
  • 系统控制的数据结构及处理(进程管理、存储器管理、设备管理)

用户态进入核心态的途径

  • 中断(Interruption, 也称外中断)
  • 异常(Exception,也称内中断或陷入trap)

系统调用

  • 设备管理
  • 文件管理
  • 进程控制
  • 进程通信
  • 内存管理

访管指令不是特权指令

体系结构

大内核、微内核、库操作系统

疑难点

并行:同一时刻
并发:同一时间间隔

访管指令本身不是特权指令,可以引起访管中断,

库函数可能会使用系统调用来实现功能

批处理操作系统的用户脱机使用计算机,作业是成批处理的,系统内多道程序并发执行,交互能力差。
分时操作系统交互性强,系统响应及时。
实时操作系统可靠性高,但资源利用率低。

画甘特图
CPU利用率=CPU时间/总时间

用户态到核心态的转换发生在中断产生时,而核心态到用户态的转换发生在中断返回用户程序时。
通道技术和终端技术结合起来就可以实现CPU与I/O设备并行工作

进程管理

进程线程

引入进程的概念,是为了更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。
由程序段、相关数据和进程控制块(Process Control Block, PCB)三部分构成了进程映像(进程实体)。
创建进程实质上是创建进程映像中的PCB;而撤销进程,实质上是撤销进程的PCB。
进程映像是静态的,进程则是动态的。

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

进程的特征

  • 动态性(创建、活动、暂停、终止)
  • 并发性
  • 独立性
  • 异步性(异步会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制)
  • 结构性(程序段、数据段、进程控制段)

进程的状态与转换

  • 运行态
  • 就绪态
  • 阻塞态
  • 创建态
  • 结束态

一个进程从运行态变成阻塞态是主动的行为,而从阻塞态变成就绪态是被动的行为。

进程控制

一般把进程控制用的程序段称为原语,原语执行期间不可中断。

进程的创建

  • 为进程分配一个唯一的进程标识号,申请一个空白的PCB
  • 为进程分配资源
  • 初始化PCB
  • 将进程插入就绪队列

进程的终止

  • 根据被终止进程的标识符,检索PCB,从中读出该进程的状态
  • 若被终止的进程处于执行状态,则立即终止该进程的执行,将处理机资源分配给其他进程。
  • 若该进程还有子进程,则将所有子进程终止
  • 将该进程所有资源归还给父进程或者操作系统
  • 将该PCB从所在队列(链表)中删除。

进程的阻塞和唤醒

  • 找到将要被阻塞进程的标识号对应的PCB
  • 若该进程为运行态,则保护其现场,将其状态转为阻塞态,停止运行。
  • 将该PCB插入相应事件的等待队列。

唤醒

  • 在该事件的等待队列中找到相应进程的PCB
  • 将其从等待队列中移出,并置其状态为就绪态
  • 把该PCB插入就绪队列,等待调度程序调度

进程切换

  • 保存处理机上下文,包括程序计数器和其他寄存器
  • 更新PCB信息
  • 把进程的PCB移入相应的队列,如就绪、在某事件阻塞队列
  • 选择另一个进程执行,并更新其PCB
  • 更新内存管理的数据结构
  • 恢复处理机上下文

先有资源的调度,后有进程的切换。

进程通信

PV操作是低级通信方式
高级通信主要有三类

  • 共享存储(操作系统为通信进程提供可共享使用的存储空间和同步互斥工具)
  • 消息传递(直接通信方式:发送消息挂在接受进程的消息缓冲队列上;间接通信方式:通过中间实体——信箱)
  • 管道通信(互斥、同步和确定对方存在,本质上管道也是一种文件,管道的大小也有限,半双工通信)

线程

线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。

不同的线程可以执行相同的程序,即同一个服务程序被不同的用户调用时,操作系统把它们创建成不同的线程。

有了线程,线程切换时,有可能会发生进程切换,也有可能不发生进程切换,平均而言每次切换所需的开销就变小了,故有利于提高系统的并发性。

  • 用户级线程(ULT)(有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在)
  • 内核级线程(KLT)
    有些系统中使用组合方式的多线程实现。

多线程模型

  • 多对一模型
  • 一对一模型
  • 多对多模型

概念、状态转换、控制、组织和通信

处理机

调度的层次

  • 作业调度(又称高级调度,每个作业只调入一次、调出一次,多道批处理系统中大多配有作业调度,而其他系统中通常不需要配置作业调度)
  • 中级调度(又称内存调度,将暂时不能运行的进程调至外存挂起)
  • 进程调度(又称低级调度,最基本,不可或缺)

不能进行进程的调度和切换的情况有以下几种:

  • 在处理中断的过程中
  • 进程在操作系统内核程序临界区中
  • 其他需要完全屏蔽中断的原子操作过程中(在原子操作中,连中段都要屏蔽,更不应该进行进程调度和切换)

进程调度方式

  • 非剥夺调度方式(非抢占方式)
  • 剥夺调度方式(抢占方式)

调度的基本准则

  • CPU利用率
  • 系统吞吐量
  • 周转时间
  • 等待时间
  • 响应时间

典型的调度算法

  • 先来先服务(FCFS)调度算法
  • 短作业优先(SJF)调度算法(长作业可能产生“饥饿”现象)
  • 优先级调度算法(非剥夺式优先级调度算法、剥夺式优先级调度算法,静态优先级、动态优先级,一般来说,系统进程>用户进程,交互型进程>非交互型进程,I/O型进程>计算型进程)
  • 高响应比优先调度算法(响应比=(等待时间+要求服务时间)/ 要求服务时间)
  • 时间片轮转调度算法
  • 多级反馈队列调度算法

优先级调度算法适合实时操作系统
高响应比优先调度算法、时间片轮转调度算法、多级反馈队列调度算法适合分时操作系统

概念、时机、方式和准则
先来先服务、短作业优先、时间片轮转、优先级、高响应比优先、多级反馈队列

同步互斥

临界资源的访问过程:

  • 进入区
  • 临界区
  • 退出区
  • 剩余区

同步亦称直接制约关系,该关系源于它们之间的相互合作。

互斥也称间接制约关系
为禁止两个进程同时进入临界区,同步机制应遵循以下准则:

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待

实现临界区互斥的基本方法

  • 软件实现方法
    • 单标志法
    • 双标志法先检查
    • 双标志法后检查
    • Peterson’s Algorithm
  • 硬件实现方法
    • 中断屏蔽方法
    • 硬件指令方法

信号量

信号量只能被两个标准的原语wait(S)和signal(S)访问,也可记为“P操作”和“V操作”
原语通常可由硬件实现。

  • 整型信号量
  • 记录型信号量
  • 利用信号量实现同步
  • 利用信号量实现进程互斥
  • 利用信号量实现前驱关系

管程

管程是由一组数据及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。

管程的组成

  • 局部于管程的共享数据结构说明
  • 对该数据结构进行操作的一组过程
  • 对局部于管程的共享数据设置初始值的语句

管程很像一个抽象类。

经典同步问题

思考步骤:关系分析、整理思路、信号量设置

  1. 生产者-消费者问题
  2. 读者-写者问题
  3. 哲学家进餐问题
  4. 吸烟者问题

概念、信号量、管程和临界区互斥
生产消费、读者写者和哲学家

死锁

只有对不可剥夺资源的竞争才可能产生死锁,对可剥夺资源的竞争是不会引起死锁的。

资源分配图含圈而系统又不一定死锁的原因是,同类资源大于1.

死锁的必要条件

  • 互斥条件
  • 不剥夺条件
  • 请求并保持条件
  • 循环等待条件

死锁的处理策略

  • 死锁预防(设置某些限制条件,破坏产生死锁的4个必要条件中的一个或几个,以防止发生死锁)
  • 死锁避免(用某种方法防止系统进入不安全状态)
  • 死锁检测(及时检测出死锁的发生,然后采取某种措施解除死锁)

并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;

银行家算法是最著名的死锁避免算法
Need = Max - Allocation
安全性算法:

  1. 初始时安全序列为空
  2. 从Need矩阵中找出符合下面条件的行:该行对应的进程不在安全序列中,而且该行小于等于Available向量,找到后,把对应的进程加入安全序列;若找不到,则执行步骤4
  3. 进程Pi进入安全序列后,可顺利执行,直至完成,并释放分配给它的资源,故应执行Available = Available + Allocation[i],其中Allocation[i]表示进程Pi代表的在Allocation矩阵中对应的行,返回步骤2
  4. 若此时安全序列中已有所有进程,则系统处于安全状态,否则系统处于不安全状态。

简要地说,就是将可运行的进程加入安全序列,看是否能够把所有进程都加入进去。

死锁检测和解除

在资源分配图中,判断某种资源是否有空间,应用它的资源数量减去它在资源分配图中的出度。
若一个进程申请资源的数量小于等于空闲资源的数量,则可将其所有边消去。
若能消去图中的所有边,则称该图是可完全化简的。

死锁定理: S为死锁的条件是当且仅当S状态的资源分配图示不可完全化简的。

死锁解除

  • 资源剥夺法(挂起某些死锁进程)
  • 撤销进程法
  • 进程回退法

本章疑难点

进程的组成包括程序、数据和PCB
一个进程可以执行一个或几个程序,一个程序也可构成多个进程。进程可创建进程,而程序不可能形成新的程序。

进程和程序的关系

  • 一对一:执行一条命令或运行一个程序
  • 一对多:进程在执行中加载不同的应用程序
  • 多对一:以不同参数或数据多次执行同一个程序
  • 多对多:并发地执行不同的应用程序

父进程创建子进程后,父子进程并发执行
而主程序调用子程序后,主程序暂停在调用点,直到子程序返回

操作系统限制每个进程只能访问自己的地址空间,要实现进程间的通信,主要有

  • 共享内存区
  • 消息传递
  • 管道系统
  • 共享文件

多任务是针对操作系统而言的,多线程是针对一个程序而言的。

进程控制块(PCB)记录了有关进程的一些描述信息和控制信息,包括进程标识符、进程当前的状态、优先级、进程放弃CPU时的现场信息,以及指示组成进程的程序和数据在存储器中存放的位置信息、资源使用信息、进程各队列的连接指针和反映进程之间隶属关系的信息等。

进程控制原语

  • 创建新进程原语
  • 阻塞进程原语
  • 唤醒进程原语
  • 终止进程原语

多阻塞队列的时间皮轮转调度系统

多级反馈队列调度算法能较好地满足各类型用户的需要。

算利用率画甘特图

几个评价准则的计算

  • 周转时间=作业完成时间-作业提交时间
  • 平均周转时间=(作业1周转时间+…+作业n周转时间)/n
  • 带权周转时间=作业周转时间/作业实际运行时间
  • 带权平均周转时间=(作业1的带权周转时间+…+作业n的带权周转时间)/n

时间片的大小应能使分时用户得到好的响应时间,同时也使系统具有较高的效率。

静态优先数可能会产生饥饿现象。
响应比=(等待时间+要求服务时间)/(要求服务时间)
短作业优先平均等待时间最少,效率最高,但长作业可能会产生饥饿。

管程由三部分组成

  • 局部于管程的共享变量说明
  • 该数据结构进行操作的一组过程
  • 对局部于管程的数据设置初始值的语句;此外,还需为该管程赋予一个名字。
    管程的引入是为了解决临界区分散所带来的管理和控制问题。管程一次只允许一个进程进入管程内,从而既便于系统管理共享资源,又能保证互斥。
    进程之间存在两种制约关系,即同步和互斥。
    P原语:荷兰语Proberen,测试,申请一个空闲资源(把信号量减一),若成功,则退出,若失败,则阻塞。
    V原语:荷兰语Verhogen,增加,释放一个被占用的资源(型号量加一),如果发现有被阻塞的进程,则选择一个唤醒。
    信号量 semaphore mutex=1
    wait(s) 等价于P操作
    signal(s) 等价于V操作

死锁检测方法可以获得最大的并发性。
并发性排序:死锁检测方法、银行家算法、资源预分配。

产生死锁的原因可归结为两点

  • 竞争资源
  • 进程推进顺序非法
    产生死锁的必要条件
  • 互斥条件
  • 请求和保持条件
  • 不剥夺条件
  • 循环等待条件

解决死锁

  • 采用静态分配
  • 采用按序分配
  • 采用银行家算法

只有当进程提出资源申请且全部进程都进入阻塞态时,系统才处于死锁状态。
银行家算法
系统状态
Max, Allocation, Need, Available
安全性分析
Work, Need, Allocation, Available
在计算过程中,将每步中可满足需求的进程作为一个集合,同时执行并释放资源,可以简化银行家算法的计算。
资源分配图:从进程到资源的有向边称为请求边,表示该进程申请一个单位的该类资源;从资源到进程的边称为分配边,表示该类资源已有一个资源分配给了该进程。判断某种资源是否有空间,应用它的资源数量减去它在资源分配图中的出度。

概念、策略、银行家算法

内存管理

概念

内存管理的功能

  • 内存空间的分配与回收
  • 地址转换
  • 内存空间的扩充
  • 存储保护

将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤:

  • 编译
  • 链接(静态链接、动态链接、运行时动态链接)
  • 装入(绝对装入、可重定位装入/静态重定位、动态运行时装入/动态重定位)

地址重定位:将逻辑地址转换成物理地址

内存保护

  • 在CPU中设置一对上、下限寄存器
  • 采用重定位寄存器(或基址寄存器)和界地址寄存器(又称限长寄存器)

装入链接、逻辑与物理地址

交换覆盖

  1. 覆盖:将用户空间分成一个固定去和若干覆盖区。将经常活跃的部分放在固定区,其余部分按照调用关系分段,将那些即将要访问的段放入覆盖区。
  2. 交换
    • 换出:把处于等待状态的程序从内存移到辅存,把内存空间腾出来
    • 换入:把准备好竞争CPU运行的程序从辅存移到内存

交换技术主要在不同进程(或作业)之间进行,而覆盖则用于同一个程序或进程中。对于主存无法存放用户程序的矛盾,现代操作系统是通过虚拟内存技术来解决的,覆盖技术则已成为历史;而交换技术在现代操作系统中仍具有较强的生命力。

内存分配

  • 连续分配管理方式
    • 单一连续分配(无外部碎片)
    • 固定分区分配(分区大小相等,分区大小不等、可能产生内部碎片)
    • 动态分区分配(会出现外部碎片,可以通过紧凑Compaction技术来解决)

动态分区的分配策略

  • 首次适应(First Fit)算法
  • 最佳适应(Best Fit)算法:空闲分区按容量递增的方式形成分区链,找到第一个能满足要求的空闲分区。
  • 最坏适应(Worst Fit)算法,又称最大适应(Largest Fit)算法。空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区。
  • 邻近适应(Next Fit)算法,又称循环首次适应算法。

首次适应算法不仅是最简单的,而且通常也是最好和最快的。

非连续分配(页式、段式和段页)

  1. 基本分页存储管理方式:
    进程中的块称为页(Page),内存中的块称为页框(Page Frame),地址变换机构将逻辑地址转换为内存中的物理地址。
    物理地址=物理块号✖️页面大小+页内偏移量
    为了加速地址变换的过程,在地址变换机构中增设一个具有并行查找能力的高速缓冲存储器——快表,又称相联存储器(TLB),快表的有效性基于局部性原理
    两级页表
  2. 分段存储管理方式
    分页通过硬件机制实现,对用户完全透明,分段管理方式则考虑了用户和程序员,按照用户进程中的自然段划分逻辑空间。每个进程都有一张逻辑空间与内存空间映射的段表。
    分段地址变换机构将逻辑地址变换到物理地址。
    纯代码/可重入代码、不能修改的数据可以共享,而可修改的代码和数据不能共享。
    分段管理的保护方法主要有两种:一种是存取控制保护,另一种是地址越界保护。
  3. 段页式管理方式:页式存储能提高内存利用率,而分段存储管理能反映程序的逻辑结构并有利于段的共享。在段页式系统中,作业的逻辑地址分为三个部分:段号、页号和页内偏移量。在一个进程中,段表只有一个,而页表可能有多个。

无论哪种管理方式,都只要关注三个问题

  • 逻辑地址结构
  • 表项结构
  • 寻址过程

虚拟性、请求页面

虚拟内存

局部性原理

  • 时间局部性
  • 空间局部性

时间局部性通过将近来使用的指令和数据保存到高速缓存存储器中,并使用高速缓存的层次结构实现。空间局部性通常使用较大的高速缓存,并将预取机制集成到高速缓存控制逻辑中实现。虚拟内存技术实际上建立了“内存-外存”的两级存储器结构,利用局部性原理实现高速缓存。

虚拟存储器有以下三个特征

  • 多次性
  • 对换性
  • 虚拟性

虚拟内存的实现需要建立在离散分配的内存管理方式的基础上

  • 请求分页存储管理
  • 请求分段存储管理
  • 请求段页式存储管理

一般都需要以下的支持:

  • 页表机制(或段表机制)
  • 中断机构
  • 地址变换机构

页面置换算法

  • 最佳(OPT)置换算法(最长时间未使用)
  • 先进先出(FIFO)页面置换算法(可能出现Belady异常)
  • 最近最久未使用(LRU)置换算法
  • 时钟(CLOCK)置换算法

页面分配策略:

  • 固定分配局部置换
  • 可变分配全局置换
  • 可变分配局部置换

调入页面的时机

  • 预调页策略
  • 请求调页策略

从何处调入页面
请求分页系统的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。对换区通常采用连续分配方式,而文件区采用离散分配方式,故对换区的磁盘I/O速度比文件区快。

  • 系统拥有足够的对换区空间
  • 系统缺少足够的对换区空间
  • UNIX方式

抖动:刚刚换出的页面马上又要换入主存,刚刚换入的页面马上又要换出主存。
原因:某个进程频繁访问的页面数目高于可用的物理页帧数目。

工作集:是指某段时间间隔内,进程要访问的页面集合。
为了防止抖动,分配给进程的物理块数(即驻留集大小)要大于工作集大小。

虚存的大小≤内存容量和外存容量之和
虚存的大小≤计算机的地址位数能容纳的最大容量。

在操作系统中,几乎每类资源都有相关的调度算法。

本章疑难点

分页管理方式和分段管理方式的比较
动态分区和固定分区分配方式相比,内存空间利用率要高一些。但是,总会存在一些分散的较小空闲分区,即外部碎片,它们存在于已分配的分区之间,不能充分利用。固定分区分配方式则存在内部碎片。
最先适配算法尽可能地使用了低地址部分的空闲区域,留下了高地址部分的大部分空闲区,更有可能满足进程的申请。

例题: 某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4B。
(1)若使用一级页表的分页存储管理方式,逻辑地址结构为页号(20位),页内偏移量(12位),则页的大小是多少字节?页表最大占用多少字节?

答:页大小为 2 12 B = 4 K B 2^{12}B=4KB 212B=4KB,页表项数位 2 20 2^{20} 220,故一级页表最大为 2 20 × 4 B = 4 M B 2^{20} \times 4B=4MB 220×4B=4MB

(2)若使用二级页表的分页存储管理方式,逻辑地址结构为页目录号(10位),页表索引(10位),页内偏移量(12位),设逻辑地址为LA,请分别给出其对应的页目录号和页表索引的表达式。
0x3FF的二进制为1111111111
页目录号可表示为(((unsigned int)(LA))>>22) & 0x3FF
页表索引可表示为(((unsigned int)(LA))>>12) & 0x3FF
(3)采用(1)中的分页存储管理方式,一个代码段的起始逻辑地址为0000 8000H,其长度为8KB,被装载到从物理地址0090 0000H开始的连续主存空间中,页表从主存0020 0000H开始的物理地址连续存放,请计算出该代码段对应的两个页表项的物理地址、这两个页表项中的页框号,以及代码页面2的起始物理地址。
8000H的二进制表示为1000 0000 0000 0000
10进制的32对应16进制为20
41024对应的16进制为1000
答:代码页面1的逻辑地址为0000 8000H,表明其位于第8个页处,对应页表中的第8个页表项,所以第8个页表项的物理地址=页表始址+8
页表项的字节数=0020 0000H+8*4=0020 0020H

覆盖程序段的最大长度要受内存容量大小的限制,而虚拟存储器中程序的最大长度不受内存容量的限制,只受计算机地址结构的限制。

交换技术调入/调出整个进程,而虚存中使用的调入/调出技术在内存和外存之间来回传递的是页面或分段。

计算缺页率
例题: 某计算机系统按字节编址,采用二级页表的分页存储管理方式,虚拟地址格式如下所示:
页目录号(10位),页表索引(10位),页内偏移量(12位)
(1)页和页框的大小各为多少字节?进程的虚拟地址空间大小为多少页?
页和页框大小均为4KB。进程的虚拟地址空间大小为 2 32 / 2 12 = 2 20 2^{32}/2^{12}=2^{20} 232/212=220
(2)若页目录项和页表项均占4B,则进程的页目录和页表共占多少页?
( 2 10 × 4 ) / 2 12 (2^{10} \times 4 )/ 2^{12} 210×4/212(页目录所占页数)+ ( 2 20 × 4 ) / 2 12 (2^{20} \times 4)/2^{12} (220×4)/212(页表所占页数)

文件管理

文件概念

文件是以计算机硬盘为载体的存储在计算机上的信息集合。
在系统运行时,计算机以进程为基本单位进行资源的调度和分配。而在用户进行的输入、输出中,则以文件为基本单位。

  1. 数据项:数据项是文件系统中最低级的数据组织形式
    • 基本数据项
    • 组合数据项
  2. 记录:一组相关的数据项的集合
  3. 文件:文件是指由创建者所定义的一组相关信息的集合,逻辑上可分为有结构文件(由一组相似的记录组成)和无结构文件(被视为一个字符流,如二进制文件或字符文件)两种。

文件的基本操作:

  • 创建文件
  • 写文件
  • 读文件
  • 文件重定位(文件寻址)
  • 删除文件
  • 截断文件

每个打卡文件都有如下关联信息:

  • 文件指针
  • 文件打开计数
  • 文件磁盘位置
  • 访问权限

文件的逻辑结构

  1. 无结构文件(流式文件)
  2. 有结构文件(记录式文件)
    1. 顺序文件
    2. 索引文件
    3. 索引顺序文件
    4. 直接文件或散列文件

目录结构:

  1. 文件控制块(FCB):FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。FCB包含:基本信息、存取控制信息、使用信息。
  2. 索引结点: 文件名和文件描述信息分开,文件描述信息单独形成一个称为索引结点的数据结构,简称i结点
  3. 目录结构:单级目录结构、两级目录结构、多级目录结构(树形目录结构)、无环图目录结构

文件共享

  1. 基于索引结点的共享方式(硬链接):删除文件时,链接计数值减一,当count=0时,系统将负责删除该文件。
  2. 利用符号链实现文件共享(软链接):创建包含被链接文件的路径名的LINK类型的新文件。

文件保护

  1. 访问类型:读、写、执行、添加、删除、列表清单
  2. 访问控制:拥有者、组、其他

文件,实质上就是一个抽象数据类型,要认识它的逻辑结构、物理结构,以及对这种数据结构的操作。

逻辑结构(顺序、索引、索引顺序)
目录(单级、两级、树形和图形)
文件控制块、共享和保护

文件实现

  1. 用户调用接口
  2. 文件目录系统
  3. 存取控制验证
  4. 逻辑文件系统与文件信息缓冲区
  5. 物理文件系统
  6. 辅助分配模块
  7. 设备管理程序模块

目录实现

  • 线性列表
  • 哈希表

文件分配方式

  • 连续分配:缺点是文件长度不宜动态增加
  • 链接分配:
  • 索引分配(链接方案、多层索引、混合索引)

文件存储空间管理

  • 空闲表法
  • 空闲链表法
  • 位示图法
  • 成组链接法

层次结构、文件、目录

本章疑难点和小结

可以建立目录到文件的连接
基于索引结点的共享方法:不可以删除,会有悬空指针
基于符号共享的方法:可以删除

文件存储设备的管理实质上是对空闲块的组织和管理,它包括空闲块的组织、分配和回收等问题。

文件的物理结构包括连续、链式、索引三种,其中链式结构不能实现随机访问,连续结构的文件不易于扩展,因此随机访问且易于扩展是索引结构的特征。

连续分配方式的优点是可以随机访问(磁盘),访问速度快;缺点是要求有连续的存储空间,容易产生碎片,降低磁盘空间利用率,并且不利于文件的增长扩充。
链接分配方式的优点是不要求连续的存储空间,能更有效地利用磁盘空间,并且有利于扩充文件;缺点是只适合顺序访问,不适合随机访问;另外,链接指针占用一定的空间,降低了存储效率,可靠性也差。
索引分配方式的优点是既支持顺序访问又支持随机访问,查找效率高,便于文件删除;缺点是索引表会占用一定的存储空间。

磁盘管理

磁盘的结构
磁盘地址用“柱面号·盘面号·扇区号(或块号)”表示
一次磁盘读写操作的时间由寻道时间、延迟时间和传输时间决定。

调度算法

  • 先来先服务(FCFS)算法
  • 最短寻找时间有限(SSTF)算法
  • 扫描(SCAN)算法(又称电梯调度算法)
  • 循环扫描(C-SCAN)算法

磁盘的管理

  • 磁盘初始化
  • 引导块
  • 坏块

本章疑难点及小结

Flash半导体存储器的物理结构不需要考虑寻道时间和旋转延迟,可直接按I/O请求的先后顺序服务。
引导控制块(Boot Control Block)包括系统从该分区引导操作系统所需要的信息。
分区控制块包括分区详细信息,如分区的块数、块的大小、空闲块的数量和指针、空闲FCB的数量和指针等。

输入输出(I/O)管理

概念

I/O设备

  • 人机交互类外部设备
  • 存储设备
  • 网络通信设备

按传输速率分类:

  • 低俗设备
  • 中速设备
  • 高速设备

按信息交换的单位分类

  • 块设备
  • 字符设备

I/O管理需要完成的功能

  • 状态跟踪:要能实时掌握外部设备的状态
  • 设备存取:要实现对设备的存取操作
  • 设备分配:在多用户环境下,负责设备的分配和回收
  • 设备控制:包括设备的驱动、完成和故障的中断处理。

I/O控制方式

  • 程序直接控制方式(CPU需要对外设做循环检查)
  • 中断驱动方式(允许I/O设备主动打断CPU的运行并请求服务)
  • DMA方式(在I/O设备和内存之间开辟直接的数据交换通路)
  • 通道控制方式(I/O通道是指专门负责输入/输出的处理机)

I/O子系统的层次结构

  • 用户层I/O软件(实现与用户交互的接口)
  • 设备独立性软件(实现用户程序与设备驱动器的同一接口、设备命令等)
  • 设备驱动程序(与硬件直接相关、负责具体实现系统对设备发出的操作指令)
  • 中断处理程序(用于处理中断相关事项)
  • 硬件设备(包括一个机械部件,即设备本身,和一个电子部件,即控制器)

控制方式
软件层次(用户、设备、驱动和中断)

I/O子系统

磁盘高速缓存(Disk Cache)
缓冲区(Buffer):单缓冲、双缓冲、循环缓冲、缓冲池

缓存缓冲(单、双和循环缓冲)
设备分配和回收

  • 独占式使用设备
  • 分时式共享使用设备
  • 以SPOOLing方式使用外部设备

设备分配的数据结构

  • 设备控制表(DCT)
  • 控制器控制表(COCT)
  • 通道控制表(CHCT)
  • 系统设备表(SDT)

设备分配方式有静态分配和动态分配两种

设备分配算法有先请求先分配、优先级高者优先等。

逻辑设备名到物理设备名的映射
逻辑设备表(Logical Unit Table,LUT)用于将逻辑设备名映射为物理设备名。

假脱机(输入出池、缓冲和进程)
以空间换时间,提高了I/O速度,将独占设备改造为共享设备;实现了虚拟设备的功能。

可以采用缓冲技术来缓解处理机与外部设备速度上的矛盾。
设备独立性是指用户在编程时使用的设备与实际设备无关,使程序运行不受具体机器环境的限制,便于程序移植。

本章疑难点

分配设备
分配控制器
分配通道

为使独占设备的分配具有更强的灵活性,提高分配的成功率,还可以从以下两方面对基本的设备分配程序加以改进

  • 增加设备的独立性
  • 考虑多通路情况

DMA控制方式与中断控制方式的区别:
(1)中断控制方式在每个数据传送完成后中断CPU,而DMA控制方式则在所要求传送的一批数据全部传送结束时中断CPU。
(2)中断控制方式的数据传送在中断处理时由CPU控制完成,而DMA控制方式则在DMA控制器的控制下完成。
(3)DMA方式以存储器为核心,中断控制方式以CPU为核心。
(4)DMA方式传送批量的数据,中断控制方式的传输则以字节为单位。

DMA与通道方式的区别:
在通道控制方式中,CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可以启动通道并使通道从内存中调出相应的通道程序执行。与DMA控制方式相比,通道控制方式所需的CPU干预更少,并且一个通道可以控制多台设备,进一步减轻了CPU的负担。

用于设备分配的数据结构有系统设备表(SDT)、设备控制表(DCT)、控制器控制表(COCT)和通道控制表(CHCT)

厂商所编写的设备驱动完成
(1)为磁盘读操作计算磁道、扇区和磁头
(2)向设备寄存器写命令

检查用户是否有权使用设备:应由于设备无关的操作系统完成。
将二进制证书转换成ASCII码以便打印:应由用户层来完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值