Linux内核开发教程:进程子系统初始化及调用详解.pptx

Linux内核开发教程:进程子系统初始化及调用详解.pptx

Linux内核?

第七讲进程子系统初始化及相关调用主讲人:赵亚华章培训网、[]华章培训网

内核开始第2页一、内核开始执行 1、start_kernel函数 2、0号进程 即调用start_kernel的执行流,完成初始化之后将执 行idle 3、exec系统调用 并不创建task_struct,仅仅替换其mm_struct 4、1号进程 由0号进程fork出来,然后调用exec(/sbin/init) 进入用户态。进程子系统树根创建。

相关细节第3页二、内核态的task_struct 1、内核栈 每一个task_struct都有一个内核栈,这个栈用于其 在内核态运行时执行函数调用 2、进程切换 当内核决定调度进程的时候,内核将会把cpu交给另 外一个task_struct,主要的动作就是内核栈的切 换。 3、idle进程 0号进程最终执行idle,在cpu确实无事可做的时候执 行。

Idle函数第4页voidcpu_idle(void){ /*endlessidleloopwithnopriorityatall*/ while(1){ while(!need_resched()){ void(*idle)(void)=pm_idle; if(!idle) idle=default_idle; irq_stat[smp_processor_id()].idle_timestamp=jiffies; idle(); } schedule(); }}

Tickless机制第5页 4、idle的tickless机制 idle本质上在执行hlt指令,但是hlt仍然响应中断, 比如定时的时钟中断。Tickless可以停止这个周期的 时钟,更加节省能耗。

进程组织第6页三、进程组织 1、实例 2、pstree查看

感谢您对华章培训网的支持!.

文档评论(0)

1亿VIP精品文档

相关文档