摘要: 一.对Linux系统的理解及学习Linux内核的心得 在近两个月的学习过程中,跟着孟宁老师的学习,渐渐地对linux产生了一个大致的了解,(不仅是内核知识点本身,而且包括学习的方法,学习的方向,都有了一些初步的想法)。 内容上:自己学到的东西如下(自己将知识点串在一起的思路) (1)为什么需要内核 阅读全文
posted @ 2016-05-01 17:15 20135326王亦可 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 第一周.通过分析汇编代码理解计算机是如何工作的 1.通过分析这段C语言代码的汇编代码,可以得到计算机程序执行的几个特点: 总是通过EIP取得下一段要执行的代码,然后执行该段代码,即总是取指执行 当进行函数调用时,堆栈会保存调用函数之前的程序状态,同时堆栈指针bp和sp会在一个伪初始位置 每次函数调用 阅读全文
posted @ 2016-04-19 15:12 20135326王亦可 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 实验原理: 一、调度时机 不同类型的进程有不同的调度需求 第一种分类: I/O-bound 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成 CPU-bound 计算密集型 需要大量的CPU时间进行运算 第二种分类 批处理进程(batch process) 不必与用户交互,通常在后台运行 不 阅读全文
posted @ 2016-04-13 14:07 20135326王亦可 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 一、可执行文件的创建 可执行文件的创建就是三步:预处理、编译和链接。 二、可执行文件的组成 可执行文件属于目标文件之一。目标文件的格式为ELF。ELF的格式以段来组织的二进制代码,所以我们知道:①它已经符合某种机器的ABI了;②为什么进程认为自己占了全部的空间,拥有一套完善的页表,也就是理解了线性地 阅读全文
posted @ 2016-04-09 18:22 20135326王亦可 阅读(488) 评论(0) 推荐(0) 编辑
摘要: Linux内核对进程管理是操作系统的重要任务之一。 此次实验就是了解内核创建一个新进程的大致过程。 为了简单,使用fork再用户态创建一个进程。代码如下: 打开gdb进行远程调试​ 设置断点 b sys_clone b do_fork b dup_task_struct b copy_process 阅读全文
posted @ 2016-03-31 16:07 20135326王亦可 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 本实验目的:通过以一个简单的menu小程序,跟踪系统调用的过程,分析与总结系统调用的机制和三层进入的过程。 实验原理:系统调用处理过程与中断处理的机制 系统调用是通过软中断指令 INT 0x80 实现的,而这条INT 0x80指令就被封装在C库的函数中。(软中断和我们常说的硬中断不同之处在于,软中断 阅读全文
posted @ 2016-03-26 14:19 20135326王亦可 阅读(1148) 评论(0) 推荐(0) 编辑
摘要: 本周作业的主要内容就是采用gcc嵌入汇编的方式调用system call。系统调用其实就是操作系统提供的服务。我们平时编写的程序,如果仅仅是数值计算,那么所有的过程都是在用户态完成的,但是我们想将变量打印在屏幕上,就必须调用printf,而printf这个函数内部就使用了write这个系统调用。操作 阅读全文
posted @ 2016-03-19 09:01 20135326王亦可 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 一、实验流程 1.打开环境 执行命令:cd LinuxKernel/ 执行命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img MenuOS便可以成功启动。可以测试三个命令“help,version,quit”的工 阅读全文
posted @ 2016-03-12 10:42 20135326王亦可 阅读(223) 评论(1) 推荐(0) 编辑
摘要: 中断时计算机运行的一个非常重要的功能。之所以重要,是因为由于种种原因,计算机不能将一个程序从头执行到尾不间断,而是可能会出现很多像等待输入设备输出设备的过程,如果没有中断系统,CPU只能等待,造成资源浪费。中断就是当出现需要时,CPU会暂时停止当前程序的执行,转而执行新的程序。多个程序交替执行,能够 阅读全文
posted @ 2016-03-06 14:13 20135326王亦可 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 首先,我们先写一个简单的C语言程序,如下: int g(int x) { return x +3; } int f(int x) { return g(x); } int main(void) { return f(8) + 1; } 然后我们把源程序编译成一个汇编语言,指令如下 gcc -S -o 阅读全文
posted @ 2016-02-28 15:15 20135326王亦可 阅读(250) 评论(0) 推荐(0) 编辑