1、作業系統基礎
呼叫:kernel通過給應用程式提供system call的方式來提供硬體資源;
注意:應用程式也包括庫檔案;
庫檔案是執行在ring0上的一段程式**,不對客戶直接提**用;
2、操作執行原理(乙個程序和多個程序)
乙個程序:首先把進硬碟中的程式**載入到記憶體(複製),再將這段程式放到cpu上運算。此時,這段程式就會去呼叫(也會自動生成)很多的程序;由這些程序來完成程式制定的任務;
在這個過程中,我們需要解決資料輸入與輸出和儲存的問題。
多個程序(暫時不討論多核、cpu多執行緒的情況):在電腦中一般都是存在等多個程序的,而cpu只有乙個。這時,我們使用time space的方式來給程序分配固定的時間執行;某個程序只能在輪到自己 執行的時候才會被放到cpu上去執行。時間一到,就會自動被踢下來,cpu則會執行下乙個程序;
3、程序優先順序(普通使用者可以轉讓自己的優先順序(高優先=>低優先))
0-139
0-99 守護程序 越大越優先
100-139 普通程序 越小越優先
nice值:定義普通程序的優先順序,-19 - 20
輪了一圈之後怎麼辦?
在記憶體上提供了乙個空間,這個空間會專門用來存放執行過後的程序
當所有程序執行完一遍後,這個空間就會和原有空間對調,再提供給cpu讀取;
一直輪換,直到程序執行完為止。
4、如果程序沒有執行完就被踢下來怎麼辦?(程序的資料怎麼辦)
1、程式資料
2、輸入資料與輸出資料(執行到一半留下來的資料)
3、程序元資料
task struct資料結構體:定義了程序資料的儲存格式;我們將程序資料以及程序元資料儲存於task struct中;這種結構下方便cpu快速儲存與讀取。
實體地址空間 -- 線性位址空間
程序在執行後的一些資料通過線性位址對應的實體地址儲存到記憶體中(頁框page);mmu(記憶體管理單元)就是用來將不連續的實體地址轉換為連續的線性位址。
這些分開的頁框的資料有兩種組織形式:1、鏈表型資料 2、雙向鍊錶
5、如果程序造反怎麼辦?
linux結構下程序也是樹形結構 -- pstree
核心不會直接管理;一般所有的程序都由上一級程序管理 -- 父子程序概念;
最大的程序 -- init 有許可權去管理所有程序。
正常情況:
1、如何生成子程序
寫實複製
父程序在需要完成一項工作的時候自己無法完成,則需要生成對應的子程序來完成這項工作,並且把自己的記憶體空間中的資料複製乙份交給子程序,用來儲存子程序所執行資料;這個過程叫做寫實複製。
2、子程序完成任務以後如何關閉
子程序任務完成,交出所有占用資源,再由父程序關閉子程序,這個週期就結束了。
6、程序間的通訊原理
1、主機內程序通訊
single 訊號通訊
共享記憶體
管道形式
2、主機間程序通訊
streams -- rpc
socket
7、程序型別
守護程序 -- 維護系統的正常執行
普通程序 -- 提**用
另外一種分類方式:根據占用資源的不同分類
占用cpu多的程序 -- 後台執行的程序
占用記憶體多的程序 -- 前台顯示的程序
8、程序的狀態
程序和程式比較起來,程序是有生命週期的,它會被**;
1、running 執行狀態 2、stop 停止狀態 3、sleeping 睡眠狀態 4、zombie 僵死狀態 5、中斷
1訊號 sighup 讓程序重讀配置檔案,不重啟程序
2訊號 sigint 中斷程序
3訊號 sigquit 停止程序
9訊號 sigkill 強制關閉程序,不儲存程序資料
15訊號 sigterm 如果可能的話終止程序
17訊號 sigchld 無條件停止,但不終止程序
18訊號 sigcont 手動讓程序繼續執行
19訊號 sigstop 程序處於停止狀態
kill -9 pid
pkill
直接去關閉程序 -- 可以按照uid(名字)關閉程序
pgrep
程序過濾,也可以做程序查詢 -- 類似於pidof
jobs
作業: -- 程序
前台作業:占用了當前的介面
後台作業:在後台自動執行
ctrl + z 將前台程序轉到後台
fg 切回到後台程序:jobs -l (+代表預設切回來的程序)
bg 把前端程序送回到後台
com & //命令執行的時候會放到後台執行
vim a.txt
.swp
8 30每日總結
分為編譯時的錯誤與執行時的錯誤 處理異常 try和catch trycatch exception e 多個錯誤可以用多個catch 無論是否出現異常都會被執行 修飾符 void fun 引數 throws exception,throw new exception 丟擲異常 throws exce...
程序管理 程序排程
一 概念 1 處理機管理是作業系統的主要功能之一。處理機管理的實現策略決定了作業系統的型別,其演算法好壞直接影響整個系統的效能 2 程序排程 通過某種規則或演算法從就緒 等待 程序佇列中選出乙個程序投入執行 3 排程是乙個基本的作業系統功能。cpu排程是作業系統設計的核心問題 二 cpu排程程式 1...
Linux 程序管理動態程序管理 詳解
訊號種類 kill l列出所有支援的訊號 kill使用訊號控制程序kill 訊號名編號程序優先順序nice linux程序排程及多工 每個cpu在乙個時間點上只能處理乙個程序,通過時間片技術,來同時執行多個程式。pr 系統內定的優先順序值比ni大20 99 39 ni nice優先值可人為變動 20...