https://blog.youkuaiyun.com/qianyayun19921028/article/details/81362016
cpu如何运行进程
cpu主要是由运算器、寄存器、控制器和译码器组成,当我们运行一段代码的时候,代码被加载进寄存器中,(单cpu单核的情况)当有另一个进程需要运行的时候,第一个进程就会被存入pcb的栈中,等到一定的时间在重新加载到寄存器中运行。
一般情况下,cpu处理数据能力有1Ghz=1ns,多进程的时候cpu采取分时复用的方式进行,每个进程10ms或者其他时间的进行交换,由于运行速度很快所以用户感觉不到在交换,觉得是在同时运行。
进程有四种状态,运行态,就绪态,睡眠态,停止态。其中的状态转变如图所示。

进程的加载过程
https://blog.youkuaiyun.com/qq_38623623/article/details/78306498
假如有一个可执行程序,它有自己的大小。将可执行程序加载到内存空间有各种方法,以下是我们便于理解的一种方法。

如上图,如果想再加载一个程序进去,理论上空间够用,但实际上放不进去,因此这种管理方案浪费的内存较大,会产生外部碎片。
因此我们可以使用页表来对内存进行管理,下图是使用页表的方法。
页表:操作系统会为每一个进程维护一个页表,页表主要记录其加载时每个块对应的页号。
分页的特点:不要求所有的块连续,可以避免外部碎片,但是会产生内部碎片。

由上图,分页将物理内存上的空间划分为很小的区块,这个区块成为页。内存上的程序使用完后释放,再循环使用,可以提高空间使用率。
假如上图的内存有20个区块,可执行程序有5个区块,则内存可以加载20/5=4个程序,此时内存就已经使用完了。当内存空间不够用的时候,就使用虚拟内存。
虚拟内存:
概念:虚拟内存是在磁盘空间开辟空间作为内存的一个补充。
进程可以一部分驻留在内存上,而其他部分存储在虚拟内存上。
虚拟内存的优点:
1、操作系统同时执行的进程数量会大幅提升。
2、操作系统可以执行比内存空间大的多的进程。
接下来详细描述一下进程的加载过程:
当一个程序加载到内存时,刚开始只加载0号块,剩下的块暂时不会访问到,不用加载到内存,放在虚拟内存上就可以。因此上图内存可以同时加载20块,即20个程序。假如系统有3G的内存,第一个进程只占4k,其他剩余的3G-4k的内存可以加载其他程序。
但是当去内存访问0号块完毕时,如果要访问1号块,但此时1号块不在内存上而在虚拟内存上,此时就会发生页中断(页错误)。此时CPU无法执行,中断处理程序会扫描虚拟内存,然后找到1号块所在的虚拟内存的空间,将其加载到内存,CPU再次扫描,程序正常执行。
使用虚拟内存这种管理方式的缺点是浪费时间,中断处理程序执行时,CPU需要等待,会浪费时间。
接下来讲一个名词,叫做系统抖动
系统抖动概念:在请求分页存储管理中,从内存刚刚换出某一页面后,根据请求又马上换入该页,这种反复换入换出的现象,叫系统抖动,或系统颠簸。
系统抖动是因为页错误太多,频繁出现页中断,浪费CPU大部分时间。
为了降低系统抖动,降低页错误次数,就要使用页面置换算法(FIFO),原则是先进先出,但这种算法只是在按顺序访问地址空间时是理想的。因此我们可以使用另一种算法,即最近最久未使用算法(LRU),它是置换最近过去一段时间最久未使用的页面。
--------------------- 本文来自 静沐暖阳 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/qq_38623623/article/details/78306498?utm_source=copy
6101

被折叠的 条评论
为什么被折叠?



