操作系统1-概述
本文介绍操作系统的概念、历史、分类、功能及理解这些功能的必备基础知识。
1. 概念
计算机是硬件与软件的统一,没有任何软件的计算机称为裸机,在裸机上运行的是操作系统,在操作系统上运行的是各种应用软件。理解操作系统只需要理解两件事
- 操作系统用于向用户提供服务,构建一个用户和计算机之间的交互环境;
- 操作系统可以合理的组织计算机工作流程,管理和分配计算机系统软硬件资源;
这两点一个从用户的角度看,一个从管理员的角度看,但操作系统的所有功能都与此息息相关,后面会意识到。
2. 历史与分类
随着计算机的发展,操作系统也经历了一个发展过程:手工操作(无操作系统)、批处理、执行系统、多道程序系统、分时系统、实时系统、通用操作系统、网络操作系统和分布式操作系统。
从手工操作到多道程序系统的演进都是由于对 CPU 使用效率提高的追求,从分时系统开始,操作系统开始步入了应对不同使用场景而发展的时代,比如,分时系统是为了在保证 CPU 利用率的同时方便用户的使用,实时系统是为了保证计算机的快速处理和响应,通用操作系统则是为了减少开发成本,适用于大多数情况。
网络操作系统和分布式操作系统都是随着大规模集成电路的发展而出现的。前者的目的是将物理上分散的多个计算机系统联合起来,实现信息交互、资源共享、互操作等功能,但在互联网普及后,以及不再具有单独的网络操作系统分类,理论上,我们使用的可以上网的计算机都可以称作网络操作系统。后者指的是对网络中计算机进行统一管理的网络管理系统。
3. 功能
根据我们的理解,操作系统的职能就是管理和控制计算机的软硬件资源,合理组织计算机工作流程,并向用户提供交互接口。而计算机的硬件资源注意包括处理机、存储器、输入输出设备,软件和信息往往以文件形式存储在存储器中,所以操作系统的功能主要包括
- 处理机管理
- 存储管理
- 设备管理
- 文件管理
- 用户接口
注意,处理机是计算机存储程序和数据,并按步骤执行程序所涉及的各部分硬件的总和,包括CPU、主存储器、输入输出接口等,不是单纯的CPU,不过,在介绍处理机管理时,通常介绍的都是进程、线程及他们的调度。所以我们之后直接将处理机管理称为进程管理和调度,不再用处理机管理这个名词。
4. 基础知识
这些基础知识是之后理解操作系统五大功能的前提。
4.1 计算机基本硬件
构建计算机的基本元素包括:处理器、存储器、输入输出设备与总线、外部设备,如下图
处理器控制和执行计算机的指令操作,存储器存储数据和程序,输入输出控制器与缓冲器用于控制和暂时存储外部设备和计算机内存之间交换的数据和程序,总线连接各种设备。
4.2 寄存器
寄存器在操作系统的运行过程中非常重要,它们可分为用户可编程寄存器和控制与状态寄存器两类。
用户可编程寄存器又可分为:
- 数据寄存器:一般用于临时存储计算过程中涉及的数据;
- 地址寄存器:存放内存中某个数据或指令的地址,或者存放某段数据或指令的入口地址,以及用于地址计算,下面几种都属于地址寄存器
- 地址标识位寄存器
- 内存管理用各种始地址寄存器
- 堆栈指针
- 设备地址寄存器
- 标志寄存器:存放计算产生的正、负、零、溢出等标志信息
控制与状态寄存器又可分为
- 程序计数器(PC):存放下一周期被执行的指令地址
- 指令寄存器(IR):存放当前待执行的指令
- 程序状态字寄存器(PSW):各比特位代表不同状态,比如是否允许中断
- 中断现场保护寄存器:如名,允许中断时保持被中断的程序现场
- 过程调用堆栈:存放过程调用时产生的调用名、调用参数和返回地址等
4.3 存储器
计算机的存储器并不是单一的,从寄存器到高速缓存,再到内存、硬盘缓存、硬盘、可移动存储介质,虽然不断离开计算机系统的核心,访问速度逐渐变慢,但是单位存储的成本也越来越低。
4.4 指令执行与中断
若论计算机最基本的执行单位,那就是指令,所有的程序最终都会转换为一条条的指令来执行。指令的执行过程分两步:读指令和执行指令。读指令是根据程序计数器存储的地址从内存读入,执行指令是执行指令寄存器中的内容。指令的读入与执行称为一个指令周期。
另外,在指令的执行过程中或一条指令执行结束时,尽管指令地址计数器中已指明下一条被访问指令的地址,但是,计算机外部或内部可能会发来亟待处理的数据或其它紧急事件处理信号。这就需要处理机暂停正在执行的程序,转去处理相应的紧急事件,待处理事件完毕后再返回原处继续执行,这一过程叫中断。
4.5 并发与并行
并发是指宏观上在一段时间同时运行多个程序,但在微观上仍然是串行的,各道程序轮流使用 CPU,交替执行。
并行是指同一时刻能运行多个程序,并行需要多核等硬件支持
4.6 操作系统启动
计算机电源启动时,硬件自动触发一个中断信号,这个中断信号使得 CPU 中一段指令开始执行,这段指令的作用是找到外部存储设备中操作系统的引导区,然后引导区的代码被自动导入内存并开始执行。引导区代码的作用是将操作系统加载到内存的指定区域,并初始化计算机的相关硬件如寄存器、终端设备等。当操作系统全部加载到内存后,操作系统就开始启动,为用户提供相应的操作界面和功能。