摘要: 实验 先进入LinuxKernel,删除menu,下载一个新的menu,然后编译menu。 然后使用gdb跟踪 运行到sys_time,后输入time可以看到time命令的系统调用 输入list,可以看到代码 输入s单步执行,然后输入finish把这个函数执行完 单步执行,然后return i获得数 阅读全文
posted @ 2019-10-26 11:50 20199323王德胜 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 第一部分:基础知识 1:用户态、内核态和中断处理过程 一般现代CPU都有几种不同的指令级别,在高执行级别下,代码可以执行特权指令,访问任意物理地址,这种CPU执行级别就对应着内核态。 Intel x86 cpu 有四种不同的执行级别0 3,Linux只使用了其中的0级和3级,分别来表示内核态(0级) 阅读全文
posted @ 2019-10-20 20:29 20199323王德胜 阅读(227) 评论(1) 推荐(0) 编辑
摘要: 实验过程 1、使用实验楼的虚拟机打开shell,然后输入 cd ~/LinuxKernel/ qemu kernel linux 3.18.6/arch/x86/boot/bzImage initrd rootfs.img 内核启动完成后进入 menu程序 输入help指令: 2、使用gdb跟踪调试 阅读全文
posted @ 2019-10-07 12:16 20199323王德胜 阅读(154) 评论(1) 推荐(0) 编辑
摘要: 实验中遇到的问题 问题 输入命令时,不能执行 原因: Linux中区分大小写 实验 使用实验楼虚拟机打开shell: make尽心编译: 然后就是构造一个简单的时间片轮转 先写一个mypcb.h头文件,头文件里包含PCB控制块 对mymain.c进行修改,这是mykernel内核代码的入口,负责初始 阅读全文
posted @ 2019-09-29 19:21 20199323王德胜 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 实验4 1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a? 2. 提交静态库生成和调用过程截图。 实验5 1、除了main.c外,其他4个模块(add.c sub.c 阅读全文
posted @ 2019-09-26 22:20 20199323王德胜 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 实验过程 创建一个main.c文件,并用vim编辑写入内容 用vim写入的内容是 并用gcc –S –o main.s main.c m32命令编译成汇编代码结果如下: 代码中堆栈的变化: 一开始ebp和esp都指向标号为0的栈底,先看main函数"push1 %ebp",这是把ebp存储器的值压栈 阅读全文
posted @ 2019-09-22 19:16 20199323王德胜 阅读(139) 评论(1) 推荐(0) 编辑
摘要: 问题 终端和伪终端的区别? 终端就是物理终端;伪终端就是一个虚拟终端,比如/dev/ptypn,/dev/ttypn(n为非负整数),并且它们成对出现,你写入一端,便可以从另一端读出,类似于管道。伪终端在X window和telnet等远程登录程序中应用,为这些逻辑登录实体虚拟出一对终端;而终端就是 阅读全文
posted @ 2019-09-15 22:47 20199323王德胜 阅读(171) 评论(1) 推荐(0) 编辑