zoukankan      html  css  js  c++  java
  • 2019-2020-1 20199328《Linux内核原理与分析》第九周作业

    笔记部分

    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
    1. 设置断点并进行执行停在了schedule


    2. 查看相关代码


    3. 继续执行,停在了pick_next_task上


    4. 查看代码


    5. 继续执行,停在context_switch


    6. 查看代码

  • 相关阅读:
    3.14周末作业
    3.13作业
    文件处理
    字符编码
    基本数据类型总结
    基本数据类型--------------------集合set()
    python入门009
    作业009
    python入门008
    作业008
  • 原文地址:https://www.cnblogs.com/llj76720197/p/11845063.html
Copyright © 2011-2022 走看看