|
16 | 16 |
|
17 | 17 | 我们的讨论将集中在通用操作系统上,因为它们需要的技术是嵌入式系统所需技术的超集,对操作系统原理、概念和技术的覆盖更加全面。现在的通用操作系统是一个复杂的系统软件,比如 Linux 操作系统达到了千万行的 C 源码量级。在学习操作系统的初期,如果去分析了解这样大规模的软件,要付出巨大的代价,因此我们对其进行简化,只讨论最基本的功能。
|
18 | 18 |
|
19 |
| -.. note:: |
20 |
| - |
21 |
| - **什么是系统软件?** |
| 19 | +系统软件 |
| 20 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 21 | + |
| 22 | +系统软件是为计算机系统提供基本功能,并在计算机系统范围内使用的软件,其作用可涉及到整个计算机系统。系统软件包括操作系统内核、驱动程序、工具软件、用户界面、软件库等。操作系统内核是系统软件的核心部分,负责控制计算机的硬件资源并为用户和应用程序提供服务。驱动程序是操作系统用于控制硬件设备的软件,如显卡驱动、声卡驱动和打印机驱动等。一般情况下,驱动程序是操作系统内核的一部分。 |
22 | 23 |
|
23 |
| - 系统软件是在一个计算机系统范围内使用的软件,其作用可涉及到整个计算机系统。 |
| 24 | +工具软件是操作系统提供的用于维护、调试和优化计算机系统的软件,如磁盘碎片整理工具、系统信息工具和病毒查杀工具等。用户界面可以是图形用户界面 (GUI) 或命令行界面 (CLI)。图形用户界面是操作系统的一种常见用户界面,它使用图形元素(如图标、菜单和按钮)来帮助用户使用操作系统。通常,图形用户界面提供了一个桌面环境,其中包含可以打开和关闭的窗口,用户可以在其中运行应用程序和执行其他操作。图形用户界面是操作系统的一种常见用户界面,它使用图形元素(如图标、菜单和按钮)来帮助用户使用操作系统。通常,图形用户界面提供了一个桌面环境,其中包含可以打开和关闭的窗口,用户可以在其中运行应用程序和执行其他操作。 |
| 25 | + |
| 26 | +.. chyyuu |
24 | 27 | 如果这样来看,编辑类软件,如 Vi、Emacs、MS Word等,只涉及到对文本文件的编辑,它们就不能算是系统软件。
|
25 |
| - 而在计算机中安装的 C 标准库 libc(类似的有 Rust 标准库 等)可以算是系统软件,因为它提供了与 OS 交互的系统调用接口,其功能覆盖了整个计算机系统,会被许多不同的软件访问和调用。 |
26 | 28 |
|
27 |
| - 不难看出,操作系统也是这样的一个系统软件。 |
| 29 | +C 语言标准库 libc(类似的有 Rust 标准库 等)提供了与 OS 交互的系统调用接口,其功能覆盖了整个计算机系统,会被许多不同的软件访问和调用。 |
| 30 | + |
| 31 | +从这个角度来看,操作系统是一种系统软件。 |
| 32 | + |
| 33 | +执行环境 |
| 34 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 35 | + |
| 36 | +站在应用程序的角度来看,我们可以发现常见的应用程序其实是运行在由硬件、操作系统内核、运行时库、图形界面支持库等所包起来的一个 :ref:`执行环境 (Execution Environment) <exec-env>` 中。执行环境提供了运行应用软件所需的运行时服务,包括内存管理、文件系统访问、网络连接等,这些服务大部分是由操作系统来提供的。应用程序只需根据与系统软件约定好的应用程序二进制接口 (ABI, Application Binary Interface) 来请求执行环境提供的各种服务或功能,从而完成应用程序自己的功能。基于这样的观察,我们可以把操作系统的定义简化为: **应用程序的软件执行环境** 。这种概括性描述可以适用于操作系统发展的不同历史时期。从这个角度出发,操作系统可以包括运行时库、图形界面支持库等系统软件。 |
| 37 | + |
| 38 | +.. image:: EE.png |
| 39 | + :align: center |
| 40 | + :name: exec-env |
28 | 41 |
|
29 |
| -如果我们站在一万米的高空来看 :ref:`操作系统 <computer-hw-sw>` ,可以发现操作系统这个系统软件干的事主要有两件:一是向下管理并控制计算机硬件和各种外设,二是向上管理应用软件并提供各种服务。我们可对其进一步描述:操作系统是一个可以管理CPU、内存和各种外设,并管理和服务应用软件的系统软件。这样的描述也是大多数操作系统教材上对操作系统的一个比较概括的定义。为了完成这些工作,操作系统需要知道如何与硬件打交道,如何更好地给应用软件提供服务。这就有一系列与操作系统相关的理论、抽象、设计等来支持如何做和做得好这两件事情。 |
| 42 | + |
| 43 | + |
| 44 | +操作系统的定义与组成 |
| 45 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 46 | + |
| 47 | +如果我们站在一万米的高空来看 :ref:`操作系统 <computer-hw-sw>` ,可以发现操作系统这个系统软件干的事主要有两件:一是向下管理并控制计算机硬件和各种外设,二是向上管理应用软件并提供各种服务。我们可对其进一步定义为:操作系统是一种系统软件,主要功能是向下管理CPU、内存和各种外设等硬件资源,并形成软件执行环境来向上管理和服务应用软件。这样的描述也符合大多数操作系统教材上对操作系统的定义。为了完成这些工作,操作系统需要知道如何与硬件打交道,如何给应用软件提供服务。这就有一系列与操作系统相关的理论、抽象、设计等来支持如何做和做得好这两件事情。 |
30 | 48 |
|
31 | 49 | .. image:: computer-hw-sw.png
|
32 | 50 | :align: center
|
|
35 | 53 |
|
36 | 54 | 如果看看我们的身边, Android 应用运行在 ARM 处理器上的 Android 操作系统执行环境中;微软的 Office 应用运行在 x86-64 处理器上的 Windows 操作系统执行环境中;Web Server应用运行在 x86-64 处理器上的 Linux 操作系统执行环境中;Web app 应用运行在 x86-64 或 ARM 处理器上的 Chrome OS 操作系统执行环境中。而在一些嵌入式环境中,操作系统以运行时库的形式与应用程序紧密结合在一起,形成一个可在嵌入式硬件上执行的嵌入式应用。所以,在不同的应用场景下,操作系统的边界也是不同的,我们可以把运行时库、图形界面支持库等这些可支持不同应用的系统软件 (System Software) 也看成是操作系统的一部分。
|
37 | 55 |
|
38 |
| -站在应用程序的角度来看,我们可以发现常见的应用程序其实是运行在由硬件、操作系统内核、运行时库、图形界面支持库等所包起来的一个 :ref:`执行环境 (Execution Environment) <exec-env>` 中,应用程序只需根据与系统软件约定好的应用程序二进制接口 (ABI, Application Binary Interface) 来请求执行环境提供的各种服务或功能,从而完成应用程序自己的功能。基于这样的观察,我们可以把操作系统的定义简化为: **应用程序的软件执行环境** 。这种概括性描述可以适用于操作系统发展的不同历史时期。从这个角度出发,操作系统可以包括运行时库、图形界面支持库等系统软件。 |
| 56 | +那操作系统的组成部分包含哪些内容呢?在一般情况下,操作系统的主要组成包括: |
39 | 57 |
|
40 |
| -.. image:: EE.png |
| 58 | +1. 操作系统内核:操作系统的核心部分,负责控制计算机的硬件资源并为用户和应用程序提供服务。 |
| 59 | +2. 系统工具和软件库:为操作系统提供基本功能的软件,包括工具软件和系统软件库等。 |
| 60 | +3. 用户接口:是操作系统的外壳,是用户与操作系统交互的方式。用户接口包括图形用户界面(GUI)和命令行界面(CLI)等。 |
| 61 | + |
| 62 | +而本书重点讲述的对象是操作系统内核,它的主要组成部分包括: |
| 63 | + |
| 64 | +1. 进程/线程管理:内核负责管理系统中的进程或线程,创建、销毁、调度和切换进程或线程。 |
| 65 | +2. 内存管理:内核负责管理系统的内存,分配和回收内存空间,并保证进程之间的内存隔离。 |
| 66 | +3. 文件系统:内核提供文件系统接口,负责管理存储设备上的文件和目录,并允许应用访问文件系统。 |
| 67 | +4. 网络通信:内核提供网络通信接口,负责管理网络连接并允许应用进行网络通信。 |
| 68 | +5. 设备驱动:内核提供设备驱动接口,负责管理硬件设备并允许应用和内核其他部分访问设备。 |
| 69 | +6. 同步互斥:内核负责协调多个进程或线程之间对共享资源的访问。同步功能主要用于解决进程或线程之间的协作问题,互斥功能主要用于解决进程或线程之间的竞争问题。 |
| 70 | +7. 系统调用接口:内核提供给应用程序访问系统服务的入口,应用程序通过系统调用接口调用操作系统提供的服务,如文件系统、网络通信、进程管理等。 |
| 71 | + |
| 72 | +下图就是一个典型的UNIX操作系统的组成示意图: |
| 73 | + |
| 74 | +.. image:: ../../os-lectures/lec1/figs/ucorearch.png |
41 | 75 | :align: center
|
42 |
| - :name: exec-env |
| 76 | + :scale: 100 % |
| 77 | + :name: unix-arch |
| 78 | + |
| 79 | + |
43 | 80 |
|
44 | 81 | 站在计算机发展的时间尺度看
|
45 | 82 | ----------------------------------
|
|
0 commit comments