[关闭]
@iar 2016-08-23T01:33:34.000000Z 字数 6675 阅读 82

庖丁解牛Linux内核笔记: 操作系统是如何工作的 - 一个简单的时间片轮转躲到程序内核代码

Linux OS Note


作者:Sandy 原创作品转载请注明出处
《Linux内核分析》MOOC课程http://mooc.study.163.com/learn/USTC-1000072000
依照学术诚信条款,我保证此回答为本人原创,所有回答中引用的外部材料已经做了出处标记。

#

函数的堆栈框架

分析流程

知识点

观察main中的局部变量

中断

如何实现中断? ---> kernel stack


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

Clang中潜入汇编代码

  1. __asm__ volatile(
  2. 汇编语句模版:
  3. 输出部分:
  4. 输入部分:
  5. 破坏描述部分);
  1. int main()
  2. {
  3. *val1+val2=val3*/
  4. unsigned int val1 = 1;
  5. unsigned int val2 = 2;
  6. unsigned int val3 = 0;
  7. printf("val1:%d,val2:%d,val3:%d\n",val1,val2,val3);
  8. asm volatile(
  9. "movl $0,%%eax\n\t" /*clear %eax to 0*/
  10. "addl %1,%%eax\n\t" /*%eax += val1*/
  11. "addl %2,%%eax\n\t" /*%eax += val2*/
  12. "movl %%eax,%0\n\t" /*val2 = %eax*/
  13. : "=m" (val3) /* output =m mean only write output memory variable*/
  14. : "c" (val1),"d" (val2) /*input c or d mean %ecx/%edx*/
  15. );
  16. printf("val1:%d+val2:%d=val3:%d\n",val1,val2,val3);
  17. return 0
  18. }

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

先分析一下3个文件的关系
关键点

mykernel实验指导(操作系统是如何工作的)

数据结构分析 (CPU-specific state of this task)

struct Thread

分析流程

进入my_start_kernel

第一次进入my_process. 这是进程0的.

进入my_schedule. 开始从process 0到process 1的处理.

process 2,3

process 1切回process 0, 调用my_schedule

总结分析

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注