现招募对linux内核进程有了解的中等人员,技术高的和技术底的就算了,别让大家都别此失望,希望大家可以在一起讨论和学习。 QQ群:89166877 人员要求: 请发送个人简述到 tianshizhiluan@gmail.com,为了保证群的质量,我们会进行相关的过滤。 welcome
by wojiaohesen - 内核源码 - 2009-07-18 10:51:09 阅读(1336) 回复(5)
在内核2.4中堆栈是这么定义的: union task_union { struct task_struct task; unsigned long stack[INIT_TASK_SIZE/sizeof(long)]; }; 而INIT_TASK_SIZE只能是8K。 内核为每个进程分配一个task_struct结构时,实际上分配两个连续的物理页面(8192字节),如图所示。底部用作task_struct结构(大小约为1K字节),结构的上面用作内核堆栈(大小约为7K字节)。访问进程自身的task_struct结构,使用宏操作current, ...
Suse 11 SP1 kernel panic。
I can't debug it without debuginfo. Who can give me a link of sels
2.6.32.12-0.7.default.debug or give some advise.
Thanks for any reply!
kernel: [3077010.856280] BUG: unable to handle kernel NULL pointer
dereference at 0000000000000008
kernel: [3077010.856291] IP: [
linux内核进程切换 (转载)linux内核进程切换 本文主要参考了 Understanding The linux Kernel 和水木精华区的 分析进程切换宏 switch_to 。感谢相关的作者!本文中有部分内容直接从上面提到的文章中重复,仅仅是为了方便大家阅读。本文中提到的所有内核代码可以到 linux Cross Reference 上查阅。欢迎转载本文,转载请保留这份声明。 本文仅讨论内核进程的切换,而不涉及进程的调度算法。详细讲了switch_to这个宏。 ...
[code]#define switch_to(prev,next,last) do{ asm volatile {"pushl %%esi\n\t" "pushl %%edi\n\t" "movl %%esp,%0\n\t" "movl %3,%%esp\n\t" "movl $1f,%1\n\t" "pushl %4\n\t" "1\t" "popl %%ebp\n\t" ...
1. idle是什么 简单的说idle是一个进程,其pid号为 0。其前身是系统创建的第一个进程,也是唯一一个没有通过fork()产生的进程。在smp系统中,每个处理器单元有独立的一个运行队列,而每个运行队列上又有一个idle进程,即有多少处理器单元,就有多少idle进程。系统的空闲时间,其实就是指idle进程的"运行时间"。既然是idle是进程,那我们来看看idle是如何被创建,又具体做了哪些事情? 2. idle的创建 我们知道系统是从BIOS加电自...
2.1首先让我们了解,操作系统分为两类:一类是实时操作系统,一类是分时操作系统。它们的共同特点是都是多任务的 。多任务操作系统分为两类:非抢占式多任务和抢占式多任务。 非抢占式多任务,就是指进程不断的占用CPU,直到运行完毕或者是自己让出。这样的系统实在不适合多任务操作系统,毕竟,长期占用CPU对任何多任务系统来说,都是很容易让系统崩溃的!这样的操作系统也很少。 抢占式多任务,就是进程占用CPU时间是有限的,到了...
linux内核分析之进程地址空间 view plaincopy to clipboard[code]01.unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, 02. unsigned long len, unsigned long prot, 03. unsigned long flags, unsigned long pgoff) 04.{ 05. struct mm_struct * mm = current->mm; 06. struct inode *inode; 07. unsigned int vm_flags; 08. int error; 09. u...
linux内核分析之进程地址空间 本文主要介绍linux内核中进程地址空间的数据结构描述,包括mm_struct/vm_area_struct。进程线性地址区间的分配流程,并对相应的源代码做了注释。 内核中的函数以相当直接了当的方式获得动态内存。当给用户态进程分配内存时,情况完全不同了。进程对动态内存的请求被认为是不紧迫的,一般来说,内核总是尽量推迟给用户态进程分配内存。由于用户进程时不可信任的,因此,内核必须能随时准备捕...