编译程序的分析阶段

概念
词法分析(Lexical Analysis):把代码拆成单词、标志符、关键字、常量等。
语法分析(Syntax Analysis):检查语法是否正确(如括号不匹配),构建语法树(AST)。通过编译的程序,一般不存在语法错误。
语义分析(Semantic Analysis):检查类型、声明变量、运算合法性等。
静态语义错误:变量没有赋值。
动态语义错误:除数为0,数组下标越界。
题目
- 编译器对高级语言的翻译分析是:编译原理
- 具体分析阶段为:词法分析、语法分析、语义分析
- 整体属于编译的哪一个部分?编译前端(前端分析)
正规式(正则表达式)

概念
用于描述词法规则。
系统软件
系统软件 :包括系统软件 和应用软件。
语言处理程序:高级语言翻译成汇编/机器语言。
常见语言程序:编译程序(高级语言->机器语言)、汇编程序(汇编语言->机器语言)、解释程序(直接执行挂机语言或先翻译成中间代码,不生成目标程序)。
进程状态转换

时间片到了 :进程还能继续跑,但是CPU被抢走了,需要进入就绪下一次跑。
进入等待队列 :进程自己跑不动了,必须等待某个事件再启动(I/O、键盘、磁盘、信号)。
进程=进程控制块(PCB)+程序段+数据段
进程与线程
传统的进程基本属性:
- 可拥有资源的独立单位
- 可独立调度和分配的基本单位
线程将传统进行的两个基本属性分开,++线程作为调度和分配的基本单位++ ,++进程作为独立分配资源的单位++。
线程 :进程的一个实体,被系统独立分配和调度的基本单位。++线程基本不拥有资源,只有一点运行中不可少的资源++,它可以同属于一个进程的其他线程共享进程所拥有的全部资源。
几种操作系统
- 批处理操作系统 :用户将一批作业提交给系统后就不再干预,由操作系统控制它们自动运行。采用批处理作业技术的操作系统称为批处理操作系统。该系统++不具有交互性++,是为了提高CPU利用率提出的操作系统。
- 分时操作系统:鉴于CPU运转的高速度,把CPU的时间分成很短的时间片(如几十或几百毫秒)进行工作。时间片的大小影响系统的响应时间,并与系统用户的数量、系统时间的切换速度有关。
- 分布式操作系统 :属于分布式软件系统其中的一部分,主要负责管理分布式处理系统资源和控制分布式程序运行。它是网络操作系统的更高级形式,++它保持网络系统拥有的全部功能,同时具有透明性、可靠性、高性能++。
- 实时操作系统:计算机对于外来信息能够以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应。交互能力要求不高,但要求可靠性有保障。
PV操作
PV操作:是实现进程同步和互斥的常用方法,P操作和V操作是低级通信原语,在执行期间不可分割。
P操作 :++申请一个资源++。S:=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则进程为阻塞状态(无可用资源),并将其插入阻塞队列。
V操作 :++释放一个资源++。S:=S+1,若S>0,则执行V操作的进程继续执行;若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。
信号量:可以为负数,表示有多个进程在等待资源。信号量<0时,信号量的绝对值为等待资源的进程数。
分页系统
分页系统地址结构:页号+页内地址

段页式系统
段页式系统基本原理 :现将整个主存划分成大小相等的存储块(页框),将用户程序按程序的逻辑关系分为若干段,并为每个段赋予一个段名,再将每个段划分为若干页,以页框为单位离散分配。在段页式系统中,其地址结构由段号、段内号和页内地址组成。++页的大小是固定的,段的大小是不固定的++。

磁盘调度算法
- 先来先服务(FCFS):根据进程请求访问顺序进行调度,这是一种最简单的调度算法,具有公平性。
- 最短寻找时间优先(SSTF) :选择调度处理的磁道是与当前磁头所在磁道距离最近的磁道,每次寻找时间最短的进程。总是选择最小寻找时间并不能保证平均寻找时间最小,++可能产生饥饿现象++。
- 扫描算法(电梯算法、SCAN算法):在磁头当前移动方向上选择与当前磁头所在磁道最近的请求作为下一次服务对象。磁头运动规律与电梯运行相似,所以又叫电梯算法。该算法对最近扫描过的区域不公平,因此访问局部性不如FCFS和SSRF好。
- 循环扫描算法:在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始而不服务任何请求。
操作系统的特征和功能
4个特征:
- 并发性
- 共享性
- 虚拟性
- 不确定性(随机性):操作系统的运行是在一个随机的环境中,一个设备可能在任何时间向处理机发出中断请求,系统无法知道运行着的程序会在什么时候做什么事情。
嵌入式操作系统
嵌入式操作系统:运行在嵌入式智能芯片环境中,对整个智能芯片以及它所操作、控制的各种部件装置等资源进行统一协调、处理、指挥和控制。
主要特点:
- 微型化:从性能和成本的角度考虑,希望占用资源和系统代码量少,如内存少、字节短、运行速度有限、能源少(用微小型电池)。
- 可定制:从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理器平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用的需要。
- 实时性:嵌入式操作系统主要用于过程控制、数量采集、传输通信、多媒体信息及关键要害领域需要迅速响应的场合,所以实时性要求高。
- 可靠性:系统构建、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。
- 易移植性:为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术。