打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux idle 进程_淡淡的锅盔
1. idle是什么   简单的说idle是一个进程,其pid号为0。其前身是系统创建的第一个进程,也是唯一一个没有通过fork()产生的进程。在smp系统中,每个处理器单元有独立的一个运行队列,而每个运行队列上又有一个idle进程,即有多少处理器单元,就有多少idle进程。系统的空闲时间,其实就是指idle进程的'运行时间'。既然是idle是进程,那我们来看看idle是如何被创建,又具体做了哪些事情?  2. idle的创建  我们知道系统是从BIOS加电自检,载入MBR中的引导程序(LILO/GRUB),再加载linux内核开始运行的,一直到指定shell开始运行告一段落,这时用户开始操作Linux。而大致是在vmlinux的入口startup_32(head.S)中为pid号为0的原始进程设置了执行环境,然后原是进程开始执行start_kernel()完成Linux内核的初始化工作。包括初始化页表,初始化中断向量表,初始化系统时间等。继而调用fork(),创建第一个用户进程:   kernel_thread(kernel_init, NULL, CLONE_FS |CLONE_SIGHAND);  这个进程就是着名的pid为1的init进程,它会继续完成剩下的初始化工作,然后execve(/sbin/init),成为系统中的其他所有进程的祖先。关于init我们这次先不研究,回过头来看pid=0的进程,在创建了init进程后,pid=0的进程调用cpu_idle()演变成了idle进程。   current_thread_info()->status |=TS_POLLING;   在smp系统中,除了上面刚才我们讲的主处理器(执行初始化工作的处理器)上idle进程的创建,还有从处理器(被主处理器activate的处理器)上的idle进程,他们又是怎么创建的呢?接着看init进程,init在演变成/sbin/init之前,会执行一部分初始化工作,其中一个就是smp_prepare_cpus(),初始化SMP处理器,在这过程中会在处理每个从处理器时调用   task =copy_process(CLONE_VM, 0, idle_regs(&regs), 0, NULL, NULL, 0);  init_
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux内核源码分析
linux内核启动过程学习总结
linux 进程独占cpu,Linux -- 进程或线程独占CPU
linux的0号进程和1号进程
Android 开发之漫漫长途Ⅰ—Android 系统的创世之初以及 Activity 的生命周期
笑遍世界 ? (KVM连载)4.1.5 进程的处理器亲和性和vCPU的绑定
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服