操作系统工作小解
2016-03-05 23:36
316 查看
操作系统工作小解
20135224陈实 + 原创作品+ 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”套用课上陈述内容:
计算机是如何工作的?(总结)——三个法宝
存储程序计算机工作模型,计算机系统最最基础性的逻辑结构;
函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能;
enter
pushl %ebp
movl %esp,%ebp
leave
movl %ebp,%esp
popl %ebp
函数参数传递机制和局部变量存储
中断,多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序
核心代码分析:
第一部分: void my_timer_handler(void) { #if 1 if(time_count%1000 == 0 && my_need_sched != 1) printk(KERN_NOTICE ">>>my_timer_handler here<<<\n"); my_need_sched = 1; } time_count ++ ; #endif return; } 这段代码很明显是C语言编写,内容只要是时间片的跳转即时钟中断函数,这里可以看见
if(time_count%1000 == 0 && my_need_sched != 1)这样一句,表示为时间片1000单位后跳转,在操作系统里有自己的定义单位 这里
my_need_sched = 1;将标志设置为1,在后面内容用到
void my_process(void)
void my_process(void) if(i%10000000 == 0) { printk(KERN_NOTICE "this is process %d -\n",my_current_task->pid); if(my_need_sched == 1) 。。。。。。 小结:可以看出,这部分主要内容是C编写的LINUX内核时间片对于函数调度的c代码
第二部分嵌入式汇编代码: asm volatile( "pushl %%ebp\n\t" /* save ebp */ "movl %%esp,%0\n\t" /* save esp */ "movl %2,%%esp\n\t" /* restore esp */ "movl $1f,%1\n\t" /* save eip */ "pushl %3\n\t" "ret\n\t" /* restore eip */ "1:\t" /* next process start here */ "popl %%ebp\n\t" : "=m" (prev->thread.sp),"=m" (prev->thread.ip) : "m" (next->thread.sp),"m" (next->thread.ip) ); my_current_task = next; printk(KERN_NOTICE ">>>switch %d to %d<<<\n",prev->pid,next->pid } 这部分主要注意的下面是标注主要语法在这不赘述 注意的几点: 数字代表的是标注下的内容,这里pcb是以链表的形式在前面定义好的 每个进程独立的堆栈。每个进程独立的PCB即进程数据对应于
"=m" (prev->thread.sp),"=m" (prev->thread.ip) : "m" (next->thread.sp),"m" (next->thread.ip)
这些数据内容
[/code]
总结
第一阶段:进程从用户态切换到内核态 第二阶段:中断处理 第三阶段:进程切换操作系统本质上是一种软件,是实现交流的接口
相关文章推荐
- HDU 5636 关键点的 floyd 最短路问题
- 算法导论-7-2
- PL/SQL之一-开篇
- Ajax文件详解
- Java标识符命名。。。
- 工作半年,总结分享
- 凭什么你伤害我,我还要感激你
- Food Delivery(区间DP)
- Codeforces Round #344 (Div. 2)
- Android TTS(TextToSpeech)语音输出与RecognizerIntent语音识别
- TabBar自定义图片的设置
- Linux命令之file命令 待续版
- 金融项目开发~安全之xss
- 小算法:获得一个数的所有可能性组合
- 【设计模式】17、中介者模式
- juery学习总结(二)——juery操作页面元素
- 42. Trapping Rain Water *HARD*
- onvif学习笔记5:onvif框架代码初步了解
- 【小白学OpenCV】(零)——计算机图像基础
- 免费的 Bootstrap 的后台管理模板