注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

火车的家

Put first thing first

 
 
 

日志

 
 

2013.03.19 kernel thread  

2013-03-20 23:55:26|  分类: linux kernel |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1. 内核线程与普通进程的区别
1) 内核线程只运行在内核态,而普通进程既可以运行在内核态也可以运行在用户态
2) 内核线程只可以访问大于PAGE_OFFSET的地址空间,而普通进程可以访问4G空间。

2. 内核线程的创建
本质上是调用do_fork,但是不复制调用进程的页表,这是因为内核线程是不会访问用户进程空间的。另外,内核线程不会被跟踪(不理解,也许是不能 attach 调试器的意思)。

3. 进程0与进程1
1) 进程0
所有数据结构都是静态的,运行start_kernel函数初始化内核需要的所有数据结构,激活中断,创建另一个进程1的内核线程,之后进程0在开中断情况下运行hlt命令。这个进程就是 idle 进程。
2) 进程1
由idle进程创建的进程1的内核线程调用init()函数,负责内核的初始化,之后装入可执行程序init,成为一个普通进程。负责创建和监控其他进程。
  评论这张
 
阅读(348)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017