第 7 / 26 个单元计算机与软件基础设施区
第 6 章 操作系统怎样协调程序、文件与设备
核心问题操作系统为什么既给应用提供能力,又限制它访问资源?
应用安装完成以后,第一次扫码仍会询问相机权限;播放声音需要音频设备,保存文件需要存储位置,联网还要经过网络接口。安装只说明程序进入设备,不表示它可以任意使用全部资源。
操作系统处在应用与硬件之间。它既为程序提供通用能力,也维持隔离、分配和权限边界。桌面、图标和设置页面只是用户能够看见的一层。
程序运行以后成为进程
保存在存储里的程序是一组指令和数据;开始运行后,操作系统为它建立活动实例,通常称为进程。[2] 进程拥有自己的执行状态、内存空间和可访问资源。
一个应用可能有多个进程:界面、后台服务、插件或不同页面可以分开运行。这样有助于隔离故障和并行处理,也增加了资源协调的复杂度。
多个进程都希望使用处理器。操作系统通过调度决定谁在什么时候运行,并在进程之间切换。用户看到音乐播放、文件下载和文档编辑同时发生,实际上处理器与其他部件正在快速分配时间和资源。
调度不能创造无限计算能力。任务过多时,进程互相竞争,切换也有成本。某个应用失去响应,不表示整个系统所有部分都停止;操作系统仍可能允许关闭该进程或保存其他工作。
应用通过系统服务访问资源
应用通常不直接随意控制硬件。它通过操作系统提供的接口请求打开文件、分配内存、访问相机、发送网络数据。操作系统检查请求、权限和当前状态,再调用文件系统或设备驱动完成工作。
用户操作
→ 应用提出请求
→ 操作系统检查身份、权限与参数
→ 文件系统、网络栈或设备驱动执行
→ 硬件完成读写、通信或输出
→ 结果返回应用并显示给用户
设备驱动把操作系统的通用请求转换为特定硬件能够理解的操作。相机硬件正常,驱动缺失或异常时,应用仍可能无法使用;驱动正常,权限关闭时,也会失败。排障要区分设备、驱动、系统和应用。
内存隔离让程序不必互相看见全部内容
操作系统为进程管理内存,尽量让一个程序不能随意读取或修改另一个程序的工作区域。隔离降低了错误和攻击扩散的风险,却不可能单独保证所有软件安全。
现代系统还会使用虚拟内存,让进程看到相对独立的地址空间,并在物理内存与存储之间管理数据。应用看到的“内存”并不等于一块连续裸硬件。
程序越权访问、内存损坏或资源耗尽,可能导致崩溃。操作系统能够终止进程、回收资源和记录错误;重要数据能否恢复,还取决于应用是否及时保存、文件系统是否完好以及是否有备份。
文件系统组织内容,也实施访问边界
文件系统负责命名、组织、存储和访问文件与目录。[3] 它记录数据放在哪里、文件大小和时间等属性,也可能支持权限、日志、加密和版本相关能力。
路径告诉系统怎样找到文件。移动文件可能只改变目录记录,也可能跨存储设备复制数据再删除原位置。同步软件看到的是文件系统中的变化,是否传播到其他设备由同步规则决定。
应用获得“访问文件”权限,还可能只被允许读取用户选择的文件或特定目录。沙箱等机制进一步限制应用可以接触的系统资源。具体实现随操作系统而异,不能把某个平台的按钮名称当成统一标准。
权限回答“谁可以对什么做什么”
权限规定用户、进程或应用可以对资源执行哪些操作。扫码需要相机输入,录音需要麦克风,导入资料需要文件访问。功能与权限应当存在可解释关系。
授权范围可以很不同:仅本次、使用应用时、后台持续访问;全部照片、指定照片;读取、写入或删除。较小权限通常更容易控制,但也可能让某些功能无法完成。
权限并不证明用途合理。允许相机访问,只说明通道被打开;图像是否上传、保存多久、用于什么,还要看应用、网络与服务设计。AI应用为识别、转写或检索请求文件时,同样需要判断数据是否离开设备,以及组织规则是否允许。
撤回权限也是系统设计的一部分。用户应能找到设置,理解关闭后的影响;组织设备还可能由管理员统一管理,个人权限并非唯一控制层。
按层排查,比一句“设备坏了”更有信息
相机不能工作时,可以按顺序检查:设备自带相机是否能用;操作系统是否识别硬件和驱动;权限是否开放;应用是否选择正确输入源;数据是否还要经过网络和远端服务。
每一步都产生不同证据。换一个应用可以区分系统问题与单个应用问题;断网测试可以判断某项功能是否依赖远端;查看权限比反复重装更接近原因。
排障不应以永久开放全部权限、删除唯一文件或安装来源不明工具为代价。重要数据先备份,涉及账号异常和敏感材料时保留记录并通过可信渠道求助。
操作系统让同一设备中的程序能够共享硬件而不完全失去边界。下一章把这种协作带出当前设备,解释消息怎样经过网络到达另一端。