计算机系统由软件和硬件组成,其中软件由一系列按照特定顺序组织的数据和指令构成,而硬件一般由芯片、器件及电路等组成。软件需要运行在硬件上,硬件需要有可运行的软件才能发挥其功能,软件和硬件只有互相协作才能完成实际的工作。在计算机科学中,软件是指计算机系统处理的所有信息,包括程序和数据。
计算机软件可以进一步划分为用户程序、系统软件(System Software)和介于两者之间的中间件。用户程序一般针对某一特定业务提供特定功能,系统软件一般为计算机提供最基本的通用功能,包括操作系统、数据库管理系统、编译器、解释器等面向开发者的软件。常见的系统软件分类如表1-1所示。
表1-1 常见的系统软件分类
操作系统作为系统软件的集大成者,一般会内嵌数据库和语言运行时(解释器、加载器),同时提供驱动程序和用户程序的开发工具,包括驱动程序/用户程序开发环境、编译器、链接器等。
操作系统在其早期阶段主要表现为批处理系统,每类设备都需要定制化的操作系统。计算机科学家通过对ISA(Instruction Set Architecture,指令集体系结构)的定义,首次将计算机处理器架构与实现解耦,与此同时,也将操作系统与CPU(Central Processing Unit,中央处理器)等硬件解耦,这为操作系统从专用走向通用奠定了技术基础。在大型机时代,首先需要解决的问题是多个用户如何同时操作同一台计算机。为解决此问题,操作系统引入了分时、多任务、文件系统、动态链接等概念。操作系统对计算机的快速发展和普及做出了不可磨灭的贡献,经过多年的探索和实践,其基础理论和技术已经基本成熟,但仍在不断发展和持续演进中。