2013年2月20日

摘要: 第六个实验其实非常简单,然而一开始我的思路就是错误的,我过分依赖于sunner的实验指导书,而不是自己的判断,把太多注意力放在 keyboard.S上,以为真的就像sunner说的:“所以每次按键有动作,keyboard_interrupt函数就会被调用,它在文件 kernel/chr_drv/keyboard.S(注意,扩展名 是大写的S)中实现。所有与键盘输入相关的功能都是在此文件中实现的,所以本实验的部分功能也可以在此文件中实现。详读《注释》一书中对此文件的注解会大 有裨益。”而我却走偏了路,导致一晚上都没做出来,还是第二天下午看到王意林的日志才做出来。这 个实验的内容是用F12作为开关 阅读全文

posted @ 2013-02-20 14:33 SnakeHunt2012 阅读(490) 评论(0) 推荐(0)

摘要: 今天早上完成了第五次实验的第二部分,这部分要求在ubuntu上用共享内存模拟生产者消费者问题,期间要用到之前的信号量。producer.c 中,我用shmget开出一页内存共享,其返回值是一个比较大的整数,这个整数在整个系统中都是通用的,其他程序都可一通过这个id来共享我开出的这一页 内存,用于进程间的交流。用shmat函数来获得这个共享页的使用权限,申请使用这个页,然后这个函数会返回给你一个*buf的八位地址值,这个地址值就 是所有程序共用的共享内存地址,正常的程序,如果不采用共享内存,那么他们即使对同一个地址进行操作都是互补相干的,因为他们索访问到的地址都是相对自己 段地址的偏移量,每个程 阅读全文

posted @ 2013-02-20 14:31 SnakeHunt2012 阅读(302) 评论(0) 推荐(0)

摘要: 今天早上正式开始做实验五,地址映射与共享。实验五共分为三个部分,今天早上做的是它的第一部分,就是在命令行下,用bochs提供的汇编级调试器对linux内核进行调试,实验里调试的是一个简单的程序:#include <stdio.h>int i = 0x12345678;int main(void){ printf("The logical/virtual address of i is 0x%08x", &i); fflush(stdout); while (i) ; return 0;}我们在这里要做的事情是手动找到一个变量的值,然后在程序运行期间当场修 阅读全文

posted @ 2013-02-20 14:29 SnakeHunt2012 阅读(335) 评论(0) 推荐(0)