
内容提要程序设计语言翻译系统操作系统工具软件第1节 程序设计语言翻译系统1.1 概述计算机硬件只能识别并执行机器指令但人们普遍习惯于使用高级程序设计语言或汇编语言来编写程序。为了让计算机能够理解高级程序设计语言或汇编语言并执行用它编写的程序必须要为它配备一个翻译这就是程序设计语言翻译系统。定义程序设计语言翻译系统是一类系统软件它能够将使用某一种源语言编写的程序翻译成为与其等价的使用另一种目标语言编写的程序。源程序使用源语言编写的程序目标程序使用目标语言编写的程序三类翻译系统类型说明汇编语言翻译系统将汇编语言翻译为机器语言高级程序设计语言编译系统将高级语言源程序整体翻译为目标程序高级程序设计语言解释系统逐条翻译并立即执行1.2 汇编语言翻译系统功能将用汇编语言书写的程序翻译成用二进制码0/1表示的等价机器语言形成计算机可以执行的机器指令代码。翻译步骤用机器操作码代替符号化的操作符用数值地址代替符号名字将常数翻译为机器的内部表示分配指令和数据的存储单元工作示意汇编源程序 ──→ [汇编程序翻译器] ──→ 二进制机器语言程序 (输入) (输出)例子汇编指令MOV AX, BX经汇编器翻译后变成机器码89D8十六进制CPU 可以直接执行。1.3 高级程序设计语言编译系统定义编译程序是将用高级语言书写的源程序翻译成等价的机器语言程序或汇编程序的处理系统。它以源程序为输入以目标程序为输出最终产生一个可在具体计算机上执行的目标程序。编译程序的结构五道工序源程序 ↓ [词法分析] ──→ 单词属性字序列 ↓ [语法分析] ──→ 语法单位表达式、语句、程序等 ↓ [中间代码生成] ──→ 中间代码 ↓ [优化] ──→ 优化后的中间代码 ↓ [目标代码生成] ──→ 目标程序辅助模块表格管理程序、出错处理程序1.3.1 词法分析定义编译过程中的一个阶段在语法分析前进行。输入是源程序字符串输出是等价的属性字序列内部表示形式。任务从左至右逐个字符地扫描源程序产生一个个单词符号把源程序改造为由单词符号串组成的中间程序。词法分析器的结构输入缓冲区 → 预处理子程序 → 扫描缓冲区 → 扫描器 → 单词符号列表单词符号的识别类别说明例子基本字关键字语言预定义的保留字DO、IF、GOTO、int、for标识符字母开头的字母数字串num、sum、i、count常数算术常数转为二进制内码5000、5.8算符和界符运算符和分隔符、、、--、、(、{例子对于代码for (i0; i10; i)词法分析器将其拆分为关键字for界符(、)、;标识符i算符、、常数0、101.3.2 状态转换图与确定型有穷状态自动机DFA状态转换图一张有限方向图用于识别或接受一定的字符串。结点代表状态用圆圈表示箭弧状态之间用箭弧连结箭弧上的标记字符代表该状态下可能出现的输入字符一张转换图有一个初态和至少一个终态识别标识符的状态转换图(字母) (字母或数字) [初态] ──→ [状态2] ←──┐ │ │ │ └──(其他)─→ [终态] └──(其他)──→ [终态]例子标识符sum的识别路径当前状态读入字符下一状态初态s字母状态2状态2u字母状态2状态2m字母状态2状态2␣其他终态 ✓识别整常数的状态转换图(数字) (数字) [初态] ──→ [状态2] ←──┐ │ │ │ └──(其他)─→ [终态] └──(其他)──→ [终态]1.3.3 确定型有穷状态自动机DFA—— 形式化定义定义一个确定的有穷自动机 D 是一个五元组D (K, Σ, M, S, F)其中符号含义K有穷非空的状态集合Σ有穷非空的输入符号字母表M转换函数M: K × Σ → K表示当前状态 ki 遇到输入符号 a 时转移到 kjS唯一初态S ∈ KF非空终态集合F ⊆ K例子为正则语言{(ab)^n b² | n ≥ 0}构造状态转换图a b b [S] ──→ [A] ──→ [B] ──→ [C] ──→ [Z(终态)] ↑ │ └────(a)──┘回路实现 (ab)^n 部分该 DFA 接受的语言字符串由 n 个 “ab” 重复后跟两个 “b” 组成。如bbn0、abbbn1、ababbbn2等。1.3.4 语法分析语法分析程序对词法分析产出的单词序列进行分析按照语法规则识别出语法单位表达式、语句、程序等。1.3.5 中间代码生成与优化中间代码生成将语法单位转换为某种中间代码便于后续优化和目标代码生成优化对中间代码进行优化使生成的目标代码在运行速度和存储空间方面具有较高的质量1.3.6 目标代码生成将优化后的中间代码转换为目标程序机器语言或汇编语言。1.4 高级程序设计语言解释系统定义按照源程序中语句的动态顺序逐条翻译并立即执行相应功能的处理系统。工作过程由总控程序完成初始化工作依次从源程序中取出一条语句进行语法检查如有错则输出错误信息通过检查则翻译成相应指令并执行检查源程序是否已全部解释执行完毕未完成则继续解释并执行下一个语句直到全部处理完毕源程序 原始数据 ──→ [解释系统逐句解释、执行] ──→ 结果优缺点优点缺点实现算法比较简单运行效率比较低例子Python 和 JavaScript 是典型的解释型语言。以下 Python 代码逐行被解释执行x10# 解释分配变量 x赋值 10yx5# 解释取 x 的值加 5赋给 yprint(y)# 解释输出 y 的值 → 151.5 编译 vs 解释 对比对比维度编译系统解释系统翻译方式整体翻译生成目标程序逐条翻译并执行执行效率高一次翻译多次执行低每次执行都要翻译典型代表C、C、GoPython、JavaScript、PHP产物独立的可执行文件.exe 等无独立目标程序错误发现编译阶段集中报告执行到出错语句时才报告第2节 操作系统2.1 什么是操作系统定义操作系统是用来管理计算机系统的软硬件资源、提高计算机系统资源的使用效率、方便用户使用的程序集合。它是对计算机系统进行自动管理的控制中心。操作系统是计算机硬件裸机的直接外层对硬件功能进行首次扩充操作系统通过各种命令提供给用户操作界面操作系统是其他软件运行的基础引导过程从外存储器装入主存储器 → 管理程序部分常驻主存驻留程序→ 其他部分按需调入临时程序2.2 操作系统的功能2.2.1 资源管理功能功能说明处理机管理控制程序执行登记各处理机及状态按策略分配 CPU 给用户作业进程。目前大多为多任务、多线程操作系统存储器管理按策略分配存储空间记录主存使用情况提供信息保护作业结束后回收内存单元输入输出设备管理响应外部 I/O 请求记录设备状态按设备特点分配和回收外部设备控制设备按用户程序要求操作文件管理对信息进行逻辑和物理组织维护文件目录结构实现对文件的各种操作。用户可按文件名存取数据不必了解数据的物理位置2.2.2 人机交互功能主要依靠输入输出设备和相应软件完成传统设备新型设备键盘、显示器、鼠标语音输入设备、文字读入设备、图形图像扫描输入设备2.3 操作系统的分类按照性能分类2.3.1 多道批处理操作系统定义在主存储器中存放多道用户作业使其按照一定策略插空在 CPU 上运行共享 CPU 和输入输出设备等系统资源。宏观上多道作业同时运行微观上单 CPU某一瞬间只有一道作业在 CPU 上运行例子一台计算机同时处理三个批处理作业作业 A数据统计、作业 B文件转换、作业 C日志分析。在宏观上看三个作业同时在跑实际上 CPU 快速在它们之间切换分配时间片。2.3.2 分时操作系统定义多个用户终端共享使用一台计算机把 CPU 时间分割成一个个时间片分别提供给各个用户终端。设计目标是提高对用户响应的及时性。例子大学机房里一台小型机连接了 30 个终端30 名学生同时登录使用每人感觉就像独占了整台计算机——实际上 CPU 以极短的时间片轮流为每个人服务。2.3.3 实时操作系统定义能够对外部事件作出及时的响应并对其进行处理的系统。强调对外部事件响应的及时性和快捷性及系统的可靠性。例子工业控制化工厂的温度监测系统必须在温度超标的瞬间立即触发降温操作延迟不可接受航空航天火箭发射控制系统对外部传感器数据的响应必须在毫秒级别2.3.4 网络操作系统定义使网络上的计算机能够方便而有效地共享网络资源为网络用户提供各种服务的软件和有关协议的集合。协议由于网络上计算机的硬件特性、数据表示格式等不同为了在互相通信时彼此能够理解必须共同遵循的约定。额外功能相比普通操作系统高效、可靠的网络通信按网络协议进行多种网络服务文件传输、远程登录、电子邮件、信息检索等例子Windows Server 是典型的网络操作系统一个办公室的多台电脑通过它共享打印机、共享文件夹并通过 TCP/IP 协议互相通信。2.4 几种常用的操作系统2.4.1 MS-DOS全称Microsoft Disk Operating System微软磁盘操作系统广泛用于 PC 及其兼容机三大功能磁盘文件管理输入输出管理命令处理命令格式类型格式内部命令命令动词 [参数]外部命令[驱动器名][路径名]命令动词 [参数]引导过程启动后检查驱动器 A 或 C 中是否有系统文件 MSDOS.SYS 和 IO.SYS有则引导入主存否则显示出错信息。例子DIR C:\列出 C 盘根目录下的所有文件COPY A:\file.txt C:\将 A 盘的文件复制到 C 盘。2.4.2 Microsoft Windows由 Microsoft 公司开发的一系列基于图形界面、多任务的操作系统又称视窗操作系统。2.4.3 Unix 操作系统发展历程20 世纪 60 年代末由 ATT 贝尔实验室的K.Thompson和D.M.Ritchie等研制。两位学者因卓越贡献获得了1983 年图灵奖。主要特点多用户操作系统适合终端或工作站连接到小型机或主机的场合功能由许多小的功能模块连接组装而成提供功能完备、使用灵活、可编程的Shell 命令语言具有分层的、可装卸的文件系统提供完整的文件保护功能采用输入输出缓冲技术主存和磁盘的分配与释放自动高效进行提供了文本编辑程序、Shell 解释程序、汇编程序、多种编译程序、调试程序、通信程序以及系统管理与维护程序代码大部分用 C 语言书写有很好的可移植性有一系列网络通信工具和协议TCP/IP 协议就是在 Unix 上开发成功的Unix 的框架结构四层用户层 Shell 语言解释程序 | 程序设计语言编译程序 | 各种应用程序包子系统 ↓ 系统调用命令 内核层 进程管理 | 存储管理 | 设备管理 | I/O中断管理 | 文件管理 | 汇编程序 ↓ 计算机硬件裸机四个基本成分成分作用内核核心调度和管理计算机系统的各种资源文件系统组织并管理数据资源Shell命令解释程序读入用户命令并调用相应程序执行公用程序常用标准软件编辑工具、网络管理工具、开发工具、保密与安全工具等2.4.4 Linux定义一种可以运行在微机上的免费的 Unix 操作系统。由芬兰赫尔辛基大学学生Linus Torvalds于 1991 年开发。源代码免费开放但部分发行版可能收费。主要特点与 Unix 兼容的32 位操作系统支持 32 位和 64 位硬件继承 Unix以网络为核心的设计思想是性能稳定的多用户网络操作系统支持多任务、多进程和多 CPU模块化设计结构有优于其他操作系统的扩充性用户不仅可以免费获得源代码还可以修改以实现特定功能任何人都可以参与开发提供完整网络集成可轻松与 TCP/IP、LAN Manager、Windows for Workgroups、Novell NetWare 或 Windows NT 集成流行版本国际版本国内版本Red Hat Linux红旗 LinuxTurbo Linux蓝点 Linux例子一名开发者在 Raspberry Pi树莓派上安装免费的 Raspbian基于 Linux搭建了自己的 Web 服务器同时大部分互联网公司的服务器都运行 Linux如 CentOS、Ubuntu Server支撑着全球的云服务和网站。2.4.5 Mac OSApple 公司为 Mac 计算机设计的操作系统最早利用图形用户界面GUI的操作系统具有极强的图形处理能力广泛用于桌面出版和多媒体应用Mac OS X新一代核心系统Darwin采用卡耐基梅隆大学开发的Mach 微内核可看作符合POSIXPortable Operating System Interface可移植操作系统接口标准的 Unix 变种Darwin 本身开放源代码Mac OS X 的特点特点说明系统稳定和良好性能集成 Mach 3.0 内核、基于 BSD Unix 的操作系统服务、高性能网络工具支持多种文件系统内存保护和管理为每个程序/进程分配单独地址空间利用坚固结构保护程序确保系统可靠性多应用程序环境同时管理不同应用程序环境给用户无缝整合的体验可堆叠文件系统文件系统组件使用层结构系统可堆叠2.5 操作系统对比总结操作系统类型核心特点典型应用场景MS-DOS单用户单任务命令行界面、磁盘管理早期 PC已淘汰Windows图形界面多任务用户体验好、软件生态丰富个人桌面、办公Unix多用户多任务稳定性高、C 语言编写、可移植服务器、科研、大型机Linux开源 Unix-like免费、可定制、社区驱动服务器、嵌入式、开发平台Mac OS图形 Unix 变种图形处理强、用户体验优秀桌面出版、多媒体、个人创作本章小结程序设计语言翻译系统和操作系统是计算机系统软件中最重要的两种类型程序设计语言翻译系统将高级语言翻译为可执行机器指令包括汇编、编译、解释三大类操作系统管理软硬件资源、提供人机交互界面、作为其他软件运行的基础常用操作系统包括 Windows、Unix、Linux、Mac OS 等各有特点与适用场景人物介绍——埃德斯加·狄克斯特拉Edsgar Wybe Dijkstra1972 年图灵奖获得者荷兰计算机科学家因最早指出“goto 是有害的”以及首创结构化程序设计而闻名在算法理论、编译器、操作系统等多方面均有杰出贡献1983 年 ACM 评选 1958-1982 年的 25 篇里程碑论文狄克斯特拉一人入选两篇1956 年设计了在有障碍物的两点之间找出最短路径的“狄克斯特拉算法”Dijkstra’s Algorithm至今仍被广泛应用例子导航软件如高德地图、Google Maps在计算从起点到终点的最短路线时底层核心算法就是狄克斯特拉算法——它能够在复杂的道路网络中找到时间最短或距离最短的路径。内容由AI生成仅供参考