第 157~180 题:操作系统

📚 本文是 信息基础大赛(10.29 备赛)的第 9 篇,题目以截图为主、文字为点拨。 💡 本篇是题目截图 + 点拨式备赛笔记。要系统学透对应知识,配合:操作系统总览

暂时不深入 碰到什么查什么 零零碎碎整合在一起也能懂些东西

操作系统(Operating System,简称 OS)是一种系统软件,它是计算机硬件和应用软件之间的中介,负责管理计算机系统的硬件资源、提供用户与计算机的接口,并执行各种系统任务,以确保计算机系统的正常运行和用户程序的执行。操作系统是计算机系统的核心组件,扮演着多个重要角色。

image984 image985 image986 image987

做什么

操作系统在计算机系统中扮演了调度和协调各种硬件和软件组件的关键角色,以提供一个稳定、高效、安全和易用的计算环境。不同的操作系统可能在功能和实现细节上有所不同,但它们都致力于提供这些核心功能来管理和优化计算机系统的运行。

处理机管理(Process Management):

操作系统负责管理进程和线程的创建、调度、终止和同步。它确保多个程序能够同时运行,并分配处理器时间片给不同的任务,以实现多任务处理。

存储器管理(Memory Management):

操作系统管理计算机的物理内存,分配和回收内存空间以供程序使用。它还处理虚拟内存、页面交换和内存保护,以确保程序之间的隔离和资源的有效使用。

image988

设备管理(Device Management):

操作系统管理和控制计算机的硬件设备,包括输入/输出设备、磁盘驱动器、网络接口等。它负责设备的初始化、调度、中断处理和错误处理。

文件系统管理(File System Management):

操作系统提供文件系统来组织和管理数据,包括文件的创建、读取、写入、删除和权限控制。文件系统也负责数据的存储、检索和备份。

用户界面(User Interface):

操作系统提供用户与计算机系统进行交互的方式,包括命令行界面和图形用户界面(GUI)。用户界面使用户能够执行程序、管理文件、设置系统参数等。

安全性和权限管理(Security and Authorization):

操作系统负责实施安全策略,确保数据和资源的保密性和完整性。它控制用户和程序的权限,以防止未经授权的访问和操作。

错误处理与故障恢复(Error Handling and Fault Tolerance):

操作系统具有故障检测和恢复机制,可以处理硬件故障、软件错误和异常情况,以维护系统的可用性和可靠性。

分类

image989

分时操作系统(Time-Sharing Operating System):

支持多用户同时访问的操作系统:把处理器时间分成短时间片,轮流执行各用户的进程。用户通过终端/远程连接交互。典型:UNIX、Linux、Windows Server。

  • 多用户:每个用户独立账户、独立权限,任务和数据相互隔离(安全和隐私)
  • 多任务:多任务/进程并发,各拿各的时间片,由调度程序按优先级/时间片切换——用户感觉"同时"在跑多个程序
  • 时分共享(Time Division Multiplexing):每人轮流执行一小段,避免竞争
  • 资源公平管理:处理器时间、内存、文件、设备公平分配,防止独占
  • 安全性:身份验证 + 访问控制
  • 中断处理:响应输入、设备状态变化等事件,唤醒等待任务

适用:办公套件、编程环境、数据库管理等多任务应用。

image990 image991 image992 image993 image994 image995 image996

批处理操作系统(Batch Processing Operating System):

成批处理作业、无需用户交互:接受作业队列,按顺序自动执行并输出结果。例:IBM z/OS(大型机)、OS/360、OS/370、OS/390。

  • 无需用户交互:作业预先配置好,系统按设定顺序自动执行
  • 作业队列:等待执行的作业列表,通常 FIFO,也可按优先级排序
  • 无需人员介入:提交后由系统负责加载、执行、监视、完成
  • 作业控制语言(JCL):用特定语言定义作业执行顺序、输入输出文件、参数——实现自动化
  • 监视和错误处理:检测错误/异常/中断,可自动重跑失败作业或生成报告

适用:大规模数据处理(批量导入、报表生成)、批量任务(打印、文件转换、备份)。早期大型机时代的主力,现在数据中心仍有应用。

image997

实时操作系统(Real-Time Operating System):

专门为任务响应时间有严格要求的场景设计——对外部事件做出实时保证。例:VxWorks、QNX。用于嵌入式系统、控制系统等。

分两大类(考点):

  • 硬实时(Hard Real-Time):任务必须严格在时限内完成,否则灾难性后果——飞行控制、医疗设备(心脏起搏器)、工业自动化
  • 软实时(Soft Real-Time):时限要求宽松些,超时影响体验但不出事故——多媒体、实时通信、游戏

特性:可预测的延迟;常采用静态优先级/周期性任务调度;完善的资源分配与中断响应机制。

应用:航空航天(飞行控制、导航、卫星)、医疗(监测、手术机器人、起搏器)、汽车交通(车控、信号灯、自动驾驶)、工业自动化(机器人、产线)、通信、游戏多媒体(实时渲染、音频)。

image998 image999 image1000 image1001 image1002 image1003 image1004

网络操作系统(Network Operating System):

管理计算机网络、提供网络服务和资源的操作系统,常见于路由器、交换机、防火墙等网络设备。例:Cisco IOS(思科设备)、Junos OS(Juniper 设备)。

  • 管理网络设备功能:路由、交换、流量控制、安全(提供 CLI/界面配置监视)
  • 提供网络服务:路由、DNS、DHCP、防火墙、VPN
  • 网络资源管理:IP 分配、带宽管理、拓扑管理、流量/性能/故障监视
  • 支持多管理员同时管理;含访问控制、身份验证、加密、审计
  • 可扩展(加新功能/协议/插件);不同厂商的 NOS 各有特定命令(Cisco IOS ≠ Junos OS)
image1005

单用户单任务操作系统(Single-User, Single-Tasking Operating System):

这种操作系统只允许一个用户执行一个任务,不支持多任务处理。它通常用于早期的个人计算机和嵌入式系统。

单用户多任务操作系统(Single-User, Multi-Tasking Operating System):

这种操作系统允许一个用户同时执行多个任务。常见的桌面操作系统如 Microsoft Windows 和 macOS 属于这个类别。

多用户多任务操作系统(Multi-User, Multi-Tasking Operating System):

这种操作系统允许多个用户同时执行多个任务,通常用于服务器和大型计算机。UNIX、Linux 和 Windows Server 都属于这个类别。

分布式操作系统(Distributed Operating System):

分布式操作系统用于管理分布在多台计算机上的资源,以便在网络中协同工作。它们支持分布式计算、文件共享和协同处理。例如,Google 的 Android 操作系统具有分布式特性。

image1006 image1007

操作系统基础

进程线程

进程(Process):

进程是正在运行的程序的实例——包含程序代码、数据和系统资源副本(内存、文件描述符、寄存器)。

  • 独立地址空间:进程之间不能直接访问对方内部数据 → 稳定性和安全性
  • 进程间通信靠 IPC 机制
  • 进程是操作系统资源分配的基本单位

线程(Thread):

线程是进程内的执行单元,一个进程可含多个线程——共享进程的地址空间和资源(内存、文件句柄)。

  • 轻量级进程:创建/销毁开销小,比进程更高效
  • 同进程内线程直接共享数据,通信方便
  • 多线程协作并发执行 → 提高响应性

进程 vs 线程要点:

  • 多线程进程:线程共享进程资源、协同工作、并发执行
  • 线程安全:多线程同时访问共享数据需要同步机制(防数据竞争和不一致)
  • 进程内通信/同步比进程间更高效(共享同一内存空间)
image1008 image1009 image1010 image1011

进程的几个状态

新建状态(New):

进程被创建后,它处于新建状态。在这个阶段,操作系统会为进程分配必要的资源,并初始化进程的控制块。一旦资源分配完成,进程将进入就绪状态,等待被调度执行。

就绪状态(Ready):

就绪状态表示进程已准备好执行,但由于多任务处理的机制,可能有其他进程正在执行,因此它必须等待其轮到。在就绪状态下,进程在就绪队列中等待被调度执行。

运行状态(Running):

运行状态表示进程正在执行其指令,占用 CPU 时间。在多任务处理环境中,通常只有一个进程处于运行状态。进程将在CPU执行完其时间片后返回到就绪状态。

阻塞状态(Blocked):

阻塞状态表示进程由于等待某种事件(如I/O操作的完成或信号的触发)而被阻塞。在这个状态下,进程不会占用 CPU 时间,直到满足等待条件才会返回到就绪状态。

这些是典型的进程状态,它们构成了进程的生命周期。在实际的多任务处理环境中,进程可以在这些状态之间不断切换。操作系统的调度程序负责决定哪个进程应该在某一时刻运行,以优化资源利用和满足不同进程的执行需求。操作系统内核维护进程的状态信息,并根据其状态来管理进程的切换和资源分配。

image1012 image1013 image1014

进程调度

进程调度:决定多任务环境中哪个进程获得 CPU 时间片执行。目标:最大化资源利用、提高性能、保证公平、满足响应时间、避免死锁。

常见调度算法(考点):

  • 先来先服务(FCFS):按到达顺序调度,不考虑执行时间
  • 最短作业优先(SJF):选执行时间最短的——最小化平均等待时间
  • 轮转调度(Round-Robin):按时间片轮流执行,适合多任务环境
  • 优先级调度(Priority Scheduling):按优先级选最高者
  • 多级反馈队列(Multilevel Feedback Queue):多个优先级队列,按响应/执行时间动态调整优先级

调度策略

  • 非抢占式:进程主动释放 CPU 才切换(FCFS、SJF 属此类)
  • 抢占式:系统可随时中断当前进程换别的(轮转、优先级调度属此类)

调度器(处理机)负责按算法和策略选出下一个进程并切换;调度参数(时间片大小、优先级分配)影响性能。

image1015 image1016 image1017 image1018 image1019 image1020

作业

多道程序设计中,一个作业(job)的生命周期有四种状态:

  • 提交状态:作业已提交给操作系统,但尚未开始执行、未分配资源
  • 等待状态:已接受并分配部分资源,但暂时无法执行(等 I/O、等资源、等其他作业)
  • 运行状态:获得足够资源,正在执行
  • 完成状态:执行结束,结果被收集记录,系统资源被释放

作业调度器和内核负责状态转换和作业切换,实现资源的高效利用。

image1021 image1022 image1023 image1024 image1025 image1026 image1027

程序的局部性理论

关于程序内存访问行为的重要理论(缓存效率的根基):

  • 时间局部性:刚被访问过的数据/指令,不久的将来可能再次被访问——程序倾向于短期内反复访问同一组数据 → 缓存有效
  • 空间局部性:某数据/指令被访问,其附近的数据/指令也可能被访问——程序倾向按连续地址访问 → 缓存保留邻近数据有利
  • 引用局部性:时间+空间局部性的结合——程序通常访问一组相关数据而非随机访问

意义:指导缓存系统和内存层次结构设计——预测该缓存什么;编程和算法设计也应利用局部性,减少内存访问开销。

image1028

内存管理

虚拟存储器

虚拟存储器:把部分程序/数据放在辅存(硬盘)上、需要时才调入主存——用硬盘扩展 RAM,让系统能运行比物理内存更大的程序。

  • 虚拟地址空间:每个进程有独立的、大于实际物理内存的地址空间(装程序、数据、堆栈)
  • 页与页表:内存划分为固定大小的页(常见 4KB),物理内存分为同样大小的页框;页表记录虚拟页↔物理页框映射
  • 分页机制:访问虚拟页 → 查页表找物理页框;不在内存 → 页面调度(从辅存调入)
  • 页置换算法:内存不足时选页换出(LRU、FIFO、Clock 等)
  • 惰性加载:首次访问才加载;页面被修改才写回辅存

优势:能跑更大程序;多进程各用各的地址空间;内存按需分配不需连续;独立地址空间带来更好的内存保护。

image1029 image1030 image1031 image1032 image1033

段页式管理

段页式管理 = 分段 + 分页结合的内存管理:逻辑地址空间分为多个(代码段、数据段、堆栈段等),每个段再划分为固定大小的(通常 4KB 或更大)——页是内存分配的最小单位,段是逻辑地址空间的最小单位。

逻辑地址 → 物理地址两步:

  1. 段选择:确定访问的是哪个段(程序的哪一部分)
  2. 页表查找:查该段相关的页表,把逻辑页号转成物理页号,得到实际内存地址

优点:

  • 灵活:不同段可有不同大小,适应不同程序
  • 内存保护:每段有自己的页表,段间互不干扰
  • 内存利用率高:分页后无需连续内存块
  • 支持多道程序:各程序地址空间独立

代价:需要复杂硬件支持和更多管理开销(要维护多个页表)。

image1034 image1035 image1036 image1037

请求调页

请求调页是一种虚拟存储器管理技术,用于将进程的页面从辅助存储(通常是硬盘)加载到主内存(RAM)中,以满足进程的内存访问需求。请求调页是虚拟存储器中的一部分,允许进程访问大于实际物理内存的地址空间。当进程尝试访问未加载到内存中的页面时,会触发页面缺失(Page Fault),此时请求调页机制将被激活。

请求调页的基本思想是按需加载页面,而不是把整个进程全装进内存。进程访问未加载的页面 → 触发页面缺失(Page Fault) → 操作系统把所需页面从辅存调入内存;若内存已满 → 先用页面置换算法选一个页面换出腾位置。

常见页面置换算法(考点):

  • OPT(最佳置换):淘汰"以后再也不用/最远将来才用"的页面——理论最优,但需要预知未来,无法实现,用作评价基准
  • FIFO(先进先出):淘汰最早进入内存的页面——简单;可能出现 Belady 异常(页框数增加,缺页次数反而增加)
  • LRU(最近最久未使用,Least Recently Used):淘汰最长时间未被使用的页面——性能接近 OPT,但要维护使用历史,开销较大
  • Clock(时钟算法):环形队列 + 引用位,近似 LRU,开销小
  • LFU(最不经常使用,Least Frequently Used):淘汰使用频率最低的页面,需要计数器记录频率
image1038 image1039 image1040 image1041

可变分区内存管理

可变分区:内存分区大小不固定,按进程需求动态分配和回收(对比:固定分区把内存划成固定大小的块)。

  • 动态分配/回收:进程要内存时找足够大的空闲块分配;不用时释放
  • 碎片问题
    • 内部碎片:分配给进程的内存块比实际需要大 → 块内浪费
    • 外部碎片:未分配的小块分散在各分配块之间,加起来够大但各自不够用 → 无法分给新进程
  • 内存分配算法(考点):
    • 首次适应:找第一个够大的块——快,但可能外部碎片多
    • 最佳适应:找最小的够大块——省空间,但分配慢、易产生小碎块
    • 最坏适应:找最大的块——剩余碎片也大,便于后续利用
  • 紧凑(Compact):把已分配块向一端移动,拼合空闲空间,减少外部碎片
  • 分区大小随分配/回收动态变化;必要时定期做碎片整理
image1042 image1043 image1044 image1045

多任务处理与同步

临界区

临界区:多线程/多进程环境中访问共享资源的那段代码,一次只允许一个线程/进程进入,防止竞争条件(Race Condition)和数据不一致。

  • 竞争条件:多个执行流同时访问共享资源且没有同步 → 结果不可预测
  • 解决:用同步机制(互斥锁、信号量、条件变量)保证互斥进入

典型结构:

lock(mutex);      // 进入临界区:拿锁,拿不到就阻塞等待
// ... 操作共享资源 ...
unlock(mutex);    // 离开临界区:释放锁,别的线程才能进

处理不好会导致数据损坏、死锁、性能问题。

image1046

管态 目态 系统态

⚠️ 原文两个定义写反了,已修正:

  • 管态(supervisor mode,又称内核态/系统态):操作系统内核运行的状态——特权级最高,可以执行特权指令、访问所有资源和硬件、管理整个系统。只有内核运行在管态;进入管态通常靠中断或系统调用触发特权级切换
  • 目态(user mode,又称用户态):用户程序的执行状态——只能访问受限资源、执行受限指令,不能直接访问硬件、不能执行特权指令(保护内核和系统资源不被恶意/不当程序破坏)

记忆:管 = 管事的(内核),目 = 被管的(用户程序)。"系统态"一般就是指内核在管态下运行的状态。

image1047 image1048

死锁

死锁(Deadlock):多个进程/线程互相等待对方占有的资源,谁都无法继续执行。四个必要条件(考点,缺一不可):

  • 互斥:资源一次只能被一个进程占用
  • 占有并等待:进程占有至少一个资源,同时等待其他资源,且等待期间不释放已占有的
  • 不可剥夺:资源只能由占有者主动释放,不能被强行夺走
  • 环路等待:存在等待链形成闭环(进程 A 等 B、B 等 C……最后又等回 A)

破坏任意一个条件即可预防死锁:

  • 通过资源分配策略、释放策略、调度策略,保证四个条件不同时成立
  • 或用死锁检测与恢复:发现死锁后终止某些进程释放资源
image1049 image1050 image1051 image1052 image1053 image1054 image1055 image1056 image1057 image1058 image1059 image1060 image1061

文件系统

文件系统是操作系统中管理和组织存储设备上数据(文件和目录)的部分。核心概念:

  • 文件和目录:数据组织为层次结构——文件是数据容器,目录组织管理文件
  • 文件命名:基本名称 + 扩展名(表示类型)
  • 文件属性:大小、创建/修改日期、访问权限等
  • 访问权限:控制谁能读/写/执行——通常按用户、组、其他三类设置
  • 常见文件系统类型(考点):
    • NTFS:Windows 常用,支持压缩、加密、权限控制
    • ext4:Linux 广泛使用
    • HFS+:苹果旧文件系统;APFS:苹果新一代(新版 macOS/iOS)
    • ZFS:高级文件系统(数据完整性、弹性存储、快照)
  • 磁盘分区与格式化:存储设备可分多个分区,每分区一个文件系统;格式化 = 在设备上创建文件系统结构(会清数据)
  • 簇/块:分配文件数据的小单元,文件占多个簇
  • 硬链接 vs 符号链接:硬链接 = 多个位置共享同一数据块;符号链接 = 指向另一文件/目录的快捷方式
  • 磁盘配额:限制用户/组的最大存储空间
  • 快照:记录文件系统某一时刻状态,不影响当前数据
  • 数据一致性:崩溃/故障时不丢数据——原子写、日志(journaling)、校验和
  • 网络文件系统:NFS、SMB/CIFS——网络访问共享文件
image1062 image1063 image1064 image1065 image1066 image1067 image1068 image1069 image1070 image1071 image1072

FAT

FAT(File Allocation Table,文件分配表):Microsoft 开发的文件系统,最早用于 DOS,后用于 Windows 早期版本——以简单、易实现、跨平台兼容著称。

  • 文件分配表:核心组件(通常有两份以上副本),记录每个的使用情况,跟踪文件存储位置
  • :存储设备分成簇(每簇含多个扇区),文件按整数个簇存储;簇大小可按容量和格式化选项调整
  • 8.3 文件名约定:主名最多 8 字符 + "." + 扩展名最多 3 字符;目录分层结构
  • 跨平台:Windows、macOS、Linux 都能读写
  • 版本:FAT12、FAT16、FAT32——FAT32 最常见,支持较大设备和文件
  • 限制:FAT32 单文件最大 4 GB,大文件/大容量设备表现不佳 → 移动存储(U盘、SD卡)常用,现代 Windows 主用 NTFS;大容量场景用 NTFS/exFAT 更合适
image1073 image1074

计算有些复杂 记答案 都选c

IO操作

I/O 操作 = 程序与外部设备(硬盘、打印机、键盘、显示器等)之间的数据传输。关键概念:

  • 同步 I/O:发起后等待完成才继续——期间程序被阻塞
  • 异步 I/O:发起后继续干别的,完成后系统通知
  • 缓冲 I/O:数据先缓存到内存再传输(批量读写提高性能)
  • 直接 I/O:不经内存缓冲直达设备(省内存开销,性能可能受影响)
  • 文件 I/O:读/写文件(打开 → 定位指针 → 读写)
  • 网络 I/O:套接字(Socket)编程实现网络通信
  • 设备 I/O:与设备通信获取数据(读)、执行操作(控制)
  • 文件描述符/句柄:操作系统用来标识和管理打开的文件与 I/O 操作
  • 缓存:内存缓存减少磁盘/网络访问次数
  • DMA(Direct Memory Access):外部设备直接访问内存,减少 CPU 干预,提高传输速度(考点)
image1075 image1076 image1077 image1078

SPOOLing

SPOOLing(Simultaneous Peripheral Operation On-Line,外围设备联机操作):用磁盘缓冲 + 排队让慢速 I/O 设备(典型:打印机)实现"虚拟并行",减少主机等待、提高吞吐量。

组成与机制:

  • 任务队列:接收并排队等待 I/O 的任务
  • 输入缓冲区:先收下任务输入数据,任务立即提交不用等设备
  • 输出缓冲区:暂存输出数据,任务继续执行不用等设备就绪
  • 后台进程:从队列取任务,在缓冲区与外部设备之间搬运数据——I/O 在后台进行,不阻塞主机
  • 任务调度:决定任务优先顺序

典型例子:打印 SPOOLing——多个用户同时提交打印任务,进队列由系统管理,打印机按序慢慢打。

对多用户系统特别有用:大家都不用等设备,各自觉得"独占"了设备。

image1079 image1080 image1081

虚拟设备

虚拟设备:用软件模拟物理设备,让系统像用真实硬件一样使用"虚拟版"设备。常见形式:

  • 虚拟机:一台物理机跑多个虚拟操作系统,各有虚拟 CPU/内存/硬盘——测试、开发、服务器虚拟化
  • 虚拟存储设备:虚拟磁盘映像、虚拟内存(硬盘扩 RAM)、云存储
  • 虚拟网络设备:虚拟交换机/路由器/防火墙——模拟网络拓扑、测试安全策略
  • 虚拟打印机:打印任务转成文件/图像,以后再打印或共享
  • 虚拟音频设备:模拟音频输入输出(音频编辑、游戏、虚拟会议)
  • 虚拟 USB 设备:模拟 U 盘、键盘、鼠标等做测试开发
  • 虚拟控制器:模拟游戏手柄、飞行摇杆等
image1082

实现靠软件和驱动程序模拟硬件功能——为测试、开发、仿真和资源扩展提供灵活性。

image1083

其他

image1084 image1085 image1086 image1087 image1088 image1089 image1090 image1091 image1092 image1093 image1094 image1095 image1096 image1097 image1098 image1099 image1100 image1101 image1102 image1103 image1104 image1105

⬅️ 上一篇 🏠 00-信息基础大赛 ➡️ 下一篇