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