博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20135202闫佳歆--week2 操作系统是如何工作的--学习笔记
阅读量:4984 次
发布时间:2019-06-12

本文共 1282 字,大约阅读时间需要 4 分钟。

此为个人学习笔记存档

week 2 操作系统是怎么工作的

一、计算机是如何工作的?——三个法宝

(一)三个法宝

1.存储程序计算机

所有计算机的基础性的逻辑框架。

2.函数调用堆栈

在低级语言中并不很重要,但是堆栈技术是高级语言可以运行的基础。

3.中断机制

有了中断后,就有了多道程序设计

每个程序有自己的执行流。
中断发生时,cpu把当前的eip等压入内核堆栈中,然后把eip指向中断处理程序的入口。

(二)深入理解函数调用堆栈

1.堆栈

堆栈是c语言程序运行时必须的一个记录调用路径和参数的空间

  • 函数调用框架
  • 传递参数(32位x86)
  • 保存返回地址
  • 提供局部变量空间
  • ……

2.堆栈相关寄存器

esp 堆栈指针

ebp 基址指针(在c语言中用作记录当前函数调用基址)

3.堆栈操作

push 栈顶地址减少4个字节(32位)

pop 栈顶地址增加4个字节

4.其他关键寄存器

  1. 代码段寄存器cs

    cs:eip:总是指向下一条指令的地址。
    更改?
    • call:将当前cs:eip的值压入栈顶,cs:eip指向被调用函数的入口地址
    • ret:从栈顶弹出原来保存在这里的cs:eip的值,放入cs:eip中

5.函数的堆栈框架

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

    在该函数的函数体前加:

    pushl %ebp

    movl %esp, %ebp

  2. 拆除被调用函数的堆栈框架

    在该函数的函数体后加:

    movl %ebp, %esp

    popl %ebp
    ret

(三)参数传递与局部变量

在例子中,参数传递?

z = p2(x,y);

pushl 0xfffffff8(%ebp)pushl 0xfffffff4(%ebp)  ;先把y压入栈,再把x压入栈。因为都存在栈里,所以可以变址寻址call 804839b
add $0x8,%esp ;把之前压进来的取消掉mov %eax,0xfffffffc(%ebp) ;赋给z

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

1.利用mykernel实验模拟计算机硬件平台

三、在mykernerl基础上构造一个简单的操作系统内核

(一)C语言中嵌入汇编代码的写法

注意事项:

  1. movl $0,%%eax\n\t中,第一个百分号是转义字符,第二个是%eax
  2. addl %1,%%eax\n\t中,%1是指下文中输出和输入的编号,编号从0开始。
  3. "c"(val1)表示用ecx寄存器存储val1的值。同理,"d"(val2)表示用edx寄存器存储val2的值。
  4. "=m"(val3)表示把val3的值写入内存变量。=只写,m指内存。
  5. 具体见修饰符。

(二)一个简单的操作系统内核源代码

操作系统的“两把剑”:

1.中断上下文,即中断处理程序。

2.进程上下文的切换

两个情况:

1.下一个进程next->state == 0 即正在执行时。
2.进程是一个新进程,还从未执行过。

转载于:https://www.cnblogs.com/20135202yjx/p/5246401.html

你可能感兴趣的文章
BZOJ 2819: Nim dfs序维护树状数组,倍增
查看>>
WinRAR(5.21)-0day漏洞-始末分析
查看>>
终端检测HTTPS服务端
查看>>
证件照换底色
查看>>
Candies
查看>>
EAS部署:linux 下安装EAS后启动不了服务
查看>>
[BZOJ3244][NOI2013] 树的计数
查看>>
[web]python3一句话开启http服务
查看>>
基于 控制台 简易 学生信息管理系统 (增、删、改)
查看>>
Cannot add foreign key constraint 错误解决办法
查看>>
To-Read List
查看>>
PHP漏洞全解(三)-客户端脚本植入
查看>>
重载类型运算符
查看>>
poj2676
查看>>
工作时候需要学习的东西
查看>>
Win8安装教程!笔记本用U盘安装Win8只需三步
查看>>
C语言中的字符串常量
查看>>
awk分隔符设定为多个字符或字符串
查看>>
DuoCode测试
查看>>
关于9080端口和80端口实现真正意义的WebServer+ApplicationServer结合应用
查看>>