<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二.本周学习内容: 1.阐释linux操作系统的整体构架 宏观上来说,上图很好的反应了Linux操作系统的架构图.首先,Linux系统包含一个内核,内核,实质是一个软件,特殊的地方在于,内核具备直接操纵CPU资源,内存资源,I/O资源等的能力. 内核之外是系统调用.系统调用这层,相当于内核增加了一层封装.将内核…
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解牛Linux内核分析>第一章 2.1 汇编语言的学习与实践 汇编语言, 即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用"ADD"代表数字逻辑上的加减," MOV"代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者…
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资料,看看别人的解答,慢慢的也就理解了,最终形成自己的知识脉络. 实验分析 先创建文件,通过vim将C代码写到文件中去,如图. 再编译成可执行程序和反编译成汇编代码.为什么反编译是这个代码呢? gcc -S -o main.s main.c 原来gcc命令中 -S 参数表示仅仅汇编而不进行编译及链接,也就是将源…
<Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第一部分 本部分主要是观看孟老师的学习视频,学习计算机是如何工作的,并根据提示完成实验. 寄存器 通用寄存器: AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆栈基址针 SI.DI:变址寄存器 SP:堆栈顶指针 段寄存器: CS:代码段寄存器,指向包含程序指令的段. SS:栈段寄存…
2018-2019-1 20189221 <Linux内核原理与分析>第九周作业 实验八 理理解进程调度时机跟踪分析进程调度与进程切换的过程 进程调度 进度调度时机: 1.中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(): 2.内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度: 3…
20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.call.re等几个重要的汇编指令.主要分为两部分进行这周的学习总结.第一部分对学习内容进行总结,第二部分对实验进行分析(反汇编一个C程序). 一.学习内容 1.现在计算机绝大多数采用冯诺依曼体系结构,逻辑上可以抽象成: 以程序员的角度看: 2.几种寻址方式 • movl %eax,%edx edx=eax 寄…
2019-2020-1 20209313<Linux内核原理与分析>第二周作业 零.总结 阐明自己对"计算机是如何工作的"理解. 一.myod 步骤 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Makefile 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息 在博客园发表一篇博客,重点写遇到的问题和解决过程 总结 问题:命名修改导致不停输错…
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂贵,于是他基于MINIX开发了初版的Linux.在之后越来越多的人加入其中,开发Linux. Linux与Windows的不同 Linux: 免费 支持开源自由软件 安全性较强 主要使用命令行 系统可定制 多用户和用户和用户组的规划 Linux学习步骤 Linux初级 Linux系统安装 Linux…
实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件,用户可以修改定制再发布:内核是实现多任务运行和硬件管理的基础:在我们使用应用程序时,在背后支持软件服务的是成千上万个Linux服务器主机. 实验二 Linux基础概念及操作 这一节首先学习了实验楼环境.终端的概念.和shell命令以及相关小技巧和快捷键.其中Shell是一种中间程序,即是用户交互的界…
读书报告 <庖丁解牛Linux内核分析> 第 1 章 计算工作原理 1.1 存储程序计算机工作模型 1.2 x86-32汇编基础 1.3汇编一个简单的C语言程序并分析其汇编指令执行过程 因为本科时期学过<微机原理与接口技术>课程,学习过8086/8088的汇编语言,所以基本上算是复习. 通用寄存器 EAX:累加器,是算术运算的主要寄存器,I/O指令使用该寄存器与外设传送信息 EBX:通用寄存器,常用作基址寄存器 ECX:通用寄存器,在循环时作为隐含的计数器 EDX:通用寄存器,可以…
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 <进程的切换与系统的一般执行过程> 作业正文 https://www.cnblogs.com/wzyxiaowang/p/14091796.html 一.知识点 1.硬中断和软中断 硬中断:由与系统相连的外设(比如网卡.硬盘)自动产生的.主要是用来通知操作系统系统外设状态的变化.比如当网卡收到数据包…
1.问题描述 在前面的文章中,学习了译链接的过程和ELF可执行文件格式,对Linux内核装载和启动一个可执行程序,本次内容围绕对进程调度的时机和进程切换进行,分析进程的调度时机,调度策略和算法,并跟踪schedule,pick_next_task和context_switch等函数. 2.解决过程 2.1 进程调度的时机 中断:进程调度的时机与中断相关,是程序执行过程中的强制性转移,转移到操作系统内核相应的处理程序.中断在本质上都是软件或者硬件发生了某种情形而通知处理器的行为,处理器进而停止正在…
课本:第八章 进程的切换和系统的一般执行过程 进行进程调度的时机 Linux内核通过schedule函数实现进程调度,schedule函数在运行队列中找到一个进程,把CPU分配给它 调用schedule函数一次就是调度一次,调用schedule函数的时候就是进程调度的时机 当内核即将返回用户空间时,内核会检查need_resched标志是否设置,若设置,则调用schedule函数,此时是从中断处理程序返回用户空间的时间点作为一个固定的调度时机点 内核线程是一个特殊进程,只有内核态没有用户态,内核…
Linux内核分析 第二周学习 知识总结 操作系统与内核 操作系统 指在整个系统中负责完成最基本功能和系统管理的那些部分 内核 实际是操作系统的内在核心 内核独立于普通应用程序,拥有受保护的内存空间和访问硬件设备的所有权限,这种空间被称为内核空间 当内核运行的时候,系统以内核状态进入内核空间执行 当应用程序通过系统调用与内核通信时,我们称内核正在代其执行 应用程序称为通过系统调用在内核空间运行,内核被称为运行于进程上下文中 实际上,应用程序通常调用库函数,然后库函数通过系统调用界面,让内核完成不…
第一部分:学习MOOC网Linux内核分析的课程. 首先对冯诺依曼体系结构和存储程序计算机工作模型进行了了解,查阅资料,对冯诺依曼体系的特点与课堂上的相结合,真实明白了模型的特点. 在汇编C语言程序时,首先了解了cpu是怎样执行内存中的数据的,cpu会通过调用不同的指令,对计算机上不同位置的数据进行不同的处理,从而实现了各式各样的程序.随后,我查阅相关资料对Cpu的寄存器和指令进行了一个简单的归纳. 首先命令行后最后的字母b,w,l,q分别代表计算机中的8位,16位,32位和64位. eax 累…
实验1 Linux系统简介 本节主要学习了 Linux 的历史,Linux 与 Windows 的区别等入门知识.通过学习,我明确了目的,是要用 Linux 来做程序开发.搭建服务器等:并且非常接受不用或少用图形界面:尽可能多学习一些Linux的发行版.在安装Ubuntu时也遇到了不支持虚拟化的问题,进入BIOS设置得以解决. 实验2 基本概念及操作 学习实践 通配符?和*的区别 ?匹配一个字符,*匹配一个或者多个字符. 批量建立文件 作业 banner命令 -w参数指定打印宽度,因为实验楼的环…
第8章  进程的切换和系统的一般执行过程 1  进程调度的时机 1.1  硬终端与软中断 进程调度的时机都与中断相关,中断有很多种,都是程序执行过程中的强制性转移,转移到操作系统内核相应的处理程序.中断在本质上都是软件或者硬件发生了某种情形而通知处理器的行为,处理器进而停止正在运行的指令流(当前进程),对这些通知做出相应反应,即转去执行定义的中断处理程序(内核代码). 硬中断:硬中断就是CPU的两根引脚(可屏蔽中断和不可屏蔽中断).CPU在执行每条指令后检测这两根引脚的电平,如果是高电平,说明有…
<Linux内核分析> 第八章 可执行程序工作原理进程的切换和系统的一般执行过程 8.1 知识点 进程调度的时机 ntel定义的中断类型主要有以下几种 硬中断(Interrupt) 软中断/异常(Exception) 故障(Fault) 退出(Abort) 陷阱(Trap) schedule()函数选择一个新的进程来运行,并调用context_switch进行上下文的切换,这个宏调用switch_to来进行关键上下文切换 next = pick_next_task(rq, prev);//进程…
<Linux内核分析> 第一章 计算机工作原理 1.1 存储程序计算机工作模型 冯·诺依曼体系结构 各种计算机体系结构需要遵从的一个"客观规律" 结构图 冯·诺依曼体系结构的核心是存储程序计算机. 内存保存指令和数据,CPU负责解释和执行这些指令,它们通过总线连接起来. 存储程序计算机工作原理示意图 对于x86-32计算机,有一个EIP寄存器指向内存的某一条指令,EIP是自动加一的(加一条指令). 1.2 x86-32 汇编基础 1.2.1 x86-32 CPU的寄存器 开…
第一部分 课本学习 进程的切换和系统的一般执行过程 进程调度的时机 Linux内核系统通过schedule函数实现进程调度,进程调度的时机就是内核调用schedule函数的时机.当内核即将返回用户空间时,内核会检查need_resched标志是否设置.如果设置,则调用schedule函数,此时是从中断(异常/系统调用)处理程序返回用户空间的时间点作为一个固定的调度时机点. 简单总结进程调度时机如下: 用户进程通过特定的系统调用主动让出CPU 中断处理程序在内核返回用户态时进行调度. 内核线程主动…
#linux内核分析学习笔记 --第八章 进程的切换和系统的一般执行过程 学习目标:重点关注进程切换的过程,进程调度的时机,操作系统的基本构成以及一般的执行过程. 进程调度的时机 因为进程的调度只发生在内核中,进程调度函数schedule()只能在内核中被调用,用户进程无法调用. 因此,进程切换需要用到实现用户态到内核态的切换. 除了主动让出CPU外,进程的调度都需要在进程外进行.中断可以实现切出进程指令流的作用,中断处理程序是与进程无关的内核指令流. 硬中断与软中断 Intel定义的中断有以下…
反汇编一个简单的C程序 1.实验要求 使用: gcc –S –o test.s test.c -m32 命令编译成汇编代码,对汇编代码进行分析总结.其中test.c的具体内容如下: int g(int x) { return x + 3; } int f(int x) { return g(x); } int main(void) { return f(8) + 1; } 2.实验过程 使用vim对test.c进行编辑,将上述代码键入 使用gcc对test.c编译,产生test.s文件 gcc…
第九周的实验依旧和往常的一样,主要包括两部分.一是1.阅读学习教材「Linux内核设计与实现 (Linux Kernel Development)」第教材第13,14章.二是学习MOOC「Linux内核分析」第七讲「Linux内核的实质和Linux系统的一般执行过程」,并完成实验楼上配套实验. 然后我们开始这周的实验,首先通过本科的一些学习操作系统中的进程调度算法,但这些算法只是在选择的过程中用了不同的策略而已,对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制更为关键.而我们接下…
进程调度的时机 进程调度时机就是内核调用schedule函数的时机.当内核即将返回用户空间时,内核会检查need_resched标志是否设置.如果设置,则调用schedule函数,此时是从中断(或者异常.系统调用)处理程序返回用户空间的时间点作为一个固定的调度时间点. 除此之外,内核线程和中断处理程序中任何需要暂时中止执行当前执行路径的位置都可以直接调用schedule(),比如等待某个资源就绪.进程调度时机简单总结如下: 用户进程通过特定的系统调用主动让出CPU. 中断处理程序在内核返回用户态…
进程的切换和系统的一般执行过程 1.知识总结 (1)进程调度的时机: 中断处理过程直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(). 内核线程是一个特殊的进程,只有内核态没有用户态,可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度(内核线程可以直接访问内核函数,所以不会发生系统调用).内核线程作为一类的特殊的进程可以主动调度,也可以被动调度. 用户态进程无法实现主动调度,仅能在中断处理过程中进行调度(schedul…
一.Linux内核虚拟文件系统学习总结 Linux支持各种文件系统,Linux内核通过虚拟文件系统了对各种文件系统共性的进行抽象,并对外提供统一接口,从面向对象编程的角度来看,称为抽象文件系统更为合适.虚拟文件系统(VFS virtual file system)用来管理挂接(mount)各种具体文件系统(如:ext4文件系统).具体的文件系统可设计成可加载模块,在系统需要时进行加载,例如VFAT就被实现成一个模块,当挂接VFAT文件系统时VFAT文件系统模块将被加载. 挂接具体文件系统时,VF…
进程的切换和系统 <庖丁解牛>第八章书本知识总结 进程调度的时机都与中断相关,中断是程序执行过程中的强制性转移,转移到操作系统内核相应的处理程序. 软中断也叫异常,分为故障.退出和陷阱(自陷). 进程调度时机 进程调度时机就是内核调用schedule函数的时机.在内核即将返回用户空间时,内核会检查need_resched标记是否设置,如果设置,则调用schedule函数,此时是从中断处理程序返回用户空间的时间点作为一个固定的调度时机点. 1.中断处理过程(包括时钟中断.I/O中断.系统调用和异…
本周学习了<庖丁解牛>第1章,以及<Linux内核设计与实现>第1.2.18章.通过视频和实验,学会了反汇编一个简单的C程序,也学习了Linux内核调试的一些小技巧和printk函数. 反汇编一个简单的C程序 程序编写及编译 使用vi编辑源代码 返回值是15,我学号的后两位. 使用gcc命令编译为32位的汇编代码 汇编代码 使用:g删除辅助信息 精简后的汇编代码 汇编代码分析 接下来逐行分析堆栈.寄存器的变化.在此采用了和书中一样的简化表示方法,减4位转化为加1位,对应下移一格:加…
实验一 Linux 系统简介 这一节主要学习了Linux的历史,重要人物以及学习Linux的方法.Linux和Windows在是否收费.软件与支持.安全性.可定制性和应用范畴等方面都存在着区别.目前感受最深的是Linux的命令行操作,我还不能习惯不用或少用图形界面.在安装Ubuntu时遇到电脑不支持虚拟化的问题,通过VMware虚拟安装Ubuntu的详细过程及错误解决方案进入bios设置虚拟化启用得以解决. 实验二 基本概念及操作 实践 1.批量建立文件 通配符[c1-c2]含义为匹配 c1-c…
<linux内核分析>实验一实验报告 <linux内核设计与实现>第1.2.18章学习总结 一.<linux内核分析>实验一实验报告        在进行实验楼操作之前,先听授了网易云课堂中孟老师关于"计算机是如何工作的?"的介绍.其中主要涉及到了冯诺依曼体系结构,或称为存储程序计算机.从硬件角度和程序员的角度对计算机中内存与CPU之间关系的理解.API--程序与计算机的接口界面.ABI--程序与CPU的接口界面.16位和32位以及64位的X86体系…