标签:
朱恒志 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”
总结:
如白驹过隙,学期已经过半。
《Linux内核分析》的课程的基础部分已经学完,虽然仅仅短短的半个学期,但也让我受益匪浅。
第一周:计算机工作的进行
http://www.cnblogs.com/20135314ZHU/p/5222946.html
第二周:完成一个简单的时间片轮转多道程序内核代码:
http://www.cnblogs.com/20135314ZHU/p/5245234.html
第三周:跟踪分析Linux内核的启动过程
http://www.cnblogs.com/20135314ZHU/p/5269030.html
rest_init()
就是一个0号进程,在start_kernel
内核一启动时就一直存在;然后这个0号进程就创建了1号进程kernel_init
,接下来还创建了其他的一些服务类的内核线程如kthreadd。这样整个系统就启动起来了。第四周:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
http://www.cnblogs.com/20135314ZHU/p/5289206.html
第五周:扒开系统调用的三层皮(下)/给MenuOS增加time和time-asm命令
http://www.cnblogs.com/20135314ZHU/p/5318211.html
sys_call_table
查询到调用的系统调用,然后跳转到相应的程序进行处理。第六周:进程创建
http://www.cnblogs.com/20135314ZHU/p/5344752.html
Linux通过复制父进程来创建一个新进程,通过调用do_ fork来实现并为每个新创建的进程动态地分配一个task_ struct结构。
copy_thread()中:
p->thread.ip = (unsigned long) ret _from _fork;
将子进程的ip设置为ret_ form _ fork的首地址,因此子进程是从ret_ from_ fork开始执行的。
在设置子进程的ip之前:
*childregs = *current_ pt_ regs();
将父进程的regs参数赋值到子进程的内核堆栈,*childregs的类型为pt_regs,其中存放了SAVE ALL中压入栈的参数。
第七周:
http://www.cnblogs.com/20135314ZHU/p/5365530.html
第八周:进程的切换和一般执行
http://www.cnblogs.com/20135314ZHU/p/5386076.html
Linux读书笔记1/2章:
http://www.cnblogs.com/20135314ZHU/p/5284870.html
第三章读书笔记:
http://www.cnblogs.com/20135314ZHU/p/5339373.html
第四章进程调度读书笔记:
http://www.cnblogs.com/20135314ZHU/p/5387887.html
深入理解计算机第七章:
http://www.cnblogs.com/20135314ZHU/p/5362979.html
老师有时候风趣的讲课方式特别吸引人,特别是老师的微笑,特别可爱。
标签:
原文地址:http://www.cnblogs.com/20135314ZHU/p/5449616.html