摘要: 一、程序编译运行过程预处理编译.asm汇编链接.o目标文件装载.out可执行文件进入内存和执行二、链接的两种方式静态链接 静态链接是在链接时将库的内容加入到可执行程序中的做法。因为要将所有需要的库文件放到同一个文件中,所以占用空间会比较大,但是执行效率非常高。动态链接 动态链接是当需要某个头文件... 阅读全文
posted @ 2015-04-20 18:53 Hitman_47 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 一、实验过程新版 MenuOS 中添加了 fork 功能。接下来用 gdb 跟踪调试了 fork 等工作过程。二、实验分析1. 预备知识首先我们分析下 task_struct 结构,其中主要有:进程状态( 记录进程等待、运行或死锁三种状态 )调度信息标识符进程间的通讯情况进程链接信息( 进程链表的插... 阅读全文
posted @ 2015-04-12 21:39 Hitman_47 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 本篇文章从上篇的 getpid() 说起。我们在之前的 MenuOS中加入 getpid()功能。然后在 getpid处打断点,然后看看这系统调用详细是怎么运作的。一、实验步骤首先修改 MenuOS 中 test.c 中的代码。在 test.c 中添加上 g_pid() 和 g_pid_asm() ... 阅读全文
posted @ 2015-04-05 18:44 Hitman_47 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 本周的实验浅析了系统调用的工作过程,下面通过使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用加深对其过程的理解。系统调用列表:http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl... 阅读全文
posted @ 2015-03-29 11:50 Hitman_47 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 本次实验过程如下:1. 运行MenuOS系统在实验楼的虚拟机环境里,打击打开shell,使用下面的命令1 cd LinuxKernel/2 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 截图如下:2. 使用 gd... 阅读全文
posted @ 2015-03-22 13:23 Hitman_47 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 这周在网易云课堂上学习了《Linux内核分析》——操作系统是如何工作的。本周学习内容有利用 mykernel 实验模拟计算机平台和利用 mykernel 实验模拟计算机硬件平台两部分内容。这是实验楼中 mykernel 平台运行的结果:下面是一段一个简单的时间片轮转多道程序内核代码: 1 /* 2 ... 阅读全文
posted @ 2015-03-15 23:27 Hitman_47 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 这周在网易云课堂上学习了《Linux内核分析》——计算机是是如何工作的。本周学习内容有存储计算机工作模型、x86会变基础以及通过反编译一段简单的C语言的源代码,初步接触了计算机的工作过程。这里通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的。先贴上一张对一个简单的C语言程序反汇编后的汇... 阅读全文
posted @ 2015-03-08 20:22 Hitman_47 阅读(450) 评论(0) 推荐(0) 编辑