码迷,mamicode.com
首页 > 系统相关 > 详细

操作系统 进程

时间:2017-07-26 17:40:08      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:目录   指针   文件   中断处理   blog   维护   malloc   系统调用   结构   

操作系统中同时运行着多个进程,如何管理和调度这些进程,以合理利用系统资源,提高系统吞吐量呢?

进程是由操作系统内核创建的,每一个进程都分配得有4G的寻址空间(在32位操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从 0x00000000~0xFFFFFFFF ,最大值 0xFFFFFFFF 表示的即为4GB 大小的容量,要注意的是这个 4GB 的地址空间是“虚拟”的,并不是真实存在的,而且每个进程只能访问自己虚拟地址空间中的数据,无法访问别的进程中的数据,通过这种方法实现了进程间的地址隔离),该寻址空间是虚拟地址空间,包含用户态(0~3G)和内核态地址空间(3G-4G),应用程序只能执行用户态的代码,只有在要执行系统调用的时候,才会进入内核态,内核态地址空间是所有进程共享的(是操作系统内核运行的地方)。

技术分享

用户态中又会包含进程的执行代码,数据,堆(heap)和用户态栈,当程序执行malloc(memory allocation 向系统申请分配指定size个字节的内存空间)的时候,实际上是在虚拟地址空间中申请的(动态内存分配的)。

CPU在执行代码的时候,并不是直接使用物理地址去物理内存中操作,而是使用虚拟地址。MMU(内存管理单元)接受到cpu发出的虚拟地址后,会首先去内存中进行查表(页表,虚拟内存页到物理内存的映射关系),如果发现当前需要的页已经存在于物理内存中,则直接去操作,如果发现还不在,就会产生缺页异常(中断),中断处理程序就会加载相应的页到物理内存中(LRU页置换算法),并替换出最近最少使用的页回虚拟内存中(虚拟内存通常设置为实际物理内存的1.5~3倍)。

技术分享

 

每个进程都有一个进程控制块(PCB),实际上是一个task_struct结构体,里面维护这各个进程的核心信息,如进程id,运行状态,优先级以及构建进程的资源等。若要详细查看进程,则进入/proc/PID目录,查看maps,smaps,status三个文件的内容。

 

操作系统 进程

标签:目录   指针   文件   中断处理   blog   维护   malloc   系统调用   结构   

原文地址:http://www.cnblogs.com/james111/p/7240032.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!