系统架构设计师教程 第二章 计算机系统基础知识-2.3计算机软件
2.3 计算机软件
计算机软件是指由一系列指令、数据和文档组成的程序,能够使计算机完成特定任务或功能的程序和数据。
2.3.1 计算机软件概述
软件可以分为系统软件和应用软件两大类。系统软件是管理和控制计算机硬件和提供支撑服务的程序,如操作系统、驱动程序、编程语言等;应用软件是为用户提供功能或服务的程序,如办公软件、图形设计软件、游戏等。软件开发通常包括需求分析、设计、编码、测试、部署等阶段,是计算机科学领域的重要分支之一。
2.3.2 操作系统
操作系统是计算机系统的资源管理者,它是管理计算机硬件和软件资源的软件。
2.3.2.1 操作系统的组成
操作系统主要由以下几个组成部分组成:
1. 内核(Kernel):内核是操作系统的核心部分,负责管理计算机的硬件资源(如处理器、内存、磁盘、网络等)并提供必要的接口供应用程序访问这些资源。
2. 系统调用(System Calls):系统调用是应用程序和操作系统之间进行通信的接口。应用程序可以通过系统调用请求操作系统提供服务和资源。
3. 文件系统(File System):文件系统是操作系统用来管理存储设备中文件和目录的一种机制。它负责文件的创建、读取、写入、删除等操作。
4. 进程管理(Process Management):操作系统负责管理和调度系统中的进程,包括进程的创建、调度、终止等操作。
5. 内存管理(Memory Management):内存管理模块负责将内存空间分配给不同的进程,并控制内存的分配和释放。
6. 设备驱动程序(Device Drivers):设备驱动程序是连接操作系统和计算机硬件设备的软件,负责将操作系统的请求转换为硬件可以理解的命令。
7. 用户界面(User Interface):用户界面是用户与操作系统交互的接口,包括命令行界面(CLI)和图形用户界面(GUI)等。
2.3.2.2 操作系统的作用
操作系统是计算机系统中的一个重要组成部分,它负责管理计算机硬件资源,并为用户提供一个友好的界面以便与计算机进行交互。操作系统的作用包括以下几个方面:
1. 资源管理:操作系统负责管理计算机的硬件资源,包括处理器、内存、硬盘、网络等。它会根据各个程序的需求,合理分配和管理这些资源,以确保计算机的性能和效率。
2. 提供用户界面:操作系统为用户提供一个交互界面,使用户能够方便地与计算机进行沟通和操作。用户可以通过命令行界面或图形用户界面来执行各种操作。
3. 文件管理:操作系统负责管理计算机中的文件和文件系统。它管理文件的存储、查找、访问和保护,以确保文件系统的完整性和安全性。
4. 进程管理:操作系统管理计算机中正在运行的进程。它负责调度进程的运行顺序、分配进程所需的资源,并监控和控制进程的运行状态。
5. 设备驱动程序:操作系统提供设备驱动程序,用于管理和控制计算机中的各种硬件设备,包括打印机、键盘、鼠标、网卡等。
总的来说,操作系统的作用是协调和管理计算机系统中的各项资源,为用户提供一个稳定、高效和便捷的计算环墬。
2.3.2.3 操作系统的特征
1. 并发性:操作系统能够同时处理多个任务,实现多任务并发执行。
2. 共享性:操作系统可以实现对硬件资源的共享,让多个程序同时访问硬件资源。
3. 虚拟性:操作系统可以通过虚拟化技术实现对硬件资源的虚拟化,让多个程序看起来就像独占了资源一样。
4. 不确定性:指的是系统运行过程中出现的一些无法预测或控制的情况。这些情况可能导致系统行为的不稳定性或出现错误,给系统的可靠性和稳定性带来挑战。
2.3.2.4 操作系统的分类
操作系统可以根据其用途和结构等方面进行分类,常见的分类方式包括:
1. 单用户操作系统:只能支持一个用户使用的操作系统,如Windows、Mac OS等。
2. 多用户操作系统:支持多个用户同时使用的操作系统,如UNIX、Linux等。
3. 批处理操作系统:按照作业的要求,批量地处理一组作业的操作系统,如IBM的OS/360等。
4. 分时操作系统:允许多用户在同一时间共享计算机资源的操作系统,如UNIX、Linux等。
5. 实时操作系统:对系统响应时间有严格要求的操作系统,如嵌入式系统中的实时操作系统。
6. 分布式操作系统:将计算机资源分布在多个计算机上,并协调各个节点间的通信和协作的操作系统,如UNIX、Windows等。
7. 网络操作系统:专门设计用于网络环境下的操作系统,如网络服务器操作系统。
8. 嵌入式操作系统:设计用于嵌入式系统中的操作系统,如RTOS等。
2.3.3 数据库
随着应用系统的规模越来越大,现在的系统开发大部分都是基于数据库的应用,因此,作为一名系统架构设计师,要熟练地掌握数据库系统的设计方法和技术。
本章在宏观上就系统架构设计师必须要掌握的内容进行介绍,有关细节方面的知识,如果读者感兴趣,可以参考数据库专业教程。
2.3.3.1 关系数据库
关系数据库是一种使用关系模型来组织数据的数据库。在关系数据库中,数据以表格的形式存储,每个表格包含多个行和列,行代表记录,列代表属性。表格之间通过外键建立关系,并通过关系代数和SQL等语言实现数据查询和操作。关系数据库具有数据结构清晰、数据一致性高、数据操作灵活等特点,被广泛应用于企业和组织中用于数据管理。常见的关系数据库有Oracle、MySQL、SQL Server等。
2.3.3.1.1 关系数据库设计的特点及方法
数据库设计是为了构建一个最优的数据库,以满足特定应用环境下的需求。
关系数据库设计具有以下特点:
1. 结构化数据存储:关系数据库通过表格的形式存储数据,并通过行和列的方式将数据组织起来,使数据易于管理和检索。
2. 数据完整性:关系数据库设计支持各种数据约束和完整性规则,确保数据的一致性和准确性。
3. 数据关系的表达:关系数据库设计通过在不同表格之间建立关系,可以更好地表达数据之间的关联和依赖关系。
4. 数据安全性:关系数据库设计可以通过访问控制和权限管理等方式保护数据的安全性,防止未经授权的访问和修改。
目前已有的数据库设计方法可分为四类,即直观设计法、规范设计法、计算机辅助设计法和自动化设计法。直观设计法又称单步逻辑设计法,它依赖于设计者的知识、经验和技巧,缺乏工程规范的支持和科学根据,设计质量也不稳定,因此越来越不适应信息管理系统发展的需要。为了改变这种状况,1978 年 10 月来自 30 多个欧美国家的主要数据库专家在美国新奥尔良市专门讨论了数据库设计问题,提出了数据库设计规范,把数据库设计分为需求分析、概念结构设计、逻辑结构设计和物理结构设计 4 个阶段。目前,常用的规范设计方法大多起源于新奥尔良方法,如基于 3NF 的设计方法、LRA 方法、面向对象的数据库设计方法及基于视图概念的数据库设计方法等。
架构设计师考试中,主要了解基于 3NF 的数据库设计方法即可。
2.3.3.1.2 关系数据库设计的基本步骤
基于 3NF 的数据库设计方法是由 S.Atre 提出的数据库设计的结构化设计方法,其基本思想是在需求分析的基础上,识别并确认数据库模式中的全部属性和属性间的依赖,将它们组织成一个单一的关系模型,然后再分析模式中不符合 3NF 的约束条件,用投影和连接的办法将其分解,使达到 3NF 条件。其具体设计步骤分为 5 个阶段,如下图所示。
1. 定义需求:首先要明确数据库的使用目的和所需功能,确定需要存储的数据类型和数据量,以及用户的访问需求。
2. 设计概念模型:根据需求分析,设计数据库的概念模型,包括实体-关系图(Entity-Relationship Diagram, ERD)和实体之间的关系。
3. 范式化设计:将概念模型进行范式化设计,确保数据库表的结构符合各种范式的要求,以提高数据的一致性和减少冗余。
4. 物理设计:确定数据库中数据的存储方式、索引和分区策略等物理设计方案,以提高数据库的性能和可靠性。
5. 数据库实施:根据设计好的数据库模型和物理设计方案,创建数据库表结构、索引等,