操作系统之期末速成

一、操作系统概述

1. 操作系统目标:

有效性、方便性、可扩充性、开放性

2. 操作系统作用:

为用户和计算机之间提供接口、管理计算机系统资源、实现对计算机资源的抽象

3. 操作系统发展:

人工操作方式、脱机输入输出方式、单道批处理系统、多道批处理系统、分时系统、实时系统。

单道批处理系统特点:
  • 自动性:磁带上的作业能自动逐个依此运行
  • 顺序性:各道作业是顺序进入内存,顺序完成操作(类似队列)
  • 单道性:内存中只有一道程序运行
多道批处理系统:

用户提交的作业都先放在外存排成一个队列,称为后备队列;之后,由作业调度程序按一定的算法从后备队列中选择若干作业调入内存,共享CPU和系统资源。

多道批处理系统的优缺点:
  • 优点:资源利用率高、系统吞吐量(单位时间内完成的总工作量)大
  • 缺点:平均周转时间(从作业进入系统,到完成并退出系统为止的时间)长,无交互能力。

4. 分时系统:

为了弥补多道批处理系统交互性问题,引入分时系统,可以将一台计算机提供给多个用户同时使用,提高计算机利用率。

分时系统的特点:
  • 多路性:宏观上,允许多用户同时工作。微观上,每个用户作业轮流运行一个时间片。
  • 独立性:每个用户各自一个终端
  • 及时性:用户请求可在较短时间内相应
  • 交互性:人机对话

5. 实时系统:

系统能及时响应外部事件的请求,在规定时间内完成对该事件的处理,并控制所有实时任务协调一致的运行。

实时系统与分时系统特点的区别:
特性分时系统实时系统
多路性与用户情况有关,时多时少信息采集与控制互不干扰
独立性终端用户独立专用服务程序交互
及时性较快速响应更严格要求
交互性全面人机交互限于专用服务程序
可靠性一般更高

6. 操作系统的基本特征:

1. 并发性:

并发性指的是多个事件在同一时间间隔内发生。并行性是多个事件在同一时刻发生。

  • 进程:指系统中能独立运行并作为资源分配的基本单位,由机器指令、数据和堆栈组成。
  • 线程:一个进程包含若干线程,利用进程的资源。进程是分配资源的基本单位,线程是独立运行和独立调度的基本单位。
2. 共享性:

即资源共享,有互斥共享方式、同时访问方式。

3. 虚拟技术:

分为时分复用技术、空分复用技术。

  • 如果虚拟的实现是通过时分复用方式,即对物理设备进行分时使用,设N是该设备所对应的逻辑设备数,则每台虚拟设备的平均速度必然小于等于1/N。
  • 类似,空分复用实现虚拟,空间利用也小于等于1/N。
4. 异步性:

进程的推进速度不可预知。

7. 操作系统五大功能

1. 处理机管理
  • 进程控制:为作业创建进程,撤销结束的进程,以及控制进程的状态转换
  • 进程协调方式:进程互斥、进程同步两种方式
  • 进程通信:
  • 调度:
    • 作业调度,即分配内存。将若干作业调入内存,为其建立进程,使之成为所需进程,并按一定规则插入就绪队列。
    • 进程调度:即分配CPU从进程的就绪队列中,按一定算法选出一个进程,为其分配CPU。
2. 存储器管理:
  • 内存分配:为每道程序分配内存空间
  • 内存保护:保证每道用户程序互不干扰
  • 地址映射:将地址空间的逻辑地址转换为内存空间的物理地址
  • 内存扩充:借助虚拟存储技术,从逻辑上扩充内存
3. 设备管理:
  • 缓冲管理:
  • 设备分配:根据用户进程的I/O请求,为之分配所需设备。
  • 设备处理:实现CPU与设备控制器之间的通信
4. 文件管理:
  • 文件存储空间管理:为每个文件分配外存空间
  • 目录管理:为每个文件建立目录项
  • 文件读写管理和保护
5. 操作系统与用户间的接口:
  • 用户接口
  • 程序接口

8. 操作系统结构设计

1. 传统的操作系统结构:
  • 无结构操作系统:
  • 模块化结构:将大的功能分为若干子功能,每个子功能为一个模块,再进一步细分,使之每一个模块只实现一个子功能。需要考虑模块的独立性,即模块的内聚性,耦合性。
  • 分层式结构:将一个操作系统分为若干层,每层由若干模块组成。各层之间只存在单向依赖关系,即高层仅依赖系统它的低层。保证系统的正确性,易于扩展,但效率低。
2. C/S模式

由客户机、服务器、网络系统构成。完成一次交互可分为:

  1. 客户发送请求信息
  2. 服务器接受信息
  3. 服务器反馈消息
  4. 客户机接受消息

此种模式实现了数据的分布存储,便于集中管理,可扩展性,但可靠性差。

3. 面向对象程序设计:
4. 微内核操作系统结构:

将操作系统分为:微内核和多个服务器。有如下功能:

  • 进程线程管理
  • 低级存储器管理
  • 中断和陷入处理

二、进程管理

1. 程序顺序执行的特征:

  • 顺序性:每一操作必须在上一个操作完成后开始
  • 封闭性:程序运行独立全部资源,不受外界影响
  • 可再现性:只要程序执行环境和初始条件相同,当程序重复执行时,结果相同

2. 程序并发执行的特点:

  • 间断性:并发执行的程序由于共享资源,以及为了完成同一任务相互合作,相互制约。将导致并发程序具有"执行"-“暂停”-"执行"间断性活动规律。
  • 失去封闭性:多个程序共享资源。
  • 不可再现性:由于失去封闭性,也就失去了再现性。即使执行环境和初始条件相同,结果却各不相同。

3. 进程的特征:

  • 结构特征:进程由程序段,相关数据段和PCB三部分组成
  • 动态性:进程的实质是进程实体的一次执行过程。而程序只是一组有序指令集合。
  • 并发性:多个进程同时存在于内存中,在同一时间段内同时运行。而程序不行。
  • 独立性:进程实体可以独立运行,独立分配资源和独立接受调度(线程)。而未建立PCB的程序不能作为一个单独的单位参与运行。
  • 异步性:指进程按各自独立的,不可预知的速度向前推进。

4. 进程的三个基本状态:

  • 就绪状态:进程已分配到除了CPU之外的所有必要资源,只要再获得CPU,便可立即执行。
  • 执行状态:进程已获得CPU,程序正在运行
  • 阻塞状态:进程的暂停状态称为阻塞状态。
进程的挂起状态:

当发生终端用户请求、父进程请求、负荷调节的需求、操作系统需求时,可以发生挂起。

进程状态转换:
创建 → 就绪 ↔ 执行 → 终止
        ↑    ↓
        ← 阻塞
  • 进程创建:首先创建一个PCB,将该进程转入就绪状态并插入就绪队列
  • 进程终止:首先等待操作系统进行善后处理,然后清空PCB,并将PCB空间返还系统。

5. 进程控制块(PCB)

PCB记录操作系统所需的,用于描述进程当前情况以及控制进程运行的全部信息。使得一个在多道程序环境下不能独立运行的程序成为一个可独立运行的基本单位。PCB是进程存在的唯一标识。

进程控制块信息:
  1. 进程标识符:
    • 内部标识符:为了方便系统使用。
    • 外部标识符:由创建者提供,由用户进程访问该进程时使用。
  2. 处理机状态:由处理机各种寄存器内容组成。
  3. 进程调度信息:
    • 进程状态
    • 进程优先级
    • 进程调度所需其他信息
    • 事件(阻塞原因)
  4. 进程控制信息:
进程控制块的组织方式:
  1. 链式方式:把同一状态的PCB用链接字链接成一个队列,形成就绪队列。
  2. 索引方式:根据进程状态建立索引表,在每个索引表中,记录有相应状态的某个PCB在PCB表中的地址。

6. 进程控制

  • 原语:由若干指令组成,用于完成一定功能的一个过程,是原子操作。在管态(核心态)下执行,常驻内存。
进程创建:

可以由进程树来描述,子进程可以继承父进程的所拥有的资源,当子进程被撤销时,应将其从父进程中获取的资源归还父进程。当父进程被撤销时,同时撤销子继承。

引起进程创建的事件:

在多道程序环境中,只有进程才能在系统中运行,为了能让程序运行,需要建立进程。引起进程创建的事件有:

  • 用户登录
  • 作业调度
  • 提供服务
  • 应用请求
进程创建步骤:
  1. 申请空白PCB
  2. 为新进程分配资源
  3. 初始化进程控制块
  4. 将新进程插入就绪队列
进程终止:
引起进程终止的事件:
  • 正常结束
  • 异常结束
  • 外界干预(父进程请求,父进程终止,操作系统干预等)
进程终止过程:
  1. 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。
  2. 若该进程处于执行状态,则立即终止其执行,并置调度状态为真,表示该进程被终止后重新进行调度。
  3. 若该进程还有子进程,则将其子进程终止。
  4. 将被终止进程的全部资源,或归还父进程,或归还操作系统。
  5. 将被终止进程的PCB从所在队列中移出。
进程的阻塞状态:

当正在执行的进程,发现阻塞事件时,由于无法继续执行,于是进程调用block原语把自己阻塞。进程的阻塞是进程自身的一种主动行为。

进程的唤醒过程:
  1. 首先将被阻塞的进程从等待队列中移出
  2. 将其PCB中的现行状态改为就绪
  3. 然后将PCB插入就绪队列
进程挂起与激活:
1. 挂起(Suspend)
  • 触发:系统/用户主动暂停
  • 动作
    • 内存 → 外存
    • 状态变"静止"(静止就绪/静止阻塞)
  • 特点:保留资源,被动行为
2. 激活(Activate)
  • 触发:恢复请求
  • 动作
    • 外存 → 内存
    • 状态去"静止"(恢复挂起前状态)
  • 特点:需重新竞争CPU
3. 核心对比
挂起阻塞
位置外存内存
触发外部强制自我请求
资源不释放可能释放
4. 状态转换口诀

“活动可被挂,静止等激活”

三、内存管理

1. 内存管理功能

  • 地址转换:逻辑地址→物理地址
  • 内存分配
    • 连续分配(固定分区/动态分区)
    • 非连续分配(分页/分段)
  • 内存保护:防止进程越界访问
  • 内存扩充:虚拟内存技术

2. 分配方式对比

类型特点碎片问题
固定分区预先划分大小内部碎片
动态分区按需分配外部碎片
分页固定大小页面少量内部碎片
分段按逻辑单位分配外部碎片

3. 分页vs分段

分页分段
划分依据物理需求逻辑结构
大小固定可变
优势内存利用率高便于共享和保护

4. 页面置换算法

  • OPT:理想算法(不可实现)
  • FIFO:先进先出(可能Belady异常)
  • LRU:最近最少使用(效果最好)
  • Clock:二次机会算法

四、文件系统

1. 文件结构

  • 逻辑结构
    • 流式文件(无结构)
    • 记录式文件(有结构)
  • 物理结构
    • 连续分配
    • 链接分配
    • 索引分配

2. 目录结构

类型特点示例
单级目录查找效率低早期系统
二级目录用户隔离多用户系统
树形目录支持子目录现代操作系统
图形目录允许共享网络文件系统

3. 磁盘调度算法

  • FCFS:先来先服务
  • SSTF:最短寻道时间优先(可能饥饿)
  • SCAN:电梯算法(双向扫描)
  • C-SCAN:单向循环扫描

五、设备管理

1. I/O控制方式

方式CPU干预程度特点
轮询简单但效率低
中断实时响应
DMA适合大批量传输
通道最低专用处理器控制

2. 缓冲技术

  • 单缓冲:基本缓冲单位
  • 双缓冲:解决速度不匹配
  • 循环缓冲:提高并发性
  • 缓冲池:动态分配缓冲区

3. 设备分配策略

  • 静态分配:进程运行前全部分配(不会死锁但效率低)
  • 动态分配:运行时按需分配(需死锁检测)

4. SPOOLing技术

  • 本质:虚拟设备技术
  • 组成
    1. 输入井/输出井
    2. 输入缓冲/输出缓冲
    3. 输入进程/输出进程
  • 优点:提高设备利用率
### 操作系统期末复习重点和总结 #### 1. 进程管理 进程管理的核心在于对多个相关进程执行顺序的协调,确保并发进程中能够合理共享系统资源并实现协作[^1]。这涉及以下几个方面: - **进程状态转换**:了解进程的状态模型及其转换机制(就绪、运行、阻塞)。 - **调度算法**:掌握常见的调度策略,如先来先服务(FCFS)、短作业优先(SJF)、轮转法(RR)以及多级反馈队列等。 - **死锁问题**:理解死锁产生的必要条件,并熟悉预防、避免和检测的方法。 #### 2. 存储器管理 存储器管理的目标是高效利用内存空间,减少外部碎片化的影响。以下是几个重要概念: - **虚拟内存技术**:通过页表映射的方式扩展物理地址空间,支持大容量应用程序运行。 - **页面置换算法**:学习几种典型的页面替换方法,比如最佳适配(Optimal Algorithm, OPT),最近最少使用(Least Recently Used, LRU)等[^4]。 - **连续与离散分配方式的区别**:比较单一连续分配、固定分区分配及动态分区分配的特点及其优缺点。 #### 3. 文件系统 文件系统的设计直接影响数据访问效率和服务质量,需注意以下要点: - **目录结构设计**:单层、两层或多层树形目录的优点分析。 - **磁盘I/O优化措施**:例如引入缓冲区或高速缓存以加速数据传输过程。 #### 4. 实时操作系统特性 对于特定应用场景下的RTOS而言,其主要特点体现在响应速度上。具体来说分为两类需求不同的场景——信息处理类注重用户体验感知范围内的延迟容忍度;而控制型则严格限定最大允许延时期限至极低水平(ms~μs级别)[^3]。 #### 5. 微内核架构概述 微内核并非传统意义上的完整OS实体而是作为构建其他更复杂功能模块的基础框架存在 。它具备如下属性 :仅保留最基本的服务接口集合 ,其余高级别抽象均由独立组件形式加载于用户态之上 ;遵循C/S模式运作原则并通过消息传递机制完成交互操作 [^2]. ```python def page_replacement_FIFO(pages, capacity): memory = [] hit_count = miss_count = 0 for page in pages: if page not in memory: if len(memory) >= capacity: removed_page = memory.pop(0) memory.append(page) miss_count += 1 else: hit_count += 1 return {"Hits":hit_count,"Misses":miss_count} ``` 上述代码展示了一个简单的 FIFO 页面淘汰模拟函数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值