Linux核心執行緒和普通程序區別

2021-06-01 06:33:06 字數 1393 閱讀 8088

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();

}2.6.22以前沒有kthreadd這個執行緒,那麼除了程序0外,其他程序都是init程序

或其子程序不斷fork出來的。

2.6.22及以後,很多核心執行緒由kthreadd執行緒create_kthread出來。

看,下面很多核心執行緒的父程序都是2,   kthreadd的pid = 2;

[lu@localhost ~]$ ps -ef

uid        pid  ppid  c stime tty          time cmd

root         1     0  0 09:20 ?        00:00:01 /sbin/init

root         2     0  0 09:20 ?        00:00:00 [kthreadd]

root         3     2  0 09:20 ?        00:00:00 [ksoftirqd/0]

root         4     2  0 09:20 ?        00:00:00 [watchdog/0]

root         5     2  0 09:20 ?        00:00:00 [events/0]

root         6     2  0 09:20 ?        00:00:00 [cpuset]

root         7     2  0 09:20 ?        00:00:00 [khelper]

root        10     2  0 09:20 ?        00:00:00 [async/mgr]

root       259     2  0 09:20 ?        00:00:01 [kblockd/0]

linux普通程序,後台程序,守護程序

預設情況下,程序是在前台執行的,這時就把shell給佔據了,我們無法進行其它操作。對於那些沒有互動的程序,很多時候,我們希望將其在後台啟動,可以在啟動引數的時候加乙個 實現這個目的 1 21304 starting zookeeper started 1 done zkserver.sh start...

linux 輕量級程序與普通程序的區別

核心執行緒只執行在核心態,不受使用者態上下文的拖累。處理器競爭 可以在全系統範圍內競爭處理器資源 使用資源 唯一使用的資源是核心棧和上下文切換時保持暫存器的空間 排程 排程的開銷可能和程序自身差不多昂貴 同步效率 資源的同步和資料共享比整個程序的資料同步和共享要低一些。輕量級程序 輕量級程序 lwp...

linux的核心程序 執行緒

linux啟動後,核心自動執行如下執行緒 程序 核心其實是不區分程序和執行緒的。idle程序 pid 0。系統的啟動程序。啟動後負責程序的排程。init程序 pid 1。由idle程序建立,首先負責系統的啟動。負責啟動所有其他程序。啟動後變成守護程序,用於監視其他所有程序和使用者程序的啟動。所有使用...