- 博客(43)
- 收藏
- 关注
原创 【Lua表的定义和访问】关于[]和点操作符的使用
Lua表的定义可以通过下面两种方式在这里,x将代表的是一个自字符串,而y代表的是一个对象,所以如果y = nilb的定义则是错误的,Lua会报错。同样的,访问Lua的表也有两种方式,a . xb [ y ]上面的操作符,x是一个字符串,就为"x",而y代表的是一个对象。总之,被[]括住的代表对象,不被扩住的就代表字符串,需要是一个合法的标识符。
2024-08-14 09:45:32
580
原创 【MTI 6.S081 Lab】Page tables
【MTI 6.S081 Lab】Page tables一些操作系统(如Linux)通过在用户空间和内核之间共享只读区域来加速某些系统调用。这就消除了在执行这些系统调用时对内核交叉的需要。为了帮助您了解如何将映射插入到页面表中,您的第一个任务是为xv6中的getpid()系统调用实现此优化。
2023-07-30 09:11:15
371
原创 【MTI 6.S081 Lab】traps
【MTI 6.S081 Lab】traps 本实验探讨了如何使用陷阱实现系统调用。您将首先使用堆栈进行热身练习,然后实现用户级陷阱处理的示例。
2023-07-30 09:10:30
621
原创 【MTI 6.S081 Lab】Copy-on-write
【MTI 6.S081 Lab】Copy-on-write 虚拟内存提供了一定程度的间接性:内核可以通过将PTE标记为无效或只读来拦截内存引用,从而导致页面错误,并可以通过修改PTE来更改地址的含义。在计算机系统中有一种说法,任何系统问题都可以通过一定程度的间接性来解决。这个实验室探索了一个例子:copy-on-write fork
2023-07-30 09:08:50
513
原创 【MTI 6.S081 Lab】thread
【MTI 6.S081 Lab】thread 在本练习中,您将为用户级线程系统设计上下文切换机制,然后实现它。首先,您的xv6有两个文件user/uthread.c和user/uthread_switch.S,并且Makefile中有一个规则来构建uthread程序。uthread.c包含大部分用户级线程包,以及三个简单测试线程的代码。线程程序包缺少一些用于创建线程和在线程之间切换的代码。
2023-07-30 09:08:10
431
原创 【MTI 6.S081 Lab】networking
【MTI 6.S081 Lab】networking在这个实验室中,您将为网络接口卡(NIC)编写一个xv6设备驱动程序。
2023-07-30 09:06:19
293
原创 【MTI 6.S081 Lab】locks
【MTI 6.S081 Lab】locks本实验前去看《操作系统导论》第29章基于锁的并发数据结构,将会是很有帮助的。在这个实验室中,您将获得重新设计代码以提高并行性的经验。多核机器上并行性差的一个常见问题是锁的高竞争。提高并行性通常需要更改数据结构和锁定策略,以减少争用。您将为xv6内存分配器和块缓存执行此操作。
2023-07-30 09:05:48
278
原创 【MTI 6.S081 Lab】File System
MIT 6.S081 File system lab,本实验完成大文件的存储和访问的功能,还完成软链接。
2023-07-29 19:30:33
273
原创 【MTI 6.S081 Lab】Mmap
MIT 6.S081 Mmapmmap和munmap系统调用允许UNIX程序对其地址空间进行详细控制。它们可以用于在进程之间共享内存,将文件映射到进程地址空间,并作为用户级页面错误方案的一部分,如讲座中讨论的垃圾收集算法。在这个实验中,您将向xv6添加mmap和munmap,重点关注内存映射文件。
2023-07-29 18:00:23
359
原创 [南大ICS-PA2] 输入输出
事实上, VGA设备还有两个寄存器: 屏幕大小寄存器和同步寄存器. 我们在讲义中并未介绍它们, 我们把它们作为相应的练习留给大家. 具体地, 屏幕大小寄存器的硬件(NEMU)功能已经实现, 但软件(AM)还没有去使用它;内存映射I/O这种编址方式非常巧妙, 它是通过不同的物理内存地址给设备编址的. 这种编址方式将一部分物理内存的访问"重定向"到I/O地址空间中, CPU尝试访问这部分物理内存的时候, 实际上最终是访问了相应的I/O设备, CPU却浑然不知。, AM帧缓冲控制器, 可写入绘图信息, 向屏幕。
2023-05-03 20:07:08
886
原创 [南大ICS-PA2] 函数调用的踪迹 - ftrace
跳转并寄存器链接 (Jump and Link Register). I-type, RV32I and RV64I. 把 pc 设置为 x[rs1] + sign-extend(offset),把计算出的地址的最低有效位设为 0,并将原 pc+4 的值写入 f[rd]。这是因为,在链接时,需要找到对应的符号的实际位置,填充代码中的位置。但是已经链接的文件,二进制代码中已经填好了每个符号的位置,不需要再要符号表了。在符号表中,0x02000位置处的符号为。,可以看出排除大小为0的函数后,运行正确。
2023-05-01 20:49:25
996
1
原创 [南大ICS-PA2] bug诊断的利器,踪迹 指令环形缓冲区 内存访问的踪迹
[南大ICS-PA2] bug诊断的利器,踪迹 指令环形缓冲区 内存访问的踪迹在客户程序出错(例如访问物理内存越界)的时候输出最近执行的若干条指令对访存的结果进行追踪, 从而记录访存的踪迹(memory trace).
2023-05-01 20:36:19
742
原创 [南大ICS-PA2]PA2 - 简单复杂的机器:冯诺依曼计算机系统
mips32和riscv32的指令长度只有32位, 因此它们不能像x86那样, 把C代码中的32位常数直接编码到一条指令中. 思考一下, mips32和riscv32应该如何解决这个问题?加载立即数到寄存器的高20位,然后便可以是哟给你标准的立即指令来创建32位常量。在程序分析领域中,静态指令是指程序代码中的指令,动态指令是指程序运行过程中的指令,例如对于一下指令序列。位域,在小端机器上,先定义的在每个字节的低位,后定义的在每个字节的高位。,这是处理非法指令的宏,其定义在。指令,而下一条动态指令则是。
2023-05-01 20:06:36
835
原创 [南大ICS]PA1 - 开天辟地的篇章: 最简单的计算机
task PA1.1: 实现单步执行, 打印寄存器状态, 扫描内存task PA1.2: 实现算术表达式求值task PA1.3: 实现所有要求, 提交完整的实验报告
2023-04-11 15:14:57
1427
原创 [南大ICS]PA0 - 世界诞生的前夜:开发环境配置
使用Ubuntu20.04有两年的时间了,基本操作已经会了。这次安装一个Ubuntu22.04虚拟机,因为看PA的提醒说有可能进不去Ubuntu了,为了避免这种情况,用虚拟机做实验,我自己本来用的20.04,虚拟机刚好用实验默认的22.04。
2023-04-11 15:05:06
190
原创 【798. 得分最高的最小轮调】
官方题解写的也挺好的,但是我觉得中间有几个地方光看文字有些不清楚,另外也是想完全理解这道题,所以自己参考官方题解写一个题解。
2023-02-26 16:11:28
339
1
原创 【C语言宏定义详解】南大计算机系统基础PA宏的理解
在C语言中,可以采用命令#define来定义宏。该命令允许把一个名称指定为任何文本,例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。宏学习主要有南大的计算机系统基础PA驱动,当在做PA1时,由于以前只会简单的如`#define N 100`这种宏,看不懂PA中复杂的宏,所以学习一下宏的基础知识。
2023-02-18 21:55:05
1996
原创 【Python&PyQt5】 PyHook3 PyWin32 PyHook3 PySide2安装 pyuic设置
【Python&PyQt5】 PyHook3 PyWin32 PyHook3 PySide2安装 pyuic设置
2022-12-14 17:07:24
311
原创 【GPU高性能编程 CUDA实战】学习笔记
【GPU高性能编程 CUDA实战】学习笔记,GPU编程入门,可以采用这本书,首先知道它大概有哪些东西,然后在工作中,任务驱动去学习GPU的其他知识,实践实践再实践。
2022-12-14 12:11:04
1660
原创 【水塘抽样】382. 链表随机节点
力扣 leetcode 382 链表随机节点设链表的长度为$n$,链表头为第一个位置,链表尾为第$n$个位置。水塘抽样是这么做的,当遍历到链表的第$i$个节点$cur$时:- 生成$[0,i-1]$之间的一个随机数$r$- 当$r==0$时,答案选为当前节点$ans=cur\rightarrow val$,容易知道,当开始遍历时,随机数一定生成的是0,肯定会有$ans=head\rightarrow val$;当$r!=0$时,本节点不作为答案。- 返回最后一个随机数$r=0$的节点
2022-11-11 22:06:08
134
原创 【算法导论(第三版)浅浅的看一下】
在这周末看了《算法导论》(第三版)这本书一些部分,看的时候属于囫囵吞枣,属于懂得有这么个算法,也懂得大概怎么做,用了什么技巧,也懂得他的运行时间复杂度处于一种什么水平。但是对于其中的证明只能说大概看懂,习题也没做,甚至有些星号章节,直接跳过了,因为我觉得就这一次看书的目的来说,我只看前面的部分效果已经达到了。我这次看书的目的就是为了知道解决各种问题,有一些什么算法,不至于我在看论文时,连最大流、B树、割、线性规划(标准型和松弛型)、NP完全(NP-Complete)、NP困难(NP-hard)、集合覆盖
2022-11-07 17:41:36
1156
原创 【Ubuntu 修改盘符名称】
【Ubuntu 修改盘符名称】```shsudo ntfslabel /dev/sda2 newname #适用于NTFS,newname为新磁盘名称sudo e2label /dev/sda2 newname #适用于ext2或ext3,newname为新磁盘名称
2022-10-30 17:49:29
1530
原创 【OpenROAD-flow-scripts安装与测试】OpenROAD Klayout yosys
【OpenROAD-flow-scripts安装与测试】OpenROAD Klayout yosys 使用OpenROAD展示`RTL-to-GDS` 的过程。 存储库中的脚本 `build_openroad.sh` 将自动构建 OpenROAD 工具链。**两个主要的文件夹:**`tools/`:包含整个 yosys 和 OpenROAD App 的源代码(都通过子模块)以及流程所需的其他工具。`flow/`:包含通过流程运行设计的参考配置和脚本。 它还包含公共平台和测试设计。
2022-10-30 17:05:59
3031
5
原创 【有限马尔科夫链状态分解+Kosaraju 算法】基于Kosaraju 算法和可达矩阵的有限马尔科夫链状态分解
【有限马尔科夫链状态分解+Kosaraju 算法】基于Kosaraju 算法和可达矩阵的有限马尔科夫链状态分解。将Kosaraju 算法用于此类方法中是一个新颖的想法
2022-10-18 10:15:59
1466
原创 【JDK安装与配置】JDK与JRE Eclipse并行环境设置
本文来讲解Eclipse并行环境配置的第一步,JDK的安装与配置。文章目录安装JDK两种方式Eclipse安装程序自动下载JDK并安装自己下载JDK并配置环境变量首先可能有些库会有JRE版本1.8以上之类的要求,但是我们搜索JRE时,JDK总会和他一起出现,并且现在感觉下载JRE的网站不好找了,都是JDK。我第一次就是这样,毫无Java经验,想装个JRE,来了好多JDK,去Oracle网站上、eclipse网站上都是JDK,那么JDK和JRE的区别是什么呢?JRE(Java Runtime Envi
2022-01-22 15:50:32
2047
1
Algorithms for VLSI Physical Design Automation (3rd ed.)
2022-12-16
Introduction to Parallel Computing From Algorithms toProgramming
2022-12-16
the-electronic-design-automation-handbook-2003.pdf
2022-12-16
Programming and GUI Fundamentals TCL-TK for (EDA)
2022-12-16
Parallel Programming in C with MPI and OpenMP - EPCC.pdf
2022-12-16
Algorithms for VLSI Design Automation [Gerez 1998-12-22].pdf
2022-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅