博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
作业完成2
阅读量:5237 次
发布时间:2019-06-14

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

mykernel源代码分析:

执行了my _start_kernel(void),

开始启动操作系统,这里作为操作系统的入口 

代码中有一个循环 每循环10000次 便打印 一个my _start_kernel (值越大打印更慢)

每次时钟中断都调用一次printk 输出my interrupe kernel 

 

进程的启动和进程的切换机制:

初始化进程的数据结构 (可以初始化很多进程)start开始执行0号进程 

搭建好CPU运行环境(进程搭建好堆栈和建立好入口), 完成了内核的初始化

 ret 之后进程正式启动 

如何切换?: switch to next process 

                     将当前进程的ebp保存起来 当前进程的esp保存起来 把next进程的sp放在esp中 保存eip 将下一个进程的eippush到栈里 即可切换进程

 

 “操作系统是如何工作的:操作系统工作的两个关键: 中断和进程上下文的切换  将C代码转化为机器代码后 开始在CPU 中执行  而在执行过程中遇到中断时 需要靠CPU和内核代码来共同实现保存现场和恢复现场 

 

转载于:https://www.cnblogs.com/20135331wenyi/p/5236596.html

你可能感兴趣的文章
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书_2019年
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
721. Accounts Merge
查看>>
「Unity」委托 将方法作为参数传递
查看>>
重置GNOME-TERMINAL
查看>>