學校的二級網(wǎng)站怎么建設黑河seo
進程-操作系統(tǒng)結構
中文僅本人理解,有錯誤請聯(lián)系我。
操作系統(tǒng)為不同方面服務,有不同的設計角度。
為用戶: 使用
為程序員:創(chuàng)造
程序員需要關注的就是system call接口的調(diào)度
file systems:ntfs,ext4
communication:進程之間通信的服務,讓它們可以互相傳遞數(shù)據(jù)
UI.(user interfaces)分類:
CLI.:linux shell
GUI:圖形化接口
batch:包含命令和指示的一個文件,類似于批處理文件
system call分類:
系統(tǒng)調(diào)用的實現(xiàn)代碼是操作系統(tǒng)級別的
這個接口通常是面向程序員的
system call開放api,程序員只需要放入api需要的對應參數(shù),得到api返回的對應值。
例如:調(diào)用printf這個寫在c的lib庫中的api
user mode和kernel mode雙重模式
用戶模式:執(zhí)行用戶代碼
內(nèi)核模式:執(zhí)行操作系統(tǒng)代碼
狀態(tài)碼 0代表內(nèi)核模式,1代表用戶模式
上面知道了操作系統(tǒng)是如何設計陷阱來讓一個進程在用戶模式和系統(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)生的進程號是一個隨機數(shù),也就是一個動態(tài)分配的號碼,但是此進程所產(chǎn)生的系統(tǒng)調(diào)用號是固定的
操作系統(tǒng)的設計思路
設計目標:
用戶目標:美觀,舒適度
系統(tǒng)目標:調(diào)用api通用性
機制與策略的分離:
機制(machanism):如何做,系統(tǒng)如何調(diào)度程序在用戶模式和系統(tǒng)模式進行切換
策略(policy):做什么,在多進程(任務)的復雜情況下,誰先誰后是個問題
微內(nèi)核操作系統(tǒng):是一個機制和策略分離系統(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ā)行版本