c
文章平均质量分 82
FirMoonLight
这个作者很懒,什么都没留下…
展开
-
HW5: xv6 CPU alarm
这个HW的主要任务就是在进程使用CPU的时候,定期向其发送alert。添加这个功能的意义在于,一是可以限制进程占用CPU的时间,二是可以当进程想要执行定时任务的时候,可以利用这个alert。添加一个新的alarm(interval,handler)系统调用。如果应用程序调用alarm(n,fn),那么在程序消耗每个n“ticks”的CPU时间之后,内核将调用应用程序函数fn。当fn返回时,应用程序将从中断处继续。tick是xv6中相当随意的时间单位,由硬件定时器产生中断的频率决定。原创 2022-11-20 19:08:09 · 240 阅读 · 0 评论 -
读写锁排查思路
表示没有线程持有读锁,也没有线程持有写锁,但是读写锁的值却异常了。只有两种可能,一是未初始化,二是内存被改写。走查代码,发现两个构造函数中,只有一个构造函数初始化了读写锁。从读写锁的逻辑看出,如果在读锁加锁的时候,不为0,那么就会阻塞读锁。原创 2022-09-02 09:18:50 · 196 阅读 · 0 评论 -
__x86.get_pc_thunk.bx对GDB打印局部变量的影响
MIT6.828原创 2022-08-26 22:13:25 · 427 阅读 · 0 评论 -
ld脚本简述
当链接器将可重定位文件通过重定位等操作生成可执行程序的时候,链接脚本可以控制输入文件中的各个段在生成文件中的位置,并且可以规定生成的可执行文件加载入内存之后的空间布局。链接器ld默认使用其内部的连接脚本,因此在一般情况下,我们都不需要对其进行修改。在使用ld的时候,通过-T选项,可以使用自己写的链接脚本完成链接过程,否则会使用默认的链接脚本。原创 2022-08-22 00:08:08 · 1288 阅读 · 0 评论 -
snprintf和strcpy和strncpy的区别
snprintf,strcpy,strncpy这几个函数的功能都是将原字符串拷贝到目的字符串中。但是在细节部分还是存在着一些细微的差别。主要参考man说明。snprintf。原创 2022-08-12 22:34:30 · 701 阅读 · 0 评论