OS_Lab3
OS Lab 3
Before Coding
如果从书上cv来的makefile中直接make everything,会出现报错,我们将makefile进行修改
修改如下
123ASMKFLAGS = -I include/ -f elf32CFLAGS = -I include/ -c -fno-builtin -m32 -fno-stack-protectorLDFLAGS = -s -Ttext $(ENTRYPOINT) -m elf_i386
除去这个问题,个人在进行make build_img时还遇到了如下问题
先看源代码
123456buildimg : dd if=boot/boot.bin of=a.img bs=512 count=1 conv=notrunc sudo mount -o loop a.img /mnt/floppy/ sudo cp -fv boot/loader.bin /mnt/floppy/ sudo cp -fv kernel.bin /mnt/floppy sudo umount /mnt/floppy
在运行时,因为sudo需要 ...
编译原理10-semantics-ag
语义分析——属性文法
属性文法(Attribute Grammar): 为上下文无关文法赋予语义
属性文法
Offline 方式计算属性值
已有语法分析树 (calc)
按照从左到右的深度优先顺序遍历语法分析树
关键:
在合适的时机执行合适的动作,计算相应的属性值
语法分析过程中
在语法分析过程中实现属性文法
B→X{a}YB \rightarrow X \lbrace a \rbrace Y
B→X{a}Y
语义动作嵌入的位置决定了何时执行该动作
基本思想:
一个动作在它左边的所有文法符号都处理过之后立刻执行
时机
语义动作嵌入在什么地方? 这决定了何时执行语义动作。
SDD
Definition——语法制导定义 (Syntax-Directed Definition; SDD)
SDD 是一个上下文无关文法和属性及规则的结合。
每个文法符号都可以关联多个属性
每个产生式都可以关联一组规则
SDD 唯一确定了语法分析树上每个非终结符节点的属性值
SDD 没有规定以什么方式、什么顺序计算这些属性值
注释(annotated)语法分析树
显示了各个 ...
编译原理09-symtable
语义分析——符号表
符号表
Definition(符号表- Symbol Table)
符号表是用于保存各种信息的数据结构
作用域
领域特定语言(DSL)通常只有单作用域(全局作用域)
通用程序设计语言(GPL)通常需要嵌套作用域
Example
We take a WRONG assumption here about FunctionSymbol’s scope
在这里我们认为z属于FunctionSynbol中的symbols
如何实现
将上述过程抽象为函数接口的调用
Scope
SymbolTableListener
struct/class
当然无论是在c或者c++,又或者Java中,我们不可避免的会遇到类型作用域
Talk is cheap , show me the code
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768/ ...
OS_homework01
OS_homework01
鉴于某OS老师只允许使用word提交作业且不允许手写拍照上传这种难以理解的方式,所以在博客中记载一下自己的答案,如有错误欢迎留言 🥳
最后更新于2023-04-19
试述系统调用的实现原理,陷阱机制和绘制系统调用的处理过程,并阐述系统调用的处理逻辑。(满分10分)
操作系统实现系统调用功能的机制称为系统陷阱或系统异常处理机制,由于系统调用而引起处理器中断的机器指令称为陷入指令 (trap),它是非特权指令,在用户态下执行时会产生 CPU 模式切换,即由用户态转换到内核态。每个系统调用都事先规定编号,称为功能号,执行陷入指令时,必须通过某种方式指明对应系统调用的功能号,大多数情况,还应附带有传递给相应服务例程的参数.
系统调用的实现要点包括:
(1) 编写系统调用服务例程;
(2) 设计系统调用入口地址表,每个入口地址都指向一个系统调用的服务例程,有些还包含系统调用自带参数的个数;(3) 陷阱处理机制,需要开辟现场保护区,以保存发生系统调用时应用程序的处理器现场。
****系统调用的处理过程****:应用程序执行系统调用,产生中断转向内核态,进入陷阱 ...
操作系统-02
操作系统OS chapter 02 计算机硬件系统
操作系统-01
操作系统OS chapter 01 计算机系统概述
操作系统控制计算机的角度
人机交互的视角
操作系统的人机交互部分
人机交互的初期发展
交互式控制方式
1960s: 行命令控制方式
1970s: 全屏幕控制方式
斯坦福研究所提出的发展计划
始于1960,1980s广泛应用
强调人机交互的中心是人而不是技术
代表成果
鼠标,菜单,窗口控制
人机交互发展
WIMP界面
缘起:70年代后期Xerox的原型机Star
特征:窗口(windows),图标(Icons),菜单(Menu)和指示装置(Pointing Devices)为基础的图形用户界面WIMP
得益:Apple最初使用并大力推广
时间:1990s开始广泛使用
不足:不允许同时使用多个交互通道,从而产生人机交互的不平衡
多媒体计算机
虚拟现实系统
程序接口的角度
操作系统的程序接口
操作系统的程序接口——系统调用
操作系统实现的完成某种特定功能的过程;
为所有运行程序提供访问操作系统的接口
系统调用的实现机制
系统调用的实现要点
系统调用的实现流程
系统结构的 ...
数据管理基础chapter-04
数据管理基础 Chapter 04
数据库安全性
问题的提出
数据库的一大特点是数据可以共享
数据共享必然带来数据库的安全性问题
数据库系统中的数据共享不能是无条件的共享
军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据
数据库的安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏
系统安全保护措施是否有效是数据库系统主要的性能指标之一
数据库的不安全因素
非授权用户对数据库的恶意存取和破坏
一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。
数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术
数据库中重要或敏感的数据被泄露
黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。
数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。
审计日志分析
安全环境的脆弱性
数据库的安全性与计算机系统的安全性紧密联系
计算机硬件、操作系统、网络系统等的安全性
建立一套 ...
编译原理08-parser-allstar
Adaptive LL(*) 语法分析算法
ANTLR 4 自动将类似 expr 的左递归规则重写成非左递归形式
ANTLR 4 提供优秀的错误报告功能和复杂的错误恢复机制
ANTLR 4 使用了一种名为 Adaptive LL(∗) 的新技术
ANTLR 4 几乎能处理任何文法 (二义性文法✓ 间接左递归✗)
ANTLR 4如何处理直接左递归与优先级
我们在运行antlr4 LRExpr -Xlog后将会得到
我们将上述代码对应于一段递归函数 expr(int _p)
12345678expr(int _p) : ( INT | ID ) ( {4 >= $_p}? '*' expr[5] | {3 >= $_p}? '*' expr[4] ) ;
Example
1 + 2 * 3
根本问题
究竟是在 expr 的当前调用中匹配下一个运算符,
还是让 expr 的调用者匹配下一个运算符。
再来看一个左结合与右结合的例子
Exa ...
数据管理基础chapter-03
数据管理基础 Chapter 03
SQL概述
SQL(Structured Query Language)
结构化查询语言,是关系数据库的标准语言
SQL是一个通用的、功能极强的关系数据库语言
综合统一
高度非过程化
面向集合的操作方式
以同一种语法结构提供两种使用方法
语言简洁,易学易用
SQL特点
综合统一
集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
可以独立完成数据库生命周期中的全部活动:
定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库;
对数据库中的数据进行查询和更新;
数据库重构和维护
数据库安全性、完整性控制,以及事务控制
嵌入式SQL和动态SQL定义
用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据库的运行。
数据操作符统一
高度非过程化
非关系数据模型的数据操纵语言“面向过程”,必须指定存取路径。
SQL只要提出“做什么”,无须了解存取路径。
存取路径的选择以及SQL的操作过程由系统自动完成
面向集合的操作方式
非关系数据模型采用面向记录的操作方式 ...
编译原理07-parser-II
七、递归下降的LL(1)语法分析器
构建语法分析树:自顶向下 vs.vs.vs. 自底向上
只考虑无二义性的文法
这意味着, 每个句子对应唯一的一棵语法分析树
LL(1)语法分析器的特点
自顶向下的
自顶向下构建语法分析树
根结点是文法的起始符号SSS
每个中间节点表示对某个非终结符应用某个产生式进行推导
Q:选择哪个非终结符,以及选择哪个产生式Q: 选择哪个非终结符,以及选择哪个产生式Q:选择哪个非终结符,以及选择哪个产生式
叶节点是词法单元流$w$ $
仅包含终结符与特殊的文件结束符$(EOF)\$(EOF)$(EOF)
每个中间节点表示对某个非终结符应用某个产生式进行推导
Q:选择哪个非终结符,以及选择哪个产生式Q:选择哪个非终结符,以及选择哪个产生式Q:选择哪个非终结符,以及选择哪个产生式
在推导的每一步,LL(1)LL(1)LL(1)总是选择最左边的非终结符进行展开
LL(1):从左向右读入词法单元LL(1):从左向右读入词法单元LL(1):从左向右读入词法单元
递归下降的
递归下降的典型实现框架
为每一个非终结符写一个递归函数
内部 ...