构造一个简单的Linux内核的MenuOS
构造一个简单的Linux内核的MenuOS
20135109 高艺桐
《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
一、Linux内核源代码简介
arch/x86目录下的代码是我们最重点关注的
fs/文件系统
init/内核启动相关的代码
start_kernel函数相当于C语言的main函数
kernel/Linux内核的核心代码
mm/内存管理代码
二、构造一个简单的Linux系统
使用实验楼构造的实验截图:
自己搭建实验楼的过程:
三、跟踪调试Linux内核启动的过程
一、使用gdb跟踪调试Linux内核的方法
(1)使用gdb跟踪调试内核,冻结起来
(2)使用水平分割,新创建一个窗口使用gdb
(3)加载Linux符号表,用tarket remote连接端口,用break设置断点(内核启动起点)
(4)设置新断点rest_init
(5)执行list操作
二、简单分析一下Start_Kernel
内核的启动过程:init目录下的main.c中的内核启动起点start_kernel
init_task 即手工创建的PCB,0号进程即最终的Idle进程。
trap_init 初始化中断,设置中断门,系统陷阱门。
init_process Linux系统的第一个用户态进程,根目录下的init程序(作为1号进程)由kernel_init创建。
rest_init 0号进程,一直存在的进程,创建1号进程。
当系统没有进程需要执行时就调度到idle进程。
四、实验总结
通过本周的学习,我自己完成了从start_kernel到init进程启动的实验,深入体会到了内核启动的过程。
首先要先搭建一个Linux环境,因为计算机内存不允许,所以我直接使用实验楼中的环境;其次启动内核并使用gdb跟踪调试内核;之后用targe remote加载符号项,创建连接;最后用break设置断点。
实验中rest_init作为 0号进程,一直存在着并创建1号进程;init_process Linux作为系统的第一个用户态进程,根目录下的init程序(作为1号进程)由kernel_init创建;当系统没有进程需要执行时就调度到idle进程。
本次实验中,因为在实验楼中完成,所以(gdb)vmlinux语句执行有瑕疵,换成了file/home/shiyanlou/LinuxKernel/linux-3.18.6/vmlinux,最终完成了实验。
构造一个简单的Linux内核的MenuOS的更多相关文章
- Linux内核分析 笔记三 构造一个简单的Linux系统MenuOS ——by王玥
一.知识点总结 (一)Linux源代码简介 arch/x86目录下的代码是我们重点关注的 内核启动相关代码都在init目录下 start_kernel函数相当于普通C程序的main函数 linux的核 ...
- Linux内核分析第三周学习总结:构造一个简单的Linux系统MenuOS
韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
- Linux内核分析— —构造一个简单的Linux系统MenuOS(20135213林涵锦)
Linux内核分析— —构造一个简单的Linux系统MenuOS 实验内容 Linux内核的启动过程,从start_kernel到init进程启动 使用实验楼的虚拟机打开shell cd LinuxK ...
- 《Linux内核分析》第三周笔记 构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS 一.linux内核源代码简介 三大法宝(存储程序计算机.函数调用堆栈.中断)和两把宝剑(中断上下文的切换:保存现场和恢复现场.进程上下文的切换) 1.在lin ...
- Linux内核分析-构造一个简单的Linux系统MenuOS
构造一个简单的Linux系统MenuOS linux内核目录结构 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel C ...
- Linux内核分析——构造一个简单的Linux系统MenuOS
马悦+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内核源代码简 ...
- LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS
LINUX内核分析第三周学习总结——构造一个简单的Linux系统MenuOS 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163. ...
- 《Linux内核分析》 第三周 构造一个简单的Linux系统MenuOS
Linux内核分析 第三周 构造一个简单的Linux系统MenuOS 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...
- 20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS
Linux内核分析第三周 构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 ...
随机推荐
- 【NoSql】之Hbase
Hbase概述 · Hbase是构建在hdfs上的分布式列式存储系统 · Hbase内部管理的文件全部存储在HDFS上面, · Hbase是基于google bigtable 模型开发的,典型的 ...
- spark 基础开发 Tips总结
本篇博客主要是 sparksql 从初始开发注意的一些基本点以及力所能及的可优化部分的介绍: 所使用spark版本:2.0.0 scala版本:2.11.8 1. SparkSession ...
- CTF-i春秋网鼎杯第四场部分writeup
CTF-i春秋网鼎杯第四场部分writeup 因为我们组的比赛是在第四场,所以前两次都是群里扔过来几道题然后做,也不知道什么原因第三场的题目没人发,所以就没做,昨天打了第四场,简直是被虐着打. she ...
- WPF中使用WindowChrome美化窗口过程中的一个小问题
WPF中使用WindowChrome美化窗口,在园子里有几篇不错的文章,我也是参考练习过程中发现的问题,并记录下来. 在看过几篇教程后,给出的窗口很多出现这样一个问题,如果设置了窗口标题栏的高度大于默 ...
- JavaWeb基础—VerifyCode源码
package com.jiangbei.verifycodeutils; import java.awt.BasicStroke; import java.awt.Color; import jav ...
- 2017-2018-1 20155317 《信息安全系统设计基础》课堂实践——实现mypwd
2017-2018-1 20155317 <信息安全系统设计基础>课堂实践——实现mypwd 1 . 学习使用pwd 很显然pwd命令的意思是打印出该文件当前的绝对路径 2 . 了解pwd ...
- 【转】枚举enum学习小记
原帖: http://hi.baidu.com/yuleishou/item/caacae872190031ec216272f 表示在vs2008下实验了一下,有些东西和原帖的还是不一样的,都贴在这里 ...
- Oracle单节点_Grid_Infrastructure_DB_安装过程图解(二/三)
接上文 Oracle单节点_Grid_Infrastructure_DB_安装过程图解(一/三) 接下来,进行Grid Infrastructure 部分的安装:
- 关于manacher
由一个题引入: 求一个串A的最长回文串: A=abababa最长回文串长度:5(ababa) 先思考用hash怎么做? 一.暴力 枚举左端,右端点(确定一个区间),线性扫一遍当前区间. Ans=max ...
- 一维码EAN 8简介及其解码实现(zxing-cpp)
一维码EAN 8:属于国际标准条码,由8个数字组成,属EAN的简易编码形式(EAN缩短码).当包装面积小于120平方公分以下无法使用标准码时,可以申请使用缩短码. 依结构的不同,EAN条码可区分为: ...