免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1338 | 回复: 0
打印 上一主题 下一主题

Unix进程映像的组成 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-26 22:54 |只看该作者 |倒序浏览
在Unix中,进程映像由3个部分组成:proc结构、正文段和数据段。

proc结构——长驻内存。
正文段——存放在磁盘上,执行时调到内存。
数据段——存放在磁盘上,执行时调到内存。


Unix进程控制块的组成
proc结构——存放进程最基本的信息,也是进程的唯一标识,长驻内存。
user结构——主要包含那些只有进程执行时才会被使用的信息,在数据段内,执行时调到内存。


这样处理PCB是为了节省内存空间的开销。当进程被操作系统调度执行时,其正文段和数据段会载入内存,进程的user结构也随之进入内存。user结构与proc结构通过指针链接,使它们在逻辑上形成一个完整的PCB。

Unix将进程所要执行的程序也划分为两部分,分别存放在正文段和数据段中。
正文段中存放程序代码中可以共享的部分,私有部分则放在数据段中。好处是被多个进程共享的正文段在系统中只需要一个副本即可,目的是节省内存空间。
系统运行该进程所需要的系统信息存放在数据段U区中,其中包括核心栈和user结构。仅当进程处于运行态时,其数据段才被加载到内存,其中的U区会被载入专门存放当前运行进程的内存U区页面中,从而使得proc结构与user结构结合,形成一个完整的pcb结构。
进程运行时,为了便于处理机从用户态转换到系统态,Unix在每个用户进程的PCB中建立一个针对系统的核心栈,通过核心栈共享核心正文段、以及与核心进程相关的系统数据结构和系统页表等。当进程请求系统服务时,可以通过该进程的核心栈直接链接到系统内核,实现从用户态到核心态的快速切换。同时为了保护内核,Unix将每个进程中的核心栈与其用户栈分开,使核心栈和用户栈之间不能互相传递参数。这样既方便系统核心程序的执行又有利于内核保护。





本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94732/showart_1911618.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP