本文已收录于 CMU数据库系统学习笔记 系列,共计 11 篇,本篇是第 10 篇

视频、课件 视频:https://www.bilibili.com/video/BV1Z3411x7aS?spm_id_from=333.880.my_history.page.click 为什么要关心并行执行? 前面的第一部分我们只研究了单线程情况下的执行问题,但是并行执行却是我们不得不考虑的问题 …

阅读全文 »

本文已收录于 清华大学操作系统课程笔记 系列,共计 3 篇,本篇是第 1 篇

进程和线程 进程和程序之间的关系? 操作系统对进程的管理,有一个很关键的数据结构叫。 ,实际上就是一个结构体。每个变量就是一个进程。 保存的东西包括: 进程的ID PC 状态信息 寄存器信息 内存管理信息 核算信息 IO状态信息 等等….. 进程的特点: 可以交替执行多个程序,在宏观上体 …

阅读全文 »

本文已收录于 CMU数据库系统学习笔记 系列,共计 11 篇,本篇是第 9 篇

视频、课件 视频:https://www.bilibili.com/video/BV1TR4y1W7ny/?spm_id_from=333.788 执行模型 迭代器模型、火山管道模型——一个一个吐数据 每个查询的操作符都要实现一个Next()方法。在每次调用中,操作符要么返回单个元组,要么返回空标记 …

阅读全文 »

本文已收录于 CMU数据库系统学习笔记 系列,共计 11 篇,本篇是第 8 篇

作业进度提醒 视频课程(中字幕)、课件 视频:https://www.bilibili.com/video/BV1tL4y1J7kJ/?spm_id_from=333.788 课件: Join Algorithms 问:为什么会有JOIN? 答:这是数据库范式化的产物,我们将数据拆分,以此来减少重复 …

阅读全文 »

本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 6 篇

中间代码的地位和作用 最简单的表示,抽象语法树直接翻译成目标代码(汇编代码)。 现代编译器会生成很多的中间表示,经过不断的翻译,最终才会生成汇编代码。 中间代码表示 经典的中间代码表示: 为什么要用中间代码表示? 从软降工程上考虑,分模块,容易实现,容易维护。 追求通用的编译器语言,可以编码不同的源 …

阅读全文 »

本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 5 篇

简述 有时候直接直接翻译成汇编指令较为困难,认为的拆成几个单独的步骤和模块。 如果简化下中间只翻译一次就得到汇编指令,这种简化后的可以直接叫代码生成器。 代码生成的任务 真实物理机器也可,java虚拟机也可。 代码的等价性非常重要,源程序想输出4,编译器处理后的汇编代码不能是输出5。当然,现在像gc …

阅读全文 »

本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 4 篇

语义分析做什么事情? 下面一段代码有7个语义错误,编译器的语义分析就是研究这样的问题。 语法分析器所做的事情:输入程序语言的语义规则,输出Yes或者No。 同时语义分析器也是代码和编译器的工作界限,一段代码如果通过了语义分析器再有任何问题就不属于代码的问题,而是编译器的问题。 程序语言的语义规则 与 …

阅读全文 »

本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 3 篇

语法制导翻译 前面的语法分析器部分仅仅是回答了是否识别,Yes or No。 除了语法分析之外,还需要做其他工作。——这就是语法制导翻译所做的事情。 LR分析算法中的语法制导翻译,举个例子 右部最规约的时候进行计算,得到的值放在规约后的符号上。其实就是二叉树的后序遍历,先左再右最后是根部。先得到第一 …

阅读全文 »

本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 2 篇

实现语法分析器内部 上面已经讨论了语法分析器要做什么事情,本节来讨论具体的实现,讨论语法分析器内部的数据结构和算法。 自顶向下分析分析算法——盲目的尝试右部 因为是随意推导,所以如果 t != s 并不代表不能识别,而是需要回溯,重新推导… … 不断的匹配和回溯,如果第一个终 …

阅读全文 »

本文已收录于 中科大编译原理学习笔记 系列,共计 6 篇,本篇是第 1 篇

语法分析的目标 语法分析的最终目标是生成抽象语法树。   上下文无关文法:用数学理论描述语言的语法规则 早有数学家帮我们构造好了数学方法,数学的发展总是快工程一步! 3型文法描述语言的词法结构;2型文法描述语言的语法结构。上图的文氏图表示更外部的文法描述的范围更广。1型文法和0型文法在目前 …

阅读全文 »