Menu
CoddyTech

操作系统是什么?

操作系统(OS)是管理计算机硬件、运行所有其他程序的软件。它在程序之间分配处理器、内存和存储空间,并为它们提供文件、网络、输入和输出。Windows、macOS、Linux、Android 和 iOS 都是操作系统。

作者 Kevin Spektor, 联合创始人兼 CTO

更新于 2026年9月24日

打开一个文本编辑器,按下一个键。键盘发出一个电信号,操作系统里的驱动程序读取这个信号。操作系统判断出当前哪个窗口在最前面,把这个按键交给那个程序,编辑器再把字母画出来。编辑器从头到尾都没有和键盘直接打交道。保存文件、播放声音、加载网页也是一样:程序提出请求,操作系统去和硬件完成实际的工作。

操作系统做什么

操作系统有几项主要工作,电脑上的每个程序都依赖这些工作:

  • 运行程序(进程管理)。 一台 8 核 CPU 的笔记本电脑上,可能同时运行着几百个程序和后台服务。操作系统的调度器让每个程序轮流在某个核心上运行一小段时间,每秒切换很多次,所以它们看起来像是同时在运行。
  • 管理内存。 每个程序都有自己私有的地址空间。程序一旦读取不属于自己的内存,操作系统就会把它停下来;在 C 语言里,这就是著名的段错误。
  • 存储文件。 磁盘只能存储编了号的字节块,操作系统把它们组织成文件夹和有名字的文件,这是抽象的典型例子。这种组织格式叫作文件系统:Windows 上是 NTFS,macOS 上是 APFS,大多数 Linux 系统上是 ext4。
  • 和硬件通信。 驱动程序在操作系统和每个设备之间做翻译:显卡、Wi-Fi 芯片、打印机、摄像头。
  • 网络。 操作系统实现了 TCP/IP,所以程序不需要了解网卡的任何细节,就能和服务器建立连接。
  • 安全和用户。 账号、密码和文件权限决定了谁能读取或修改什么。
  • 用户界面。 桌面、窗口和任务栏,或者 Bash、PowerShell 这样的文本 shell。

内核和系统调用

操作系统的核心是内核。内核拥有对硬件的完全控制权,而普通程序运行在受限模式下,不能直接操作设备。程序需要什么的时候,就发起一次系统调用:向内核提出请求,比如“打开这个文件”“发送这些字节”或“启动一个新进程”。

大多数时候你看不到系统调用,因为编程语言已经把它们封装好了。Python 的 open() 和 print() 最终都会调用内核。os 模块让你几乎可以直接发起系统调用:

进程 ID 和核心数取决于具体的机器;最后一行总是打印 File size: 23 bytes。os.open 返回一个文件描述符,也就是内核用来跟踪这个已打开文件的一个小整数,os.write 把 23 个字节写入它。在 C 语言里,同样的请求写出来几乎一模一样,因为这些函数只是对系统调用的一层薄薄的封装:

int fd = open("note.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
write(fd, "saved by a system call\n", 23);
close(fd);

在 Linux 上,你可以用 strace python3 script.py 查看一个程序发起的每一次系统调用。

操作系统的例子和类型

操作系统运行在哪里内核
Windows 11大多数台式机和笔记本电脑Windows NT
macOS苹果 Mac 电脑XNU (Darwin)
Linux(Ubuntu、Fedora、Debian 等)大多数服务器和云主机,部分台式机Linux
Android全球大多数智能手机Linux
iOSiPhoneXNU (Darwin)
ChromeOSChromebookLinux

除了这些通用系统,还有 FreeRTOS、Zephyr 这样的实时操作系统,它们运行在家电、传感器和工业设备的微控制器上,保证在固定时间内作出响应。许多小型设备运行的是为单一用途打造的嵌入式系统。

从表中可以看出,同一个内核可以支撑完全不同的产品。Android 和 ChromeOS 都使用 Linux 内核,再在上面加上各自的软件,而 iOS 和 macOS 共用同一个内核。

编程时为什么要关心操作系统

编译好的程序是为某一个操作系统构建的。Windows 的 .exe 不能在 Linux 上原生运行,哪怕是同一台电脑也不行,因为文件格式和系统调用都不一样。所以下载页面会提供不同的版本,这也是 JVM、Node.js 和 CPython 这类运行环境存在的原因:它们为每个操作系统各构建一次,你的代码就不必这样做了。参见运行环境。

不过,一些小差异还是会暴露出来。运行下面的代码,再和用其他系统的朋友对比一下:

在 Linux 和 macOS 上,它打印:

Path separator: '/'
Line ending: '\n'
projects/notes/todo.txt

在 Windows 上,分隔符是 '\\'(一个反斜杠),换行符是 '\r\n',路径变成 projects\notes\todo.txt。用 os.path.join(或 pathlib)代替手动输入 /,脚本才能在这三种系统上都正常运行。

常见误解

  • “Linux 是一个操作系统。” 严格来说,Linux 是一个内核。Ubuntu 这样的 Linux 发行版加上了 shell、系统工具、包管理器,通常还有桌面,才构成一个完整的操作系统。日常说法里,两者都叫 Linux。
  • “BIOS 是操作系统的一部分。” BIOS 或 UEFI 固件存放在主板上。它检查硬件,然后从磁盘加载操作系统,之后它的主要工作就完成了。
  • “桌面就是操作系统。” 桌面只是运行在内核之上的一个程序。服务器通常完全没有桌面,只通过文本 shell 来控制。
  • “应用程序直接和硬件打交道。” 普通程序不允许这样做。每一次读文件、每一个网络数据包、屏幕上的每一个像素都要经过操作系统,所以一个应用崩溃了,通常不会把整台电脑一起拖垮。

下一步学什么

操作系统是最底层;运行环境位于它和你的代码之间。内存保护机制正是产生段错误的原因,字节这一页讲解了操作系统用来衡量文件和内存的单位。想通过文本 shell 来操作操作系统,可以试试终端课程。

常见问题

计算机没有操作系统能运行吗?

能,但只限于简单、单一用途的设备。比如 Arduino 板上的微控制器,就是直接在硬件上运行一个程序,完全没有操作系统。通用计算机要同时运行多个程序、管理文件、通过驱动程序使用各种硬件,就离不开操作系统。

最常见的 5 种操作系统是什么?

电脑上的 Windows、macOS 和 Linux,以及手机和平板上的 Android 和 iOS。Android 在全球的设备数量最多,Windows 在台式机和笔记本电脑上占主导,大多数服务器和云主机运行的是 Linux。

操作系统主要有哪些类型?

教材的分类方式不止一种。常见的类别有桌面操作系统、移动操作系统、服务器操作系统、实时操作系统(保证在固定时间内作出响应,比如 FreeRTOS)、嵌入式操作系统(内置在设备中),以及把工作分配到多台计算机上的分布式系统。较早的分类还包括批处理系统和分时系统。

怎样查看自己用的是什么操作系统?
在 Windows 上,依次打开“设置”、“系统”、“关于”,或者运行 winver。在 Mac 上,打开苹果菜单,选择“关于本机”。在 Linux 上,在终端里运行 cat /etc/os-release,运行 uname -r 可以查看内核版本。
用简单的话说,操作系统是什么?

它是替所有其他程序管理计算机的那个程序。应用程序请它保存文件、显示窗口或连接互联网,由它去和硬件打交道。它本身也是软件,在开机时从磁盘加载。

Coddy 编程语言插图

和 Coddy 一起学编程

开始