Linux内核分析(第二周)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

实验截图:

技术分享

 

技术分享

 

三、在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的位置

 

以上是关于Linux内核分析(第二周)的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核分析作业第二周

Linux内核分析——第二周学习笔记

Linux内核分析——第二周学习笔记

魏昊卿——《Linux内核分析》第二周作业:了解操作系统是怎样工作的

《linux 内核分析》 第二周 实验

20169217《Linux内核原理与分析》第二周作业