第1章 操作系统概述
本章目标:建立操作系统的基本认知,理解操作系统的核心概念、架构模式与发展脉络,为后续深入理解开源鸿蒙打下基础。
1.1 什么是操作系统
当你拿起手机刷视频、打开电脑写文档、在智能手表上查看步数时,你可能很少会意识到,在所有这些应用和硬件之间,有一个沉默的"管理者"在协调一切——这就是操作系统。
1.1.1 操作系统的定义
操作系统(Operating System,OS)是管理计算机硬件与软件资源的系统软件,它是应用程序与硬件之间的中间层,也是整个计算机系统的基石。
这个定义看似简单,但包含了几个关键信息:
第一,操作系统是"软件",不是硬件。 它运行在硬件之上,由一组程序和数据构成,存储在磁盘或固件中,开机时加载到内存运行。
第二,操作系统是"系统软件",不是应用软件。 应用软件(如微信、浏览器、Word)是为了完成特定用户任务而存在的,而操作系统是为了管理整个计算机系统而存在的。没有操作系统,应用软件无法运行;但没有应用软件,操作系统本身也能启动和运行。
第三,操作系统的核心职责是"管理资源"。 一个计算机系统中有CPU、内存、磁盘、网卡、显示屏等多种硬件资源,还有文件、进程、网络连接等软件资源。操作系统负责分配、调度、回收这些资源,确保多个程序能公平、高效地共享它们。
第四,操作系统是"中间层"。 它向上为应用程序提供接口(API),向下控制硬件设备。这种分层设计使得应用程序不需要直接操作硬件——你写代码时调用 open() 打开文件,不需要知道硬盘的磁道和扇号;调用 send() 发送网络数据,不需要知道网卡的寄存器地址。
一个恰当的类比:如果把计算机系统比作一家公司,那么:
- 硬件是公司的办公资源:办公桌、会议室、打印机、网络
- 应用程序是公司的员工:产品经理在写文档,工程师在写代码,销售在打电话
- 操作系统是公司的管理者:决定谁用哪个会议室,分配办公桌,管理打印队列,确保大家不互相干扰
没有管理者,员工们会为了争夺资源而混乱;没有硬件,管理者也无从管理。
1.1.2 操作系统的核心功能
从资源管理的视角出发,操作系统的核心功能可以归纳为以下五个方面:
(1)进程管理
进程是正在运行的程序的实例。在一个现代操作系统中,同时可能运行着数百个进程。进程管理负责:
- 进程创建与终止:当你双击一个程序图标,操作系统为它创建一个新进程;当你关闭程序,操作系统回收它占用的资源
- 进程调度:决定哪个进程在什么时候使用CPU。因为CPU数量远少于进程数量,操作系统需要通过调度算法公平高效地分配CPU时间
- 进程间通信:不同进程之间需要交换数据,操作系统提供管道、消息队列、共享内存等通信机制
- 进程同步:协调多个进程的执行顺序,避免竞争条件(race condition)
(2)内存管理
内存是计算机中最关键的资源之一,所有正在运行的程序都需要内存来存放代码和数据。内存管理负责:
- 内存分配与回收:为进程分配所需的内存空间,进程结束后回收内存
- 虚拟内存:为每个进程提供独立的、连续的虚拟地址空间,使进程感觉拥有整个内存
- 内存保护:防止一个进程访问或修改另一个进程的内存
- 分页与交换:当物理内存不足时,将不常用的内存页换出到磁盘,需要时再换入
(3)文件系统
文件系统负责数据的持久化存储和组织:
- 文件管理:创建、删除、读、写文件,维护文件的元数据(大小、权限、创建时间等)
- 目录管理:以树状结构组织文件,提供目录的创建、删除和遍历
- 存储空间管理:管理磁盘空间的分配和回收
- 文件保护:通过权限控制(读、写、执行)保护文件安全
(4)设备管理
计算机系统中有各种I/O设备:键盘、鼠标、显示器、磁盘、网卡、打印机等。设备管理负责:
- 设备驱动:通过设备驱动程序屏蔽不同设备的硬件差异,为上层提供统一接口
- 设备分配:管理设备的分配和回收,处理多个进程对同一设备的竞争
- I/O调度:优化I/O操作的性能,例如磁盘的电梯调度算法
- 缓冲与缓存:通过缓冲区减少I/O操作的次数,提高性能
(5)用户接口
操作系统需要为用户提供与系统交互的方式:
- 命令行界面(CLI):如Linux的bash、Windows的PowerShell,通过输入命令与系统交互
- 图形用户界面(GUI):通过窗口、图标、菜单等可视化元素与系统交互
- 系统调用接口(API):为应用程序提供的编程接口,是应用程序请求操作系统服务的标准方式
1.1.3 操作系统的分类
操作系统可以根据不同的标准进行分类。从应用场景来看,主要分为以下几类:
| 类型 | 特点 | 代表系统 |
|---|---|---|
| 批处理系统 | 无交互,作业成批提交处理 | IBM OS/360 |
| 分时系统 | 多用户同时交互,时间片轮转 | Unix、Linux |
| 实时系统 | 响应时间有严格保证 | VxWorks、QNX、FreeRTOS |
| 嵌入式系统 | 资源受限,面向特定应用 | LiteOS、FreeRTOS、Zephyr |
| 移动操作系统 | 面向移动设备,支持触控 | Android、iOS |
| 桌面操作系统 | 面向个人电脑 | Windows、macOS、Linux桌面 |
| 服务器操作系统 | 面向服务器,高可靠性 | Linux Server、Windows Server |
| 分布式操作系统 | 多台计算机协同工作 | 分布式文件系统、云OS |
需要特别指出的是,这些分类并非互斥。例如,Linux既可以作为桌面操作系统,也可以作为服务器操作系统;Android基于Linux内核,但它是移动操作系统;开源鸿蒙的设计目标则是覆盖从嵌入式设备到移动终端的多种场景。
在本书中,我们最关注的是嵌入式操作系统和移动操作系统这两个类别,因为开源鸿蒙正是横跨这两个领域的操作系统。
1.2 操作系统的发展历程
理解操作系统的发展历史,有助于我们理解开源鸿蒙为何采用当前的设计,以及它试图解决什么问题。
1.2.1 无操作系统的时代(1940年代)
最早的计算机(如ENIAC、Colossus)没有操作系统。程序员通过物理方式操作计算机:
- 用开关设置二进制指令
- 通过插线板连接不同的硬件单元
- 一次只能运行一个程序
- 程序员需要了解所有硬件细节
这个时代的"操作系统"就是程序员本人。程序运行效率极低,硬件资源浪费严重。
1.2.2 批处理系统时代(1950年代)
1950年代,随着计算机造价降低,人们开始追求更高的利用率。批处理系统应运而生:
- 操作员将多个作业(程序+数据)打在卡片上
- 批处理监控程序(resident monitor)依次读取并执行这些作业
- 减少了人工干预的时间,提高了计算机利用率
关键进展:


1128

被折叠的 条评论
为什么被折叠?



