Contents
  1. 1. 什么是操作系统
    1. 1.1. 操作系统的定义
    2. 1.2. 操作系统的功能
    3. 1.3. 操作系统的结构
  2. 2. 为什么需要操作系统
  3. 3. 操作系统是如何工作的
    1. 3.1. 操作系统的启动过程
    2. 3.2. 操作系统是如何为用户程序服务的?
    3. 3.3. 操作系统是如何管理硬件和软件资源的?
  4. 4. 结语
  5. 5. References

为了探究操作系统的工作原理。我们先要知道它是什么,它的作用,以及它的组成结构。然后我们解释为什么需要操作系统。最后,我们开始探究操作系统的工作原理,它是如何实现这些功能的。

什么是操作系统


操作系统的定义

操作系统是一个一直运行在计算机中的程序。它管理着计算机的硬件和软件资源,提供一些服务给计算机的程序。为了更好的理解操作系统,我们可以把它对比一个政府组织,它作用的与政府组织相类似。一个政府组织,它不是为了自己而运作,而是为了给百姓提供服务。操作系统它提供了一个环境,让程序可以在操作系统中运行。


操作系统的功能

  • 用户接口。如用户图形界面,终端等。
  • 程序的执行。
  • I/O 操作。
  • 文件系统操作
  • 通信。
  • 错误侦探。
  • 资源分配。如,为程序分配CPU、分配内存。

操作系统的结构

常见的操作系统结构如下。

  • 整体结构 (Monolithic Structure)。结构比较简单,没有清晰的层次和模块划分。这种结构,初期看起来会比较简单。由于耦合度较高,后期就比较难维护,以及容易出现安全问题。
  • 分层结构 (Layered Approach)。系统分为多个层,较低的层的提供一系列方法给较高的层调用。这是一种松耦合的结构,系统中某一个部分改变对其它部分没有很大的影响。另外,这种结构比较易于系统调试。
  • 微核心结构 (Microkernels)。把所有不必要的组件从内核中移除,作为用户层的软件去实现,把内核最小化。这样的结构易于系统扩展,添加新的系统服务不需要修改内核。
  • 组件化结构 (Modules)。内核包含一些核心的组件,其它系统服务模块可以通过动态加载来实现。

现代操作系统一般采用上面的某一种结构。但有的操作系统会采用混合多种不同的结构。大部分现代操作系统都采用一种组件化结构称为 Loadable Kernel Modules (LKMs)。

虽然每个系统的结构各不相同,但它提供的功能大致是相同的。如进程管理,文件管理,设备管理等功能是必要的。每个系统为了实现它要提供的功能,采用一个合适的结构就好。最重要的是把功能很好的实现,以及方便操作系统能够持续的维护和优化。

现代 Linux 系统内核结构采用组件化结构,如图


为什么需要操作系统

操作系统是连接硬件和用户软件的媒介。它对硬件资源进行管理,提供一个让用户软件可以运行的环境,以及给用户提供了用户图形接口(GUI)让用户可以方便使用硬件资源。没有操作系统提供的环境,我们就无法享受各种各样的应用软件带来的便利。


操作系统是如何工作的


操作系统的启动过程

当笔记本电脑按下开机键后,位于电脑主板上的固件 ROM 中的启动程序(Boot Loader)会运行,常见的启动程序有 BIOS 和 UEFI。启动程序会加载操作系统的启动程序,进而把整个操作系统加载到内存中并开始执行操作系统。然后安装驱动程序,创建初始化系统进程,启动必要的服务(如Web服务器,数据库等),最终出现系统登录的页面。


操作系统是如何为用户程序服务的?

操作系统启动成功后,就可以登录系统。用户可以根据自己的需要运行相应的程序,如浏览器,文本编辑器等。

一个程序的运行,需要把可执行文件加载到内存中,需要使用 CPU 去执行。然而,硬件资源(CPU,内存等)是被操作系统所管理的,为了安全和高效,用户程序不能直接使用硬件资源。

操作系统为用户程序提供了一系列的接口,通过调用对应的接口获取相应的服务和资源。这一系列接口称为系统调用 (System Call)接口。

常见的系统调用接口

  • 进程控制。创建子进程,获取进程属性,分配额外内存空间等等。
  • 文件管理。创建和删除文件,打开和关闭文件,读写文件等等。
  • 设备管理。请求连接设备,关闭设备,读写设备等等。

操作系统是如何管理硬件和软件资源的?

为了更高效的使用硬件资源,需要合理的管理和分配资源。操作系统负责给进程分配资源。关于 CPU 的分配,一般采用轮询调度算法(Round-Robin Scheduling),即每个进程依次被 CPU 执行一个小的时间片段。关于内存的分配,一般采用的是虚拟内存,它可以使进程的逻辑内存空间远大于实际的物理内存空间,从而能运行更多的程序,更大程度的使用计算机硬件资源。

除了管理硬件资源,操作系统还要管理软件资源。如何让进程同步,如何解决进程死锁,如何实现文件I/O 等等。由于篇幅原因,这里就不具体展开。以后会单独作为一篇文章去写。


结语

通过了解操作系统是什么,为什么需要操作系统,以及操作系统的工作原理。我们大致了解操作系统的内部结构和实现机制。想要了解更多操作系统相关内容,可以阅读我的参考内容。


References

[1] Silberschatz, A. Operating system concepts 10th [M]. 2018.

[2] Operating system - Wikipedia

Contents
  1. 1. 什么是操作系统
    1. 1.1. 操作系统的定义
    2. 1.2. 操作系统的功能
    3. 1.3. 操作系统的结构
  2. 2. 为什么需要操作系统
  3. 3. 操作系统是如何工作的
    1. 3.1. 操作系统的启动过程
    2. 3.2. 操作系统是如何为用户程序服务的?
    3. 3.3. 操作系统是如何管理硬件和软件资源的?
  4. 4. 结语
  5. 5. References