操作系统的理解
只要具備 ?CPU+內(nèi)存+時鐘(RTC+Clock) 的能力就可以是一個計算設(shè)備
而計算設(shè)備要有鎖(Lock)的能力需要CPU和內(nèi)存分別提供(比較內(nèi)存+一次取固定位數(shù)內(nèi)存值)原子操作
OS對上提供編程框架,對下提供硬件(虛擬硬件)管理
內(nèi)核線程只在在內(nèi)核空間運行,不同內(nèi)核線程同一地址空間,可相互訪問
用戶線程只在在用戶空間運行,同一用戶進程的不同線程同一地址空間,可相互訪問,不同進程不同地址空間,相互隔離
實時操作系統(tǒng)(RTOS):所有系統(tǒng)調(diào)用在規(guī)定時間內(nèi)返回
內(nèi)核:管理硬件/虛擬硬件
CRT位于框架里面
系統(tǒng)調(diào)用:應(yīng)用->(OS的)框架
===================================================================================================
本地程序運行過程:
(1)OS啟動時創(chuàng)建一個用戶態(tài)的加載進程(init0)加載器
(2)加載器?創(chuàng)建進程(設(shè)置環(huán)境_1(argc,argv,env),加載程序,指向進CRTMainStartup函數(shù)(設(shè)置環(huán)境_2),CRT再指向進Main函數(shù)
===================================================================================================
微內(nèi)核:把部分系統(tǒng)服務(wù)放到用戶態(tài)
宏內(nèi)核:所有系統(tǒng)服務(wù)位于內(nèi)核
===================================================================================================
crt0鏈到應(yīng)用程序(客戶端)
共享內(nèi)存存放DLL(所有的DLL都是進程共享):加載DLL時,會把DLL中線程專有數(shù)據(jù)(TLS)拷貝一份到相應(yīng)的進程地址空間
? ? ? ?DLLMain函數(shù):加載/分離DLL調(diào)用的函數(shù),attach/detach
總結(jié)
- 上一篇: 类的继承方式
- 下一篇: socket的系统调用