2019-2020-1 20199312《Linux内核原理与分析》第三周作业
- 计算机的三大法宝:程序存储计算机、函数调用、中断 
- 堆栈的作用:记录函数调用框架、传递函数参数、保存返回值地址、提供函数内部局部便量的存储空间。 
- 堆栈相关的寄存器 ESP:堆栈指针,指向堆栈栈顶 EBP:基址指针,指向堆栈栈底 
- 堆栈向下增长的原因 
 这个问题与虚拟地址空间的分配规则有关,每一个可执行C程序,从低地址到高地址依次是:text,data,bss,堆,栈,环境参数变量;其中堆和栈之间有很大的地址空间空闲着,在需要分配空间的时候,堆向上涨,栈往下涨
  
- 函数调用 call指令经eip中吓一条指令的地址A保存在栈顶,设置eip指向被调用代码 
 cs:eip总是指向下一条的指令地址
 顺序执行:总是指向地址联系的下一条指令 跳转和分支 测试:eip会会根据程序需要而修改。
 call:将当前cs:eip的值压入栈顶,cs:eip指向被调用函数的入口地址
 ret:从栈顶弹出原来保存在这里的cd:eip的值,放入sc:eip中
call xxx
执行call之前
执行call时,cs:eip原来的值指向call下一条指令,该值被保存到栈顶,然后cs:ei的值指向xx的入口地址
进入xxx
第一条指令:pushl %ebp
第二条指令:movl %esp,%ebp
提出xxx
movl %ebp, %esp
popl $ebp
-ret
- 实验
$ cd ~/LinuxKernel/linux-3.9.4
$ rm -rf mykernel
$ patch -p1 < ../mykernel_for_linux3.9.4sc.patch
$ make allnoconfig
$ make
$ qemu -kernel arch/x86/boot/bzImage
- 效果图 
  
- 查看文件 
  
查看mymain.c文件:
   vi mymain.c

void __init my_start_kernel(void)
{
    int i = 0;
    while(1)
    {
        i++;
        if(i%100000 == 0)
            printk(KERN_NOTICE "my_start_kernel here  %d \n",i);
    }
}
总结:
2019-2020-1 20199312《Linux内核原理与分析》第三周作业的更多相关文章
- 2019-2020-1 20199329《Linux内核原理与分析》第九周作业
		<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二 ... 
- 2019-2020-1 20199329《Linux内核原理与分析》第二周作业
		<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ... 
- 20169212《Linux内核原理与分析》第二周作业
		<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ... 
- 20169210《Linux内核原理与分析》第二周作业
		<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ... 
- 2018-2019-1 20189221 《Linux内核原理与分析》第九周作业
		2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包 ... 
- 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
		20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ... 
- 2019-2020-1 20209313《Linux内核原理与分析》第二周作业
		2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 ... 
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
		Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ... 
- 《Linux内核原理与分析》第一周作业 20189210
		实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ... 
- 2018-2019-1 20189221《Linux内核原理与分析》第二周作业
		读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因 ... 
随机推荐
- 设计模式之--Visitor
			Ref: https://www.jianshu.com/p/feec47a25b67 https://www.cnblogs.com/alphablox/p/5346567.html 
- [itext]Java生成PDF文件
			一.前言 最近在做也导出试卷的功能,刚开始是导出为doc,可是导出来格式都有变化,最后说直接将word转为pdf,可是各种不稳定,各种报错.最后想到直接将文件写入pdf(参考:http://www.c ... 
- 长乐培训Day3
			T1 奶牛晒衣服 题目 [题目描述] 在熊大妈英明的带领下,时针和他的同伴生下了许多牛宝宝.熊大妈决定给每个宝宝都穿上可爱的婴儿装.于是,为牛宝宝洗晒衣服就成了很不爽的事情. 圣人王担负起了这个重任. ... 
- Django项目配置参数大全
			数据库的配置 配置文件: settings.pyDATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NA ... 
- Java中final与C++中const的关系
			Java中的final有三种主要用法: (1)修饰变量: final变量是不可改变的,但它的值可以在运行时刻初始化,也可以在编译时刻初始化,甚至可以放在构造函数中初始化,而不必在声明的时候初始化,所以 ... 
- python检测当前网卡流量信息,用于查看实时网速
			可以用来检测是否有挖矿程序在运行的一个子条件 # coding:utf-8 __author__ = 'chenhuachao' import wmi import time import platf ... 
- 织梦安全防护:禁止uploads、data、templets执行脚本
			下面介绍下如何针对uploads.data.templets做PHP脚本限制:对uploads.data.templets 三个目录做执行php脚本限制,就算被上传了木马文件到这些文件夹,也是无法运行 ... 
- C++ 去掉字符串的首尾空格和全部空格
			#include <iostream>#include <string>using namespace std; //去掉收尾空格string& ClearHeadTa ... 
- element-ui 页面刷新自动弹Message问题
			问题: 通过加载插件的方式引入Message,导致每次页面刷新的时候会自动弹出一个通知消息 该情况只在引入局部插件才会引起 import Vue from 'vue' import 'element- ... 
- win10+pyspark+pycharm+anaconda单机环境搭建
			一.工具准备 1. jdk1.8 2. scala 3. anaconda3 4. spark-2.3.1-bin-hadoop2.7 5. hadoop-2.8.3 6. winutils 7. p ... 
