學(xué)校的二級網(wǎng)站怎么建設(shè)黑河seo
進(jìn)程-操作系統(tǒng)結(jié)構(gòu)
中文僅本人理解,有錯誤請聯(lián)系我。
操作系統(tǒng)為不同方面服務(wù),有不同的設(shè)計角度。
為用戶: 使用
為程序員:創(chuàng)造
程序員需要關(guān)注的就是system call接口的調(diào)度
file systems:ntfs,ext4
communication:進(jìn)程之間通信的服務(wù),讓它們可以互相傳遞數(shù)據(jù)
UI.(user interfaces)分類:
CLI.:linux shell
GUI:圖形化接口
batch:包含命令和指示的一個文件,類似于批處理文件
system call分類:
系統(tǒng)調(diào)用的實現(xiàn)代碼是操作系統(tǒng)級別的
這個接口通常是面向程序員的
system call開放api,程序員只需要放入api需要的對應(yīng)參數(shù),得到api返回的對應(yīng)值。
例如:調(diào)用printf這個寫在c的lib庫中的api
user mode和kernel mode雙重模式
用戶模式:執(zhí)行用戶代碼
內(nèi)核模式:執(zhí)行操作系統(tǒng)代碼
狀態(tài)碼 0代表內(nèi)核模式,1代表用戶模式
上面知道了操作系統(tǒng)是如何設(shè)計陷阱來讓一個進(jìn)程在用戶模式和系統(tǒng)模式切換
那么我們在切換到系統(tǒng)模式的時候還需要調(diào)用系統(tǒng)級別的函數(shù)。
那么上面的問題操作系統(tǒng)是如何實現(xiàn)的呢?
系統(tǒng)調(diào)用有一個編號
程序調(diào)用時,程序會把需要調(diào)用的系統(tǒng)調(diào)用好寫入一個寄存器,內(nèi)核從寄存器中讀取這個編號,查索引表,確定調(diào)用system call函數(shù)。
程序產(chǎn)生的進(jìn)程號是一個隨機(jī)數(shù),也就是一個動態(tài)分配的號碼,但是此進(jìn)程所產(chǎn)生的系統(tǒng)調(diào)用號是固定的
操作系統(tǒng)的設(shè)計思路
設(shè)計目標(biāo):
用戶目標(biāo):美觀,舒適度
系統(tǒng)目標(biāo):調(diào)用api通用性
機(jī)制與策略的分離:
機(jī)制(machanism):如何做,系統(tǒng)如何調(diào)度程序在用戶模式和系統(tǒng)模式進(jìn)行切換
策略(policy):做什么,在多進(jìn)程(任務(wù))的復(fù)雜情況下,誰先誰后是個問題
微內(nèi)核操作系統(tǒng):是一個機(jī)制和策略分離系統(tǒng)的典型模板如mac os的內(nèi)核。
GNU/LINUX:
Open-source os
Close-source os
hybrid os
GUN is not Unix
Unix是要錢的,但是GUN的目的是在付費系統(tǒng)上開放軟件代碼。
GUN項目的發(fā)布需要滿足GPL
由于開源思想的盛行,并逐漸被一群極客推崇,所以就有了類unix 內(nèi)核的linux 內(nèi)核出現(xiàn)
linux著名的發(fā)行版本