xv6进程切换-swtch函数】的更多相关文章

https://blog.csdn.net/Swartz2015/article/details/61615603 xv6进程切换-swtch函数 进程切换中由于需要保存当前进程的寄存器状态信息,又要将新进程记录的寄存器状态信息加载到寄存器,因此涉及到许多栈的操作,堆栈间的来回切换,容易让人眼花缭乱,难以理解.本文试图分析以下xv6中的进程切换过程. 当前进程通过调用yield函数,进行进程切换.yield函数调用sched函数,sched函数启动swtch函数完成进程切换.整个流程是这样的:…
这是学习哈工大李治军在mooc课操作系统时做的实验记录.原实验报告在实验楼上.现转移到这里.备以后整理之用. 完整的实验代码见:实验楼代码 一.tss方式的进程切换 Linux0.11中默认使用的是硬件支持的tss切换,系统为每个进程分配一个tss结构用来存储进程的运行信息(上下文环境),然后通过CPU的一个长跳转指令ljmp来实现进程的切换,这种方式易于实现,但一者不便于管理多CPU进程,二者效率不佳,故此次实验要将系统中使用的tss切换方式修改为栈切换方式.而由于CPU管理方式的原因,tr寄…
20135125陈智威 +原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验原理: 1.不同类型的进程有不同需求的调度需求:第一种分类:—I/O-bound:频繁的进行I/O,通常会花费很多时间等待I/O操作的完成—CPU-bound:计算密集型,需要大量的CPU时间进行运算第二种分类:—批处理进程:不必与用户交互,通常在后台运行:不必响应很快:—实时进程:有实时需求,不被低优先级的…
一.原理分析 1.调度时机 背景不同类型的进程有不同的调度需求第一种分类I/O-bond:频繁的进行I/O:通常会花费很多时间等待I/O操作的完成CPU-bound:计算密集型:需要大量的CPU时间进行运算 第二种分批处理进程(batch process):不必与用户交互,通常在后台运行:不必很快响应.典型的批处理程序:编译程序.科学计算实时进程(real-time process):有实时需求,不应被低优先级的进程阻塞:响应时间要短.要稳定.典型的实时进程:视频/音频.机械控制等交互式进程(i…
朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这次我们来分析Linux中进程调度和切换的原理. 关于Linux的进程调度,有很多相关的算法,比如先进先出.最短作业优先等,这个不是我们讨论的重点,对此有兴趣的同学可以翻阅<现代操作系统>中的第二章来对其进行深入的了解. 在Linux中,进程的切换主要是通过调用schedule函数来实现的,shedule调用的时…
week 8 实验:理解进程调度时机跟踪分析进程调度与进程切换的过程 1.环境搭建: rm menu -rf git clone https://github.com/megnning/menu.git cd menu ls make rootfs qemu -kernel ../linux-3.18.6/arch/x86/boot/bzImage -initrd ../rootfs.img -s -S gdb file ../linux-3.18.6/vmlinux target remote…
作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 本实验目的:通过gdb在linux下对一个简单的命令行命令实现进程的过程进行跟踪,分析一般用户进程实现进程切换的过程,并进一步剖析进程调度的工作的原理. 一.实验过程 1.打开实验环境,并设置context_switch和pick_next_switch两个断点. 2.来到第二个断点处list(分析在第三部分) 3.到第一个断点处,在这里…
原有的基于TSS的任务切换的不足 进程切换的六段论 1 中断进入内核 2 找到当前进程的PCB和新进程的PCB 3 完成PCB的切换 4 根据PCB完成内核栈的切换 5 切换运行资源LDT 6 利用IRET指令完成用户栈的切换 1. 原有的基于TSS的任务切换的不足 原有的Linux 0.11采用基于TSS和一条指令,虽然简单,但这指令的执行时间却很长,在实现任务切换时大概需要200多个时钟周期.而通过堆栈实现任务切换可能要快,而且采用堆栈的切换还可以使用指令流水的并行化优化技术,同时又使得CP…
在讲述专业知识前,先讲讲我学习linux内核使用的入门书籍:<深入理解linux内核>第三版(英文原版叫<Understanding the Linux Kernel>),不过这本书不一定对每个人都适合,大家可以根据自己的情况选择适合的入门书籍.看了前面几章,感觉这本书的语言极其精练,没有一句多余的,必须慢慢读.可能我以前习惯了粗略浏览的阅读方式,读这本书时经常看着看着就迷糊了,不得不回到前面重新读起,如此反反复复.关于进程的一章更是深奥难懂,前前后后翻了十几遍才明白个大概.另外说…
为了控制进程的执行,linux内核必须有能力挂起正在cpu上运行的进程,换入想要切换的进程,也就是恢复以前某个挂起的进程,这就是linux的进程切换.  1进程切换的时机 一般来说,进程切换都是发生在从中断或者系统调用返回用户态的时候,最常见的是时钟中断.在允许内核抢占的情况下,系统调用被中断打断也有可能会引发进程切换.中断处理和系统调用处理都发生在内核态,所以进程之间的切换实际上也是发生在了内核态. 2进程切换做的工作 2.1切换页全局目录以安装一个新的地址空间. 2.2切换内核态堆栈和硬件上…