os开发基础知识(1)
操作系统(Operating System, OS)
核心定义
- 操作系统是管理计算机硬件与软件资源的系统软件,充当用户、应用程序与硬件之间的桥梁,负责协调资源分配并提供标准化服务。
关键功能
资源管理
- 内存管理:分配和回收内存空间,防止程序间冲突(如内存泄漏)。
- 硬件管理:通过驱动程序控制CPU、磁盘、键盘等硬件设备。
- 文件管理:组织存储设备上的数据(如创建、删除、读写文件)。
进程与线程调度
- 决定哪些程序优先使用CPU(如时间片轮转调度)。
- 支持多任务执行(如同时运行浏览器和音乐播放器)。
安全与访问控制
- 验证用户权限(如管理员与普通用户的不同操作权限)。
- 防止恶意程序破坏系统(如内存隔离技术)。
抽象化接口
- 用户界面:提供图形界面(GUI)或命令行界面(CLI)(如Windows桌面或Linux终端)。
- 系统调用(API):让程序无需直接操作硬件即可使用资源(如`printf()`函数底层依赖操作系统输出内容)。
常见误区
- 操作系统 ≠ 硬件:它是软件,但需依赖硬件运行(如电脑主板是硬件,Windows是操作系统)。
- 操作系统 ≠ 应用程序:它不直接提供具体功能,而是支撑应用程序运行(如Photoshop是应用程序,需依赖macOS或Windows运行)。
- 操作系统 ≠ 工具集:尽管常捆绑工具(如Linux的GNU工具),但这些工具是附加组件而非OS核心。
- 操作系统 ≠ 图形界面:GUI是操作系统的一部分,但非必需(如服务器版Linux可通过命令行操作)。
操作系统的多样性
- 单任务系统:如MS-DOS,一次只能运行一个程序。
- 多任务系统:如Windows、macOS,支持同时运行多个程序。
- 嵌入式系统:如eCOS,专为特定设备定制(如智能手表),可能无图形界面。
- 发行版差异:如Linux有Ubuntu、Debian等不同发行版,核心相同但工具和界面不同。
内核(Kernel)
核心定义
- 内核是操作系统的核心组件,直接与硬件交互,负责最底层的资源管理和任务调度。用户通常无法直接感知内核的存在,但它支撑了所有程序的运行。
核心职责
1. 硬件事件处理
- 响应中断(如键盘输入、网络数据到达),将事件传递给对应程序。
- 示例:按下键盘时,内核将按键转化为字符并存入缓冲区,供程序读取。
2. 系统调用处理
- 执行程序请求的底层操作(如打开文件、创建进程)。
- 示例:C语言的fopen()函数会触发内核的“打开文件”系统调用。
3. 抽象资源管理
- 定义进程、文件、网络连接等抽象概念,简化程序开发。
- 示例:程序读写文件时,无需关心磁盘物理位置,内核负责映射逻辑文件到存储位置。
内核与用户程序的关系
- 用户程序→ 标准库→ 内核
- 程序通过标准库(如C的glibc)调用系统功能,避免直接与内核交互。
- 示例:Java程序调用`System.out.println()`时,最终由内核控制屏幕输出。
类比理解
- 操作系统像一家公司的管理层:制定规则、分配资源、协调各部门。
- 内核像公司的核心决策层:直接处理最关键的任务(如财务、人事),其他部门(应用程序)通过它获得支持。
- 系统调用像提交申请:程序需通过固定流程(系统调用)向内核申请资源,而非直接操作硬件。