通俗解释进程-科学家做蛋糕 科学家做蛋糕 然后女儿被蜜蜂蛰了 进程表–在内核 内存管理 经典 老式 管理方法: 基址寄存器(程序开始的地方) + 界限寄存器(程序长度) 空闲内存管理...每个页框有一个编号,即“页框号”(页框号=页帧号=内存块号=物理块号=物理页号),页框号从0开始 将进程的逻辑地址空间也分为与页框大小相等的一个个部分,每个部分称为一个“页”或“页面”。...操作系统以页框为单位为各个进程分配内存空间。进程的每个页面分别放入一个页框中。也就是说,进程的页面与内存的页框有一一对应的关系。 各个页面不必连续存放,可以放到不相邻的各个页框中。...重要的数据结构——页表 为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张页表。...注:页表通常存在PCB中 一个进程对应一张页表 进程的每个页面对应一个页表项 每个页表项由“页号”和“块号”组成 页表记录进程页面和实际存放的内存块之间的映射关系
;当时间片用完或被高优先级进程剥夺时,进程由运行态切换为就绪态。...此时该进程由运行态切换为就绪态,操作系统调度新的进程从就绪态切换为运行态。 B. 运行进程出错,操作系统会选择新的进程到处理机运行。 C....,CPU调度另一个进程执行,引起进程切换。...索引方式:根据进程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针。...某进程时间片用完,此时该进程会由运行态切换为就绪态,等待重新调度。
切换的方法比较简单 ctrl + z 把当前进程 从 前台切换到 后台并暂停简单来说就是不给他用cpu了suspended(挂起了)编辑可以把后台进程切换回前台吗?...前后台切换 所谓把 进程 切换到后台 就是停止不断把时间输出到标准输出流 sleep.py这个进程从前台切换到后台并暂停 而且把控制权交回给shell 可以继续输入命令了 那能否反过来?...把进程从 后台(background)切换到 前台 (foreground)呢?编辑 fg 怎么理解fg呢?...暂停 运行程序后 挂起进程等待一段时间恢复进程编辑 还是从5开始 没有在后面偷偷跑 如果我就想让这个进程 在后台偷偷跑呢?...总结 进程前后台切换 ctrl + z 把当前进程切换到后台并暂停用 fg 可以把进程再切回前台用 bg 可以让进程在后台持续运行但是问题就是根本停不下来!
3, HVA->HPA,这一过程就是我们已知的使用物理MMU完成VMM进程的虚拟内存到物理内存的转换。 4, 把GVA -> HPA,这一路的映射关系记录到页表中,这个页表就是影子页表。...虚拟机页表和影子页表通过一个哈希表建立关联(当然也有其他的关联方式),客户机操作系统把当前进程的页表基址载入PDBR时而VMM将会截获这一特权指令,将进程的影子页表基址载入客户机PDBR,使客户机在恢复运行时...PDBR实际指向的是进程对应的影子页表。...这样通过影子页表就可以实现真正的内存访问。 影子页表实现非常复杂,需要为每个Guest中的每个进程的Guest PT都维护一个对应的Shadow PT。...具体过程 当Guest中进程访问GVA时,CPU首先就要通过PDBR寄存器去找页目录,但是PDBR中存储的地址是GPA,所以要到EPT中进行GPA->HPA的转换,这个转换过程和物理MMU的工作流程相同
xhtml1/DTD/xhtml1-transitional.dtd"> tab页切换...xhtml1/DTD/xhtml1-transitional.dtd"> tab页切换
进程切换上下文 context_switch 通过上面我们知道执行调度的时候发生在 _schedule 函数里。 ?...重点是其中的两个函数,一个是选择需要切换任务的 pick_next_task,另外一个是完成进程上下文切换 context_switch。...关于选择task的策略涉及到不同的调度类,等我们讲到具体调度器的时候再展开,这里重点讲下上下文切换的函数 context_switch,进程上下文切换主要涉及到两部分主要过程:进程地址空间切换和处理器状态切换...进程的地址空间切换 ? 将下一个进程的pgd虚拟地址转化为物理地址存放在ttbr0_el1中(这是用户空间的页表基址寄存器),当访问用户空间地址的时候mmu会通过这个寄存器来做遍历页表获得物理地址。...完成了这一步,也就完成了进程的地址空间切换,确切的说是进程的虚拟地址空间切换。 寄存器状态切换 ?
阻塞的一种) 三.两个特殊的进程 1.僵尸进程(进程的一种特殊状态) 2.孤儿进程 四.进程的优先级 1.进程优先级的概念 2.修改NI值 五.进程切换 六.进程特性 一.操作系统的进程状态(广泛)...五.进程切换 进程是计算机学科中最深刻,最成功的概念之一。在现代操作系统上运行一个程序时我们会得到一个假象就好像CPU上只有我这一个进程,它独占了处理器和内存。...而寄存器中的数据会因为进程的不同而不同,当一个进程被切换上来寄存器中的数据也会被更新成为当前进程的数据。也就是说,寄存器是一套共享的硬件,但寄存器中的数据是各进程私有的。...进程切换也就会引起上下文的切换。 此外我想说的一点是:CPU中有一个eip寄存器(俗称PC指针),保存了当前正在执行指令的下一条指令的地址,进程能不断往下执行就是因为PC指针在不断更新。...为了高效完成任务以及更合理的竞争资源,就有了进程的优先级 2.独立性:多个进程之间有独立的地址空间,运行期间独享资源互不打扰 3.并发:多个进程在一个CPU下采用进程切换的方式,在一段时间内让多个进程得以同时推进
小程序标签页切换效果 效果: image.png 效果 .wxml <view class='tab {{currentData == 0...) { const that = this; that.setData({ currentData: e.detail.current }) }, //点击<em>切换</em>
标记调用schedule(),此时发生了用户抢占 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度;...用户态进程无法实现主动调度,仅能通过陷入内核态后的某个时机点进行调度,即在中断处理过程中进行调度 进程切换的一般过程 (1)正在运行的用户态进程X (2)发生中断——save cs:eip/esp/...(3)SAVE_ALL //保存现场 (4)中断处理过程中或中断返回前调用了schedule(),其中的switch_to做了关键的进程上下文切换 (5) 标号1之后开始运行用户态进程Y(这里...stack (8)继续运行用户态进程Y 进程上下文信息 用户地址空间:包括程序代码,数据,用户堆栈等 控制信息:进程描述符,内核堆栈等 硬件上下文(注意中断也要保存硬件上下文只是保存的方法不同) 进程切换源码结构...schedule、context_switch、switch_to(断点无法断下)、__switch_to 运行后单步跟踪到schedule函数,发现实际调用的是__schedule函数,接下来完成进程切换的操作
一、配置内核 首先配置内核,使其支持导出内核页表到debugfs下面: Kernel hacking ---> ---> [*] Export kernel pagetable layout to...而为了快速方便找到对应物理页而将所有的页帧结构体映射到此区域,后续只需使用virt_to_page, phys_to_page等宏实现虚拟地址,物理地址到对应页结构体的快速查询。...地址空间port属性说明 第一列 当前页表的映射范围地址 第二列 代表此映射范围大小 PMD PUD PTE 当标识为PMD PUD表示当前映射为block映射,如当前页表为4K,则pud的block映射一次性可映射...当标识为PTE表示为页表映射即PAGE_SIZE大小4K。 USR AP标记,用于标识当前范围是否在用户空间还是内核空间可读可写或者仅读。...x表述当前范围特权级别模式可执行,就是内核的可执行代码段,在内核中这段一般指向内核的text*段 SHD 表示可共享属性,在arm64上表述为多核之间可共享其页表可见 AF 访问标志,当首次映射页表时,
进程切换包括体系结构相关的代码和系统结构无关的代码。...如果切入的是普通进程,那么这时候进程的地址空间已经切换了,也就是说在A--->B进程的过程中,进程本身尚未切换,而进程的地址空间已经切换到了B进程了。这样会不会造成问题呢?...(7)一次进程切换,表面上看起来涉及两个进程,实际上涉及到了三个进程。...到A进程切换的时候,switch_to返回到A进程的现场。...完成A到B进程的切换。
1 进程切换 进程切换,又称为任务切换、上下文切换、或者任务调度。本文就研究Linux内核的进程切换。我们首先理解几个概念。...但是,优化硬件上下文的切换是不可能的,因为都是由CPU完成的,而Linux是使用软件代替硬件上下文切换的,所以有优化的空间,以便提高执行时间。 进程切换只能发生在内核态。...这个描述符包含一个32位的基地址,指向TSS的起始地址 以及20位的Limit域,表示页的大小。TSSD的S标志被清零,说明这是一个系统段(参见第2章的段描述符)。...创建的这些TSSD存储在全局描述符表(GDT)中,该表的基地址存储在CPU的gdtr寄存器中。...2 执行进程切换 进程切换的时机: 中断处理程序中直接调用schedule()函数,实现进程调度。 内核线程,是一个特殊的进程,只有内核态没有用户态。
一、前言 进程切换是一个复杂的过程,本文不准备详细描述整个进程切换的方方面面,而是关注进程切换中一个小小的知识点:TLB的处理。...Cache为了更快的访问main memory中的数据和指令,而TLB是为了更快的进行地址翻译而将部分的页表内容缓存到了Translation lookasid buffer中,避免了从main memory...访问页表的过程。...在这样的思路指导下,我们其实需要区分global和local(其实就是process-specific的意思)这两种类型的地址翻译,因此,在页表描述符中往往有一个bit来标识该地址翻译是global还是...在多核系统中,如果cpu支持PCID并且在进程切换的时候不flush tlb,那么系统中各个cpu中的tlb entry则保留各种task的tlb entry,当在某个cpu上,一个进程被销毁,或者修改了自己的页表
进程属于Linux操作系统非常重要的一部分,建议大家在熟练掌握Linux进程相关概念的基础上,再观看本篇博客 一.进程切换 1.进程特性 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至...并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行; 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发. 2.进程切换 1.进程切换的现象...日常使用的电脑大部分都是单核的,即同一时间仅执行一个进程。那为什么在电脑上可以同时打开多个软件呢?这就跟进程切换有关了。...(6) 在进程重新被CPU调度的时候,CPU必须知道上一次这个进程运行到哪,当进程被换下去的时候,进程的运行信息会被存在操作系统里面,以便下次CPU重新调度时进程能够正常运行,这叫做进程的上下文保护。...总结 进程切换 系统中存在很多的进程,这些进程都是按照时间片来回切换的,只是切换的时间非常短,造成了一个进程一直在运行的假象。
,如果只使用了一个页表,一个表项的大小为4byte,32位系统有4GB的物理空间(一个进程看到是4GB大小的虚拟空间),每一个表项对应着物理空间的第xxx页(4KB大小的页),那么应该有4GB/4KB=...1MB个表项,因为每个表项4byte,所以一共有4MB的大小,那么一个进程就会浪费掉4MB的空间。...如果是二级页表,规则就会改变,让二级页表对应到物理内存上的4KB大小的页,一级页表此时变成映射为物理地址的4MB(这样子是无法定位到具体的页(4KB)的,所以二级页表再去找),这样先找到一级页表,一级页表再和二级页表进行结合...这样一个进程浪费掉的空间是一级页表占用的:(4GB/4MB)*4byte=4KB,二级页表浪费掉的是1kb(1个一级页表占用这么多)*1kb(此时有1kb(4GB/4MB)个一级页表)=4MB,加起来是...4MB+4KB,比光用一级页表要多4KB,但是2级页表是可以不存在的,比如此时程序只用了%20的页,那么4MB就需要乘以%20,这样一下子就比只有一级页表时少了。
一、进程优先级 1.1、为什么要有优先级 进程要访问某种资源,进程通过一定的方式排队,确认享受资源的优先顺序。计算机中资源过少,所以进程访问某种资源时需要排队。...二、进程的调度与切换 进程被加载到CPU上运行的时候,并不是必须一口气把代码跑完,现代操作系统,都是基于时间片轮转执行的。...并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为 并发。 ...2.1进程的切换 进程在运行的时候,会产生大量的临时数据,这些临时数据会保存在CPU对应的寄存器中。...queue数组的100号下标中(类似于哈希表的结构),每一个队列都对应一个特定的优先级。
当进程退出并且父进程(使用wait()系统调用,后面讲)没有读取到子进程退出的返回代码时就会产生僵死(尸)进程 僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。...并发:多个进程在单个CPU上交替执行,通过进程切换的方式,让多个进程在一段时间内都得以推进。虽然在任意时刻只有一个进程在CPU上执行,但由于进程切换的快速性,给人的感觉就像是多个进程在同时执行一样。...6.进程的切换与调度 进程的切换与调度是操作系统中非常重要的部分,它涉及到如何有效地利用CPU资源,保证系统的响应速度和吞吐量。 进程切换 进程切换指的是从一个正在执行的进程切换到另一个进程的过程。...进程切换包括以下几个关键步骤: 上下文保存: 当操作系统决定要切换到另一个进程时,首先需要保存当前进程的上下文信息,包括程序计数器、寄存器内容、栈指针等。...从0下表开始遍历queue[140] 找到第一个非空队列,该队列必定为优先级最高的队列 拿到选中队列的第一个进程,开始运行,调度完成 过期队列 过期队列和活动队列结构一模一样 过期队列上放置的进程
进程状态的切换 就绪状态(ready): 等待被调度 运行状态(running): 正在被调度 阻塞状态(waiting): 等待资源 注意 只有就绪态和运行态可以相互转换, 其他都是单向转换....就绪状态的进程通过调度算法从而获得CPU时间, 转化为运行状态. 而运行状态的进程, 在分配给他的CPU时间片用完之后就会转为就绪状态, 等待下一次调度.
内核知识第八讲,PDE,PTE,页目录表,页表的内存管理 一丶查看GDT表....而我们GDT表,微软没有使用它来进行进程隔离. PS: 微软因为不使用GDT表进行进程隔离,所以段选择子都是一样的.基地址都是0,我们的虚拟地址就是线性地址....比如我们的虚拟地址: 004010123,而页的首地址是00401000 后12位都是0. 所以我们把页的高20位称为页码. 进程内存的保护. 进程内存的保护就通过页的方式进行保护的. ...我们每一个进程都提供这样的一张表.但是在那个时代.资源是匮乏的.我们这样做.开不了几个进程内存就会耗光了. 所以微软提供了自己的表.而硬件上也提供了支持. 我们看下微软的表....首先我们的CR3寄存器保存了表的首地址. 这里有一个页目录表,还有页表的关键词. 页目录表: 也称为PDE,而页表称之为PTE.
DROP PROCEDURE IF EXISTS `sp_revoke_table`$$
领取专属 10元无门槛券
手把手带您无忧上云