Files
mengyanote/public/mengyanote/计算机科普/操作系统科普.md

11 KiB
Raw Blame History


一、目前主流操作系统有哪些

“操作系统”Operating System, OS是管理硬件资源、为上层应用提供运行环境的软件。在各种设备上都可能有不同种类操作系统。按应用场景划分主流的有

设备类型 常见操作系统
个人/桌面/笔记本电脑 Windows、macOS、各种 Linux 发行版
服务器 / 数据中心 各类 Linux 发行版(如 Ubuntu Server、CentOS / Rocky / AlmaLinux / Debian / Red Hat Enterprise Linux 等、UNIX 系统(如 IBM AIX、Solaris 等,在某些领域还在用)
移动设备 / 平板 Android、iOS苹果专用
嵌入式 / 物联网设备 各种轻量化系统(如基于 Linux 内核的嵌入式 Linux、RTOS、FreeRTOS、Zephyr 等)
专用设备 / 工业 / 实时系统 各类专用实时操作系统RTOS例如 VxWorks、QNX、RT-Thread 等

总结来说,若以“普通用户的电脑 / 手机”为主要参考,则 Windows、macOS 和 Linux 是桌面/笔记本市场常见选择;在手机领域 Android 和 iOS 最主流;在服务器与云端系统则以 Linux 为主。


二、操作系统的历史发展

下面是操作系统发展的一条主线(每个阶段都有很多分支、实验性系统,这里只抓主干):

  1. 早期1940s1950s无操作系统时代

    • 最初的电子计算机(如 ENIAC没有操作系统程序员自己控制硬件、加载程序、逐条指令运行。

    • 为了简化、复用“库”library和输入输出操作人们逐渐把重复功能抽象出来形成初步的“监控程序”monitor

  2. 批处理与多道程序设计 / 时分系统1960s

    • 为了提高硬件利用率引入“批处理”Batch方式把多个程序放在磁带卡片上按序执行。
    • 后来发展为 多道程序设计Multiprogramming内存中可同时放多个作业操作系统负责调度 CPU、内存、I/O。
    • 时间分片 / 交互 / 时分系统Time-sharing多个用户可以“同时”交互地使用同一台计算机通过快速切换响应。
    • 多个经典系统出现(如 MIT 的 CTSS、MULTICS
  3. Unix 的出现与影响1970s

    • Unix 在贝尔实验室被开发,最初用于小型机 / 研究用途。其设计强调简洁、可移植性。
    • Unix 被用 C 语言重写,从而更容易移植到不同硬件平台。
    • 在学术界、研究机构、后来商用系统中被广泛采用并催生多个衍生系统BSD、System V 等)。
  4. 个人计算机时代 / 微型机 / GUI 化1980s1990s

    • 随着微处理器与个人电脑普及,需要适合 PC 的操作系统:如 CP/M、MS-DOS 等。 (eecs.harvard.edu)
    • Windows最初是 MS-DOS 上的界面层)逐步发展,加入图形界面、独立内核等。 (educative.io)
    • Apple 的 Mac 系列也推出图形界面操作系统Mac OS
    • 同时 UNIX / 类 Unix 系统不断改进,出现了 X Window 系统、图形界面层等。
  5. 网络化、分布式与现代操作系统1990s至今

    • 操作系统要支持网络、分布式计算、互联网服务。
    • Linux 内核在 1991 年由 Linus Torvalds 发布,成为开源 / 社区驱动的新兴路线。 (GeeksforGeeks)
    • 各种 Linux 发行版出现,用于桌面、服务器、嵌入式等。
    • macOS基于 NeXTSTEP / BSD / Darwin发展壮大成为 Apple 电脑的核心系统。
    • 在移动领域,苹果推出 iOS基于 macOS / Darwin 基础Google 推出 Android基于 Linux 内核 + 自有上层栈)。 (维基百科)
    • 同时操作系统要应对虚拟化、容器化、云计算、大规模集群、微服务、异构计算等新挑战。 (维基百科)

这样,操作系统从“无 OS → 简单监控程序 → 批处理 / 多道 / 交互式系统 → Unix / 类 Unix → 图形界面 / PC 化 → 多平台 / 网络化 / 移动 / 虚拟化 / 云化”一路演进。


三、Windows、Linux 和 macOS 三者的区别

下面从多个维度比较这三类系统的异同:

维度 Windows macOS Linux典型 Linux 发行版)
内核 / 系统架构 Windows 使用微软自家内核Windows NT 内核系列) macOS 基于 Darwin包含 XNU 内核、BSD 组件) 使用 Linux 内核 + 上层自由 / 开放软件组件
开源 vs 专有 大部分为专有闭源 Apple 的 macOS 组件多为闭源/混合(部分开源如 Darwin 大多数发行版完全开源 / 自由软件
硬件支持 / 兼容性 广泛支持多种 PC 硬件,硬件驱动生态完善 只运行在 Apple 自己设计的硬件Mac兼容性受限但系统与硬件高度集成 Linux 移植性强可以运行在众多架构x86, ARM, MIPS 等),但硬件驱动有时依赖社区支持
用户界面 / 易用性 界面直观、用户熟悉、应用生态丰富 界面优美、整体体验一致、系统与硬件结合紧密 桌面环境多样GNOME, KDE, XFCE 等),定制性强,但对新手可能稍陡峭
软件 / 应用生态 应用种类极多(商业软件、游戏、办公、娱乐等) 在创意、音视频、图形设计等专业软件方面有优势 多数是开源软件,商业闭源软件支持较少(不过近年状况在改善)
安全性 / 权限管理 易成为恶意软件攻击目标(历史原因、广泛使用) 相对安全、沙盒机制、审核机制等 通常安全性较高(开源、社区审查、权限机制),但也需注意配置
系统升级 / 版本管理 自动更新机制成熟;多数更新对向后兼容有保障 Apple 控制版本更新与硬件绑定,对老旧设备支持有限 发行版差异较大,有些滚动更新、版本升级可能要手动干预
自由度 / 可定制性 一定限制(尤其底层系统受控),但有不少自定义空间 自由度较低,用户通常不能改变系统底层 非常高的自由度:可以定制、裁剪、自己编译系统组件等
典型用途 /优势场景 适合游戏、通用办公、广泛软件支持 适合创意设计、多媒体制作、与 Apple 生态整合 适合服务器、开发环境、定制系统、科研、云平台等

不同用户 / 场景下,选择哪一种操作系统会有偏好。比如设计师可能偏 macOS游戏玩家可能倾向 Windows开发者 / 服务器管理员可能偏好 Linux。


四、Linux 发行版是什么

“Linux 发行版”Linux distribution简称 distro是把 Linux 内核与一系列工具 / 库 / 应用软件打包、配置、分发到用户能够直接安装和使用的完整操作系统版本。

详细来说Linux 发行版通常包含以下组件:

  • Linux 内核
  • GNU 工具链(如 Bash、coreutils、GNU C 库 / glibc 等)
  • 各种系统库
  • 包管理系统(如 apt / dpkg、yum / dnf、pacman、zypper 等)
  • 图形子系统(如 X Window、Wayland和桌面环境GNOME、KDE、XFCE 等)
  • 常用应用软件(浏览器、办公套件、媒体播放器等)
  • 安装程序、配置工具、安全机制等

发行版的目标是“把用户需要的软件、组件、配置整合好,使得用户可以开箱即用”——而不是用户必须自己从头编译所有软件。

根据定位、更新策略、社区 / 商业支持、目标用户等不同,发行版可以分为很多种类别,比如:稳定版 vs 滚动更新版、桌面版 vs 服务器版、轻量版 vs 完整版、社区版 vs 企业版等。

常见的 Linux 发行版例子有:

  • Debian 系列Debian 本身、Ubuntu、Linux Mint 等)
  • Red Hat 系列Red Hat Enterprise Linux、Fedora、CentOS / Rocky / AlmaLinux 等)
  • Arch、Manjaro、Gentoo、openSUSE 等

发行版之间在包管理、默认软件、目标人群、社区文化等方面有较大差异。


五、Android 是否可以看作是一种 Linux 发行版?

这是一个在技术界和社区中比较有争论的问题。答案是 不完全可以。下面我来分析原因及观点:

支持把 Android 视为 Linux 系统的一面

  • Android 使用的是 Linux 内核(即其底层调度、内存管理、驱动支持等核心部分是基于 Linux 内核)
  • 在很多 Android 设备上,你可以看到 /proc/version 等信息,显示 Linux 内核版本号。
  • 从这个意义上看Android 属于“基于 Linux 内核”的一种系统。

反对把 Android 视为传统 Linux 发行版的一面

  • 传统 Linux 发行版通常包括 GNU 工具链(如 glibc、bash、标准 Unix 工具集),而 Android 使用自己的 C 库Bionic、不同的 Shell / 命令工具集等,与典型 GNU 工具链并不兼容。
  • Android 在用户空间架构上与传统 Linux 发行版差别很大:它有独特的应用层框架(如 Android Runtime / ART、Java / Kotlin 运行环境、Binder IPC 等),其生态与传统 Linux 软件栈不兼容。
  • Android 并不使用传统的 Linux 发行版那种包管理系统(如 apt、rpm 等),也不兼容大多数 Linux 桌面 / 服务器软件。
  • Android 是为嵌入式 / 移动设备优化的系统,许多底层设计(功耗管理、唤醒锁、内存回收策略等)与通用 Linux 有专门调整。

总结来看Android 是一种“基于 Linux 内核”的系统,但它不能被简单地视作传统意义上的 Linux “发行版”。更准确地说Android 是一个以 Linux 内核为基础、构建了一整套用户空间 / 应用生态的独立操作系统。许多人说“Android 是 Linux 的一个发行版”更多是从内核层面的角度说;但如果从完整操作系统、生态兼容的角度看,它与传统 Linux 发行版差异显著。