🚥 操作系统课程笔记导航

  1. 第 1 章 操作系统概述 ⇦ 当前位置 🪂

1 什么是操作系统

操作系统有两个职责:一是对硬件进行管理和抽象,二是为应用提供服务并进行管理。操作系统的核心功能是将有限的、离散的资源高效地抽象为无限的、连续的资源,将硬件通过易用的接口提供给上层应用,从而使应用开发者和用户无需过多考虑繁琐的硬件细节。

随着硬件种类和应用需求变得越来越丰富,大量的共性功能沉淀到操作系统中,使操作系统的内涵和外延不断扩大。可以将操作系统分为内核系统服务应用框架三层,后两者统称为操作系统框架

操作系统内核负责对硬件资源的管理和抽象,为操作系统框架提供基础的系统服务。系统服务则基于操作系统内核提供的功能进行进一步抽象和封装,从而方便上层应用框架的设计与开发。应用框架基于系统服务提供的功能,结合应用领域的特点,提供应用开发与运行的共性功能,从而方便开发者开发与管理。

2 操作系统简史

  • GM-NAA I/O:批处理操作系统:1956 年,IBM704 上现了第一个实际使用的操作系统 GM-NAA I/O。该系统主要是对输出和输出的自动化管理,该系统解放了 “操作员”,因此该系统就被称作 “操作系统”,操作系统的名字由此而来。GM-NAA I/O 是一个批处理操作系统
  • OS/360:从专用走向通用:1964 年,IBM 发布了名为 IBM System/360 的大型机。该计算机实现了两大突破:(1) 通过定义指令集架构,将计算机架构与实现进行解耦。(2) 将操作系统与底层硬件解耦,操作系统从而进入了通用时代。
  • Multics/UNIX/Linux:分时与多任务:Multics 的理念非常先进,使用了分时,将文件与内存进行分离的概念,也提出了文件系统、动态链接、硬件热替换、特权级分层等开创性概念。曾经参与过 Multics 项目 Ken Thompson 写了 UNIX,在 UNIX 中引入了 shell,并且支持管道(pipe)等进程间通信方式。Dennis Ritchie 于1972~1973年设计实现了 C 语言,并用 C 语言重写了 UNIX。由于 UNIX 系统版权复杂且收费,Andrew S. Tanenbaum 教授在1987年开源了用于教学版的 MINIX 操作系统。1991 年,Linus Torvalds 在 MINIX 基础上设计了 Linux 操作系统,Linux 成为目前世界上最成功的开源操作系统。
  • macOS/Windows,以人为本的人机交互:最早有图形用户界面(GUI)的操作系统是 1973 年施乐公司 Xerox PARC 的 Alto 计算机。1979 年,苹果公司开发了著名的 Macintosh 系列个人计算机,后来微软开发了基于图形界面的操作系统 Windows。
  • iOS/Androd,移动互联网时代的操作系统:2007 年苹果发布了第一代 iPhone,标志着 iOS 操作系统的诞生。iOS 的设计很大程度上复用了 macOS 的功能,针对 iPhone 等触屏设备进行了重新设计与优化。2005 年谷歌公司发布了 Android1.0 操作系统,Android 采用开源的方式构建生态,使得 Android 在移动互联网时代的操作系统中占据主流地位。

3 操作系统接口

操作系统的演进过程中形成了一些相对稳定的接口。越是下层的接口数量相对更少,变动相对不频繁,越是上层的接口数量相对更多,变化相对更频繁。

  • 系统调用接口(System Call):应用程序通过操作系统内核提供的接口向内核申请服务,这些接口通常称为系统调用接口。
  • POSIX 接口:由于每个操作系统提供的系统调用接口各不相同,为了实现同一应用程序在不同操作系统上的可移植性,逐渐形成了一些接口标准。POSIX 接口是其中应用最广泛的一个,POSIX 标准通常通过 C 语言库实现。
  • 领域应用接口:在 POSIX 或系统调用接口的基础上,还可以封装面向不同领域的应用,可以更方便应用的开发。例如汽车行业的 AUTOSAR 接口,安卓的应用框架等。