亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3206 | 回復(fù): 2
打印 上一主題 下一主題

請(qǐng)教一個(gè)內(nèi)核線程 父進(jìn)程的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-10-23 22:21 |只看該作者 |倒序?yàn)g覽
本帖最后由 javacool 于 2010-10-23 22:28 編輯

最近在看2.6.34的代碼,根據(jù)以前的說法 init 進(jìn)程1是除進(jìn)程0以外的所有進(jìn)程的父進(jìn)程

但是在rest_init()函數(shù)中,實(shí)際上擔(dān)負(fù)后續(xù)內(nèi)核線程建立的kthread_add線程是在線程0中創(chuàng)建的,
也就是說kthread_add以及通過ktread_add建立的其他內(nèi)核線程,父進(jìn)程應(yīng)該都是進(jìn)程0,不知道我的理解是不是正確的?
另外我查過2.6.11的代碼,開始的描述便是正確的,所有除0線程以外,其他進(jìn)程的父進(jìn)程因該都是init進(jìn)程
static noinline void __init_refok rest_init(void)
        __releases(kernel_lock)
{
        int pid;

        rcu_scheduler_starting();
        kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);       
              numa_default_policy();
        pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
        rcu_read_lock();
        kthreadd_task = find_task_by_pid_ns(pid, &init_pid_ns);
        rcu_read_unlock();
        unlock_kernel();

        /*
         * The boot idle thread must execute schedule()
         * at least once to get things moving:
         */
        init_idle_bootup_task(current);
        preempt_enable_no_resched();
        schedule();
        preempt_disable();

        /* Call into cpu_idle with preempt disabled */
        cpu_idle();
}

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-10-24 11:38 |只看該作者
本帖最后由 奇門遁甲-lu 于 2010-10-24 17:40 編輯
根據(jù)以前的說法 init 進(jìn)程1是除進(jìn)程0以外的所有進(jìn)程的父進(jìn)程

你說的不完整,應(yīng)該是, 一個(gè)進(jìn)程的父進(jìn)程沒了,這個(gè)進(jìn)程將變成孤兒進(jìn)程,
所有孤兒進(jìn)程的父進(jìn)程都是init進(jìn)程.

2.6.22以前沒有kthreadd這個(gè)線程,那么除了進(jìn)程0外,其他進(jìn)程都是init進(jìn)程
或其子進(jìn)程不斷fork出來的。
2.6.22及以后,很多內(nèi)核線程由kthreadd線程create_kthread出來。

看,下面很多內(nèi)核線程的父進(jìn)程都是2,   kthreadd的pid = 2;

  1. [lu@localhost ~]$ ps -ef
  2. UID        PID  PPID  C STIME TTY          TIME CMD
  3. root         1     0  0 09:20 ?        00:00:01 /sbin/init
  4. root         2     0  0 09:20 ?        00:00:00 [kthreadd]
  5. root         3     2  0 09:20 ?        00:00:00 [ksoftirqd/0]
  6. root         4     2  0 09:20 ?        00:00:00 [watchdog/0]
  7. root         5     2  0 09:20 ?        00:00:00 [events/0]
  8. root         6     2  0 09:20 ?        00:00:00 [cpuset]
  9. root         7     2  0 09:20 ?        00:00:00 [khelper]
  10. root        10     2  0 09:20 ?        00:00:00 [async/mgr]
  11. root       259     2  0 09:20 ?        00:00:01 [kblockd/0]
復(fù)制代碼

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-10-24 12:11 |只看該作者
本帖最后由 javacool 于 2010-10-24 12:13 編輯

恩 謝謝樓上  我原來的理解是 其他所有task都是從 init進(jìn)程為根的進(jìn)程樹下生成出來的  比較新的內(nèi)核版本現(xiàn)在內(nèi)核線程都是在kthread_add內(nèi)核線程為根的一顆子樹下生成,而init進(jìn)程是另外一棵子樹。這兩顆子樹 的祖先是進(jìn)程0。  不過不知道為什么要這么做?是否為了區(qū)分開 普通進(jìn)程和內(nèi)核進(jìn)程?

老版本                              
   0
    1
  。。。。。


新版本
     0
    1    2
。。。。。。。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP