linux内核分析第二周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.函数调用堆栈 1.1小结 三把宝剑: 存储程序计算机 函数调用堆栈 中断机制 1.2堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数条用框架 传递参数 保存返回地址 提供局部变量空间 C代码中嵌入汇编代码的写法 0. 内嵌汇编语法 as…
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机的三个法宝 存储程序计算机 函数调用堆栈 中断机制 二.堆栈 1.堆栈的空间分配 栈:由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 堆: 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表. 2.堆栈缓存方式 栈使用的是一级缓存, 他们通常都…
20135313吴子怡.北京电子科技学院 chapter 1 知识点梳理 (一)计算机是如何工作的?(总结)——三个法宝 ①存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: ②函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter pushl %ebp movl %esp,%ebp leave movl %ebp,%esp popl %ebp 函数参数传递机制和局部变量存储 ③中…
第二周 操作系统是如何工作的 第一节 函数调用堆栈 存储程序计算机:是所有计算机基础的框架 堆栈:计算机中基础的部分,在计算机只有机器语言.汇编语言时,就有了堆栈.堆栈机制是高级语言可以运行的基础. 计算机“三宝”:存储程序计算机.函数调用堆栈和中断机制. 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数调用框架(eg:enter.leave ) 传递参数(32位,通过堆栈来传递参数) 保存返回地址(用eax) 提供局部变量空间 等等 ♦ C语言编译器对堆栈的使用有一套的规则,不同…
LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识点总结 (一)计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能:…
linux内核分析第一周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1.1冯诺依曼体系结构:即具有存储程序的计算机体系结构 目前大多数拥有计算和存储功能的设备其核心构造均为冯诺依曼体系结构 实验截图及理解…
Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = 0; while(1) { i++; if(i%10000000 == 0) { printk(KERN_NOTICE "this is process %d -\n",my_current_task->pid); if(my_need_sched == 1) { my_need_…
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.概述 第一周的学习内容主要是基础的计算机工作的相应知识,主要学习了三个知识点 存储程序计算机工作模型 X86汇编基础 汇编一个简单的c程序并分析汇编指令执行过程 二.存储程序计算机的工作模型 最基础的就是冯诺依曼体系结构 冯·诺依曼体系结构冯·诺依曼理论的要点是:数字计算机的数制采用二进制:计算机应该按照程序顺序执行. 三.X86汇…
第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同. 2.CPU可以抽象成一个for循环,总是从内存中执行下一条指令. 内存:保存指令数据 CPU:解释执行指令.数据 内存与CPU通过总线连接. API:应用程序编程接口 ABI:二进制(指令编码)接口 例如:32位计算机X86,EIP…
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 1. 小结:计算机是怎样工作的 三个法宝:存储程序计算机.函数调用堆栈.中断机制. 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构. 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能.(函数参数传递…
20135313吴子怡.北京电子科技学院 chapter 1 知识点梳理 第一节 存储程序计算机工作模型 1.冯诺依曼体系结构:即具有存储程序的计算机体系结构.目前大多数拥有计算和存储功能的设备(智能手机.平板.计算机等)其核心构造均为冯诺依曼体系结构 a.从硬件来看:CPU与内存通过主线连接,CPU上的IP(可能是16.32.64位)总指向内存的某一块区域:IP指向的CS(代码段)也在内存中:CPU总是执行IP指向的指令. b.从软件来看:API(应用程序编程接口,与编程人员)与ABI(程序与…
操作系统是如何工作的 1. 小结:计算机是怎样工作的 三个法宝 存储程序计算机.函数调用堆栈.中断机制 两把宝剑 中断上下文.进程上下文的切换 2. 堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间. 函数条用框架 传递参数 保存返回地址 提供局部变量空间... 堆栈相关寄存器: esp:堆栈指针——指向系统栈最上面一个栈帧的栈顶 ebp: 基址指针——指向系统栈最上面一个栈帧的底部 cs:eip:指令寄存器——指向下一条等待执行的指令地址 堆栈相关操作: push :栈顶地址减少…
网易云课堂linux内核分析第二周 20135103                王海宁 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 操作系统的核心功能就是:进程调度和中断机制,通过与硬件的配合实现多任务处理,再加上上层应用软件的支持,最终变成可以使用户可以很容易操作的计算机系统, my_timer_handler 函数会被内核周期性的调用,每调用1000次,就去将全局变量my_need_sched的值修…
LINUX内核分析第一周学习总结——计算机是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.汇编代码的工作过程 1.实验过程 int a(int x) { ; } int b(int x) { return a(x); } int main(void) { ) + ; } 汇编代码如下: 2.代码分析 二.计算机工作的过程 工作的大致过程是:用户将编制好的程序通过…
linux内核分析第四周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 # 上周回顾: installing 如何安装内核源代码 make mrproper 清理安装时生成的中间代码 启动Linux内核的三个参数: kernel initrd root所在分区.目录 gdb (gdb)file linux-3.18.6/vmlin…
Linux内核分析第二周--操作系统是如何工作的 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 1. 小结:计算机是怎样工作的 三个法宝:存储程序计算机.函数调用堆栈.中断机制. 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构. 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言…
Linux内核分析第一周学习博客 通过反汇编方式学习计算机工作过程 总结: 通过这次对一个简单C程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的指令,如果有必要就通过寄存器跳转到特定的地址,再执行,然后通过一系列机制返回原有的地址,继续顺序执行. 在这个过程中,显然一旦指针的工作出现差错,就可能导致bug或者溢出漏洞.幸好现在有一些相关机制来避免发生类似情况,但是我们从程序员的角度出发还是要慎重. zl + 无转载 + <Linux内核分析…
中断时计算机运行的一个非常重要的功能.之所以重要,是因为由于种种原因,计算机不能将一个程序从头执行到尾不间断,而是可能会出现很多像等待输入设备输出设备的过程,如果没有中断系统,CPU只能等待,造成资源浪费.中断就是当出现需要时,CPU会暂时停止当前程序的执行,转而执行新的程序.多个程序交替执行,能够大大提高运行的效率. 中断是如何实现的呢?通过分析<Linux内核分析>第二周课程提供的一个小小的内核模拟程序mykernel,我们能够很容易地理解中断实现的过程. mykernel程序有三个源文件…
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.冯诺依曼体系结构:存储程序计算机 1. 从硬件角度 总线 CPU ============ 内存 - CPU上的IP总指向内存的某一块区域,CPU执行其所指向的指令. 2. 从程序员角度(软件) 内存保存指令和数据,CPU解释执行 接口 API:应用程序编程接口,程序员<->计算机 ABI:应用程序二进制接口…
第一讲 函数调用堆栈 计算机是如何工作的? (总结)——三个法宝 1,存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 2,函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter pushl %ebp movl %esp,%ebp leave movl %ebp,%esp popl %ebp 函数参数传递机制和局部变量存储 3,中断,多道程序操作系统的基点,没有中断机制程序只能从…
银雪纯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 存储程序计算机工作模型是计算机系统最基础的逻辑结构 函数调用堆栈是高级语言得以运行的基础 中断时多道程序操作系统的基点 二.堆栈:c语言程序运行时必须的一个记录调用路径和参数的空间 函数调用框架 传递参数 保存返回地址 提供局部变量空间 三.堆栈相关寄存器 esp:堆栈指针 ebp:基址地址 堆栈操作:pus…
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 本周的内容主要是讲解系统调用中的一些步骤,主要有三步,而主要是采用中断机制,也是老师讲解的重点,而实验的内容则是用汇编代码代替一下系统调用的C代码,看能不能产生相同的结果,总体来说本周学习难度不大,但是通过看视频,看书,做实验,感觉学到了很多东西. 课本内容 一.用户态.内核态和中断处理过程 用户态和内核态 CPU指令执行级别 内…
Linux内核分析——完成一个简单的时间片轮转多道程序内核代码 张潇月+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验 打开实验楼,在老师早就建立好的环境里运行并分析一个简单的操作系统内核. 首先是进入老师搭建的平台 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain.c和myinterrupt.c 以上是本次实验过程截图. 二.分析实验代码 Mymain.c /* * l…
操作系统是如何工作的 上章重点回顾: 计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter pushl %ebp movl %esp,%ebp leave movl %ebp,%esp popl %ebp 函数参数传递机制和局部变量存储 中断,多道程序操作系统的基点,没有中断机制程序只能…
陈巧然 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.使用实验楼的虚拟机, 观察只有一个死循环的mykernel与时钟中断的关系 步骤:cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 执行效果如下图 Paste_Image.png 现在查看mymain.c: Paste_Image.png 再查看myin…
Linux实践二--内核模块的编译 标签(空格分隔): 20135328陈都 理解内核的作用 Linux内核[kernel]是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制.是否支持LVM或Quota等文件系统等等,如果内核不认识某个最新的硬件,那么硬件也就无法被驱动,你也就无法使用该硬件. 计算机真正工作的东西其实是硬件,例如数值运算要使用到CPU.数据储存要使用到硬盘.图形显示会用到显示适配器.音乐发声要有音效芯片.连接Internet 可能需要网…
学生  黎静 课程内容 计算机三大法宝 • 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: • 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: • 中断,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序. 一.函数调用堆栈 1.堆栈 堆栈式C语言程序运行时必须的一个记录调用路径和参数的空间.包括: 函数调用框架 传递参数 保存返回地址(如eax)…
第四周 扒开系统调用的“三层皮” 一.内核.用户态和中断 (一)如何区分用户态.内核态 1.一般现在的CPU有几种不同的指令执行级别 ①在高级别的状态下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态,可以执行所有指令. ②在相应的低级别执行状态下,代码的掌控范围会受到限制,只能在对应级别允许的范围内活动. 为什么会有权限级别的划分? 答:当所有程序员写的代码都有特权指令时,系统很容易崩溃,没有访问权限划分容易使得系统混乱. ③Intel x86 CPU有四种不同的执…
扒开系统调用的三层皮[上] 前言:以下笔记除了一些讲解视频中的概念记录,图示.图示中的补充文字.总结.分析.小结部分均是个人理解.如有错误观点,请多指教! 补充:[系统调用的参数传递方法]视频中讲解简单带过最后几行.最后问题的答案在上图总结部分.ppt内容附下图. 遇到的问题: 在上图笔记三中,我听视频讲解后将那些抽象的论述性语言通过自己画的图示理清了我对系统调用.API.Libc库.封装例程的关系,本来是明白了这些东西之间的封装.提供.对应的关系的.可是后来看到第三个视频(就是使用库函数API…
计算机是如何工作的? 计算机的"三大法宝": 存储程序计算机 函数调用堆栈 中断机制 堆栈是计算机运行高级语言的基础 函数调用堆栈: 32位X86通过函数调用堆栈来传递参数 使用eax保存返回地址 堆栈寄存器和堆栈操作: ebp仅记录当前函数的调用基址 堆栈相关寄存器: 其他关键寄存器: 函数调用堆栈的工作机制: call指令:将eip中下一条指令的地址保存在栈顶 函数调用时堆栈的变化: 生成反汇编文件: gcc -g objbump –S Mykernel实验模拟计算机硬件平台: 中…