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. 查看代码

  • 相关阅读:
    .Net中多线程类的使用和总结
    单例模式完整解析
    避免构造/析构函数调用虚函数(转)
    正则表达式
    序列化与反序列化
    数组的使用,指针的使用
    jmeter单接口和多接口测试
    HTML5 input placeholder 颜色修改
    h5动画效果总结
    8月份月度反思--做一个快乐的程序员
  • 原文地址:https://www.cnblogs.com/llj76720197/p/11845063.html
Copyright © 2011-2022 走看看