进程调度 1. 进程调度是确保进程能有效工作的一个内核子进程.调度程序是像linux这样的多任务操作系统的基础.最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么就总会有进程正在执行.但是只要系统中可运行的进程的数目比处理器的个数多,就注定某一给定时刻会有一些进程不能执行. 2. 多任务系统可以划分为两类:非抢占式多任务和抢占式多任务.时间片是分配给每个可运行进程的处理器时间段.有效管理时间片能使调度程序从系统全局的角度做出调度决定,这样做还可以避免个别进程独占系统资源. 3. 进程可…
<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 寄…
<Linux内核原理与分析>第九周作业 一.本周内容概述: 阐释linux操作系统的整体构架 理解linux系统的一般执行过程和进程调度的时机 理解linux系统的中断和进程上下文切换 二.本周学习内容: 1.阐释linux操作系统的整体构架 宏观上来说,上图很好的反应了Linux操作系统的架构图.首先,Linux系统包含一个内核,内核,实质是一个软件,特殊的地方在于,内核具备直接操纵CPU资源,内存资源,I/O资源等的能力. 内核之外是系统调用.系统调用这层,相当于内核增加了一层封装.将内核…
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解牛Linux内核分析>第一章 2.1 汇编语言的学习与实践 汇编语言, 即第二代计算机语言,用一些容易理解和记忆的字母,单词来代替一个特定的指令,比如:用"ADD"代表数字逻辑上的加减," MOV"代表数据传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者…
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…
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 <进程的切换与系统的一般执行过程> 作业正文 https://www.cnblogs.com/wzyxiaowang/p/14091796.html 一.知识点 1.硬中断和软中断 硬中断:由与系统相连的外设(比如网卡.硬盘)自动产生的.主要是用来通知操作系统系统外设状态的变化.比如当网卡收到数据包…
实验一 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:通用寄存器,可以…
第九周作业要求: 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解:推荐在实验楼Linux虚拟机环境下完成实验. 特别关注并仔细分析switch_to中的汇编代码,理解进程上下文的切换机制,以及与中断上下文切换的关系: 一. 进程调度的时机 进程调度:就是按照某种特定算法从就绪队列中挑选出一…
Linux内核分析 第二周学习 知识总结 操作系统与内核 操作系统 指在整个系统中负责完成最基本功能和系统管理的那些部分 内核 实际是操作系统的内在核心 内核独立于普通应用程序,拥有受保护的内存空间和访问硬件设备的所有权限,这种空间被称为内核空间 当内核运行的时候,系统以内核状态进入内核空间执行 当应用程序通过系统调用与内核通信时,我们称内核正在代其执行 应用程序称为通过系统调用在内核空间运行,内核被称为运行于进程上下文中 实际上,应用程序通常调用库函数,然后库函数通过系统调用界面,让内核完成不…
课本:第八章 进程的切换和系统的一般执行过程 进行进程调度的时机 Linux内核通过schedule函数实现进程调度,schedule函数在运行队列中找到一个进程,把CPU分配给它 调用schedule函数一次就是调度一次,调用schedule函数的时候就是进程调度的时机 当内核即将返回用户空间时,内核会检查need_resched标志是否设置,若设置,则调用schedule函数,此时是从中断处理程序返回用户空间的时间点作为一个固定的调度时机点 内核线程是一个特殊进程,只有内核态没有用户态,内核…
第九周的实验依旧和往常的一样,主要包括两部分.一是1.阅读学习教材「Linux内核设计与实现 (Linux Kernel Development)」第教材第13,14章.二是学习MOOC「Linux内核分析」第七讲「Linux内核的实质和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参数指定打印宽度,因为实验楼的环…
网易云课堂学习 可执行程序的装载 可执行程序的产生过程:预处理-----> 编译 ----> 汇编 ----> 链接 以hello.c文件为例进行分析,编译步骤如下 vi hello.c gcc -E -o hello.cpp hello.c -m32 vi hello.cpp gcc -x cpp-outout -S -o hello.s hello.cpp -m32 vi hello.s gcc -x assembler -c hello.s -o hello.o -m32 vi h…
理解进程调度时机 进程调度时机 中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(): 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度: 用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度. schedule()函数分析 schedule(…
第8章  进程的切换和系统的一般执行过程 1  进程调度的时机 1.1  硬终端与软中断 进程调度的时机都与中断相关,中断有很多种,都是程序执行过程中的强制性转移,转移到操作系统内核相应的处理程序.中断在本质上都是软件或者硬件发生了某种情形而通知处理器的行为,处理器进而停止正在运行的指令流(当前进程),对这些通知做出相应反应,即转去执行定义的中断处理程序(内核代码). 硬中断:硬中断就是CPU的两根引脚(可屏蔽中断和不可屏蔽中断).CPU在执行每条指令后检测这两根引脚的电平,如果是高电平,说明有…
第八章 进程的切换和系统的一般执行过程 进程的调度实际与进程的切换 ntel定义的中断类型 硬中断:就是CPU的两根引脚(可屏蔽中断和不可屏蔽中断) 软中断/异常:包括除零错误.系统调用.调试断点等在CPU执行命令过程中发生的各种特殊情况统称为异常.异常会导致程序无法继续执行,而跳转到CPU预设的处理函数. 异常分为3种: 故障 退出 陷阱 调用schedule函数的时候就是进程调度的时机 CPU在任何时候都处于以下三种情况: 运行于用户空间,执行用户进程上下文 运行于内核空间,处于进程(一般是…
第二周Linux学习笔记 文件打包与解压缩 tar工具打包 tar的解压和压缩都是同一个命令,只需参数不同,使用较方便. 创建一个包时文件名必须紧跟在 -f 之后,解包一个文件(-x参数)到指定路径的已存在目录(-c参数). 各内容及代码: 只查看不解包文件(-t参数): tar -tf shiyanlou.tar 使用tar备份文件,保留文件的属性(-p参数),备份链接指向的源文件而不是链接本身(-h参数): tar -cphf etc.tar /etc tar可以只需要换一个参数创建不同格式…
<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的寄存器 开…
进程的切换和一般执行过程 知识总结 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已. 对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制更为关键.​ 1.不同类型的进程有不同需求的调度需求: 第一种分类: -I/O-bound:频繁的进行I/O,通常会花费很多时间等待I/O操作的完成 -CPU-bound:计算密集型,需要大量的CPU时间进行运算 第二种分类: -批处理进程:不必与用户交互,通常在后台运…
可执行程序的装载 一.预处理.编译.链接和目标文件的格式 可执行程序是怎么来的?通过以下这个图来呈现过程: 以我们常写的helloworld为例.我们编写了一个helloworld的.c文件,我们来把它进行预处理,预处理就是gcc –e –o hello.cpp(预处理的中间命令)hello.c –m32,这里就把.c的文件预处理了一下.我们可以看到hello.cpp里面有前面的include.h文件,如果里面有宏定义的话,把宏定义都替换一下,实际就把字符串做一个处理.hello.cpp我们把它…
那一天我二十一岁,在我一生的黄金时代.我有好多奢望.我想爱,想吃,还想在一瞬间变成天上半明半暗的云.那一年我二十一岁,在我一生的黄金时代.我有好多想法.我思索,想象,我不知该如何行动,我想知道一个城市,一个国家,这个社会的运转方式和发展动力.我思考人性,想象物质和精神,探求存在的意义.我渴望爱情 热爱生活 追求美好.我希望自己可以长存 . ********************************************* 一.书本第八章知识总结[进程的切换和系统的一般执行过程] 1. 进…
活动 main函数编译有问题,div 函数和系统中某个函数重名,浮点输出有问题,scanf也有问题 修改如下 scanf_s("%d %d", &a, &b); printf("div:%lf\n", div1(a, b)); 整体代码如下 #include "pch.h" #include <iostream> #include "../Staticlibtest/head.h" int main…
进程的切换和系统的一般执行过程 (1)进程调度的时机 1.schedule是一个内核函数,不是一个系统调用,进程的调度只发生在内核中,进程调度函数schedule()只能在内核中被调用,用户进程无法调用, 因此,进程切换需要用到实现用户态到内核态的切换. 2.中断处理过程直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule().内核线程是一个特殊的进程,只有内核态没有用户态,可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度…