
linux 进程管理
文章平均质量分 77
satanwxd
在读研究生
展开
-
进程管理相关初始化(一)
我们先来说下进程管理的相关初始化,sched_init()是调度相关初始化,以下是它的具体代码:void __init sched_init(void){ runqueue_t *rq;//这个结构体的原型就是struct runqueue我们在后续会把它称为运行队列结构体。 int i, j, k; for (i = 0; i prio_array_t *array;//这个类型的原原创 2010-03-26 19:12:00 · 1148 阅读 · 0 评论 -
进程管理相关初始化(二)
接下来的两个函数分别介绍的是PID的HASH表和位码表的初始化,在说程序之前,我先说说这两个表有什么用处。PID是process id的缩写,我们也把它称为进程标示符。PID位于struct task_struct里的PID字段里。PID是顺序编码的,新创建进程的PID通常是前一个进程的PID加1.位码表的每一位表示这个PID是否可用,为1表示正在被使用,为0表示空闲。对于32位系统需要32767原创 2010-03-27 11:14:00 · 3001 阅读 · 1 评论 -
进程管理相关初始化(三)
我们接下来要说的初始化函数是创建进程的相关初始化fork_init(),下面我们来仔细分析一下它的代码吧void __init fork_init(unsigned long mempages)//mempages这个参数一般是指实际存在的物理内存总页数。{#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR//ARM没有定义这个的#ifndef ARCH_MIN原创 2010-03-27 14:50:00 · 1373 阅读 · 0 评论 -
进程管理之进程创建和删除(一)
我们先来介绍内核进程创建函数kernel_thread()pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags){ struct pt_regs regs;//定义系统寄存器 memset(®s, 0, sizeof(regs));//把这些寄存器清零 regs.ARM_r1 = (unsign原创 2010-03-27 18:18:00 · 1721 阅读 · 1 评论 -
进程管理之进程创建和删除(二)
在上篇文章中我们主要分析了do_init()创建进程函数,在里面我们有个函数非常重要,我们先来讲述第一个alloc_pidmap()函数,这个函数的功能就是分配新的空闲PID号,一下是它的代码:int alloc_pidmap(void){ int i, offset, max_scan, pid, last = last_pid; pidmap_t *map; pid = last +原创 2010-03-28 10:09:00 · 1081 阅读 · 0 评论