2019-2020-1 20199326《Linux内核原理与分析》第四周作业
第四周学习内容
庖丁解牛Linux内核分析第三章:MenuOS的构造
Linux内核分析实验三
学到的一些知识
操作系统两大宝剑:1.中断上下文的切换--保存现场和恢复现场 2.进程上下文的切换
Linux内核版本号命名规则:A.B.C.D,A代表大幅度转变的内核,B指一些重大修改的内核,C是内核的真实版本,D是安全补丁和bug修复
linux内核源码目录结构:
- arch里的内容可以使Linux内核支持不同的CPU和体系结构,我们用的电脑基本都是x86架构,所以只需要关注x86文件目录即可
- block存放Linux存储体系中关于块设备管理的代码
- crypto存放长假的呢加密算法的C语言代码,譬如crc32、md5、sha1等
- document存放一些文档
- drivers驱动目录,里面存放了linux内核支持的所有硬件的驱动源代码
- firmware固件
- fs文件系统,里面列出了Linux支持的各种文件系统的实现
- include头文件目录,存放公共的头文件
- init存放Linux内核启动时的初始化代码,其中main.c源文件是整个Linux内核启动的起点
- ipc是进程间通信,存放的是linux支持的IPC的代码实现
- kernel内核,存放内核本身需要的一些核心代码文件
- lib公用库文件,是一些公用的库函数
- mm是memory management内存管理,存放linux的内核管理代码
- net存放了网络相关代码,譬如TCP/IP协议栈
- readme就是个文档,介绍了什么是Linux,Linux能在那些硬件上运行等问题。

Linux内核分析中比较重要的是arch目录下的x86目录下的源文件,init目录下的main.c,kernel下和进程调度相关的代码,其他还有内存管理,网络,文件系统等代码
实验内容
跟踪分析Linux内核的启动过程
1.启动menuos
cd LinuxKernel/
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img
启动效果如图

2.使用gdb跟踪调试内核
qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S
另开shell窗口,进入Linuxkernel目录下输入gdb
在gdb下设置断点
file linux-3.18.6/vmlinux #加载符号表
target remote:1234 #建立gdb和gdbserver之间的连接
break start_kernel #设置断点
c #让qemu上的linux继续运行
break rest_init #设置另一个断点
c #继续执行
执行效果如图


2019-2020-1 20199326《Linux内核原理与分析》第四周作业的更多相关文章
- 2019-2020-1 20199303<Linux内核原理与分析>第二周作业
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...
- 20169219 linux内核原理与分析第二周作业
"linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业
1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...
- Linux内核原理与分析-第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业
前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果
- 20169219linux 内核原理与分析第四周作业
系统调用 系统调用是用户空间访问内核的唯一手段:除异常和陷入外,它们是内核唯一的合法入口. 一般情况下,应用程序通过在用户空间实现的应用编程接口(API)而不是直接通过系统调用来编程. 要访问系统调用 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十三周作业
<Linux内核原理与分析>第十三周作业 一.本周内容概述 通过重现缓冲区溢出攻击来理解漏洞 二.本周学习内容 1.实验简介 注意:实验中命令在 xfce 终端中输入,前面有 $ 的内容为 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第十二周作业
<Linux内核原理与分析>第十二周作业 一.本周内容概述: 通过编程理解 Set-UID 的运行机制与安全问题 完成实验楼上的<SET-UID程序漏洞实验> 二.本周学习内容 ...
随机推荐
- 读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)
前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.如遇到本人能力有限难以解决的问题,我 ...
- coderforces Gym 100803A/Aizu 1345/CSU 1536/UVALive 6832 Bit String Reordering(贪心证明缺)
Portal: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1345 http://codeforces.com/gym/100 ...
- Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 中级篇
本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要争对C#初学者,巩固C#常用知识点: 中级篇主要争对WPF布局与Mat ...
- Linux基础:Day06
网路安全介绍背景: 早起的互联网 -- 1980年代 ,我们需要共享数据,传输数据:所传输或者共享的数据均为明文: 随着互连网发展,安全称为了国家的一种战略资源: 我们做的,比如编程,运维 -- 手工 ...
- php设计模式总结
#1 使用设计模式(如建造者.外观.原型和模板模式)更快速.更有效地创建对象 #2 使用数据访问对象和代理设计模式分离体系结构 #3 使用委托.工厂和单元素设计模式改善代码流和控制 #4 在不修改对象 ...
- 从零搭建一个SpringCloud项目之Zuul(四)
整合Zuul 为什么要使用Zuul? 易于监控 易于认证 减少客户端与各个微服务之间的交互次数 引入依赖 <dependency> <groupId>org.springfra ...
- Java第三十二天,IO操作(续集),读写缓冲区的使用
缓冲区出现原因: Java对IO的读写都是经过中间途经--JVM虚拟机进行管理的,JVM调用OS操作系统继续完成IO操作.如此一来,整个过程耗费了不小的资源,为了尽量减少这样重复的周期性操作,出现了缓 ...
- python3(一)
print('test', '怎么自动建了这么多目录', 'aaaaaaa') #test 怎么自动建了这么多目录 aaaaaaa 注释# # ---------------------------- ...
- HttpClient之Get请求和Post请求示例
HttpClient之Get请求和Post请求示例 博客分类: Java综合 HttpClient的支持在HTTP/1.1规范中定义的所有的HTTP方法:GET, HEAD, POST, PUT, ...
- 1.Git 安装
Git的安装 阿里云镜像去下载 阿里云的镜像地址 卸载Git 1.首先在系统环境变量->path->里面去清理掉git相关的环境变量 2.然后控制面板卸载 安装Git 一直下一步即可 使用 ...