cpu如何运行进程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值