目录
一、计算机系统层次结构
计算机系统的层次结构通常由 5 个以上不同的级别组成,每一级都能进行程序设计。
1. 微程序设计级
这是一个实在的硬件级,它 由机器硬件 直接执行微指令。如果 某一个应用程序 直接用微指令来编写,那么可在 这一级上运行该 应用程序。
2. 一般机器级
也称为 机器语言级。这一级 由微程序 解释机器 指令系统,也是 硬件级。
3. 操作系统级
它由操作系统 程序实现。这些 操作系统程序 由机器指令 和 广义指令 组成。广义指令 是操作系统定义 和 解释的 软件指令,所以这一级也称为 混合级。
4. 汇编语言级
它给程序人员提供一种 符号形式语言,以 减少程序编写的复杂性。这一级 由汇编程序 支持和执行。如果应用程序 采用 汇编语言编写,则机器 必须要有这一级的 功能。如果 应用程序不采用汇编语言 编写,则这 一级可以不要。
5. 高级语言级
它是面向用户的,为 方便用户编 写应用程序而设置。这一级 由各种 高级语言编译程序 支持和执行。
二、计算机系统组成
计算机硬件主要由 5 大部件 组成,即 运算器、控制器、存储器、输入设备和输出设备,其中包含 接口 和 其他外部设备。将这些 硬件按照 某一种方式 有机地 连接起来就是 硬件系统。通常将 运算器 和 控制器称为 中央处理器 (Central Processing Unit, CPU),CPU 和 存储器一起 称为 主机,而 输入设备和 输出设备均称为 外围设备。
1. 运算器
运算器是 计算机的 数据加工处理部件,它的主要功能是进行算术运算和逻辑运算。
2. 控制器
控制器是 统一指挥 和 控制计算机各部件工作的 中央机构,它的主要功能是 按照 人们预先 确定的 操作步骤,控制 整个计算机的 各部件协调地 进行工作。
3. 存储器
存储器是计算机用来 存放程序 和数 据的 部件,具有 “ 记忆 ” 功能。它的基本功能是按照指定的存储位置 “ 读出 ” 或 “ 写入 ” 信息。
存储器分为内存储器(内存)和外存储器(外存)。内存由半导体器件 RAM 和 ROM构成,用来存放 CPU 正在执行的 指令和数据。外存 由磁性材料等 构成,用来存放暂时 不执行的程序和数据,常用的 外存有软盘、硬盘、光盘、U盘和磁带机 等。
具体可看这篇文章: 常用存储器
4. 输入设备
输入设备的任务是 将 人们编制好的 程序 和 原始数据送到 计算机中。其功能就是 将它们转换成 计算机能够 识别的 电信号,并将这些 电信号存 放到计算机的 存储器中。
5. 输出设备
输出设备 的任务是 将计算机的处理结果 进行输出。其功能是将计算机 中用 代码描述 的处理结果转换成 人类认识的符号 进行输出。
三、操作系统的定义
计算机系统 能够按 用户的要求接收和存储信息,经过处理、计算,输出结果信息,整个 工作过程的完成,依赖的是 硬件和软件 两部分。硬件 是指 处理器、存储器、输入 / 输出设备和通信装置等;软件 是指为 完成特定 任务而由 硬件执行的 程序、数据 和 其他 相关文档。
计算机软件按照功能划分,可分为三大类:系统软件、支持软件和应用软件。
系统软件 的功能实现是 直接与硬件发生联系,而与具体 应用领域无关,主要包括 操作系统、设备驱动程序、通信处理程序等。
支持软件 用于 支撑具体应用软件程序的开发和维护,包括软 件编译器、开发环境工具(如JDK、 Visual Studio.NET) 等,有时 支持软件 和 系统软件 之间并没有严格 的界限。
应用软件 则是 针对特定应用领域问题的软件工具程序,包括文字处理程序(如 Word)、医疗行业软件、办公自动信息系统 等。
上图中的每层都具有 一组功能并对外提供相应的接 口,接口对层内 隐蔽实现细节,对层外提供 特定的 应用规范。
操作系统 是计算机 系统的核心 系统软件,能够 有效 地控制 和 管理 计算机系统中的 硬件和软件资源,并 合理组织计算机工作流程,为用户 方便而有效地 使用计算机 提供良好、高效的运行环境。
四、应用程序与操作系统的关系
用户是通过 操作系统 来使用计算机的,操作系统 为用户程序提供了一个 虚拟的机器界面,应用程序运行在 这个界面之上。
从用户的角度,操作系统 通过虚拟 的机器界面给 应用程序提供各种 服务功能,应用程序 在运行过程 中不断 使用操作系统 提供的服务 来完成 自己的任务。当 调用 操作系统的 某项服务功能时,计算机的 控制权 从用户 应用程序将转移 到操作系统,而 操作系统在完成 这些 应提供的功能后,将控制权 再返回给 应用程序。
用户的应用程序 是不能在 操作系统启动 之前执行的。在此之后,每当 启动执行一个应用程序,都相对于 操作系统将控制权 转移给 用户程序,当其 执行完毕再返回给 操作系统。从计算机系统启动 之初,从操作系统的先运行角度看,操作系统 成为了主程序,在计算机 开机期间,都是它在 不断调用用户的 各种程序,循环往复,直到计算机 关闭。
五、操作系统的基本特征
1. 并发性 (Concurrence)
并行性,又称为 共行性,是指能处理 多个同时性 活动的 能力。在 多道程序环境下,并发性是指 宏观上 在一段时间内有 多道程序在同时运行,但 微观 上看(在单处理机系统中),每一时刻 只能执行一道程序,所以 这些程序是 在同一时间间隔内 交替执行。
在 多处理机系统中,并发程序 不仅在 宏观上 是并发的,而且在 微观上 也是 并行运行的。在 分布式系统 中,多台计算机 并存,使程序 的并发特征 得到更充分的 体现。
并行 和 并发是既相似又有区别的 两个概念。并行 是指两个或多个事件在同一时刻发生,而 并发 是指两个或多个事件在同一时间间隔内发生。
2. 共享性 (Sharing)
是指系统中的 软 / 硬件 资源 不再为某个程序 所独占,而是 供多个应用程序 共同使用。操作系统 要在多个并发程序 间通过 调度 来分配处理器 时间,并且保 证对系统 数据共享 的正确性 以及数据的 完整性。
根据 资源的属性 不同,共享 可分为互斥共享和同时共享两种方式。互斥共享 是指系统中的资源虽 能提供给 多个进程使用,但在一段时间 内却 只允许一个进程访问该资源。同时共享 允许在一段时间内,由 多个进程 同时对资源进行访问。当然,“ 同时 ” 仍然是宏观上的,微观上,这些进程可能是 交替 地对该资源进行访问。
补:并发和共享 是 操作系统的 两个最基本的 特征,它们又是 互为存在的条件。
一方面,资源共享 是 以程序(进程)的并发执行 为条件的,若系统 不允许 程序 并发执行,自然 不存在资源 共享问题;
另一方面,若系统不能 对资源 共享实施 有效管理, 协调好 诸进程对 共享资源的访问,也 必然影响到 程序并发执行的 程度,甚至 根本无法 并发执行。
3. 虚拟性(Virtual)
是指将一个 物理的 实体映射为 若干个 逻辑实体。物理实体是 客观存在的,逻辑实体 是用户感觉上 存在的,即主观上的一种 想象。
虚拟的例子在 操作系统中 有很多,如在 多道程序系统 中,即使只有一个 处理机,每次只能执 行一道程序,但在采用 多道程序设计技术 后,在一段时间间隔 内,宏观上 看起来有多个程序运行。在用户看来,就好像有 多个处理机在各自运行 自己的程序。即 将一个物理上的 处理机虚拟为 多个逻辑上的处理机,即 多个虚拟处理机。
同样,通过 操作系统的功能也可 把主存扩充 并改造成 速度较慢 但容量 较大的虚拟存储器;把外存储器 改造成按 名存取的 文件系统;把 I/O设备 改造成数量较多,方便使用的 虚拟设备等。
补:一个 100MB的的应用程序为何能运行在 30MB的内存空间 ?
答:每次只把用户程序的一部分调入内存运行,运行完成后将该部分换出,在换入另一部分到内存中运行。
4. 异步性(Asynchronism)
(1) 程序执行结果的不确定,程序执行结果的不可再现。
同一程序 对给定的相同初始数据,由 于多道程序的并发执行,各 程序对临界资源没有 互斥使用,可能造成 在相同的环境下 运行多次,多次运行 都可能得到完全 不同的结果。对这种 运行结果的 不确定性操作系统应 提供 相应的机制 加以解决。
(2) 多道程序设计环境下,每道程序在何时执行,各自执行的程序以及每道程序所需的时间是不确定的,也是不可预知的。
这种 不确定性是 允许的,而且也是 应加以保护的。操作系统必须 能处理随时可能 发生的事件,如从 外部设备来的中断,输入 / 输出请求。程序运行 时发生故障的 类型及发 生的时间 等也都是 不可预测的。
五、操作系统的主要功能
操作系统 的主要功能之一是 管理系统的软、硬件资源。这些资源按 其性质来分,可以归纳为四类:处理机、存储器、外部设备和软件资源。这四类资源构成了 系统程序和用户程序 赖以活动的 物质基础。针对这 四类资源,操作系统就有相应的处理机管理、存储管理、设备管理和软件资源管理 这四大管理功能。
除此以外,操作系统还为 用户提供 使用计算机 方便灵活的手段,即提供 一个友好的用户 接口。
1. 处理机管理
计算机系统中最重要的资源是 中央处理机,任何计算都必须在 CPU上进行。在 处理机管理中最核心的 问题是 CPU时间的分配,这 涉及分配的 策略和方法。
在单道作业或单用户的情况下,处理机 为一个作业或一个用户 所独占,对处理机 的管理十分简单。但在 多道程序或多用户的情况下,要组织 多个作业同时运行,就要 解决对处理机 分配调度策略、分配实施和 资源回收 等问题,这就是 处理机管理功能。
正是由于操作系统对处理机管理策略的 不同,其提供的作业处理方式也就不同(如 成批处理方式、分时处理方式和实时处理方式),从而呈现 在用户面前,成为具有 不同性质功能的操作系统。
处理机管理的功能
① 进程控制。为 作业 创建进程、撤销(终止)已结束的进程,以及控制进程在 运行过程中的 状态转换。
② 进程同步。为多个进程(含线程)的运行 进行协调。
③ 进程通信。实现 相互合作 进程之间的 信息交换。
④ 调度。传统的 OS中,包括 作业调度 和 进程调度。作业调度 的基本任务是 从后背队列中按照 一定的 算法选择出 若干个作业,为它们 分配运行 所需的资源,在将 这些作业 调入内存后,分别为它 们建立 进程,使们 都成为 可能获得处理机的 就绪进程,并将它们 插入就绪 队列中。 进程调度 的任务是 从进程的 就绪队列中 按照一定的 算法选出一个 进程,将处理机 分配给它,并为它 设置运行 现场,使其 投入执行。
2. 存储管理
任何程序的执行都 必须从 主存中获取 数据信息。现代 操作系统 非常重视主存的 存储调度和处理机调度的 结合,在主存分配时, 将程序中当前最需要 的部分 调入主存,这样这 一部分程序马上 可以投入运行。即 只有当程序在 主存时,它才有 可能到处理机上执行,而且仅当它可以到处理机上运行时才把它调入主存,这种 调度 能实现 最大化的 主存使用。
(1)内存分配
如果有多个用户程序在计算机上运行,其程序和数据都 需要占用一定的 存储空间。这些程序和 数据将分别 安置在主存的 什么位置,各占多大区域,这就是 主存分配问题。
现代操作系统为 用户程序呈现的是逻辑地址、程序地址空间(或称虚地址空间)。为此,存储管理部件 应具备 地址重定位 能力,提供 地址映像等结构。
(2) 存储保护
主存中可 同时存放 数道程序,为了防止某道程序 干扰、破坏其他用户程序,存储管理 必须保证每个用户程序只能访问它自己的存储空间,即实现用户程序之间的隔离。
当某用户企图(有意或无意)存取任何 其他范围的信息时,系统能够 捕获,以防止 对其他用户程序的 干扰和破坏,也就是要提供存储保护的手段。存储保护 机构 有界限寄存器、存储键和锁等,由硬件 提供支持,操作 系统实现 判断和处理功能。
(3)地址映射
在 多道程序环境 下,由于 每道程序经 编译和 链接后 所形成的 可装入程序 其地址都是 从 0 开始的,但不可能将它们 从 “ 0 ” 地址(物理)开始 装入内存。致使(各程序段的)地址空间内的逻辑地址(或称 相对地址) 与 其在 内存空间 中的物理(或称 绝对地址)地址 并不相一致。
为保证 程序能 正确运行,存储器 管理必须 提供 地址映射功能,即能够 将地址空间中的 逻辑地址转换为 内存空间中与之对应的 物理地址。该功能应在 硬件的支持下完成。
(4)内存扩充
每个 应用程序 都有自己的 虚地址空间,它 由用户程序 的所有的 程序地址和 数据地址组成。当 多个用户程序 同时进入 主存投入运行时,现代操作系统 并不是将这些 用户程序的全部代码 和数据 在程序的整个 运行时间内都放在 主存内。而是将这些用户 程序的 全部代码和数据存放在 辅存 中,只将每个用户 程序 虚地址空间中的 一部分调入主存。
操作系统能 自动处理信息在 辅存与主存 之间的 调度,让各用户程序都能 正确地运行。用户的感觉是 系统的主存足够用,自己程序的大小 没有受到 主存容量的限制。这种虚拟 的感觉正是由于 操作系统提供了 虚拟存储技术,实现了 主存空间的扩充。
3. 设备管理
(1) 缓冲管理
有效的缓和 CPU 和 I/O 设备速度的 不匹配的 矛盾,提高了 CPU 的 利用率,进而 提高 系统的 吞吐量。
(2) 设备分配
基本任务是 根据用户 进程的 I/O 请求、系统现有 资源情况 以及 按照某种设备 分配策略,为之 分配其所需的 设备。
各个用户程序在其运行的 开始、中间或结束时 都可能有输入或输出,因此随时需要 请求使用外部设备。在一般情况下,外部设备的 种类与 台数是有限的(每一类设备的台数往往少于用户的个数),所以,在多对少(多个用户共享少量的设备台数)的情况下,如何分配设备 是十分重要的。设备分配通 常采用 独享分配、共享分配和虚拟分配这三种基本分配技术。
(3) 设备处理
设备处理程序 又称为 设备驱动程序。其基本任务是用于实现 CPU 和 设备控制器之间的通信,即由 CPU 向设备控制器发出 I/O 命令,要求他完成指定的I/O操作;反之,由CPU接收从控制器发来的中断请求,并给予迅速的响应和相应的处理。
设备处理过程
① 首先检查 I/O 请求的 合法性,了解设备状态是否是空闲的,读取 有关的 传递参数及设备的 工作方式。
② 向 设备控制器 发出 I/O 命令,启动 I/O 设备完成 指定的 I/O 操作。
③ 设备 驱动程序 还应能 及时 响应由 控制器 发来的 中断请求,并根据 该中断 请求的类型,调用 相应的 中断处理程序 进行处理。
④ 对于 设置了 通道的 计算机系统,设备处理器 还应能 根据用户的 I/O 请求 自动的 构成通道程序。
设备管理功能
① 完成 用户进程 提出的 I/O 请求,为 用户进程 分配所需的I/O设备,并完成 指定的 I/O操作。
② 提高 CPU 和 I/O设备 的利用率,提高 I/O 的速度,方便 用户使用 I/O 设备。
4. 文件管理
(1)文件存储空间的管理
在多用户环境下,若由 用户自己 对文件的 存储进行管理,不仅 非常困难,而且 也必然十分低效。因而 需要由 文件系统对诸多 文件及文件的 存储空间实施 统一的 管理。
文件存储空间的管理功能
为每个文件分配必要的外存空间,提高外存的利用率,进而提高文件系统的存、取速度。
为此,系统 中应设置 相应的 数据结构,用于 记录文件存储空间的 使用情况,以供 分配存储空间时 参考。还应 具有对 存储空间进行分配 和 回收的功能。
(2)目录管理
目录管理功能
为每个 文件建立一个 目录项,目录项 包括文件名、文件属性文件 在磁盘上的 物理位置等,并对 众多的 目录项 加以有效的 组织,以 实现方便 的按名 存取即用户 只需 提供文件名,即 可对该文件进行 存取。目录管理 还应能 实现 文件共享,这样,只需 在外存 上保留一份 该共享文件的 副本。
此外,还应能 提供快速的 目录查询 手段,以 提高对 文件检索的 速度。
(3)文件的读 / 写管理和保护
文件的读 / 写管理和保护功能
根据用户的 请求,从外存 中 读取数据,或 将数据 写外存。
在进行文件读 / 写时,系统 先根据 用户给出的 文件名去 检索 文件目录,从中 获得件 在外存中的位置。然后,利用文件读 / 写指针,对文件进行读 / 写。一旦读 / 写完成,修改读 / 写指针,为下一次读 / 写 做好准备。由于 读和写操作 不会 同时进行,故可合 用个 读 / 写指针。
为了 防止系统中的 文件被 非法窃取 和 破坏,在 文件系统中 必须提供 有效的存取控制功能。
5. 操作系统和用户之间的接口
(1)用户接口
为了 便于用户直接或间接地控制自己的作业,操作系统 向用户提供了 命令接口。用户 可通过 该接口 向作业 发出命令 以控制作业的 运行。该 接口又进一步分为 联机用户接口、脱机用户接口 和 图形用户接口 三种。
① 联机用户接口
这是为 联机用户提供的,它由一组键盘操作命令及命令解释程序组成。当用户 在终端或控制台上 键入一条命令 后,系统 便立即 转入 命令解释 程序,对该 命令加 以解释 执行。在 完成指定功能后系统 又返回到 终端或控制台 上,等待用户键入 下一条命令。
这样,用户便可 通过先后键入 不同命令的方式来 实现对作业的控制,直至作业完成。
② 脱机用户接口
这是 为 批处理作业的 用户提供的。用户用 作业控制语言 JCL 把需要对作业进行的 控制 和干预的 命令事 先写在 作业说明书 上,然后 将它 与作业一起 提供给 系统。当系统 调度到 该作业运行时,通过 调用命令 解释程序去 对作业说明书上 的命令逐条 解释执行,直至遇到作业结束语句时系统 才停止 该作业的运行。
③ 图形用户接口
图形用户 接口采用 了图形化的 操作界面,用非常容易识别的各种 图标 (icon) 来将系统的 各项功能、各种应用程序和文件直观、逼真地表示出来。用户可通过菜单 ( 和对话框 ) 用移动 鼠标选择菜单项的 方式取代命令的 键入,以方便、快捷地 完成对应用程序 和文件 的操作,从而 把用户从 繁琐且单调 的操作中 解脱出来。
(2)程序接口
程序接口 是为 用户程序在执行中访问 系统资源而设置的,是 用户程序 取得 操作系统 服务的 唯一途径。
它由一组 系统调用组成,每一个系统调用 都是一个 能完成 特定功能的 子程序。每当 应用程序要求 OS 提供某种服务(功能)时,便调用 具有相应功能的 系统调用(子程序)。
早期的系统 调用都是用 汇编语言提供的,只有在用汇编语言书写的 程序中 才能直接 使用系统调用。但在 高级语言以及 C语言 中,往往 提供了与 各系统调用 一一对应的 库函数这样,应用程序 便可通过 调用对应的 库函数来使用 系统调用。但在近 几年所推出的 操作系统中,如 UNIX、OS / 2 版本中,其 系统调用本身 已经采用 C语言 编写,并以 函数形式提供,故在用 C语言编制的程序中,可直接 使用系统调用。
可以结合这篇文章: 全面认识计算机操作系统(二)