Linux内核分析(第二周)

时间:2023-03-09 06:26:48
Linux内核分析(第二周)

操作系统是如何工作的?

一、总结:三大法宝

1.存储程序计算机 + 函数调用堆栈 + 中断机制

2.堆栈:C语言程序运行时候必须的一个记录调用路径和参数的空间(函数调用框架/提供局部变量/传递参数/保存返回地址)

不同指令可能实现相同的功能

3.堆栈相关:esp ebp ;操作: push pop;

ebp在C语言中用作记录当前函数调用的基址

cs:eip总是指向下一条的指令地址:顺序;跳转/分支

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

pushl %ebp

movl %esp %ebp

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

movl %ebp %esp

popl %ebp

ret

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

1.由CPU和内核代码共同实现了保存现场和危险现场

2.实验楼虚拟机,打开shell

实验截图:

Linux内核分析(第二周)

Linux内核分析(第二周)

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

1. C语言中嵌入汇编代码的写法

  限定符 “m”内存变量 “=”只写“+”读写

2.简单的内核源代码

thread(存ip sp)

pcb(定义进程管理相关的数据结构)

my_schedule(调度器)

内核初始化 0号调度

初始化0号进程

创建更多的进程

启动0号进程

ret之后0号进程启动

循环1000万次,才有机会判断一下是否需要调度

设置时间片大小,时间片用完时设置一下调度标志。

两个正在运行的进程进行上下文切换

pushl %%ebp

movl %esp

movl $1f %1\n\t

1f表示接下来标号1的位置