一:进程的堆栈 内核在创建进程的时候,在创建task_struct的同时会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存 在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存...
分类:
系统相关 时间:
2015-09-12 10:46:40
阅读次数:
243
CREAT PROCESSfork()|clone(參数,决定父子函数的共享内容)|do_fork()|copy_process()|dup_task_struct()创建子进程的内核堆栈。复制父进程的进程描写叙述符(task_struct)进程描写叙述符的非常多成员被清除或者设为初值设置子进程的状...
分类:
系统相关 时间:
2015-08-21 18:49:34
阅读次数:
232
陈铁+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000对于现代操作系统,多任务是必备的,在linux系统下,进程会不断的被内核调度,从X进程切换为Y进程,以实现用户所见到的多任务状态,下面我们就看一看这样的过程,分析..
分类:
系统相关 时间:
2015-04-22 02:09:44
阅读次数:
241
一、进程概念 进程是程序执行的一个实例。操作系统会以进程为单位,分配系统资源,进程是资源分配的最小单位。Linux进程的四大要素 1:一段供进程执行的程序,该程序可以被多个进程执行。 2:独立的内核堆栈。 3:进程控制快(task_struct:有了这个数据结构,进程才能成为内核调度的一个基本单位接...
分类:
系统相关 时间:
2015-01-07 00:27:01
阅读次数:
265
1 内核线程
内核为每个线程分配8K的栈空间, 在每个堆栈的顶部放着struct thread_info 结构体,用来保存线程相关信息.
其中有几个重要变量:
Preempt_count :
此变量分为四部分
0-7bit :当前进程是否能抢占的标志
8-15bit:softirq 使能标志
16-23bit :hardirq 使能标志
24bit:PREEMPT_ACTIVE...
分类:
系统相关 时间:
2014-12-13 10:52:06
阅读次数:
485
CREAT PROCESS
fork()
|
clone(参数,决定父子函数的共享内容)
|
do_fork()
|
copy_process()
|
dup_task_struct()
创建子进程的内核堆栈,复制父进程的进程描述符(task_struct)
进程描述符的很多成员被清除或者设为初值
设置子进程的状态task_struct-->state
...
分类:
系统相关 时间:
2014-10-16 17:32:12
阅读次数:
369