怎样才能获得欢呼羊:CH08 系统软件

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 09:41:54
System Software

8.2 操作系统

操作系统的主要作用是帮助各种应用程序与计算机硬件进行交互.

操作系统还有三大主要任务. 进程管理, 系统资源管理, 保护系统资源不受错误进程的影响


8.2.1 操作系统的发展史

利用批处理, 专业的操作员会将多个的卡片组整合成若干批, 或称为捆(bundle)

在一个分时共享的计算机系统中, CPU通过依次分配给每个用户一个小段的处理时间, 在与之对话的各个用户之间进行快速切换. 这种切换过程称为关联转换(或称为现现场切换, context switching)

实时,多处理器, 分布式/网络操作系统

实时系统 (Real-time system) 主要用于制造工厂的生产过程控制, 装配线, 机器人技术, 以及类似空间工作站这样的复杂物理系统.

多处理器系统(multiprocessor system)有其本身所面临的挑战, 因为需要对多个处理器进行调度安排.

紧密耦合的多处理器 (tightly coupled multiprocessor) 共享一个单一的集中式存储器, 这要求操作系统必须非常小心地对各个程序进程进行同步处理以保护各种资源的安全.

松散耦合的多处理器 (loosely coupled multiprocessor) 有一个物理上的分布式存储器, 也就是我们所谓的分布式系统 (distributed system).

分布式操作系统在所有计算机上并发地运行.


8.2.2 操作系统设计

在操作系统设计中有两个关键组件, 内核和系统程序. 内核(kernel) 是操作系统的核心. 操作系统中的进程管理程序, 调度程序, 资源管理程序和I/O控制程序等都要使用内核. 内核负责操作系统的事务调度, 同眇, 保护/安全, 内存管理和中断处理, 内核具有对主要硬件设备的控制功能, 包括中断, 控制寄存器, 状态字和定时器等. 内核中装载了所有的设备驱动, 可以提供一些常用的功能和直辖市所有的I/O事件, 内核必须了解硬件的具体红节, 以便将硬件的各个部分全部组合起来构成一个工作系统.


8.3.1 虚拟机

真实的计算机系统中的实际硬件都受到一个控制程序 (controlling program, 或内核) 的专用命令的控制. 控制程序可以创建一个任意数目的虚拟机.

每个虚拟机所看到的都是一个由CPU, 寄存器, I/O 设备和(虚拟)存储器组成的环境


8.4.2 链接编辑器

在大多数计算机系统中, 程序编译器的输出结果必须首先通过一个链接编辑器 (link editor, 或称为目标代码链接器, 简称链接器, linker) 进行通读, 然后才能在目标系统上执行, 链接过程是将程序的外部符号与来自其他文件的所有输出符号进行匹配, 生成一个不包含未解析的外部符号的单一二进制文件. 链接器的主要工作是将相关的程序文件组合成一个统一的可装载的模块.


8.4.4 编译器

大多数编译器都使用一个6阶段(six-phase) 过程来实现这种代码转换,代码编译的第一步为词法分析 (lexical analysis), 目的是从一个文本结构的源代码流中抽取一些有意义的语言原语, 或者是标记符号 (token). 这些标记符号由特定的编程语言中的保留字 (例如 if, else), 布尔操作符和数学操作符, 文字(例如12.27)和程序员定义的变量组成. 当词法分析器在创建标记符号流时, 也同时在为符号表构建框架. 这时符号表中很可能包含用户定义的标记符号(变量和过程名), 以及说明这些标记符号位置和数据类型的注解. 如果在源代码中发现有该语言不能识别的字符和结构时, 就会出现词法错误.

语法分析器会检查符号表中现有的位于分析树上的程序员定义的变量.

  在完成分析功能后,编译器将使用来自语义分析阶段的语法树开始其综合阶段.

  一旦所有的标记符号流分析, 构建分析树和语义分析的工作完成后,下一步的工作变得相对容易一些, 主要是编写一个3地址的代码翻译器, 它可以为许多不同的指令集产生一个输出. 大多数计算机的指令系统(ISA)都使用2地址的指令代码, 所以在代码的转换过程中必须解决编址方式的差异问题.


8.4.5 解释器

解释程序一次只处理一条源代码的程序语名。 而编译器却在产生一个二进制的代码流之前,需要通读整个源代码文件.

正因为有如此多的工作都是 "即时 (on the fly)" 完成的, 所以解释程序的工作速度要比编译器慢得多