Skip to content
登录后刷题更便捷

计算机操作系统基础

操作系统定义

操作系统是运行在内核态的软件,它执行两个基本上独立的任务。

  • 隐藏计算机底层硬件的实现,为用户及应用程序提供一个资源集的清晰抽象。
  • 管理计算机硬件资源。

任何操作系统的核心是它可处理的系统调用集。这些系统调用集真实地说明了操作系统做的工作。

计算机运行模式

多数计算机有两种运行模式:内核态和用户态。

软件中最基础的部分是操作系统,它运行在内核态。这内核态模式下,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下,在用户态下,只能使用机器指令中的一个子集。

计算机运行模式

shell 与 GUI

用户与之交互的程序,基于文本的通常称为 shell,而基于图标的则称为图形用户界面(GUI)。

它们并不是操作系统的一部分,它们是运行在用户态最低层次的用户接口程序

对于抽象的理解

现代计算机系统中,大量使用了抽象这一概念。抽象是管理复杂性的一个关键。好的抽象可以把一个几乎不可能管理的任务划分为两个可管理的部分。其中第一部分是有关抽象的定义和实现,第二部分是随时用这些抽象解决问题。

以抽象的角度看操作系统,它的任务就是创建好的抽象,并实现和管理它所创建的抽象。

多路复用资源方式

在时间上复用:当一种资源在时间上复用时,不同的程序或用户轮流使用它。

在空间上复用:每个客户得到资源的一部分。

I/O 设备的结构

I/O 设备一般包括两个部分:设备控制器和设备本身。控制器插在电路板上的一块芯片或一组芯片,这块电路板物理地控制芯片,它从操作系统接收命令。

控制器的任务是为操作系统提供一个简单的接口。每类设备控制器是不同的,所以需要不同的软件进行控制。专门与控制器对话,发出命令并接收响应的软件,称为设备驱动程序。为了使用设备驱动程序,必须要把设备驱动程序装入到操作系统中,这样它可在核心态中运行。

每个设备控制器都有少量的用于通信的寄存器,所有的寄存器的集合构成了 I/O 空间。

IDE 概念

IDE 表示集成驱动电子设备,是许多计算机的磁盘标准。

实现输入输出的三种方式

第一种方式,用户程序发出一个系统调用,内核将其翻译成一个对应设备驱动程序的过程调用。然后设备驱动程序启动 I/O 并在一个连续不断的循环中检查该设备,看该设备是否完成了工作。当 I/O 结束后,设备驱动程序把数据送到指定的地方(若有此需要),并返回。然后操作系统将控制返回给调用者。这种方式称为忙等待(busy waiting),其缺点是要占据 CPU ,CPU 一直轮询设备直到对应的 I/O 操作完成。

第二种方式,设备驱动程序启动设备并且让该设备在操作完成时发出一个中断。设备驱动程序在这个时刻返回。操作系统接着在需要时阻塞调用者并安排其他工作进行。当设备驱动程序检测到该设备的操作完毕时,它发出一个中断通知操作完成。

终端实例

第三种方式,为 I/O 使用一种特殊的直接存储器访问(Direct Memory Access,DMA)芯片,它可以控制在内存和某些控制器之间的位流,而无须持续的 CPU 干预。

CMOS 存储器

CMOS 存储器是易失性的。许多计算机利用 CMOS 存储器保持当前时间和日期。 CMOS 存储器和递增时间的时钟电路有一块小电池驱动,所以,即使计算机没有上电,时间也可以正确地更新。

USB 概念

USB 是通用串行总线,是用来将所有的慢速 I/O 设备,诸如键盘和鼠标,与计算机相连。USB 是一种集中式总线,其根设备每 1ms 轮询一次 I/O 设备,看是否有消息收发。所有的 USB 设备共享一个 USB 设备驱动器,于是就不需要为新的 USB 设备安装新的设备驱动器了。

即插即用概念

在一般的计算机工作环境下,操作系统必须了解有些什么外部设备连接到计算机上,并对它们进行配置。这种需求导致了 Intel 和微软设计了一种名为即插即用的 I/O 系统。

在即插即用之前,每块 I/O 卡有一个固定的中断请求级别和用于其 I/O 寄存器的固定地址。即插即用所做的工作是,系统自动地收集有关 I/O 设备的信息,集中赋予 I/O 地址,然后通知每块卡所用的数值。

计算机的启动

Pentium 的简要启动过程如下。在每个 Pentium 上有一块母板。在母板上有一个称为基本输入输出系统(Basic Input Output System,BIOS)的程序。在 BIOS 内有底层 I/O 软件,包括读键盘、写屏幕、进行磁盘 I/O 以及其他过程。现在这个程序存放在一块闪速 RAM 中,它是非可易失性的,但是在发现 BIOS 中有错时可以通过操作系统对它进行更新。

简要过程如下:

  1. BIOS 开始运行。它首先检查计算机设备的状态信息是否正常。
  2. 扫描并记录总线所连设备。
  3. 依次搜索启动设备,导入操作系统。
  4. 操作系统询问 BIOS ,获得配置信息,获取所有设备的驱动程序并调入内核。
  5. 初始化有关表格,创建需要的任何背景进程,并在每个终端上启动登录程序或 GUI。

操作系统分类

大型机操作系统、服务器操作系统、多处理器操作系统、个人计算机操作系统、掌上计算机操作系统、嵌入式操作系统、传感器节点操作系统、实时操作系统、智能卡操作系统

实时操作系统的基本概念

实时操作系统的特征是将时间作为关键参数。通常分为硬实时操作系统和软实时操作系统。

在硬实时操作系统中,某个规定的动作必须绝对地在规定的时刻(或规定的时间范围)发生。

在软实时操作系统中,偶尔违反最终时限是不希望的,但可以接受,并且不会引起任何实时性的损害。

UID

系统管理器授权每个进程使用一个给定的 UID 标识。每个被启动的进程都有一个启动该进程的用户 UID 。子进程与父进程拥有一样 UID。用户可以是某个组的成员,每个组也有一个 GID 标识。

文件路径

在 UNIX 中,绝对路径名包含了从根目录到该文件的所有目录清单,它们之间用正斜线 / 隔开。最开始的正斜线标识这是从根目录开始的绝对路径。

在 MS-DOS 和 Windows 中,用反斜线 \ 作为分隔符。

文件系统安装

UNIX 一个重要概念是安装文件系统。几乎所有的个人计算机都有一个或多个光盘驱动器,可以插入 CD-ROM 和 DV D。它们几乎都有 USB 接口,可以插入 USB 存储棒(实际是固态磁盘驱动器)。为了提供一个出色的方式处理可移动介质,UNIX 允许把在 CD-ROM 或 DVD 上的文件系统接入到主文件树上。 mount 系统调用允许把在 CD-ROM 上的文件系统连接到程序所希望的根文件系统上。

特殊文件

提供特殊文件是为了使 I/O 设备看起来像文件一般。这样,就像使用系统调用读写文件一样,I/O 设备也可通过同样的系统调用进行读写。

有两类特殊文件:块特殊文件和字符特殊文件。

块特殊文件指那些由可随机存取的块组成的设备,如磁盘等。比如打开一个块特殊文件,然后读第 4 块,程序可以直接访问设备的第 4 块而不必考虑存放该文件的文件系统结构。

字符特殊文件用于打印机、调制解调器和其他接收或输出字符流的设备。按照惯例,特殊文件保存在 /dev 目录中。例如,/dev/lp 是打印机。

文件保护

UNIX 操作系统通过对每个文件赋予一个 9 位的二进制保护代码,对 UNIX 中的文件实现保护。该保护代码有三个 3 位字段,一个用于所有者,一个用于所有者同组(用户被系统管理员划分成组)中的其他成员,而另一个用于其他人。每个字段中有一位用于读访问,一位用于写访问,一位用于执行访问。这些位就是知名的 rwx 位。

系统调用概念

如果一个进程正在用户态中运行一个用户程序,并且需要一个系统服务,比如从一个文件读数据,那么它就必须执行一个陷阱或系统调用指令,将控制转移到操作系统。操作系统接着通过参数检查,找出所需要的调用进程。然后,它执行系统调用,并把控制返回给在系统调用后面跟随着的指令。在某种意义上,进行系统调用就像进行一个特殊的过程调用,但是只有系统调用可以进入内核,而过程调用则不能。

POSIX

UNIX 有很多不兼容的版本,从而导致了混乱。为了能使编写的程序能够在任何版本的 UNIX 系统运行,IEEE 提出了一个 UNIX 标准,称为 POSIX,目前大多数 UNIX 版本都支持他。 POSIX 标准定义了凡是 UNIX 必须支持的小型系统调用接口。

Windows Win32 API

Windows 和 UNIX 的主要差别在于编程方式。一个 UNIX 程序包括做各种处理的代码以及从事完成特定服务的系统调用。相反,一个 Windows 程序通常是一个事件驱动程序。其中主程序等待某些事件发生,然后调用一个过程处理该事件。

在 UNIX 中,系统调用(如 read)和系统调用所使用的库过程(如 read)之间几乎是一一对应的关系。换句话说,对于每个系统调用,差不多就涉及一个被调用的库过程。

在 Windows 中,情况就大不相同了。首先,库调用和实际的系统调用是几乎不对应的。微软定义了一套过程,称为应用编程接口(Application Program Interface,Win32 API),程序员用这套过程获得操作系统的服务。

Win32 并不是非常统一的或有一致的接口。其主要原因是由于 Win32 需要与早期的在 Windows 3.x 中使用的 16 位接口向后兼容。

Windows 中没有类似 UNIX 中的进程层次,所以不存在父进程和子进程的概念。在进程创建之后,创建者和被创建者是平等的。

操作系统结构

单体结构、层次式结构、微内核、客户机-服务器模式、虚拟机、外核、

微内核的概念

在微内核设计背后的思想是,为了实现高可靠性,将操作系统划分成小的、良好定义的模块,只有其中一个模块——微内核——运行在内核态上,其余的模块,由于功能相对弱些,则作为普通用户进程运行。特别地,由于把每个设备驱动和文件系统分别作为普通用户进程,这些模块中的错误虽然会使这些模块崩溃,但是不会使得整个系统死机。

机制与策略分离原则

策略指的是做什么,机制指的是怎么做。例如一个比较简单的调度算法是,对每个进程赋予一个优先级,并让内核执行在具有最高优先级进程中可以运行的某个进程。这里,机制(在内核中)就是寻找最高优先级的进程并运行之。而策略(赋予进程以优先级)可以由用户态中的进程完成。在这个方式中,机制和策略是分离的,从而使系统内核变得更小。

make 程序

在 UNIX 系统中,有个名为 make 的程序(其大量的变体如 gmake、pmake 等),它读入 Makefile ,该 Makefile 说明哪个文件与哪个文件相关。make 的作用是,在构建操作系统二进制码时,检查此刻需要哪个目标文件,而且对于每个文件,检查自从上次目标文件创建之后,是否有任何它依赖(代码和头文件)的文件已经被修改了。如果有,目标文件需要重新编译。在大型项目中,创建 Makefile 是一件容易出错的工作,所以出现了一些工具使该工作能够自动完成。

友情提示

本站大部分内容来自于网络,绝大部分内容对读者免费开放,如有不恰当的地方欢迎与我们取得联系更正,谢谢。

内容仅供参考,难免有不恰当的地方,如果有问题欢迎及时反馈
部分内容来自网络,如果不慎侵犯您的权益,请联系我们,以便及时删除侵权内容