Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7347
  • 博文数量: 2
  • 博客积分: 1462
  • 博客等级: 上尉
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-05 19:13
文章分类
文章存档

2010年(2)

最近访客

分类: LINUX

2010-08-03 22:18:29

Unix原理看了几天,一直没搞明白pcb中到底有哪些东西。于是在网上这个搜啊,
终于找到了一份让自己满意的ppt,粘出来一部分。Unix的源码我没看过,
具体实现不知道,不过这个ppt貌似是用来教学的,应该就如它讲的一样吧,
呵呵。。。。。ppt的下载地址我放在这
进程控制块:
  在UNIX系统Ⅴ中,把进程控制块(PCB)分为四部分:
  (1) 进程表项,其中包括最常用的核心数据。
  (2) U区,用于存放用户进程表项的一些扩充数据。
  (3) 系统区表,存放各个区在物理存储器中的地址信息等。
  (4) 进程区表,用于存放各区的起始虚地址及指向系统区表中对应区表项的指针。
 
1.进程表项(Process Table Entry)
  用于描述和控制一个进程的信息通常都很多,其中有些是经常要被访问的,如进程标识符、进程状态等。为了提高对这些信息访问的效率,系统设计者将这些信息放在进程表项中,又称之为Proc表或Proc结构,使之常驻内存。在每个进程表项中,含有下述一些具体信息:
 
  (1) 进程标识符(PID),也称内部标识符,为方便用户使用,这里惟一地标识一个进程的某个整数。
  (2) 用户标识符(UID),标识拥有该进程的用户。
   (3) 进程状态,表示该进程的当前状态。
  (4) 事件描述符,记录使进程进入睡眠状态的事件。
  (5) 进程和U区在内存或外存的地址,核心可利用这些信息做上、下文切换。
  (6) 软中断信息,记录其它进程发来的软中断信号。
  (7) 计时域,给出进程的执行时间和对资源的利用情况。
  (8) 进程的大小,这是核心在为进程分配存储空间时的依据,包括正文段长度和栈段长度等。
    (9) 偏置值nice,供计算该进程的优先数时使用,可由用户设置。
  (10)  P_Link指针,这是指向就绪队列中下一个PCB的指针。
  (11) 指向U区进程正文、数据及栈在内存区域的指针。
 
2.U区(U Area)
  为了存放用于描述和控制进程的另一部分信息,系统为每一个进程设置了一个私用的U区,又称之为User结构,这部分数据并非常驻内存,其中含有下述信息:
 
  (1) 进程表项指针,指向当前(正在执行)进程的进程表项。
  (2) 真正用户标识符u-ruid(real user ID),这是由超级用户分配给用户的标识符,以后,每次用户在登录进入系统时,均须输入此标识符。  
    (3) 有效用户标识符u-euid(effective user ID),在一般情况下,它与ruid相同,但在其他用户允许的情况下,可用系统调用setuid将它改变为其他用户标识符,以获得对该用户的文件进行操作的权力。
  (4) 用户文件描述符表,其中记录了该进程已打开的所有文件。
  (5) 当前目录和当前根,用于给出进程的文件系统环境。
  (6) 计时器,记录该进程及其后代在用户态和核心态运行的时间。
    (7) 内部I/O参数,给出要传输的数据量、源(或目标)数据的地址、文件的输入/输出偏移量。
  (8) 限制字段,指对进程的大小及其能“写”的文件大小进行限制。
  (9) 差错字段,记录系统调用执行期间所发生的错误。
  (10) 返回值,指出系统调用的执行结果。
  (11) 信号处理数组,用于指示在接收到每一种信号时的处理方式。
 
3.系统区表(System Region Table)
  系统Ⅴ把一个进程的虚地址空间划分为若干个连续的区域:正文区、数据区、栈区等。 这些区是可被共享和保护的独立实体。多个进程可共享一个区,例如,多个进程共享一个正文区,即几个进程将执行同一个(子)程序。同样,多个进程也可共享一个数据区。为了对区进行管理,在核心中设置了一个系统区表(简称区表),在各表项中记录了以下有关描述活动区的信息:
 
    (1) 区的类型和大小。
  (2) 区的状态。一个区有这样几种状态: 锁住、在请求中、在装入过程、有效(区已装入内存)。
  (3) 区在物理存储器中的位置。
  (4) 引用计数,即共享该区的进程数。
  (5) 指向文件索引结点的指针。
 
4.进程区表(Process Region Table)
  为了记录进程的每个区在进程中的虚地址,并通过它找到该区在物理存储器中的实地址,系统为每个进程配置了一张进程区表。表中的每一项记录一个区的起始虚地址及指向系统区表中对应的区表项的指针。这样,核心可通过查找进程区表和系统区表,将区的逻辑地址变换为物理地址。可见,进程区表和系统区表用于对区地址进行映像(射)。这里用两张区表实现地址映射,是为了便于实现对区的共享。
 
阅读(1498) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:相联存储器组成和检索

给主人留下些什么吧!~~