系統調用 若是一個進程在用戶態須要使用內核態的功能,就進行系統調用從而陷入內核,由操做系統代爲完成。程序員
中斷分類算法
進程是資源分配的基本單位。進程控制塊PCB描述進程的基本信息和運行狀態。安全
線程是獨立調度的基本單位。一個進程中能夠有多個線程,它們共享進程資源。服務器
比較:併發
進程同步是用於控制多個進程按照必定順序執行異步
臨界區:對臨界資源進行訪問的代碼稱爲臨界區。爲了互斥訪問臨界資源,在進入臨界區以前,須要先進行檢查。操作系統
同步:多個進程按照必定順序執行線程
互斥:多個進程同一時刻只有一個進程能進入臨界區。設計
信號量:整形變量,也就是PV操做。若是信號量只能取0或者1,就成爲互斥量,0表示臨界區加鎖,1表示臨界區解鎖。指針
PV 操做由P原語和V原語組成。 P(S):將信號量S的值減去1;若是S > 0,則進程繼續執行;不然該進程置爲等待狀態,排入等待隊列。 V(S):將信號量S的值加1;若是S > 0,繼續執行,不然釋放隊列中第一個等待信號量的進程。
將共享變量和對它們的操做幾種在一個模塊中,併發程序就由這樣的模塊構成。
使用信號量:使用 empty 和 full 分別記錄緩衝區爲空或者滿的數量,使用 mutex 控制對緩衝區的互斥訪問。在生產或消費以前,先判斷是否爲滿或空,若是滿或空,則進入睡眠等待;不然加鎖進行生產或者消費。
容許多個進程同時讀,可是不容許讀寫或寫寫同時發生。使用 count 記錄讀操做的進程數量,一個互斥量 countMutex 對 count 加鎖,一個互斥量 data_mutex 對讀寫的數據加鎖。
爲了防止死鎖:能夠設置條件:
在兩個或者多個併發進程中,若是每一個進程持有某種資源而又等待其它進程釋放它或它們如今保持着的資源,在未改變這種狀態以前都不能向前推動,稱這一組進程產生了死鎖。通俗的講就是兩個或多個進程無限期的阻塞、相互等待的一種狀態。
解決死鎖問題的代價很高,若是發生死鎖不會對用戶形成多大影響,或者發生死鎖機率很低,能夠採用鴕鳥策略。
不試圖阻止死鎖,當檢測到死鎖發生時,採起措施進行恢復。
死鎖恢復:利用搶佔恢復;利用回滾恢復;經過殺死進程恢復
在程序運行以前預防發生死鎖,破壞四個必要條件任意一個便可。
程序運行時避免發生死鎖。若是沒有死鎖發生,而且即便全部進程忽然請求對資源的最大需求,也仍然存在某種調度次序可以使得每個進程運行完畢,則稱該狀態是安全的。
銀行家算法:
虛擬內存的目的是爲了讓物理內存擴充成更大的邏輯內存,從而讓程序得到更多的可用內存。
爲了更好的管理內存,操做系統將內存抽象成地址空間。每一個程序擁有本身的地址空間,這個地址空間被分割成多個塊,每一塊稱爲一頁。這些頁被映射到物理內存,但不須要映射到連續的物理內存,也不須要全部頁都必須在物理內存中。當程序引用到不在物理內存中的頁時,由硬件執行必要的映射,將缺失的部分裝入物理內存並從新執行失敗的指令。
在程序裝入內存時,根據進程的大小動態創建分區,並使得分區的大小正好適合進程的須要,所以系統中分區的大小和數據是可變的。
把主存空間劃分紅大小相等且固定的塊,做爲主存的基本單位。每一個進程也以塊爲單位進行劃分,進程在執行時,以塊爲單位逐個申請主存中的塊空間。
頁表存儲在內存中,用來記錄邏輯地址和實際存儲地址之間的映射關係,以實現從頁號到物理塊號的映射。訪問分頁系統中內存數據須要兩次內存訪問。首先從內存中訪問頁表,從中找到指定的物理塊號,加上頁內偏移獲得實際物理地址;而後根據第一次獲得的物理地址訪問內存取出數據。
若是內存的邏輯地址很大,頁表項不少,須要較大的連續內存空間。能夠採用多級頁表的方法,外層頁表一次性調入內存連續存放,內存頁表離散存放。
分頁是爲了提升內存利用率,分段是爲了知足程序員編寫代碼的邏輯需求。分段內存管理中,地址是二維的,一維是段號,一維是段內地址;其中每一個段的長度不同,並且每一個段內部都是從0開始編址。
分段管理中,每一個段內部是來喜怒內存分配,段和段之間是離散分配的,段表用來保存邏輯地址到物理地址的映射關係。
訪問內存時首先根據段號和段表項的長度計算當前訪問段在段表中的位置,而後訪問段表,獲得該段的物理地址,根據該物理地址以及段內偏移量就能夠獲得須要訪問的內存。
程序的地址空間劃分紅多個擁有獨立地址空間的段,每一個段上的地址空間劃分紅大小相同的頁。這樣既擁有分段系統的共享和保護,又擁有分頁系統的虛擬內存功能。
程序運行過程當中,若是要訪問的頁面不在內存中,發生缺頁中斷從而將該頁調入內存中。此時若是內存已經沒有空閒空間,系統必須從內存調出一個頁面到磁盤中來騰出空間。
頁面置換算法的主要目標是使頁面置換頻率最低。
所選擇的被換出的頁面將是最長時間內不被訪問的頁面。這是一種理論上的算法,由於沒法得知一個頁面多長時間不被訪問。
LRU將最近最久未使用的頁面換出。須要在內存中維護一個全部頁面的鏈表,當頁面被訪問時,將其移動到鏈表表頭。由於每次訪問都須要更新鏈表,代價高。
選擇換出的頁面是最早進入的頁面,該算法將那些常常被訪問的頁面也被換出,缺頁率升高。
頁面設置一個訪問位,並將頁面連接爲一個環形隊列,頁面被訪問的時候訪問位設置爲1。頁面置換的時候,若是當前指針所指頁面訪問爲爲0,那麼置換,不然將其置爲0,循環直到遇到一個訪問爲位0的頁面。
讀寫磁盤塊的時間的影響因素主要有旋轉時間、尋道時間、數據傳輸時間。其中尋道時間最長。
cd /home
切換到對應目錄cd ..
切換到上級目錄cd /
切換到根目錄cd ~
切換到用戶主目錄cd -
切換到上一個操做所在目錄mkdir dirname
建立目錄ls
, ll
查看目錄信息find 目錄 參數
在目錄下查找知足的文件mv 目錄名 新目錄名
修改目錄名mv 目錄名 新位置
移動cp -r 目錄名 目標位置
拷貝目錄(-r 遞歸拷貝)rm -rf 目錄名
刪除touch 文件名
新建文件cat 文件名
查看文件內容more 文件名
查看,能夠顯示百分比,回車能夠向下一行, 空格能夠向下一頁,q能夠退出查看