2018-2019-1 20189221<Linux内核原理与分析>第四周作业 教材学习:<庖丁解牛Linux内核分析> 第 3 章 MenuOS的构造 计算机三大法宝:存储程序计算机,函数调用堆栈,中断 操作系统两把宝剑:中断上下文,进程上下文 Linux内核源代码: Linux内核使用的是第二周时下载的Linux-2.6版本 Linux内核目录: init目录下的main.c函数: start_kernel(): init_task(): rest_init(): 随书学习很有…
20169211<Linux内核原理与分析>第四周作业内容列表 1.教材第3.5章节知识学习总结: 2.实验楼配套实验二实验报告: 1.<linux内核设计与实现>教材第3.5章节知识阅读学习总结 教材第3章节主要讲述了进程管理相关的知识,包括什么是进程.进程描述符及任务结构.如何创建进程.linux中线程的实现方法以及如何终结进程等. 首先,印象最深的是如何创建新的进程.在听孟老师的<linux内核分析>的课程时,曾谈到过计算机的"三大法宝":存储…
<Linux内核原理与分析>第四周作业 一.上周问题总结: 虚拟机环境缺少部分库文件 书本知识使用不够熟练 二.本周学习内容: 1.实验楼环境使用gdb跟踪调试内核 1.1 在该环境下输入如下命令启动menuos: cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 实践截图如下: 1.2 使用gdb跟踪调试内核 qemu -kernel linux-3.18.6/arch/x86…
<Linux内核原理与分析>第四周作业 步骤一 首先我们指定一个内核并指定内存根文件系统,这里的bzImage是vmLinux经过gzip压缩的内核,"b"表示"big"适用于大内核,内核启动时要先访问initrd文件系统(内存根文件系统),在CPU初始化时把它冻结起来,在1234端口上创建一个gdb-server,出现的窗口可以看见其状态为冻结. 步骤二 加载带debug信息的内核,连接到已经打开的linux系统,端口号:1234,设置断点,按下&qu…
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 一.本周知识点提炼 1.1操作系统内核三大功能: 操作系统内核三大功能分别是进程管理,内存管理,文件系统. 其中最核心的是进程管理,而pid是系统区别进程的编号. 本周学习及实验重点就是学习和分析进程管理的重要性,所以接下来将对进程管理进行总结. 1.2进程管理总结: 首先我们…
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ) 一.linux内核源代码 首先来看一下这次实验中用到的Linux内核源代码: http://codelab.shiyanlou.com/xref/linux-3.18.6/ 根据电子课堂的讲述,我从中看到了一些值得注意的几个关键目录 /arch 该目录中包含和硬件体系结构相关的…
本次的实验是使用gdb跟踪调试内核从start_kernel到init进程启动,并分析启动的过程. 1.首先是在实验楼虚拟机上进行调试跟踪的过程. cd LinuxKernel qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 内核启动后进入menu程序 使用gdb跟踪调试内核: qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img…
本周学习内容为<跟踪分析MenuOS简单linux系统的启动过程>和教材中的进程调度及内核数据结构. 一.跟踪分析Linux内核的启动过程 这个实验我是在实验楼环境中完成的,最初想在自己的环境中完成,可在make的时候出现了问题,原本需要很长时间的make过程只用了10几秒,而且报了错.经过我上网查资料发现可能是因为我的实验环境有问题(kali1-4.3.0).所以我还是选择了实验楼,其实在实验楼上同样有问题,每次冻结程序进行调试时必然卡顿,然后崩溃.我怀疑是网速的问题,果然,换了流量之后流畅…
Linux第四周作业 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握.函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在执行call的时候,eip保存的是call语句下一条指令的地址)的地址保存在当前栈顶,然后设置eip的值为要跳转到的函数的开始的地址 ret指令:将之前使用call指令的保存在栈里面的地址恢复到eip中去. 2.实验相关 用自己的Ubuntu来搭建实验所需要的环境.但是在使用用apt-get命令安装…
网易云课堂学习: 在实验楼的学习中,这次的实验是利用mykernel实验模拟计算机硬件平台 首先进入linux-3.9.4, $cd LinuxKernel/linux-3.9.4 如下图所示 接下来是利用如下命令执行 $qemn -kernel arch/x86/boot/bzImage 结果如图所示 进入mykernel,查看文件,结果如图所示 进入mymain.c,如图所示 前面是头文件,该函数是整个操作系统的入口,my-start-kernel,之前都是硬件初始化的操作,if循环是执行1…
1. 阴天☁️ 你说你爱烟雨微茫,雨来时你却伞遮霓裳: 你说你爱春光灿烂,阳光普照时你却孑然惆怅: 你说你爱微风轻柔,风拂发梢时你却紧闭门窗: 这便是为何你说你也深深爱我,我却眼波成霜. 2. 今日发问,如何写博客.如何排版 一.书本第三章知识总结 计算机的三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统的两把宝剑 中断上下文的切换--保存现场和恢复现场 进程上下文的切换 Linux内核源码的目录结构如下所示. 关键的目录 arch:arch目录在Linux内核目录中占比相当庞大,主要原因…
第三章 这一章接触内核源代码,对内核源码进行编译和调试跟踪 一.预备知识: 内核:整个操作系统的最底层,它负责了整个硬件的驱动以及提供各种系统所需的内核功能.内核实质上是系统上面的一个文件而已,这个文件包含了驱动主机各项硬件的检测程序与驱动模块.当系统读完BIOS并加载MBR内的引导装载程序后,就能够加载内核到内存当中.然后内核开始检测硬件,挂载根目录并取得内核模块来驱动所有的硬件,之后调用/sbin/init就能依序启动多有系统所需要的服务了. Qemu :以GPL许可证分发源码的模拟处理器,…
第一部分 课本学习 内核版本号:Linux内核自2013年12月起,就以A.B.C.D的方式命名.A和B变得无关紧要,C是内核的真实版本.每一个版本的变化都会带来新的特性,如内部API的变化等,改动的代码数量常常上万行.D是安全补丁和bug修复. 几个关键的目录: Arch:与体系结构相关的子目录列表. Block:存放Linux存储体系中关于块设备管理的代码. Crypto:存放常见的加密算法的C语言代码. Documentation:存放一些文档. Drivers:驱动目录,里面分门别类地存…
课本:第3章 MenuOS的构造 内容总结 计算机的"三大法宝" 存储程序计算机 函数调用堆栈 中断 操作系统的"两把宝剑" 中断上下文切换:保存现场和恢复现场 进程上下文切换 在接触linux内核源代码时,linux是基于一个稳定版的内核Linux-3.18.6.其内核源码的目录结构如下: 其中,arch目录是与体系结构相关的子目录列表,里面存放了许多CPU体系结构的相关代码.arch目录中的代码在linux内核代码中占比相当庞大,主要是因为arch目录中的代码可…
linux内核分析学习笔记 --第三章 MenuOS的构造 计算机的"三大法宝"和操作系统的"两把宝剑" 三大法宝 程序存储计算机 即冯诺依曼体系结构,基本上是所有计算机的基础性的逻辑框架 函数调用堆栈 高级语言可以运行的起点就是函数调用堆栈 中断机制 中断上下文 保存现场和恢复现场 进程上下文 进程的调度 构建一个linux内核--MenuOS系统 linux内核源码几个重要的目录 arch目录 是与体系结构相关的子目录列表,存放了许多CPU体系结构相关的代码 该…
本周首先我结合mooc网的视频资料,了解了计算机的三大法宝,分别是存储程序计算机,函数调用堆栈和中断机制. 在计算机的三大法宝中,存储程序计算机是根本,函数调用堆栈是高级语言运行的基础,而中断机制成就了多道程序运行的先河. <pre> <code> push %ebp; movl %esp,%ebp; do something; movel %ebp,%esp; popl %ebp; ret </code> </pre> 前两行指令建立了被调用者函数的堆栈框…
构造简单的Linux内核 显然用实验楼配好的环境做这个实验太简单了,按照没有困难制造困难也要上的原则,在自己的64位虚拟机上做这个实验. 按照课本(视频)上的步骤一直做下去,到编译生成init时出现了错误: 初步查询该错误得知是库目录不在gcc搜索目录下,粗看几个解决方法都很麻烦,甚至一些写解决方法的人恐怕都不知道他们自己在写什么,于是抱有侥幸心理,去掉了编译选项中的-m32.编译通过: 但是在qemu运行时却出错了: 但其实编译生成的init是可以正常执行的: 由于出错信息提示没有init被执…
<庖丁解牛>第三章书本知识总结 计算机的三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统的两把宝剑 中断上下文的切换--保存现场和恢复现场 进程上下文的切换 Linux内核源码的目录结构如下所示. 关键的目录 arch:arch目录在Linux内核目录中占比相当庞大,主要原因是arch目录中的代码可以使Linux内核支持不同的CPU和体系结构. block:存放Linux存储体系中关于块设备管理的代码. crypto:存放常见的加密算法的C语言代码,譬如crc32.md5.sha1等.…
一.跟踪分析内核的启动过程实验 : 1.启动Menuos: qemu仿真kernel: qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 知识补充: (1)bzImage 是 vmlinux 经过 gzip 压缩后的文件,是压缩的内核映像,"b"代表的是"big"(bzImage 适用于大内核,zImage 适用于小内核).vmlinux 是编译出来的最原始的内核ELF文件: (2)…
第3章  MenuOS的构造 1  Linux内核源代码简介        计算机的“3大法宝”:存储程序计算机.函数调用堆栈和中断. 操作系统的“两把宝剑”:一把是中断上下文的切换——保存现场和恢复现场:另一把是进程上下文的切换. Linux内核源码目录如下图所示:         其中可以把内核源代码目录分为系统最核心组件和系统次核心组件. 系统最核心组件包括:  arch目录:该目录是与体系结构相关的子目录列表,里面存放了许多CPU体系结构的相关代码,比如arm.x86.MIPS.PPC等…
第三章 MenuOs的构造 一.前情回顾 计算机的三大法宝: -存储程序计算机 -函数调用堆栈 -中断 操作系统的两把宝剑: -中断上下文的切换(保存现场和恢复现场) -进程上下文的切换 二.3.1 Linux内核源代码简介 Linux内核的版本号按照A,B,C的方式命名: -A代表大幅度转变的内核 -B代表重大修改的内核 -C指轻微修改的内核(C是内核的真实版本) -D是安全补丁和bug修复 Linux内核源代码的根目录: 三.跟踪分析Linux内核启动过程 实验过程 1.通过以下代码内核启动…
MenuOS的构造 一.Linux源代码的关键目录 block:存放块设备管理代码: crypto:存放常见加密算法的C语言代码: Documentation:存放一些文档: drivers:驱动目录: firmware:固件: fs:文件系统: include:头文件目录: init:存放Linux内核启动时的初始化代码: Kernel:存放内核本身需要的一些核心代码文件: lib:公用的库文件: mm:存放Linux的内存管理代码: net:存放网络相关的代码: 二.构造一个简单的Linux…
构造一个简单的Linux系统MenuOS 第三章基础知识 计算机的三大法宝:存储计算机,函数调用堆栈,中断. 操作系统的两把宝剑:中断上下文,进程上下文. Linux内核源码的目录结构: arch目录:arch目录是linux内核目录中比较重要的一个目录,因为arch目录中的代码可以使Linux内核支持不同的CPU和体系结构. block目录:存放Linux存储体系中关于块设备管理的代码. crypto目录:存放常见的加密算法的代码. drivers目录:驱动目录,里面分别存放了Linux内核支…
Week4 MenuOS的构造 一.上周复习 计算机的三大法宝: 存储程序计算机: 函数调用堆栈: 中断. 操作系统的两把宝剑: 中断上下文-保存现场和恢复现场 进程上下文 二.Linux内核源代码简介 Linux内核的版本号按照A,B,C的方式命名: A代表大幅度转变的内核 B代表重大修改的内核 C指轻微修改的内核(C是内核的真实版本) D是安全补丁和bug修复 Linux内核源代码的根目录 arch arch目录中的代码在Linux内核代码中占比相当庞大 arch/x86目录下的代码是需要重…
实验内容 在实验楼的环境中敲入命令 cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img 效果截图: 一.补习第一周云班课视频 (一)文件系统 1.FHS:文件系统层次结构标准 Linux的正常运行是以目录结构为基础的.FHS定义了两层规范,第一层是,/下面的各个目录应该要放什么文件数据,例如/etc应该放置设置文件,/bin和/sbin则应放置可执行文件等.第二层则是针对.usr和/…
MenuOS的构造 基础知识 1.操作系统的两把宝剑:①中断上下文的切换:保存现场和恢复现场:②进程上下文的切换. 2.Linux内核以A.B.C.D方式命名:A和B变得无关紧要,C是内核的真实版本,D是安全补丁和bug修复. 3.Linux内核源码的目录结构: arch:与体系结构相关的子目录列表.存放了许多CPU体系结构的相关代码,使Linux内核支持不同的CPU和体系结构. block:存放Linux存储体系中关于块设备管理的代码. crypto:存放常见的加密算法的C语言代码,如crc3…
第三章 MenuOs的构造 一.知识点总结 计算机的三大法宝: 存储程序计算机 函数调用堆栈 中断 操作系统的两把宝剑: 中断上下文的切换(保存现场和恢复现场) 进程上下文的切换 它们都和汇编语言有着密不可分的联系 Linux内核分析比较重要的是: arch目录下的x86目录下的源文件 init目录下的main.c(其中的start_kernel函数是初始化Linux内核启动的起点) kernel目录下和进程调度相关的代码 二.跟踪分析Linux内核启动过程 1.实验过程 通过下面的命令把Lin…
<Linux内核分析> 第三章 MenuOS的构造 3.1 Linux内核源代码简介 操作系统的"两把宝剑" 中断上下文:保存现场和恢复现场 进程上下文 目录结构 arch:与体系结构相关的子目录列表,存放CPU体系结构的相关代码 block:存放Linux存储体系中关于块设备管理的代码 crypto:存放常见的加密算法的C语言代码 Documentation:存放一些文档 drivers:驱动目录,里面分门别类的存放了Linux内核支持的所有硬件设备的驱动源代码 firm…
1.问题描述 在前面的文章中,已经接触过一些Linux内核的知识,本文将进一步从Linux内核源代码的目录结构入手,在Oracle VM VirtualBox的Linux环境中构造一个简单的操作系统MenuOS,内核代码版本为3.18.6,解决了不同于实验楼出现的问题,同时通过gdb跟踪启动操作系统的过程. 2.解决过程 2.1 Linux内核源码目录 arch:用于存放CPU体系结构的相关代码. block:存放Linux存储体系中关于块设备管理的代码. crypto:存放常见的加密算法的C语…
构造一个简单的Linux内核 Linux是一种开源电脑操作系统内核,它是一个用C语言写成.主要子系统: 1.系统调用接口 2.进程管理 3.内存管理 4.虚拟文件系统 qemu是一个开源模拟处理器,在实验中 cd LinuxKernel/ qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img qemu需要创建窗口,它在纯命令系统下无法工作,需要使用图形化界面的虚拟机.qemu仿真kernel,bzImage是vmLi…