簡體   English   中英

Linux內核空間中的進程

[英]Process in Linux Kernel space

在用戶空間中,我們可以通過執行程序或在程序內部調用fork來創建進程,內核將為每個用戶空間進程創建進程描述符(task_struct)。

在內核空間中,有任何稱為進程的概念,如果是的話,將如何創建它們?

根據我的理解,內核線程將使用kernel_thread()等在內核空間中創建, kernel_thread()在內部調用do_fork() ,因此內核線程也使用task_struct表示嗎?

如果使用task_struct表示用戶空間進程和內核空間線程,那么調度程序將如何調度用戶空間進程和內核空間線程?

是的,它們都是通過task_struct處理的。

關鍵內核線程具有RT(“實時”)調度程序類,該類比通常用於用戶空間線程的CFS調度程序具有優先級。 只需檢查您的ps:

# ps ax --format uname,pid,ppid,tty,cmd,cls,pri,rtprio | egrep '(FF|RR)'

(內核線程顯示在方括號中)

但是,您可以看到許多內核線程都有TS調度程序。 我認為沒有理由使所有內核線程都是實時的。 例如,您可以將寫回延遲到VLC播放器顯示的情感場景上的磁盤上。

而且我想即使是與另一個線程共享內存段(例如,堆,全局varaibales)的POSIX線程,也都由task_struct處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM