UNIX v6的进程控制块proc结构体和user结构体

进程的状态信息和控制信息等由 proc 结构体和 user 结构体管理。每个进程各自会被分配1 组上述结构体的实例。 proc 结构体常驻内存,而 user 结构体有可能被移至交换空间。

proc 结构体

由 proc 结构体构成的数组 proc[]中的每个元素分别对应一个进程。proc 结构体管理着在进程状态、执行优先级等与进程相关的信息中需要经常被内核访问的那部分信息。举例来说,内核在(进程切换过程中)选择下一个将被执行的进程时,会首先检查所有进程的状态。这种需要遍历所有进程的情况在其他处理中也会经常出现。由于 proc[] 常驻内存,因此内核可以在很短时间内完成对所有进程状态的检查。假如proc[] 能够被移至交换空间,内核必须访问交换空间才能取得相应数据,这会导致花费过多时间并引起性能下降。proc[] 的长度决定了在系统中可以同时存在的进程上限。 proc[] 的长度由常量NPROC 定义,其值为50

struct proc
{
 char p_stat;
 char p_flag;
 char p_pri;
 char p_sig;
 char p_uid;
 char p_time;
 char p_cpu;
 char p_nice;
 int p_ttyp;
 int p_pid;
 int p_ppid;
 int p_addr;
 int p_size;
 int p_wchan;
 int *p_textp;
 } proc[NPROC];

 /* stat codes */
 #define SSLEEP 1
 #define SWAIT 2
 #define SRUN 3
 #define SIDL 4
 #define SZOMB 5
 #define SSTOP 6

 /* flag codes */
 #define SLOAD 01
 #define SSYS 02
 #define SLOCK 04
 #define SSWAP 010
 #define STRC 020
 #define SWTED 040
成员 含义
p_stat 状态。等于NULL时意味着 proc[]数组中该元素为空。参见表进程的状态
p_flag 标志变量。参见表进程的标志常量
p_pri 执行优先级。数值
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值