[英]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.