Linux操作系统——Linux系统中进程的组织方式

本文详细介绍了Linux操作系统中进程的组织方式,包括进程链表、哈希表、就绪队列和等待队列。进程链表通过双向循环链表连接所有进程,哈希表用于高效查找PID对应的进程控制块。就绪队列用于存放准备运行的进程,而等待队列则用于中断处理、进程同步和定时等待,其中等待队列头包含自旋锁和等待进程链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、进程链表

为了对给定类型的进程进行有效的搜素,内核建立了几个进程链表。每个进程链表由指向进程控制块PCB的指针组成。进程控制块结构体如下:

struct task_struct {

......

struct list_head        tasks;// 进程链表

    /*
     * executable name, excluding path.
     *
     * - normally initialized setup_new_exec()
     * - access it with [gs]et_task_comm()
     * - lock it with task_lock()
     */
    char                comm[TASK_COMM_LEN];

......

}

通过一个双向循环链表把所有进程联系起来,即为进程链表.

2、哈希表

在有些情况下,内核必须能根据进程的PID导出对应的进程控制块.顺序扫描进程链表并检查PCB的PID域是可行但相当低效的.为了加速查找,引入哈希表,要有一个哈希函数把PID转换成表的索引,Linux有一个宏pid_hashfn来实现:

#define pid_hashfn(nr, ns)      \
     &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值