二,操作系统是如何工作的

1、函数调用堆栈

三大法宝:存储程序计算机 函数调用堆栈 中断机制

堆栈:是C语言程序运行时必须的一个记录调用路径和参数的空间。是计算机内部现成的东西,我们直接使用。

   包括函数调用框架、传递参数、保存返回地址、提供局部变量的空间等等。

堆栈相关寄存器:esp堆栈指针(栈顶)、ebp基址指针(栈底) * ebp在C语言中用作记录当前函数调用基址。

堆栈操作:push(栈顶地址减少四个字节)、pop(栈顶地址增加四个字节)(32位)

其他关键寄存器:cs:eip,总是指向下一条指令的地址。(call、ret)

//建立被调用函数的堆栈框架

pushl %ebp

movl %esp,%ebp

//被调用者函数体

//do sth

//拆除被调用者函数的堆栈框架

movl %ebp,%esp

popl %ebp

ret

call指令是将eip中下一条指令的地址保存在栈顶,设置eip指向被调用程序的代码开始处。

ret将该地址恢复到eip中

* 举例应用:首先,使用gcc -g 生成test.c的可执行文件test;然后再使用objdump -s获得test的反汇编文件。

       有压栈必有出栈,有生必有死。

       函数的返回值通过eax寄存器传递。

2,借助Linux内核部分源代码模拟存储程序计算机工作模型及时钟中断

中断机制如何工作:CPU和内核代码共同实现保存现场和恢复现场。

mykernel的实验,诸如下图:

3,在mykernel基础上构造一个简单的操作系统内核

C语言代码中嵌入汇编代码: asm("statements" : output_regs :inout_regs :clobbered_regs);   输入、输出、破会描述、编译器优化、不允许编译器优化等等。

mysceh的具体内容

两个正在运行的进程之间做进程上下文转换

* 操作系统的两把剑:中断上下文和进程上下文的切换

时间片轮转的例子,时间片可以改小一点。

4,学习心得体会

  基本了解了函数调用堆栈的过程和原理,中断机制的工作原理,以及mykernel的一些相关知识,最后学习了一下时间片轮转的实验举例。总的来说内容不多也不算少,还是需要一些时间来消化和理解的。很不错的一次自学。

转载于:https://www.cnblogs.com/KG35/p/5247310.html

Linux内核分析 02相关推荐

  1. 《Linux内核分析》实践4

    <Linux内核分析> 实践四--ELF文件格式分析 20135211李行之 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格 ...

  2. linux 内核 核心代码,8分钟掌握Linux内核分析的核心科技

    原标题:8分钟掌握Linux内核分析的核心科技 作者: OUYANG_LINUX007 来源: http://blog.csdn.net/ouyang_linux007/article/details ...

  3. linux内核分析(转自某位大哥网上的笔记)

    启动 当PC启动时,Intel系列的CPU首先进入的是实模式,并开始执行位于地址0xFFFF0处的代码,也就是ROM-BIOS起始位置的代码.BIOS先进行一系列的系统自检,然后初始化位于地址0的中断 ...

  4. Linux内核分析——可执行程序的装载

    链接的过程 首先运行C预处理器cpp,将C的源程序(a.c)翻译成ASCII码的中间文件(a.i) 接着C编译器ccl,将a.i翻译成ASCII汇编语言文件a.s 接着运行汇编器as,将a.s翻译成可 ...

  5. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  6. 《Linux内核分析》实验一

    陈智威,<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 课堂学习笔记: 作业截图: 汇编代码堆栈分析: ...

  7. Linux 内核分析 之一:How Computer Works 实验

    说明 欧长坤 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这学期学校恰好有操 ...

  8. linux内核分析 网络九,“Linux内核分析”实验报告(九)

    一 Linux内核分析博客简介及其索引 本次实验简单的分析了计算机如何进行工作,并通过简单的汇编实例进行解释分析 在本次实验中 通过听老师的视频分析,和自己的学习,初步了解了进程切换的原理.操作系统通 ...

  9. Linux内核分析作业第二周

    操作系统是如何工作的 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.函数调用堆栈 1.计算机工作三 ...

最新文章

  1. Espresso小试
  2. php web开发应用教程,PHP-Web 应用程序开发:使用模板_PHP
  3. 飞桨模型保存_飞桨实战笔记:自编写模型如何在服务器和移动端部署
  4. java obix_obix协议在java中的配置和使用详解
  5. python实用的几个脚本程序(自己在用)
  6. Android mc怎么和win10联机,我的世界手机版与win10版联机可完美互通
  7. 实现原理 扫描枪_条码扫描枪原理
  8. 2017年国家公务员考试行测错题集(省级)
  9. linux如何用命令进入u盘,linux 下如何打开u盘
  10. 解决flex布局的space-evenly兼容性问题
  11. 1-5、PS基础操作
  12. python制作会动的表情包_Python自动生产表情包
  13. 【视线估计】Realtime and Accurate 3D Eye Gaze Capturewith DCNN-based Iris and Pupil Segmentation
  14. Notes from Google Play | Google Play 持续助力您的应用和游戏
  15. 挚爱家乡五常大米的味道
  16. 杰理之优化电脑长时间播放没声音【篇】
  17. 一个高性能服务器需要关注的地方
  18. 1024程序员节来喽
  19. categories与set_categories
  20. JetBrains PyCharm 设置显示行号

热门文章

  1. nyoj239 月老的难题 二分图 匈牙利算法
  2. Silverlight学习笔记(九)-----RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】...
  3. 用 .NET 3.5 创建 ToJSON() 扩展方法
  4. webpackjsonp 还原_具有催化CO2还原性能的非贵金属配合物的配体设计
  5. matlab里插入行和列
  6. win7链接html线到屏幕上,为你解决win7系统html文件图标变成空白的具体技巧 - win7吧...
  7. linux系统查看当前安装字库,linux下怎样安装中文字体?
  8. 王者荣耀服务器维护啥时候结束,王者荣耀维护几点结束今天?11月10日维护公告...
  9. java arraylist 重复_Java中ArrayList去除重复元素
  10. xshell 秘钥连接_如何使用PuTTY和xshell 分别远程连接linux,并配置秘钥认证