1.1 操作系统的概念与定义 - 详细讲解
1.1.1 操作系统的基本定义
什么是操作系统?
操作系统(Operating System,简称OS)是一组控制和管理计算机硬件与软件资源,合理地组织计算机工作流程,为用户和其他软件提供方便接口与环境的程序集合。
多维度定义理解
从功能角度:操作系统是管理计算机系统中各种资源的软件,包括处理器、内存、存储设备、输入输出设备等。
从用户角度:操作系统是用户与计算机硬件之间的接口,为用户提供方便使用计算机的环境。
从系统角度:操作系统是最接近硬件的第一层软件,是其他所有软件运行的基础平台。
从资源角度:操作系统是计算机资源的分配者和仲裁者,负责决定何时、如何以及给谁分配资源。
操作系统的本质特征
系统软件的性质:操作系统本身就是一个大型、复杂的程序系统特权执行:拥有访问和控制所有硬件资源的最高权限常驻内存:核心部分始终驻留在内存中并发执行:能够同时管理多个程序的执行
1.1.2 操作系统在计算机系统中的地位和作用
计算机系统的层次结构
+---------------------------+
| 用户程序 | ← 应用层
+---------------------------+
| 系统程序/工具 | ← 系统软件层
+---------------------------+
| 操作系统 | ← 操作系统层(核心层)
+---------------------------+
| 计算机硬件 | ← 硬件层
+---------------------------+
操作系统的核心地位
承上启下的桥梁作用
向下:直接控制和管理各种硬件资源向上:为系统软件和应用软件提供服务接口
系统的管理者
统一管理系统中的所有资源协调各个程序的运行维护系统的稳定性和安全性
平台的提供者
为其他软件提供运行环境定义软件开发的标准接口屏蔽硬件差异,提供统一的编程模型
操作系统的重要作用
资源管理:有效管理和分配系统资源服务提供:为用户和程序提供各种服务接口统一:提供标准化的编程和使用接口系统保护:保证系统安全和程序间的相互保护
1.1.3 操作系统与用户、应用程序、硬件之间的关系
三者关系模型
用户 (User)
↕ (交互)
应用程序 (Application)
↕ (系统调用)
操作系统 (Operating System)
↕ (硬件控制)
计算机硬件 (Hardware)
用户与操作系统的关系
直接交互方式
命令行界面(CLI):通过命令解释器与系统交互图形用户界面(GUI):通过窗口、菜单、图标等图形元素交互触摸界面:移动设备上的触摸操作
间接交互方式
通过应用程序间接使用操作系统服务操作系统为用户屏蔽了复杂的硬件细节
应用程序与操作系统的关系
依赖关系
应用程序运行必须依托操作系统提供的环境操作系统为应用程序分配和管理运行所需的资源
服务请求关系
应用程序通过系统调用请求操作系统服务操作系统响应请求并提供相应服务
保护关系
操作系统保护应用程序之间不会相互干扰防止恶意或错误的程序破坏系统
操作系统与硬件的关系
控制关系
操作系统直接控制硬件设备的工作通过设备驱动程序与各种硬件通信
管理关系
管理硬件资源的分配和使用监控硬件状态,处理硬件故障
抽象关系
将复杂的硬件接口抽象为简单的软件接口为上层软件提供统一的硬件访问方式
1.1.4 操作系统作为资源管理者的角色
资源管理的核心任务
资源分配(Resource Allocation)
决定何时将资源分配给哪个程序实施公平、高效的分配策略避免资源冲突和死锁
资源监控(Resource Monitoring)
跟踪各种资源的使用状况收集系统性能统计信息发现和处理资源使用异常
资源回收(Resource Reclamation)
及时回收程序不再使用的资源防止资源泄漏和浪费维护资源的可用性
主要管理的资源类型
处理器资源
CPU时间片的分配多核处理器的负载均衡进程优先级管理
内存资源
物理内存的分配和回收虚拟内存的管理内存保护和共享
存储资源
磁盘空间的管理文件系统的维护数据的存储和检索
I/O设备资源
设备的分配和调度I/O请求的排队和处理设备驱动程序的管理
资源管理的策略
公平性(Fairness)
确保所有程序都能获得合理的资源份额防止某些程序长期占用资源
效率性(Efficiency)
最大化系统资源的利用率减少资源闲置和浪费
响应性(Responsiveness)
及时响应用户和程序的资源请求保证交互式程序的良好响应时间
1.1.5 操作系统作为扩展机器的概念
扩展机器的含义
操作系统作为"扩展机器"是指它在裸机硬件的基础上,通过软件的方式扩展了机器的功能,为用户和程序员提供了一个功能更强大、更易使用的虚拟机器。
扩展的具体体现
功能扩展
裸机功能:只能执行基本的机器指令扩展后功能:提供文件管理、进程管理、网络通信等高级功能
接口扩展
硬件接口:复杂的寄存器操作、中断处理软件接口:简单易用的API和系统调用
抽象层次扩展
物理层次:直接操作硬件寄存器和内存地址逻辑层次:操作文件、进程、网络连接等抽象概念
扩展机器的优势
简化编程
// 裸机编程:复杂的硬件操作
outb(0x3F8, 'H'); // 直接操作串口寄存器
// 有操作系统:简单的系统调用
printf("Hello"); // 使用标准库函数
提高可移植性
屏蔽不同硬件平台的差异同一程序可以在不同系统上运行
增强功能性
提供裸机不具备的高级功能支持多任务、多用户、网络通信等
虚拟机的层次
指令级虚拟化
虚拟出与物理机相同的指令集每个程序都认为自己独占整个机器
资源级虚拟化
虚拟出比物理资源更多的逻辑资源如虚拟内存使程序认为拥有巨大的地址空间
服务级虚拟化
提供比硬件更高级的服务接口如文件系统服务、网络服务等
1.1.6 系统调用接口的意义
系统调用的定义
系统调用(System Call)是操作系统提供给应用程序的编程接口,是应用程序请求操作系统服务的唯一途径。
系统调用的重要意义
安全性保障
特权分离:用户程序运行在用户态,无法直接访问硬件权限检查:操作系统检查程序是否有权限执行特定操作资源保护:防止程序恶意或错误地破坏系统资源
标准化接口
统一访问:为所有程序提供统一的系统服务访问方式跨平台性:相同的系统调用在不同硬件上表现一致版本兼容:新版本操作系统保持对旧系统调用的支持
功能抽象
复杂性隐藏:将复杂的硬件操作封装为简单的接口实现独立:应用程序不需要了解底层实现细节服务封装:将操作系统功能封装为可调用的服务
系统调用的分类
进程控制类
pid_t fork(); // 创建进程
int exec(); // 执行程序
void exit(int); // 终止进程
pid_t wait(); // 等待子进程
文件操作类
int open(); // 打开文件
int read(); // 读取文件
int write(); // 写入文件
int close(); // 关闭文件
设备管理类
int ioctl(); // 设备控制
int select(); // I/O复用
信息维护类
pid_t getpid(); // 获取进程ID
time_t time(); // 获取系统时间
int getuid(); // 获取用户ID
通信类
int pipe(); // 创建管道
int socket(); // 创建套接字
int shmget(); // 获取共享内存
系统调用的工作机制
调用过程
用户程序发起系统调用请求库函数包装系统调用参数软中断触发,切换到内核态内核验证参数,执行相应服务结果返回给用户程序,切换回用户态
模式切换
用户态 → 内核态:通过软中断或陷阱指令权限提升:获得访问系统资源的权限内核态 → 用户态:服务完成后返回用户程序
系统调用与其他接口的比较
接口类型执行位置权限级别开销用途系统调用内核态最高权限较高访问系统资源库函数用户态用户权限较低通用功能封装硬件中断内核态最高权限最高硬件事件处理
1.1.7 深入理解要点
操作系统的双重性质
作为程序
操作系统本身就是一个程序,需要被执行具有程序的基本特征:有代码、数据、执行流程
作为管理者
管理其他所有程序的运行控制系统资源的分配和使用
操作系统的设计目标
方便性(Convenience)
使计算机更容易使用为用户提供友好的操作界面
效率性(Efficiency)
提高计算机系统的资源利用率减少系统开销,提高运行效率
可扩展性(Extensibility)
方便添加新功能和新设备支持系统的升级和扩展
可靠性(Reliability)
保证系统的稳定运行具备容错和恢复能力
理解操作系统的关键思维
抽象思维
理解操作系统如何将复杂的硬件抽象为简单的接口掌握各种抽象概念:进程、文件、虚拟内存等
系统思维
从整体角度理解各个组件之间的关系理解系统的权衡和设计考虑
分层思维
理解计算机系统的层次结构掌握不同层次的功能和接口
通过以上详细讲解,我们可以全面理解操作系统的基本概念和定义。操作系统不仅是一个管理计算机资源的程序,更是连接用户、应用程序和硬件的重要桥梁,为整个计算机系统的正常运行提供了基础保障。