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和内核代码来共同实现保存现场和恢复现场