Linux内核源码学习
生活随笔
收集整理的這篇文章主要介紹了
Linux内核源码学习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux 內核源代碼分析 - 進程管理及調度
http://wenku.baidu.com/link?url=yzMjiwX-ZzlnYZgb8CKG5veDdv6_uTbweFpb0_LPDDf7xYilF4fImm4QcL5-0gsk6SNu9KrFUqvrzYdbl0wLU8RHGilVFMS_mPIL0HRSB4m
進程管理的任務
.允許進程復制自己(真正作到一個應用多進程)
.確定哪個進程能夠擁有CPU
.接受中斷并將中斷導向相應的內核子系統
.向用戶進程發送信號
.管理時鐘硬件
.當一個進程結束時,釋放其資源
.動態裝載執行模塊
進程模塊與其他模塊的依賴關系
.對用戶進程提供了一組簡單的系統調用接口
.對內核的其他模塊提供了豐富的接口功能
內存管理模塊,當一個進程被調度的時候,為它建立內存映射。
所有的其他模塊都依賴于進程調度模塊,因為當要進行硬件訪問的時候它們需要CPU掛起用戶進程,切換到系統態進行處理。
進程的創建(FORK, copy-on-write)
Linux中,進程的創建是通過拷貝已存在進程來實現的。
在Linux內核啟動的時候,首先由start_kernel()初始化各個系統數據結構,同時生成了和系統共存亡的后臺進程:init。
init進程通過拷貝自身,產生了若干內核子進程。然后這些進程就可以通過系統調用fork()生成它們的子進程,當然這些子進程的原始數據都是他們的父親的副本。進程的終止是通過系統調用_exit()實現的。
進程的終止
.進程運行結束時要釋放相應的資源,通過EXIT()調用實現(顯式或隱式)
.EXIT()實現時調用了do_exit()完成以下工作
? ? Task_struct中標志成員設為:PF_EXITING
? ? 調用__exit_mm()
? ? 調用sem__exit()
? ? 調用__exit_files(), __exit_fs(), exit__name__space, exit_sighand
? ? 退出代碼替換為EXIT()提供的代碼
? ? 調用Exit_notify()向父進程發信號,(標為ZOOMBIE)
? ? 調用shedule切換到其他進程
線程實現
Linux沒有真正的線程。
僅僅是進程之間資源直接共享的一種機制。
內核線程:獨立運行在內核的標準進程。
http://wenku.baidu.com/link?url=yzMjiwX-ZzlnYZgb8CKG5veDdv6_uTbweFpb0_LPDDf7xYilF4fImm4QcL5-0gsk6SNu9KrFUqvrzYdbl0wLU8RHGilVFMS_mPIL0HRSB4m
進程管理的任務
.允許進程復制自己(真正作到一個應用多進程)
.確定哪個進程能夠擁有CPU
.接受中斷并將中斷導向相應的內核子系統
.向用戶進程發送信號
.管理時鐘硬件
.當一個進程結束時,釋放其資源
.動態裝載執行模塊
進程模塊與其他模塊的依賴關系
.對用戶進程提供了一組簡單的系統調用接口
.對內核的其他模塊提供了豐富的接口功能
內存管理模塊,當一個進程被調度的時候,為它建立內存映射。
所有的其他模塊都依賴于進程調度模塊,因為當要進行硬件訪問的時候它們需要CPU掛起用戶進程,切換到系統態進行處理。
進程的創建(FORK, copy-on-write)
Linux中,進程的創建是通過拷貝已存在進程來實現的。
在Linux內核啟動的時候,首先由start_kernel()初始化各個系統數據結構,同時生成了和系統共存亡的后臺進程:init。
init進程通過拷貝自身,產生了若干內核子進程。然后這些進程就可以通過系統調用fork()生成它們的子進程,當然這些子進程的原始數據都是他們的父親的副本。進程的終止是通過系統調用_exit()實現的。
進程的終止
.進程運行結束時要釋放相應的資源,通過EXIT()調用實現(顯式或隱式)
.EXIT()實現時調用了do_exit()完成以下工作
? ? Task_struct中標志成員設為:PF_EXITING
? ? 調用__exit_mm()
? ? 調用sem__exit()
? ? 調用__exit_files(), __exit_fs(), exit__name__space, exit_sighand
? ? 退出代碼替換為EXIT()提供的代碼
? ? 調用Exit_notify()向父進程發信號,(標為ZOOMBIE)
? ? 調用shedule切換到其他進程
線程實現
Linux沒有真正的線程。
僅僅是進程之間資源直接共享的一種機制。
內核線程:獨立運行在內核的標準進程。
總結
以上是生活随笔為你收集整理的Linux内核源码学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArcGIS Engine 项目10.1
- 下一篇: 图解手动全面检查管理本机端口