- 博客(90)
- 收藏
- 关注
原创 语法制导的翻译和属性文法
重写规则(产生式)符号的属性是综合属性。一个结点相应文法符号的属性值通过语法分析树中它的子节点的属性之值计算(自底向上)
2024-06-22 10:08:47
223
原创 编译原理 LR(0)
Ii(i = 0,1,2,3,4,5)是改造文法的第一个文法(S'->S)就在$那列写上acc。比如I5:S->(S)S. ,I5的action部分全写上r1。GOTO{ I0 , ( }的意思是在I0状态推进 '('action写终结符,GOTO写非终结符。I0推进S到I1,就在I0行S列写上1。I0推进(到I1,就在I0行(写上S2。已知G:S->(S)S | ε。结尾的且是改造文法中的式子。后的非终结符S且具有S->
2024-04-24 22:27:16
464
原创 编译原理 LL(1)
符号串ABC…,并且A不能推导出空串ε,显然根据定义First(ABC…)=First(A)符号串ABC…,并且A可能推导出空串ε,当A不是空串的时候,显然First(A)属于First(ABC…),但当A是空串的时候,ABC…就成了BC…,此时根据B是否能推出空串来决定是否将First(B)加入First (ABC…)。
2024-04-22 11:59:49
366
原创 计算机系统结构基于硬件的前瞻执行
假设送过来的分支总是正确的,然后继续向下执行指令,执行出来的结构放入一个叫 ROB (ReOrder Buffer) 的缓冲器中。等到相应的指令得到 “确认” 后,才将结果写入寄存器或者存储器。利用 Tomasulo 算法消除了数据相关和名相关 , 再利用外加硬件的方式 , 避免了不可恢复的写操作。实质是数据流执行(data flow execution):只要操作数有效,指令就执行。Tomasulo一文指出乱序提交正是Tomasulo最大的缺点。
2023-12-20 14:14:11
1346
1
原创 计算机系统结构Tomasulo算法
(2)假设各种操作的延迟为: load:1个时钟周期 加法:2个时钟周期 乘法:10个时钟周期 除法:40个时钟周期 给出MUL.D指令准备写结果时各状态表的内容。LD指令,流出,占用第一个Load缓冲器,34+R2地址存放在A字段,目标寄存器是F6,还需要把寄存器状态表F6更改load1,建立起双向链接。保留站中,对于Vj和Qj,应该写入Qj(只有立即数才写入Vj),R(F4)已经就绪,取出来是立即数,应该放入Vj。此时F2寄存器状态表为Load2,表示没有就绪,F4寄存器状态表为空,表示数已经就绪。
2023-12-20 11:01:46
1392
1
原创 数据库操作习题12.12
考虑如下的人员数据,其中加下划线的是主码,数据库模式由四个关系组成:employee (empnameworks (empnamecompany(idmanagers (empname, mgrname)其中关系 employee 给出人员的基本信息,包括人员姓名(empname),居住的城市(city)和街道 (street):works 存人员工作的公司名称(compname) 及年薪 (salary),单位为万元;
2023-12-18 12:43:29
691
原创 Rucbase缓冲池管理器——LRU替换策略
本题需要实现缓冲池管理器BufferPoolManager和缓冲池替换策略Replacer相关的接口,缓冲池管理器负责管理缓冲池中的页面在内外存的交换,缓冲池替换策略主要负责缓冲区页面的淘汰和查找。学生可以阅读项目结构文档中缓冲池管理器的相关说明,以及代码框架中src/storage和src/replacer文件夹下的代码文件。
2023-12-09 12:14:47
734
原创 Windows系统 TexWorks 显示“Font Monaco not found.“
【代码】Windows系统 TexWorks 显示“Font Monaco not found.“
2023-11-27 16:33:20
545
原创 Rucbase 存储管理——磁盘管理器
本题需要实现磁盘管理器DiskManager的相关接口,磁盘管理器负责文件操作、读写页面等。阅读项目结构文档中磁盘管理器的相关说明,以及代码框架中src/errors.h、src/storage/disk_manager.h、src/storage/disk_manager.cpp、src/common/config.h文件,实现以下接口:该接口的参数path为文件名,该接口的功能是创建文件,其文件名为path参数指定的文件名。
2023-11-21 18:38:24
536
原创 SQL 连接
左连接(Left Join)是一种用于联接两个或多个表的操作,它返回左表中的所有行以及与右表中满足联接条件的匹配行。如果右表中没有与左表匹配的行,则对应的结果列将填充为 NULL 值。把成绩表左连接到做了自然连接的表,保证每个学生各门课字段都在,不会因为没参加考试就不算。(COUNT(*)/2):一个进程包括start和end两个时间戳,所以要除以2。TIMESTAMPDIFF函数,小的日期前面。是一个日期函数,在给定的日期上添加指定的时。的值是'2023-10-17',那么。
2023-10-18 19:59:03
245
原创 git连接ssh设置经常断连问题
把里面的HashKnownHosts设置为no,然后加上ServerAliveInterval 60。上github挂梯子忘记关掉再git push的时候会出现公钥验证失败的问题。
2023-10-15 20:20:51
75
原创 WSL+vscode配置miniob环境
在工程的.vscode目录下新建tasks.json ,有了就直接在上面改。重新使用vscode打开,打开后会自动运行tasks的cmake。在工程的.vscode目录下新建launch.json。在WSL中执行以下命令,WSL注意用管理员方式运行。找个位置Git Bash然后拉取代码。
2023-10-11 11:30:00
560
1
原创 OpenMP
因为是并行,所以会有i = 0和i = 1交替出现的情况,同时需要用private将j声明成线程私有变量,因为i = 0时的j和i = 1时的j不一样。比如在斐波那契数列,算了前面的才能算后面的,但是parallel for会把n次迭代分配好后同时开始算,并不会等计算下标在前的数的线程算好后再算。j = 6,9为一个线程,j = 8,7为一个线程,不需要private声明,开启并行区域时,两个线程的i索引都相同,用的是同一层i下的j。对私有变量的终结操作,把私有变量(最后的循环迭代)拷贝到同名串行变量中。
2023-07-30 12:05:25
482
原创 实验二 编写Pthreads程序实现“任务队列”
编写一个Pthreads程序实现一个“任务队列”。主线程启动用户指定数量的线程,这些线程进入条件等待状态。主线程生成一些任务(一定计算量),每生成一个新的任务,就用条件变量唤醒一个线程,当这个唤醒线程执行完任务时,回到条件等待状态。当主线程生成完所有任务,设置全局变量表示再没有要生成的任务了,并用一个广播唤醒所有线程。为了清晰起见,建议任务采用链表操作可以自己手动改 Gen_work函数中的循环次数以改变任务计算量。
2023-07-16 19:45:00
272
原创 实验一:编写Pthreads程序实现直方图统计
1.实现直方图统计必定会有大量的IO操作,当数据规模很大时,IO会耗费大量时间并且占据整个终端屏幕,影响我们观察数据。因此,在加大数据规模评估性能的时候,把Print_histo函数注释掉即可2.自身电脑实验环境为12核处理机,2.70GHz,机带RAM为16.0GB3.实现直方图统计的数据规模为1000,评估性能数据规模为10000000。均为将【0,100】分为10个区间。
2023-07-11 15:38:01
217
原创 基于Pthreads多线程程序设计
函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);功能说明:创建一个线程。参数说明thread:线程句柄,需要先定义一个 pthread_t 类型变量 thread,将该变量的地址 &thread 传递到该参数中去。这是一个传出参数,传递进去的 thread 会得到系统为我们创建好的线程句柄。attr:attr可以。
2023-07-09 16:36:39
623
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人