操作系统与软件

一台计算机上往往同时运行着浏览器、编辑器等多个程序。操作系统(Operating System,简称 OS) 位于底层硬件与应用程序之间,负责统一调度硬件资源并隔离不同程序。

操作系统管什么

操作系统的核心职责包括五个方面:

  1. 进程调度:分配 CPU 时间片,在多个运行中的程序之间切换。
  2. 内存管理与隔离(虚拟内存):为每个进程分配独立的虚拟内存空间。普通程序无法直接读取或修改其他进程(例如密码管理器)的内存,一旦越界访问就会被系统终止。
  3. 文件系统管理:将磁盘存储空间组织为目录与文件。
  4. 设备驱动管理:通过驱动程序将不同型号的网卡、显卡、磁盘封装成统一的读写接口供应用程序调用。
  5. 用户与权限控制:记录当前登录用户与运行进程的所属身份,在访问文件或系统资源时核对权限。

用户态、内核态与系统调用

为了防止普通软件绕过操作系统直接去动硬件,CPU 和操作系统把运行环境分成了两层:

  • 内核态(Kernel Space):操作系统最核心的内核(Kernel)运行在这里,拥有最高硬件特权,可以访问所有物理内存和硬件设备。
  • 用户态(User Space):平时用的浏览器、编辑器、聊天软件全都在用户态运行,受到严格限制,不能直接碰硬件,也不能看别的程序的内存。

当一个用户态程序需要读文件、发网络包或者申请内存时,必须通过系统调用(System Call)向内核打报告:由内核检查权限无误后,替它操作硬件,再把结果传回来。

应用通过系统接口请求服务,内核和驱动管理硬件

注意

在 Windows 上选“以管理员身份运行”或在 Linux 下用 root 账号跑一个程序,这个程序依然运行在用户态,同样要走系统调用;区别只是内核检查权限时会给管理员身份放行更多系统配置。只有系统内核本身和硬件驱动才真正跑在内核态。

常见操作系统与 Linux 发行版

平时打交道最多的操作系统主要有:

  • 桌面系统:Windows、macOS、Linux 桌面版。
  • 手机系统:Android(底层基于 Linux 内核)、iOS。
  • 服务器系统:互联网服务器和云主机绝大多数跑的都是 Linux,少数企业内网用 Windows Server。

严格来说,“Linux”原本只指操作系统内核。不同团队把 Linux 内核加上包管理器、基础工具和桌面打包在一起,就成了各种 Linux 发行版(Distro):比如常用来做服务器和开发的 Ubuntu / Debian、企业常用的 Rocky Linux / RHEL,以及专门预装了大量渗透测试工具的 Kali Linux。

代码是怎么跑起来的

程序员写的源代码要变成能跑的程序,常见有两种方式:

  • 编译型(如 C、C++、Go、Rust):发布前先用编译器把源码直接翻译成对应系统和 CPU 架构的机器码可执行文件(如 Windows 的 .exe、Linux 的 ELF 文件),CPU 可以直接执行。
  • 解释型(如 Python、JavaScript、PHP):运行时启动对应的解释器(比如 python3 或 node),由解释器一行行读取源码并执行。

而我们操作操作系统也有两种方式:用鼠标点窗口图标叫 图形界面(GUI);在终端里敲文本命令交给 Shell(如 Linux 的 bash、Windows 的 PowerShell)执行叫 命令行界面(CLI)。远程服务器一般不装图形桌面,后面做安全测试经常要直接用命令行操作。

本章阅读

阅读标记