news 2026/3/2 1:52:57

【总结】【OS】由操作系统完成的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【总结】【OS】由操作系统完成的
场景/操作由操作系统完成(OS的责任)不由操作系统完成(易混淆点)备注/易混淆点说明
中断相关操作1.中断响应后的现场保护将PSW、PC等压入系统栈)。
2.分析中断原因,并转入相应的中断处理程序
3.执行中断服务例程(如设备驱动、系统调用处理)。
4.中断返回前的现场恢复,并可能进行进程调度
1.中断信号的触发(由硬件设备或CPU异常自动产生)。
2.硬件自动完成的第一步:硬件自动保存断点(PC)和状态(PSW)到核心栈。
3.用户程序直接处理中断(不可能,中断处理全程为核心态)。
关键分界线硬件负责检测和初始响应(保存最小现场,转入内核态)OS负责识别、执行完整处理和恢复。整个中断处理过程在核心态下进行。
终止进程1.回收进程所占用的所有资源内存、文件、I/O设备等)。
2.更新系统数据结构:将进程状态改为“终止”,从就绪/阻塞队列移除,并可能通知其父进程。
3.销毁进程控制块(PCB),最终释放PCB存储空间。
4.进行进程调度,选择下一个要运行的进程。
1.进程自己执行“退出”操作(如调用exit()系统调用)。这进程自身行为,但该调用会陷入内核将控制权交给OS
2.释放其用户地址空间内的内存(此释放操作由OS的内存管理模块执行,不属于进程自己的能力)。

易混淆:进程发起终止,但资源回收和清理工作必须由OS完成。进程无法自行从系统级数据结构中彻底抹去自己。

补充:终止子进程不是OS在终止进程时的必需操作。通常子进程由init进程接管,除非显式设置父子联动终止。(进程发起终止,但资源回收和清理必须由OS完成。子进程通常成为孤儿进程,被init进程收养,而非随父进程强制终止)

支持页式存储的进程切换1.保存旧进程的上下文通用寄存器、状态等,PC和SP属于上下文的一部分)到其PCB。
2.更新内存管理数据结构:将旧进程的页表指针(如CR3寄存器)保存到PCB,将新进程的页表指针加载到MMU。
3.处理TLB相关事宜:可选地刷新整个TLB,或使用ASID标记避免刷新。
4.切换内核栈,更新当前进程PCB指针。
5.恢复新进程的上下文,并开始执行。
1.具体的地址转换过程(由MMU硬件完成,查找页表、检查权限、形成物理地址)。
2.缺页异常/页面错误的检测(由MMU硬件在转换过程中发现无效位、权限不符时触发)。
3.TLB的查找与填充(由MMU硬件自动完成,OS负责在页表变更后维护TLB一致性)。
核心分工
-OS:管理页表内容、决定谁用物理页、在切换时告诉硬件用哪套页表
-硬件(MMU):使用OS设置的页表,自动进行虚拟到物理的转换。
易错点:认为“切换页表”或“处理缺页”是纯OS行为。实际上,缺页是由硬件触发的中断,OS响应并处理
  • 进程终止:OS确保资源回收和系统状态一致性,但不保证子孙进程的连带终止。这是“孤儿进程”机制的基础。

  • 进程切换(含页式):必须保存/恢复完整硬件上下文(包括PC、SP、PTBR等),以及管理地址空间映射的切换。这属于OS的底层调度职责。

考察了OS职责的边界确定性:哪些是OS必须做的(资源管理、上下文切换),哪些是OS不一定做的(如终止子进程)

  • 分界线原则硬件负责具体执行和自动检测(执行指令、触发中断、地址转换),操作系统负责管理、决策和复杂处理(资源管理、调度、异常处理程序)。

  • 特权级原则:凡是需要访问或修改系统核心数据结构(如PCB链表、页表、设备队列)的操作,都必须由在核心态下运行的操作系统完成。用户进程(用户态)无法直接操作。

  • 页式存储相关:务必分清“页表管理”(OS)和“地址转换”(硬件)。进程切换时,OS只是切换了页表基址寄存器,后续无数次的地址转换都是MMU自动完成的。

  • 进程终止:进程可以自愿结束生命(调用exit),但不能亲自料理自己的后事。资源回收、注销身份(PCB)必须由“殡葬师”(OS)来完成。

场景/操作由操作系统完成(OS的责任)不由操作系统完成(易混淆点)核心考点与易混淆点说明
系统调用执行过程1.陷入处理:接收用户程序的软中断/陷入指令,切换到核心态。
2.参数验证与传递:检查用户传递的参数合法性,从用户栈复制到内核栈。
3.执行内核服务例程:根据系统调用号查找并执行对应的内核函数(如文件读写、进程创建等)。
4.返回结果:将执行结果(或错误码)返回给用户程序,并恢复用户态执行。
1.发起系统调用:由用户程序通过库函数(如read())调用,最终执行int 0x80syscall等指令触发陷入。
2.库函数包装:标准库(如C库)提供的封装函数,不属于OS内核,但常与系统调用混淆。
关键分界:用户程序请求服务,OS验证并执行服务。整个系统调用处理在核心态进行。陷阱指令是硬件行为,但陷入后的处理是OS责任。
动态内存分配(用户态)1.维护进程的堆空间:通过brk/sbrk系统调用调整进程数据段结束地址(堆顶)。
2.提供内存分配系统调用:如mmap可用于映射大块内存或文件。
3.内核级的物理内存管理:为进程分配/回收物理页框。
1.用户态内存分配器的管理:如malloc/free的实现(在glibc等库中),管理用户堆空间内的空闲块链表等。这些运行在用户态,不属于OS内核。
2.具体的堆内内存使用与释放:由程序员或垃圾回收器(如Java GC)在用户态决定。
经典混淆malloc/free是库函数,不是系统调用。它们使用OS提供的brk/mmap等系统调用来获取/释放内存,但日常的分配/释放管理在用户态完成。
页面置换(缺页处理中)1.选择被置换的页面:执行页面置换算法(如LRU、CLOCK)选择牺牲页。
2.页面写回:若牺牲页被修改(脏页),安排将其写回磁盘。
3.更新页表:将牺牲页的页表项置为无效,新页的页表项填入物理页框号并设为有效。
4.从磁盘调入所需页面:启动磁盘I/O,将所需页面读入内存空闲帧。
1.缺页异常的检测:由MMU硬件在地址转换时发现页表项无效位=1触发。
2.具体的磁盘I/O操作:由磁盘控制器硬件执行,OS仅发出I/O命令。
3.TLB更新:当OS修改页表后,需要使TLB中对应项无效,这个使无效命令由OS发出,但TLB硬件的具体刷新由硬件完成。
重要考点:整个缺页处理是中断响应过程,由硬件触发,OS处理。页面置换算法是OS实现的决策逻辑。注意区分“选择置换谁”(OS算法)和“具体换入换出操作”(OS发起I/O,硬件执行)。
设备管理(I/O操作)1.设备驱动程序:提供统一的设备操作接口,将OS请求转换为设备控制命令。
2.I/O调度:对磁盘等设备的I/O请求进行排序(如电梯算法)以提高性能。
3.缓冲区管理:在内核空间设立缓冲区,减少设备I/O次数,解决速度不匹配。
4.设备分配与回收:跟踪设备状态,分配设备给进程,避免冲突。
1.具体的I/O命令执行:由设备控制器硬件执行,如磁盘旋转、磁头移动、数据读写。
2.DMA传输的控制:OS设置DMA控制器的参数(内存地址、传输长度等),但数据传输本身由DMA硬件完成,无需CPU干预。
3.用户程序的I/O请求:用户程序调用库函数,最终通过系统调用请求I/O。
核心思想:OS管理设备,提供抽象接口,处理缓冲、调度等高级功能。硬件执行具体操作。DMA传输中,OS负责初始化和善后,传输过程硬件独立完成。
文件系统操作(如打开文件)1.路径名解析:将路径名分解,逐级查找目录,找到文件控制信息(如inode)。
2.权限检查:检查进程是否有权限访问该文件。
3.分配文件描述符和打开文件表项:在进程和系统级打开文件表中创建条目,维护文件打开状态。
4.管理文件控制块(如inode):维护文件元数据(权限、大小、位置等)。
1.磁盘块的读写:具体的数据读写由磁盘驱动程序、磁盘控制器硬件完成。
2.用户程序的文件操作调用:如fopenread等库函数,它们封装系统调用。
3.目录文件的存储格式:虽然格式由OS设计,但目录文件本身的存储和读写与其他文件一样,依赖底层存储设备。
易错点:路径解析、权限检查等是OS在打开文件过程中必须完成的。文件数据内容本身并不在“打开”时全部读入内存。文件描述符是OS管理的进程资源。
进程同步(如信号量操作)1.提供同步原语:如信号量、管程的实现,保证这些原语的原子性执行。
2.维护等待队列:当进程阻塞在信号量上时,OS将其放入等待队列,并切换进程。
3.进程调度切换:在P操作导致阻塞、V操作唤醒等待进程时,OS执行调度程序。
1.用户程序中的同步逻辑:程序员决定在哪里使用P/V操作,以及信号量的初始值。
2.硬件原子指令:信号量底层依赖硬件提供的原子指令(如Test-and-Set)来实现,但这些指令只是工具,完整的同步机制由OS利用这些工具构建。
关键区分:信号量本身是一个内核对象(通常),其P/V操作是系统调用或由OS支持的原子操作。OS负责管理等待队列和进程状态变更。硬件仅提供最底层的原子读-修改-写指令。
进程通信(如消息传递)1.维护通信通道:如消息队列、管道、共享内存区的内核数据结构。
2.保证通信的同步与互斥:协调发送与接收进程,处理阻塞与唤醒。
3.内核中的消息复制:在内核缓冲区中暂存消息,从发送进程地址空间复制到接收进程地址空间(对于消息队列)。
1.共享内存的用户态访问:一旦OS建立了共享内存映射,进程可以直接在用户态读写该内存区域,无需OS干预每次访问。
2.用户程序的通信逻辑:谁发送、谁接收、发送什么内容,由应用程序决定。
重要区别:消息传递通常涉及内核作为中转(复制),而共享内存则只在内核建立映射,后续访问无内核参与。管道是内核维护的缓冲区,其读写涉及系统调用和内核复制。
启动过程(从加电到用户界面)1.内核初始化:初始化各种内核数据结构(进程表、文件系统等),探测硬件设备并初始化驱动程序。
2.启动init进程:创建第一个用户进程(如/sbin/init),进而启动整个用户空间的服务和登录界面。
3.提供系统服务:启动后,OS持续处理系统调用、中断,调度进程,管理资源。
1.BIOS/UEFI固件:执行硬件自检,加载引导扇区(Bootloader)。
2.Bootloader(如GRUB):不属于OS内核,负责加载OS内核镜像到内存,并将控制权交给内核入口点。
3.用户空间初始化脚本和服务:由init进程按配置启动,如/etc/init.d中的脚本,这些属于用户态程序。
经典启动顺序:BIOS/UEFI → Bootloader → OS内核初始化 → init进程 → 用户shell/图形界面。OS内核的初始化是其责任的开始,之前的步骤属于固件和引导程序。
  • 特权级与分界线:牢记用户态核心态的界限。需要访问硬件资源或修改核心数据结构时,必须通过OS在核心态完成。

  • 硬件与OS的协作模式:通常是硬件检测/触发 → OS处理/决策 → 硬件执行。例如:缺页(硬件检测)→ OS选择置换页 → 磁盘I/O(硬件执行)。

  • 库函数 vs 系统调用:库函数可能封装系统调用,也可能完全在用户态实现(如malloc管理堆内存)。系统调用是明确的用户态到核心态的接口。

  • OS的核心角色是“管理者”和“抽象提供者”:管理CPU(调度)、内存(分配/置换)、设备(驱动/缓冲)、文件(命名/组织)。它不直接执行具体计算或I/O操作,而是安排和控制这些操作。

  • 进程与资源:OS是资源的唯一管理者,进程是资源分配的单位。任何资源的获取、释放、共享都必须经过OS。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 2:30:25

12、《Lotus Domino 6 与外部数据库集成指南》

《Lotus Domino 6 与外部数据库集成指南》 在当今的数据驱动世界中,将企业应用程序与外部数据库集成是提高效率和数据利用率的关键。本文将详细介绍如何使用 Lotus Domino 6 与 DB2 和 MySQL 等外部数据库进行集成,包括从访问外部数据到创建应用程序的具体步骤。 1. 使用 D…

作者头像 李华
网站建设 2026/2/27 2:41:55

Postman便携版完整指南:免安装API测试神器快速上手

Postman便携版完整指南:免安装API测试神器快速上手 【免费下载链接】postman-portable 🚀 Postman portable for Windows 项目地址: https://gitcode.com/gh_mirrors/po/postman-portable 还在为复杂的API工具安装过程而烦恼吗?Postma…

作者头像 李华
网站建设 2026/3/1 1:22:57

Archipack插件完整安装教程:快速解决macOS兼容性问题

Archipack插件完整安装教程:快速解决macOS兼容性问题 【免费下载链接】archipack Archipack for blender 2.79 项目地址: https://gitcode.com/gh_mirrors/ar/archipack 还在为在macOS系统上安装Archipack插件而烦恼吗?别担心,这篇文章…

作者头像 李华
网站建设 2026/2/26 8:40:09

UV-K5对讲机固件定制指南:从新手到高手的完整教程

UV-K5对讲机固件定制指南:从新手到高手的完整教程 【免费下载链接】uv-k5-firmware-custom This is a fork of Egzumer https://github.com/egzumer/uv-k5-firmware-custom 项目地址: https://gitcode.com/gh_mirrors/uvk/uv-k5-firmware-custom &#x1f4a…

作者头像 李华