zoukankan      html  css  js  c++  java
  • Linux内核分析课程总结

    对Linux内核的理解

    计算机如何工作的?

    • 计算机是通过从内存中运行第一条指令,并根据其指令的内容和要求,对存储器进行相应的操作和运算,最后根据地址将结果保存至制定的位置之中。接下来,周而复始,不断的提取和运行指令,最终保存结果。直到出现停止的指令,才会停止工作。

    操作系统是如何工作的?

    • 操作系统能够完成很多功能,例如:程序创建、程序执行、I/O设备访问、控制对文件的访问、系统访问、查错和纠错、簿记。
    • 操作系统的两把双刃剑:中断上下文和进程上下文的切换
    • 通过对myinterrupt.c的代码分析理解进程的切换机制
    • 操作系统保存了一些队列,每个队列都是一组等待某些资源的进程。
    • 短程队列是由在主存中并处于就绪状态的进程组成。这些进程中的任何一个进程都可以作为处理器的下一个选用者,具体选择哪个进程由分派程序决定。(中断上下文)
    • 长程队列是一列等待使用系统的新进程。操作系统通过将一个进程从长程队列转移到短程队列,向系统增加任务。每个I/O设备都有一个I/O队列。等待使用某个设备的所有进程都排在该设备队列中。当中断发生时,操作系统得到处理器的控制权。一个进程可能会求助于操作系统提供的一些服务。在这种情况下,服务调度处理程序成为进入操作系统的入口。

    构造一个简单的Linux系统MenuOS

    • 将内核编译成一个init文件,并将其拷贝在rootfs目录之下
    • 利用qemu开源仿真器模拟内自己所写系统的启动
    • 通过-kernel命令启动内核,通过-initrd命令设置存储硬盘
    • 可以使用-s与-S参数,并配合gdb来对内核启动的过程进行逐步的调试分析

    中断处理

    • 中断处理可以根据以下两幅图来理解:
      中断处理1
      中断处理2

    创建新进程

    • 步骤如下:
    • dup_task_struct中为其分配了新的堆栈
    • 调用了sched_fork,将其置为TASK_RUNNING
    • copy_thread中将父进程的寄存器上下文复制给子进程,保证了父子进程的堆栈信息是一致的
    • 将ret_from_fork的地址设置为eip寄存器的值
    • 最终子进程从ret_from_fork开始执行。

    可执行文件的装载

    • 可以通过下图来理解:

    目录链接

    对于Linux系统的理解

           在本文章的开头已经对所学习的Linux课程的各个小部分进行了简要的记录阐述。说实在的,对于Linux这种开放源的系统,我们所能学到的东西特别多。我们现在所学的仅仅是一些最基本的内容,也可以说是了解一下Linux系统的骨架。但是在实际操作之中,更加有趣的便是能够利用所了解到的这些基础的内容,再加上自己的一些理解,在一个简单的系统之上去慢慢添加一些功能和内容,逐步得做出属于自己的Linux系统。虽然这种想法很美好,似乎完成之后也很有成就感。但是,以我现在的基础,还是很难实现的。但是我想,将一开始最基础的内核启动、中断处理、进程切换等基础的内容再进行深入的了解吧,从而做到积少成多,不能仅仅知道其中的一些皮毛而满足。到最后希望自己也能够真正理解Linux这个“自由”的系统!也希望老师您能开设进阶的课程,让我们继续能够探索Linux!

    经验感受

           由于是学校课程的要求,在还未开学的时候就已经接触到了这门课程。在这门课程之前,并未接触过网课的模式。但在第一周的时候,就喜欢上了这种上课的模式。每周的视频学习,根据所布置的任务,再进行进一步的学习和了解。所以每周都是过着很充实的生活,当然很重要的是能够自己将任务合理地分配到一周的7天,并且在学习的过程之中要懂得查阅资料和记录每一个成果和问题,最终通过整理和分析来得到结果。

    “原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”

  • 相关阅读:
    函数定义、调用
    条件语句和循环语句
    eclipse中安装pydev插件出现duplicate location
    编码类型
    除法
    数据类型
    命令和python模式转换
    前言
    SpringMVC_json
    解决eclipse中Tomcat服务器的server location选项不能修改的问题
  • 原文地址:https://www.cnblogs.com/Spr1ngxx/p/5448654.html
Copyright © 2011-2022 走看看