简答题
缓存引入原因:
- 处理数据流的生产者和消费者之间的速度差异
- 协调传输数据大小不一致的设备
- 降低对 CPU 中断频率的要求,提高 CPU 和 IO 设备之间的并行性
设备缓存优点
- 降低对CPU中断频率的要求
- 放宽对中断响应时间的限制
- 提高CPU和IO设备之间的并行性
设备独立性
应用程序独立于具体使用的物理设备, 应用程序使用逻辑设备名, 系统实际执行时使用物理设备名
设备独立性好处:
- 应用与物理设备无关, 系统增减或变更外围设备时不需要修改应用程序
- 易于处理输入输出设备的故障
- 提高了系统的可靠性, 增加了设备分配的灵活性
设备独立性主要功能
- 执行所有设备的公有操作
- 向用户层软件提供统一的接口
SPOOLING 特点/主要作用
- 提高了IO速度
- 将独占设备改造为共享设备
- 实现了虚拟设备的功能
提高IO速度的方法
- 提前读
- 延迟写
- 优化物理块的分布
- 虚拟盘(RAM盘)
- 磁盘高速缓存
提前读的实现
- 系统根据用户现在请求的内容, 把预计不久可能要读取的内容和现在请求读的内容一起提前读入内存.
- 用户读取文件时通常时顺序读取文件内容, 文件的存放时按内容顺序放入磁盘块的
- 当下次访问已经提前读入内存缓冲的磁盘块时,就不需要容磁盘中读,而是直接容内存缓冲中读,这样就可以大大减少读磁盘数据的时间,提高磁盘IO速度
延迟写
延迟写是在支持请求分页的虚拟存储管理中,对修改过的换出页码, 在把页标记为换出页时不立马把页的内容写入磁盘,而是暂时保留在内存中 直到这些页所在的页框要被使用,导致页的内容将要被覆盖前才启动磁盘操作, 可以减少写磁盘的次数
操作系统的特征
- 并发(1)
- 共享(2)
- 虚拟(3)
-
异步(4)
-
两个或多个事件在同一时间间隔内发生
- 系统中的资源可供内存中多个并发执行的进程共同访问
- 虚拟是通过某种技术把物理实体变成若干个逻辑上的对应物
- 进程以不可预知的速度向前推进
中断
中断是改变处理器执行指令顺序的一种事件这样的事件与CPU芯片内外部电路产生的电信号相对应
中断原因
- 人为设置中断
- 程序性事故
- 硬件故障
- IO设备
- 外部设备
系统调用
系统调用是一群预先定义好的模块, 他们提供一条管道让应用程序或一般用户能够由此得到核心程序的服务
系统调用和一般函数区别 * 系统调用运行在系统态/核心态, 一般函数运行在用户态 * 系统调用时要进行中断处理, 多一些开销
系统线程和用户级线程
- 内核级线程切换有内核的线程调度程序完成, 用户级则是由用户线程包中的一个过程完成, 内核级的调度程序运行在系统态, 用户级的调度运行在用户态
- 内核级线程调度规则和进程调度相似, 用户级调度规则相对简单, 内核级切换慢, 用户级切换快
- 内核级线程进行系统调用只阻塞线程, 用户级线程的系统调用会阻塞线程所属的进程
- 内核级的cpu时间以线程位单位分配, 每个线程可以独享一个CPU时间片, 用户级线程的CPU以进程位单位, 所有线程共享一个CPU时间片
与进程的关系
- 资源调度
- 线程时程序执行的基本单位, 进程时拥有资源的基本单位
- 地址空间资源
- 不同的进程地址空间是相互独立的, 同一进程中的个线程共享同一地址空间
- 通信共享
- 进程间的通信必须使用操作系统提供的进程间通信模块, 而同一进程的各个线程可以直接读写全局变量来通信
- 并发性
- 多进程间可以并发执行, 多线程也可以并发执行
- 系统开销
- 进程的开销远大于线程的开销
基本条件/实时调度需要具备的条件
- 提供必要的调度信息
- 系统处理能力强
- 采用抢占式调度机制
- 具有快速切换机制
松弛度公式
松弛度用来表示一个实时进程的紧迫程度 \(L = T - T_c - T_s\) * \(T\) 截止时间 * \(T_c\) 当前时间 * \(T_s\) 进程还需要的时间 * 调度方式: 把进程按照松弛度排序, 让松弛度最小的进程位于就绪队列队首
虚拟存储器
虚拟存储器是指具有 请求调入功能 和 置换功能, 能从逻辑上对内存容量进行扩充的一种存储器系统
虚拟存储器好处
- 提高内存利用率
- 提高多道程序度
- 把逻辑地址空间和物理地址空间分开
虚拟存储器特征
- 离散性: 进程可以分散的存储在物理内存中
- 多次性: 不必把进程一次性全部装入内存
- 对换性: 在内存中的进程可以换出, 以腾出内存空间换入外存中的进程
- 虚拟性: 虚拟存储系统为用户提供了比实际物理内存大的逻辑内存空间 (最重要的目标)
基于分页的存储系统使用的分配和置换策略
- 固定分配局部置换
- 可变分配全局置换
- 可变分配局部置换
磁盘记录空闲块/簇
- 空闲簇链接表: 用一些空闲簇存放空闲簇的簇号, 一个簇存放尽可能多的空闲簇的簇号, 并专门留出最后几个字节存放指向下一个存放空闲簇的指针
- 位图:
用
n位位图对应磁盘的n个簇, 在位图中, 空闲簇用1表示, 已分配的簇用0表示
设备分配的两种算法的实现
- 先来先服务算法根据进程对某设备提出请求的先后顺序将这些经常排成一个设备请求队列, 总是把设备分配个队首进程
- 基于优先权算法形成队列时, 将优先级高的进程放在队列前面, 对于相同优先级的进程的请求则按先来先服务原则排队
线程控制的基本操作
- 线程创建
- 线程终止
- 线程的调度与切换
- 线程的阻塞与唤醒
重定位
重定位: 对目标程序中的指令和数据地址的 修改过程 * 静态重定位不需要硬件支持,而动态重定位需要硬件支持。 * 静态重定位:物理地址=逻辑地址+程序在内存中的起始地址。 * 动态重定位:物理地址=逻辑地址+重定位寄存器的值。
文件操作
- SEEK: 将位置指针指向文件特定的位置
- GETATTRIBUTES: 获取文件属性
- SETATTRIBUTES: 设置文件属性
- OPEN: 使用文件前必须先打开文件,将文件属性和文件的地址信息装入主存,以便后续对文件的访问中能快速获取文件信息
- CLOSE: 当存取存取结束后, 不再需要文件属性和地址信息,此时应该关闭文件以释放内部表空间
树形目录优点
- 便于文件的分类, 层次结构清晰
- 便于管理和保护, 解决了重名问题, 查找速度加快
用户态 系统态
- 用户空间是指用户进程所处的地址空间, 当CPU执行用户空间的代码时, 称该进程在用户态执行
- 系统空间是指含有一切系统核心代码的地址空间, CPU 执行系统核心代码时, 称进程处于系统台执行
实施系统抢占调度
- 基于时钟中断的抢占式优先权调度算法: 当某实时进程到达后虽然他的优先权比正在执行的进程高,但是系统也不立即抢占当前进程的 CPU, 而是等最近一次时钟中断到来, 才剥夺当前进程的CPU, 并分配给新到来的优先权高的实时进程
- 不足: 响应速度慢
程序顺序执行
- 顺序性
- 封闭性
- 可再现性
程序并发执行
- 间断性: 由于共享资源, 且资源少于并发执行的进程数量
- 失去封闭性: 并发执行时,共享资源导致系统状态不再是只有正在执行的程序才能看到
- 不再可现性: 由于失去封闭性导致的
信号量
为了对共享资源进行管理,操作系统引入了信号量机制 * 整型信号量: 是表示共享资源状态只能由特殊的原子操作改变的整型量 * 记录型信号量 * AND型信号量: 将整个进程在整个运行过程中所需要的全部资源一次性的全部分配给进程
内存链接表分配文件存储方式
- 将文件所在的的磁盘的簇号存放在内存的表中.
- 访问文件只需要从内存分配表中顺着某种连接关系查找簇号, 在目录项中只需记录记录文件的第一块数据所在簇的簇号,根据它查找到文件的所有块
使用 磁盘链接表 分配文件存储方式
- 为每个文件构造簇的链接表, 每个簇的开始几个字节用来存放下一个簇的簇号, 其他部分存放数据. 每个文件可以存放在不连续的簇中
- 优点: 充分利用每个簇
- 缺点: 随机存取相当缓慢
使用 i-节点 分配文件存储方式
- 为每个文件赋予一个被称为i节点的数据结构, 其中列出了文件属性和文件块的磁盘地址
- 访问文件时,找到文件所在的目录文件, 从该文件对应的目录项找到文件的i节点号,根据i节点号从磁盘中将i节点信息读入内存,文件在磁盘肿的地址信息都存放在i节点中