Linux操作系统 —— 设计目标(三)

Linux操作系统 —— 设计目标(三)

本系列,是自己学习Linux过程中的笔记。
希望读者在看完全文后,也能留下你们的经验或者问题。
如果能从这里学到点东西,记得请我喝杯☕☕☕~

—— MinRam

一、前言 Overview

在上文的内核篇,我们可以知道,操作系统(Operate System)就是在管理各种物理资源,如中央处理器CPU、内存memory、磁盘disk等,并对他们进行抽象,虚拟化。 操作系统,提供了高并发能力(Concurrency),以及长期且安全的数据存储能力。

在了解操作系统的设计细节时,需要了解操作系统的原则,或者说时系统的目标,协助我们理解实现逻辑的优缺点。

二、设计目标

2.1 概念抽象 Abstraction

抽象,是IT界内一门极其重要的能力。从系统设计到代码开发,无处不在。

抽象程度

抽象,是一种展现其外观而隐藏其实现细节的手段。因而,我们才能通过对复杂功能的抽象和细化,设计出复杂的操作系统。例如:

  • 操作系统,就是对硬件细节进行抽象,并提供接口给上层程序;进程、虚拟内存、文件等这些概念,则是对相应资源或者数据的抽象。
  • C语言,就是对底层系统操作的抽象,我们在进行编码的时候并不需要知道实际机器语言的代码是如何被执行。

2.2 高性能 Performance

系统,是硬件的管家,需要提供较高的硬件使用效率

资源占用情况

换种说法,就是操作系统应尽可能少的占用硬件资源。上文讲到,系统内核是对硬件的虚拟化(Virtualization),CPU, 内存,磁盘等等,为上层用户程序提供通用的接口。但整个虚拟化过程并非是没有性能损耗的,如CPU在各个进程切换时,需要重新加载上下文。所以在设计系统新特性时,应考虑代码量,运行耗时,存储需求(内存和磁盘)等。

2.3 应用隔离 Protection between applications

在系统上,同一时间会有多个程序在同时运行

系统应实现处理好应用之间的关系,也包括应用同系统的关系,。换个说法就是系统应保护各个用户程序的空间不受其他用户程序侵犯。为了保证系统上能同时运行多个程序,我们不希望恶意程序去影响正常程序,甚至影响到系统的正常运行。例如进程管理系统中的僵尸进程和孤儿进程。

2.4 高可靠性 Reliability

系统往往追求高可靠性

操作系统,应保证高比例的可靠性。当用户程序出问题时,我们并不希望系统因此就宕机。这样才能继续支持其他正常程序的运行。

在上百万行代码中,保证系统能有较高的可靠性和异常处理能力,具有极大挑战。

2.5 其他 Others

除了以上重要目标外,基于操作系统的承载硬件的不同,还会有不同的额外目标:

  • 能源使用效率:针对于环保节能理念,以及应对移动办公的需求,电量往往是有限的。因而需要考虑合理分配剩余电量,如CPU降频,散热系统降级和降低显示器亮度等方案。
  • 安全: 针对恶意软件的防护隔离,特别是高速网络的出现。
  • 移动便携性:从个人台式电脑,到笔记本,再到手机,再到穿戴设备等,移动需求越来越必要。如支持触屏等。

三、总结

没有完美的方案,只有更好的方案

对于以上每一项技术目标,每个人都会有自己的考量和最终的方案。而实际运用到操作系统中的,要么采用,要么替代更新。方案并不可能完美,只会不断的优化,以及接受长期的考量,最后被广泛采用的那个则是在总体上成本低,收益高(性能以及其余实际因素)的折中方案。

要想出一个方案的大致思路还算简单,在有经验的支持下,通过直觉或是其他问题的参照。

除了这类方法,最简单的方式就是将总多较好方案的进行结合,这一方法成为杂合方法(Hybrid-Approach).如在IT界内,段页式内存、两段锁、设备交互协议等。这样的方法自然比不过在深刻理解一个问题后得出的新的更统一的解决方案,但是它是能在已有方案下快速提升收益的手段。

作者

MinRam

发布于

2022-04-11

更新于

2022-07-17

Licensed under

评论