笔记部分
2019/11/12 14:45:44
- 从CPU和内存的角度看linux系统的运行
CPU角度:首先我们进行了系统调度,然后系统进入内核态,把信息压栈,然后我们进行进程管理,由于进入系统调用可能会引起等待输入,这部分时间调度其他进程来执行,这段时间之内如果产生了I/O终端,会再调度回来,使相关调度获得数据并返回用户态。
内存角度:进程映射到3G以上的部分。
- 进程上下文切换相关代码分析
首先进程上下文包含:用户地址空间、控制信息、硬件上下文,schedule()函数选择新的进程来执行,context_switch进行上下文的切换,在这个宏定义里面有一个switch_to进行关键上下文的切换,完成内核堆栈切换,next_ip一般是$1f,对于新创建的子进程是ret_from_fork,
- 进程调度与进程调度的时机分析
linux中的进程根据优先级排队,调度程序会自动调节,也可以手动配置,shedule实现进程调度,通过中断处理过程,可能会直接调用schedule, 用户态进程只能被动调用,内核态可以直接调用或者发生中断产生调度
- Linux系统的一般执行过程分析以及一些特殊情况
实验部分
2019/11/12 19:54:35
- gdb跟踪schedule
- 设置断点并进行执行停在了schedule
2. 查看相关代码
3. 继续执行,停在了pick_next_task上
4. 查看代码
5. 继续执行,停在context_switch
6. 查看代码