本周在线学习了孟宁老师的《Linux内核分析》,本周的主要内容是进程的描述和创建,针对本次课程的实验现记录于本博文。我们学习过操作系统这么课程,知道PCB是进程在内核中的唯一标识,PCB结构中包括本进程的全部信息。具体到Linux操作系统,这个PCB结构就是Linux内核中的task_struct结...
分类:
系统相关 时间:
2015-04-12 20:41:31
阅读次数:
202
1.task_struct数据结构分析 对于linux而言,每个进程都有一个进程控制PCB(process control block)来保存每个进程的相关信息。其中task_struct则是PCB的具体的数据结构通过内核代码可以发现,内核当中定义一个task_struct的结构体用来保存进程的相....
分类:
系统相关 时间:
2015-04-12 17:26:39
阅读次数:
197
第三章 进程管理1. fork系统调用从内核返回两次: 一次返回到子进程,一次返回到父进程2. task_struct结构是用slab分配器分配的,2.6以前的是放在内核栈的栈底的;所有进程的task_struct连在一起组成了一个双向链表3. 2.6内核的内核栈底放的是thread_info结构,...
分类:
系统相关 时间:
2015-04-11 16:14:03
阅读次数:
257
陈铁+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000Linux内核对进程管理是操作系统的重要任务之一。此次实验就是了解内核创建一个新进程的大致过程。为了简单,使用fork再用户态创建一个进程。代码如下:#include<std..
分类:
系统相关 时间:
2015-04-10 11:40:39
阅读次数:
222
进程的描述ulk那个大图 for task_struct提纲挈领,看代码前总览
序言 进程控制块PCB——task_struct为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。
struct task_struct数据结构很庞大Linux进程的状态与操作系统原理中的描述的进程状态似乎有所不同,比如就绪状态和运行状态都是TASK_RUNNING,为什么呢...
分类:
系统相关 时间:
2015-04-07 23:33:39
阅读次数:
382
Linux内核中进程的强制性调度,也就是非自愿的、被动的、剥夺式的调度,主要是由时间引起的。前面讲过这种调度发生在中断,异常,系统调用从系统空间返回用户空间的前夕,也就是在ret_with_reschedule可以看出,此时是否真的调用schedule(),最终还要取决于当前进程task_struct结构中的need_resched是否为1(非0),因此,问题就结为当前进程的need_resche...
分类:
系统相关 时间:
2015-03-21 18:41:22
阅读次数:
238
linux系统中每个进程由一个进程id标识,在内核中对应一个task_struct结构的进程描述符,系统中所有进程的task_struct通过链表链接在一起,在内核中,经常需要通过进程id来获取进程描述符,最简单的方法可以通过遍历task_struct链表并对比id的值来获取,但这样效率太低,尤其当...
分类:
系统相关 时间:
2015-03-11 21:30:48
阅读次数:
246
一. Makefile大致写法: | 二. 获取进程task_struct的方法: | 三. open 大致写法: | 四. read 大致写法: | 五. write 大致写法: ...
分类:
其他好文 时间:
2015-03-10 22:51:14
阅读次数:
234
Technorati 标签: current thread_info 在内核中,可以通过current宏来获得当前执行进程的task_struct指针。现在来简要分析以下: 最原始的定义如下: #define current get_current() #define get_current() (...
分类:
其他好文 时间:
2015-01-28 14:36:32
阅读次数:
391
对话级多任务进程级多任务进程是运行中的程序pid_t getpid();//返回当前进程得PIDpid_t getppid();//返回父进程PIDtask_struct结构体是一个进程存在的唯一标示, 也就是进程控制块。PCBstruct task_struct *task[512] ={&ini...
分类:
其他好文 时间:
2015-01-20 20:19:42
阅读次数:
158