摘要: 一.对Linux系统的理解 刚开始不太了解linux系统,对代码来执行操作比较反感,觉得太麻烦。可是当我熟悉了linux的命令的时候就觉得比较有成就感,而且他的开放性还有安全性深深地吸引了我,特别是它的可移植性,不管是掌上电脑还是普通电脑都能装上linux,说明它的应用极其广泛。我认为Linux的基 阅读全文
posted @ 2016-05-01 12:19 20135226黄坤 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 第一周.通过分析汇编代码理解计算机是如何工作的 1.通过分析这段C语言代码的汇编代码,可以得到计算机程序执行的几个特点: 总是通过EIP取得下一段要执行的代码,然后执行该段代码,即总是取指执行 当进行函数调用时,堆栈会保存调用函数之前的程序状态,同时堆栈指针bp和sp会在一个伪初始位置 每次函数调用 阅读全文
posted @ 2016-04-19 15:05 20135226黄坤 阅读(234) 评论(0) 推荐(0) 编辑
摘要: Linux 调度器将进程分为三类: 1. 交互式进程 2. 批处理进程 3. 实时进程 根据进程的不同分类 Linux 采用不同的调度策略。对于实时进程,采用 FIFO 或者 Round Robin 的调度策略。对于普通进程,则需要区分交互式和批处理式的不同。传统 Linux 调度器提高交互式应用的 阅读全文
posted @ 2016-04-13 14:21 20135226黄坤 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 实验目的: 使用gdb跟踪sys_execve内核函数的处理过程,分析exec*函数对应的系统调用处理过程,理解Linux内核如何装载和启动一个可执行程序。 实验步骤: 打开实验楼中的虚拟机,在shell中依次运行以下命令,获取本次实验的代码,并编译运行 cd LinuxKernel rm menu 阅读全文
posted @ 2016-04-09 17:49 20135226黄坤 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 实验目的: Linux内核对进程管理是操作系统的重要任务之一。此次实验就是了解内核创建一个新进程的大致过程。​ do_fork函数分析 实验步骤: 下面是准备工作​​​ cd LinuxKernel rm -rf menu git clone https://github.com/mengning/ 阅读全文
posted @ 2016-03-31 16:58 20135226黄坤 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 一、实验要求: 1、使用gdb跟踪分析一个系统调用内核函数 2、根据本周所学知识分析系统调用的过程,从system_call开始到iret结束之间的整个过程,并画出简要准确的流程图 二、实验步骤: 1、实验环境是使用本课程配置的实验楼虚拟机环境 2、打开命令行客户端,cd LinuxKernel目录 阅读全文
posted @ 2016-03-27 14:21 20135226黄坤 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 实验目的: 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 实验过程: 查看系统调用列表 get pid 函数 API侧重于向上层提供给定的服务,而系统调用则侧重于通过软中断向下层的内核发出一个明确的请求。API属于用户态,而系统调用属于内核态。 操作系统提供的API函数库都会遵循 阅读全文
posted @ 2016-03-20 15:33 20135226黄坤 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 一、调试 cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage-initrd rootfs.img 执行完毕后会弹出QEMU窗口,输出Linux内核启动信息 支持三个命令:help、version、quit 使用gdb跟踪调试 阅读全文
posted @ 2016-03-12 17:56 20135226黄坤 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 实验目的: 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 实验过程: 一、 打开终端shell,输入以下命令: cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 会弹出一个QEMU终端窗口 打开mymain.c文 阅读全文
posted @ 2016-03-06 12:59 20135226黄坤 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 实验目的: 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 实验过程: 通过vi程序进行编程: int g(int x) { return x + 3; } int f(int x) { return g(x); } int main(void) { return f(8) + 1; 阅读全文
posted @ 2016-02-28 18:05 20135226黄坤 阅读(446) 评论(0) 推荐(0) 编辑