Linux内核分析作业一

一、实验

通过反汇编一个简单的c语言程序来分析计算机是如何工作的

1.进入实验楼,在实验楼环境下把c语言代码转换成汇编码

汇编代码如下图:

二、汇编代码的工作过程中堆栈的变化:(手绘步骤,顺序是从左到右,从上到下)

三、计算机是如何工作的:

  计算机的基本原理是存储程序和程序控制,按照冯若依曼体系结构计算机分为CPU和内存,内存用来存储程序,CPU从内存取指令来执行,按程序编排的顺序,一步一步地取出指令。在计算机中使用了最原始的汇编程序,函数调用堆栈是由逻辑上多个堆栈累加起来的,函数的返回值默认使用eax寄存器存储返回给上一级函数。

20135123 秦兆琪

时间: 2024-08-07 00:18:37

Linux内核分析作业一的相关文章

linux内核分析作业3:跟踪分析Linux内核的启动过程

内核源码目录 1. arch:录下x86重点关注 2. init:目录下main.c中的start_kernel是启动内核的起点 3. ipc:进程间通信的目录 实验 使用实验楼的虚拟机打开shell cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initr

Linux内核分析作业(1)——计算机是如何工作得?

根据163MOOC学院中国科学技术大学孟宁孟老师课程所写得博客 作者:肖冲冲 原创作品请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一,计算机的工作过程 计算机的基本原理是存储程序和程序控制(冯﹒诺依曼体系),简单来说,我们需要先把需要进行操作的指令(程序)和数据先输入到计算机的存储设备中,然后计算机将严格执行需要执行的指令,包括从那个地址取数(或指令),进行什么操作(加减移位等),然后再送回到什

Linux内核分析作业(2)——理解进程调度原理

根据163MOOC学院中国科学技术大学孟宁孟老师课程所写得博客 作者:肖冲冲 原创作品请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 抱歉了,使用实验楼总出问题. 3月16日补充完整相关文章.

Linux内核分析作业 NO.2

操作系统是如何工作的 于佳心 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  本章所学内容主要围绕着三个方面. 1.函数调用堆栈 2.中断机制 3.mykernel上实际操作构建内核 操作系统的三个法宝指的是:存储程序计算机,函数调用堆栈,中断机制 其中函数调用堆栈是高级语言的起点,它的作用是记录调用路径和参数(调用框架,传递参数,保存返回地址,提供局部变量空间) 这里涉及到了esp,

Linux内核分析作业 NO.8 完结撒花~~~

进程的切换和系统的一般执行过程 于佳心  原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程切换的关键代码switch_to分析 进程的调度时机与进程的切换 不同类型的进程有不同的调度需求 第一种分类: I/0-bound:频繁的进程I/0,通常会花费很多时间等待I/O操作的完成 CPU-bound:计算密集型,需要大量的CPU时间进行运算 第二种分类:批处理进程,实时进程,交互性进

linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码

计算机如何工作 三个法宝:存储程序计算机.函数调用堆栈.中断机制. 堆栈 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 Esp 堆栈指针  (stack pointer) Ebp 基址指针 (base pointer) 堆栈操作 Push:pop Ebp用作记录当前函数调用基址- 其他关键寄存器   中断 Call指令:1.将eip中下一条指令的地址A保存在栈顶:2.设置eip指向被调用程序代码开始处 1.Call xxx 2.进入xxx pushl %ebp mov

Linux内核分析作业 NO.7

可执行程序的装载 于佳心  原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验:Linux内核如何装载和启动一个可执行程序 首先,按照老流程,我们进入LinuxKernel,删除menu,再拷贝menu 然后我们进入menu,用test_exec和test.c中的一个覆盖另一个 我们打开test.c查看代码 和exec有关的部分,其中引入了hello 打开hello,发现hello就

Linux内核分析作业第二周

操作系统是如何工作的 一.函数调用堆栈 1.计算机工作三个法宝 存储程序计算机.中断机制.堆栈 2.堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 -函数调用框架 -传递参数 -保存返回地址 -提供局部变量空间 3.堆栈相关的寄存器   -esp,堆栈指针,指向栈顶 -ebp,基址指针,指向栈底,在C语言中用作记录当前函数调用基址. 4.其他关键寄存器   -cs(代码段寄存器) : eip:总是指向下一条的指令地址 顺序执行:总是指向地址连续的下一条指令 跳转/分支:执行这样的指令的

魏昊卿——《Linux内核分析》第三周作业:Linux系统启动过程

魏昊卿——<Linux内核分析>第三周作业:Linux系统启动过程 一.实验部分 实验指导 使用实验楼的虚拟机打开shell 1 cd LinuxKernel/ 2 qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动完成后进入menu程序(<软件工程C编码实践篇>的课程项目),支持三个命令help.version和quit,您也可以添加更多的命令,对选修过<软件工程C编码实践篇>