linux第四周作业】的更多相关文章

一.用户态内核态与中断 1.库函数把内核调用封装起来. 2.区分内核态和用户态是为了让系统更稳定.Linux里吧用户态定位3级,把内核态定位0级. 3.中断处理就是从用户态进入内核态的主要方法,系统调用就是特殊的中断. 4.中断指令会在堆栈中保存一些寄存器的值:用户态栈顶地址:当时的状态字:当时cs:eip的值. 5.保存现场就是进入中断,恢复现场就是推出中断. 二.应用编程接口(API)与系统调用 1.操作系统为了用户态进程与硬件设备进行交互提供了一组接口——系统调用. 把用户从底层的硬件编程…
Linux第四周作业 1. 堆栈知识 首先回顾了下堆栈相关的知识,堆栈机制是高级语言可以运行的一个基础,这一块需要重点掌握.函数发生调用时,如图 call指令:将eip的按顺序执行的下一条指令(因为在执行call的时候,eip保存的是call语句下一条指令的地址)的地址保存在当前栈顶,然后设置eip的值为要跳转到的函数的开始的地址 ret指令:将之前使用call指令的保存在栈里面的地址恢复到eip中去. 2.实验相关 用自己的Ubuntu来搭建实验所需要的环境.但是在使用用apt-get命令安装…
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…
这个作业属于哪个课程 C语言程序设计一 这个作业要求在哪里 2019春季学期第四周作业 我的课程目标 重新学习有关数组的问题 这个作业在哪个具体方面帮助我实现目标 对于置换有了新的见解 参考文献 中国大学MOOC网]0369:C语言程序于设计 题目1 7-2 选择法排序 (20 分) 本题要求将给定的n个整数从大到小排序后输出. 输入格式: 输入第一行给出一个不超过10的正整数n.第二行给出n个整数,其间以空格分隔. 输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多…
Linux第四周学习总结--扒开系统调用的三层皮(上) 一.用户态.内核态和中断 系统调用通过库函数. 1.用户态和内核态 区分(不同的指令执行级别): 用户态:在相应的低执行状态下,代码的掌控范围受到限制,只能在对应级别允许的范围内活动 内核态:在高执行级别下,代码可以执行特权指令,访问任意的物理地址. Intel x86 CPU有四种不同的执行级别0-3,Linux只是用了期中的0级和3级分别表示内核态和用户态. 注意逻辑地址和物理地址的区别.逻辑地址是进程地址空间里面的 2.中断 中断处理…
一.要求 作业题目 Linux下的多进程/线程网络通信 作业目标 要求学生熟练掌握<Linux编程>课程中的知识点,包括Linux常用命令.bash脚本.编译和调试环境.读写文件.进程间通信和网络编程等.基于以上知识点,分组编程完成本作业的具体要求. 问题描述 图1 Linux编程大作业示意图 网络数据的抓取和分析已经成为通信大数据分析的重要内容之一.本作业要求在Linux下使用C语言实现一个抓取并分析网络数据的软件系统.该系统采用客户端和服务器端开发模式. 在客户端,设计两个进程P1和P2同…
项目 内容 课程班级博客链接 20级数据班(本) 作业链接 Python第四周作业第二次作业 博客名称 2003031121-浦娟-python数据分析第四周作业-matolotlib的应用 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果). 题目一:扩展阅读,撰写学习心得. 1.扩展阅读:matplotlib常用设置 阅读心得:知道了如何用matolotlib设置图像大小.设置刻度和标注.移动刻度标注(通过设置 set_hor…
项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第四周作业 要求 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果). 扩展阅读 Java分支语句学习 题目1: 模拟一个售票系统,通过判断购票者的年龄来决定票价,借此观察选择结构语句的运行流程.原价100元(0-6岁的儿童免费(包含6岁),7-12岁半价,其余全价) 截图如下: 代码: package edu.lmw; import java.util.Scanner; p…
第四周学习内容 庖丁解牛Linux内核分析第三章:MenuOS的构造 Linux内核分析实验三 学到的一些知识 操作系统两大宝剑:1.中断上下文的切换--保存现场和恢复现场 2.进程上下文的切换 Linux内核版本号命名规则:A.B.C.D,A代表大幅度转变的内核,B指一些重大修改的内核,C是内核的真实版本,D是安全补丁和bug修复 linux内核源码目录结构: arch里的内容可以使Linux内核支持不同的CPU和体系结构,我们用的电脑基本都是x86架构,所以只需要关注x86文件目录即可 bl…
网易云课堂学习: 在实验楼的学习中,这次的实验是利用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目录中的代码可…
系统调用的三个层次 一.用户态.内核态和中断 用户通过库函数与系统调用联系起来. 1.内核态 在高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 2.用户态: 在低级别的指令状态下,代码 只能在级别允许的特定范围内活动.在日常操作下,执行系统调用的方式是通过库函数,库函数封装系统调用,为用户提供接口以便直接使用. intel x86 CPU有四个权限分级,0-3.Linux只取两种,0是内核态,3是用户态 区分权限级别使得系统更加稳定. 3.中断(切换) 中断处…
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)…
<Linux内核原理与分析> 视频学习及实验操作 Linux内核源代码 视频中提到了三个我们要重点专注的目录下的代码,一个是arch目录下的x86,支持不同cpu体系架构的源代码:第二个是init目录下的main.c,是整个linux内核启动的起点,不过这里面不是main()函数,而是start_kernel,start_kernel函数相当于普通c程序的main函数,linux内核的核心代码在kernel目录中:最后是kernel 下进程调度相关的代码. 构造一个简单的Linux系统Menu…
攥写人:李鹏举 学号: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).所以我还是选择了实验楼,其实在实验楼上同样有问题,每次冻结程序进行调试时必然卡顿,然后崩溃.我怀疑是网速的问题,果然,换了流量之后流畅…
第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…