Linux内核分析 03

一,构造一个简单的Linux系统MenuOS

1、Linux内核源代码简介

回顾一下前面的三大法宝和两把宝剑。

arch/x86目录下的代码需要重点关注

阅读代码的时候把除了x86以外的都删掉会有利于代码的阅读和理解。其他目录下的基本对我们的学习没有什么用处。

根目录下除了arch外还有几个比较重要的:Documentation、drivers、init

内核启动的相关代码基本上都在init目录下

整个Linux内核启动的起点,main.c       start_kernel 相当于普通C语言程序中的main函数。

习惯:打开什么都先找 readme,基本上都可以自行理解了。

make mrproper 清理中间程序的指令。

不同的配置方法、各种make。

2、构造一个简单的Linux系统

时间: 2024-12-15 11:25:57

Linux内核分析 03的相关文章

LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)

LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上) 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 (一)用户态.内核态和中断处理过程 (二)系统调用概述 系统调用概述和系统调用的三层皮 (三)使用库函数API和C代码中嵌入汇编代码触发同一个系统调用 使用库函数API获取系统当前时间 C代码中嵌入汇编代码的方法(复习) 使用C代码中嵌入汇编代码触发系统调

Linux内核分析——扒开系统调用的三层皮(上)

马悦+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断处理过程 1.用户通过库函数与系统调用联系起来. 2.在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态.而在相应的低级别执行状态下代码的掌控范围受到限制.只能在对应级别允许的范围内活动. 3.intel x86 CPU有四种不同的执行级别0-3.Linux只取两种,0级

《linux内核分析》第一次课 实验作业

解释main.c的汇编码的堆栈变化 实验截图如下图所示: 下面从main函数开始进行分析(三个可变数值从上到下分别为4,7,4): 不妨假设一开始为空栈,初始位置为0,ebp=esp,以下用行号进行标记 18:esp指向位置(1),位置(1)的值为esp的地址 19:使ebp指向与esp相同的地址(位置1) 20:esp指向位置(2) 21:位置(2)的值为7 22:调用f函数(标号):esp指向位置(3),位置(3)的值为eip的地址,将f的地址放到eip中 09:esp指向位置(4),位置(

《Linux内核分析》第四周学习总结

<Linux内核分析>第四周学习总结                         ——扒开系统调用的三层皮 姓名:王玮怡  学号:20135116 理论总结部分: 第一节 用户态.内核态和中断 一.用户态.内核态和中断处理过程 一般现代CPU都有几种不同的指令执行级别 1.用户态 在相应的低级执行状态下,代码的掌控范围会受到限制,此时为用户态. 2.内核态 在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态. 3.举例 Intel x86 CPU有四

《linux 内核分析》 第4周

王一 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.linux 系统的状态 Linux在x86平台下支持0内核态和3用户态.在内核态32位平台能访问0x00000000以上的空间,而用户态只能访问小于0xc0000000一下的地址空间 (此处的地址空间为逻辑地址).当用户态切换到内核态的时候主要方式为中断. 1.当int128调用时,系统会自动的两个状态下的cs:eip,ss:es

《linux 内核分析》 第二周 实验

王一 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 本次课的核心是通过中断机制完成进程的调度 ,在本次课程中__init my_start_kernel作为入口函数,定义0号进程的tPCB结构体,通过复制来制造其他进程的tPCB数据结构,中断时间函数被 my_timer_handler周期性的调用来修改my_need_sched 的值,而0号进程一直在检测my_need_sched 的

Linux内核分析8

周子轩 原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用gdb跟踪分析一个schedule()函数,理解Linux系统中进程调度的时机. 实验过程: 登陆实验楼虚拟机http://www.shiyanlou.com/courses/195 打开shell终端,执行以下命令: cd LinuxKernel rm -rf menu git clone https://git

《Linux内核分析》课程第七周学习总结

姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 学习内容:Linux内核如何装载和启动一个可执行程序 理解编译链接的过程和ELF可执行文件格式: 编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式: 使用gdb跟踪分析一个execve系统调用内核处

LINUX内核分析第七周学习总结——可执行程序的装载

LINUX内核分析第六周学习总结——进程的描述和进程的创建 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 (一)预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 2.目标文件的格式ELF 3.静态链接的ELF可执行文件和进程的地址空间 (二)可执行程序.共享库和动态加载 1.装载可执行程序之前的工作 2.装载时动态链接和运行时动态链接应用举例 (三)