操作系統(tǒng) - 哈爾濱工業(yè)大學(xué) 孫志剛 筆記

筆記目錄:

  1. 操作系統(tǒng)結(jié)構(gòu)
  2. 進(jìn)程管理
  3. 線程
  4. CPU調(diào)度
  5. 死鎖
  6. 內(nèi)存管理

操作系統(tǒng)結(jié)構(gòu)

  1. 為了保證穩(wěn)定和安全倡缠,應(yīng)用程序和操作系統(tǒng)內(nèi)核之間通過系統(tǒng)調(diào)用接口實現(xiàn)通信胳岂,應(yīng)用程序不能直接操縱內(nèi)核的信息桶唐。
Screen Shot 2018-04-06 at 12.24.32.png
  1. 中斷服務(wù)程序一定是操作系統(tǒng)編寫的族沃。

  2. 一般很少用到的系統(tǒng)程序渠牲,如系統(tǒng)分區(qū)旋炒,磁盤碎片整理,磁盤快照签杈。系統(tǒng)級的功能有系統(tǒng)級的程序來完成瘫镇,這部分程序普通的用戶不常用,一般由系統(tǒng)管理員用芹壕。

  3. 功能和需求以及硬件和工作的環(huán)境 決定操作系統(tǒng)的結(jié)構(gòu)汇四。

操作系統(tǒng)的簡單結(jié)構(gòu)

聚內(nèi)核(無結(jié)構(gòu)內(nèi)核)
UNIX的系統(tǒng)構(gòu)造-內(nèi)核部分無結(jié)構(gòu)

Screen Shot 2018-04-06 at 13.57.47.png

微內(nèi)核
MINIX3的結(jié)構(gòu)

Screen Shot 2018-04-06 at 14.08.05.png

LINUX的誕生:
Torvalds在閱讀了他當(dāng)時操作系統(tǒng)老師寫的MINIX操作系統(tǒng)后,完成了LINUX系統(tǒng)踢涌,但是他的老師覺得他寫的LINUX一團(tuán)糟通孽,因為他認(rèn)為LINUX仍然沒有擺脫UNIX的設(shè)計范疇,仍然使用大內(nèi)核睁壁。后來他的老師提出了微內(nèi)核的概念背苦,并在MINIX3系統(tǒng)中實現(xiàn)。

內(nèi)核做盡量少的事情潘明,把更多的任務(wù)放到用戶空間(如磁盤操作等)行剂。(效率問題是微內(nèi)核的死穴)

Solaris System

運用了面向?qū)ο蟮乃枷耄瑢⒋疟P操作钳降,文件讀寫等功能仍然放在內(nèi)核部分厚宰,但劃分了不同的模塊。

Screen Shot 2018-04-06 at 14.25.39.png

混合結(jié)構(gòu)-MacOS
MacOS系統(tǒng)有兩個內(nèi)核遂填,一個BSD內(nèi)核(聚內(nèi)核)铲觉,一個Mach內(nèi)核(微內(nèi)核)。

虛擬機結(jié)構(gòu)

Screen Shot 2018-04-06 at 14.32.47.png

未來虛擬機的結(jié)構(gòu):


Screen Shot 2018-04-06 at 14.34.15.png

硬件之上直接是虛擬機吓坚,虛擬機上面再分各種內(nèi)核撵幽。

進(jìn)程管理

計算機系統(tǒng)在啟動后,會進(jìn)入兩種模式礁击,一個叫用戶模式盐杂,一個叫內(nèi)核模式逗载。用戶程序在用戶模式下運行,不能隨意讀寫任意內(nèi)存链烈。

系統(tǒng)引導(dǎo)
計算機通了電之后都經(jīng)歷了哪些事情厉斟?

  1. (加電自檢)當(dāng)我們按下開機鍵之后,首先BIOS會加電自檢(Power On Self Test -post)强衡。BIOS執(zhí)行內(nèi)存地址為FFFF:0000H處的跳轉(zhuǎn)指令捏膨,跳轉(zhuǎn)到固化在ROM中的自檢程序,對系統(tǒng)硬件(顯卡食侮,CPU及硬盤号涯、內(nèi)存、光驅(qū)信息锯七,主板信息)進(jìn)行檢查链快。
  2. (磁盤引導(dǎo))自檢完成后,ROM BIOS會按照系統(tǒng)CMOS設(shè)置中的啟動順序搜索裝有操作系統(tǒng)的磁盤驅(qū)動器眉尸。(ps:從磁盤加載操作系統(tǒng)的原因有二:一是操作系統(tǒng)升級簡單容易域蜗,二是使用戶擁有選擇操作系統(tǒng)的自由。)BIOS將相應(yīng)啟動設(shè)備的第一個扇區(qū)(MBR扇區(qū)(存儲著磁盤分區(qū)等信息噪猾,大小固定為512字節(jié)))讀入內(nèi)存地址為0000:7C00H霉祸。
  3. (執(zhí)行MBR程序)檢查0000:7DFEH-0000:7DFFH(MBR的結(jié)束標(biāo)志位)是否等于55AAH,若不等于則轉(zhuǎn)去嘗試其他啟動設(shè)備袱蜡,如果沒有啟動設(shè)備滿足要求則顯示"NO ROM BASIC"然后死機丝蹭。
  4. 當(dāng)檢測到有啟動設(shè)備滿足要求后,BIOS將控制權(quán)交給相應(yīng)啟動設(shè)備坪蚁。啟動設(shè)備的MBR將自己復(fù)制到0000:0600H處, 然后繼續(xù)執(zhí)行奔穿。
  5. 根據(jù)MBR中的引導(dǎo)代碼啟動引導(dǎo)程序。
  6. 此時的機器才是真正意義上的計算機敏晤。
Screen Shot 2018-04-07 at 14.34.16.png

當(dāng)操作系統(tǒng)內(nèi)核被加載贱田,開始運行內(nèi)核時,就不是boot的內(nèi)容了嘴脾。

加載操作系統(tǒng)的程序叫bootstrap男摧。

在計算機的ROM(計算機主板ROM芯片)里會有一段引導(dǎo)的初始程序。計算機在加電后最先運行的程序就是存放在ROM中的引導(dǎo)程序译打。

百度百科:

BIOS(Basic Input Output System)耗拓。是個人電腦啟動時加載的第一個軟件。它是一組固化到計算機內(nèi)主板上的一個ROM芯片上的程序扶平。它保存著計算機最重要的基本輸入輸出程序帆离,開機后自檢程序和系統(tǒng)自啟動程序蔬蕊,它可以從CMOS中讀寫系統(tǒng)設(shè)置的具體信息结澄。其主要功能是為計算機提供最底層的哥谷、最直接的硬件設(shè)置和控制。此外麻献,BIOS還向作業(yè)系統(tǒng)提供一些系統(tǒng)參數(shù)们妥。系統(tǒng)硬件的變化是由BIOS隱藏,程序使用BIOS功能而不是直接控制硬件∶阄牵現(xiàn)代作業(yè)系統(tǒng)會忽略BIOS提供的抽象層并直接控制硬件組件监婶。

BIOS中主要存放:

  1. 自診斷程序:通過讀取CMOSRAM中的內(nèi)容識別硬件配置,并對其進(jìn)行自檢和初始化齿桃;
  2. CMOS設(shè)置程序:引導(dǎo)過程中惑惶,用特殊熱鍵啟動,進(jìn)行設(shè)置后短纵,存入CMOS RAM中带污;
  3. 系統(tǒng)自舉裝載程序:在自檢成功后將磁盤相對0道0扇區(qū)上的引導(dǎo)程序裝入內(nèi)存,讓其運行以裝入DOS系統(tǒng)香到;
  4. 主要I/O設(shè)備的驅(qū)動程序和中斷服務(wù):由于BIOS直接和系統(tǒng)硬件資源打交道鱼冀,因此總是針對某一類型的硬件系統(tǒng),而各種硬件系統(tǒng)又各有不同悠就,所以存在各種不同種類的BIOS千绪,隨著硬件技術(shù)的發(fā)展,同一種BIOS也先后出現(xiàn)了不同的版本梗脾,新版本的BIOS比起老版本來說荸型,功能更強。

CMOS(Complementary Metal Oxide Semiconductor)互補金屬氧化物半導(dǎo)體炸茧。CMOS是主板上一塊可讀寫的RAM芯片帆疟,用于保存當(dāng)前系統(tǒng)的硬件配置信息和用戶設(shè)定的某些參數(shù)。CMOS RAM由主板上的鈕扣電池供電宇立,即使系統(tǒng)斷電信息也不會丟失踪宠。對CMOS中各項參數(shù)的設(shè)定和更新可通過開機時特定的按鍵實現(xiàn)(一般是Del鍵)。進(jìn)入BIOS設(shè)置程序可對CMOS進(jìn)行設(shè)置妈嘹。一般CMOS設(shè)置習(xí)慣上也被叫做BIOS設(shè)置柳琢。有時人們會把CMOS和BIOS混稱,其實CMOS是主板上的一塊可讀寫的并行或串行FLASH芯片润脸,是用來保存BIOS的硬件配置和用戶對某些參數(shù)的設(shè)定柬脸。

參考: 磁盤引導(dǎo)程序原理及簡介

進(jìn)程的定義
簡單來說,運行起來的程序叫進(jìn)程毙驯。

進(jìn)程在內(nèi)存中:


Screen Shot 2018-04-08 at 22.54.15.png

進(jìn)程的幾個狀態(tài):

Screen Shot 2018-04-08 at 23.09.56.png
Screen Shot 2018-04-08 at 23.13.05.png

進(jìn)程各個狀態(tài)轉(zhuǎn)換圖:

Screen Shot 2018-04-08 at 23.17.30.png
  • 處于running態(tài)的進(jìn)程擁有CPU
  • 當(dāng)處于running態(tài)的進(jìn)程需要等待I/O操作或者等待某個點擊事件后才能進(jìn)行下一步操作倒堕,則此時會進(jìn)入waiting態(tài),讓出CPU爆价。
  • 當(dāng)處于waiting態(tài)的進(jìn)程獲得點擊事件或者I/O資源時垦巴,則會進(jìn)入 ready態(tài)媳搪。
  • 處于ready態(tài)的進(jìn)程獲得CPU后,便會運行起來骤宣,進(jìn)入running態(tài)秦爆。

PCB
操作系統(tǒng)通過PCB來控制進(jìn)程的狀態(tài)。

進(jìn)程的切換:

Screen Shot 2018-04-09 at 13.28.37.png

系統(tǒng)切換進(jìn)程有兩種方式:中斷和系統(tǒng)調(diào)用
中斷的作用就是CPU暫時停止當(dāng)前程序的執(zhí)行轉(zhuǎn)而執(zhí)行處理新情況憔披。
比如等限,當(dāng)一個進(jìn)程運行了比較長的時間,操作系統(tǒng)會發(fā)出一個中斷信號(如通過晶振發(fā)出)芬膝,這時CPU會暫停當(dāng)前進(jìn)程的執(zhí)行望门,來到操作系統(tǒng)中的代碼塊,此時操作系統(tǒng)占有CPU锰霜,操作系統(tǒng)利用CPU將當(dāng)前進(jìn)程的狀態(tài)置為ready怒允,切換到其他進(jìn)程的執(zhí)行。

操作系統(tǒng)進(jìn)入到等待態(tài)是應(yīng)用程序主動通過一些操作進(jìn)入到等待態(tài):
running態(tài)的到waiting態(tài)的進(jìn)程狀態(tài)切換锈遥,則是通過當(dāng)前進(jìn)程通過主動發(fā)起系統(tǒng)調(diào)用纫事,將CPU的使用權(quán)轉(zhuǎn)給操作系統(tǒng),再由操作系統(tǒng)改變進(jìn)程的狀態(tài)所灸。

PCB表的組織形式:


Screen Shot 2018-04-09 at 13.31.42.png

丽惶??下面這一塊不太懂


Screen Shot 2018-04-09 at 14.11.45.png
Screen Shot 2018-04-09 at 14.12.07.png
Screen Shot 2018-04-09 at 14.12.27.png
Screen Shot 2018-04-09 at 14.12.56.png
Screen Shot 2018-04-09 at 14.11.17.png
Screen Shot 2018-04-09 at 14.13.26.png
Screen Shot 2018-04-09 at 14.17.37.png
Screen Shot 2018-04-09 at 14.22.27.png
Screen Shot 2018-04-09 at 14.24.32.png
Screen Shot 2018-04-09 at 14.24.37.png
Screen Shot 2018-04-09 at 14.26.41.png

進(jìn)程間的協(xié)作:獨立與合作

Screen Shot 2018-04-10 at 14.02.53.png

進(jìn)程合作的優(yōu)點:

  1. 信息共享


    Screen Shot 2018-04-10 at 14.04.21.png
  2. 計算速度加快

Screen Shot 2018-04-10 at 14.04.58.png
  1. 進(jìn)程間的通信方式:消息傳遞和共享內(nèi)存
    消息傳遞效率更高爬立。因為共享內(nèi)存的方式會進(jìn)行大量的系統(tǒng)調(diào)用钾唬。


    Screen Shot 2018-04-10 at 14.07.18.png
Screen Shot 2018-04-10 at 14.07.45.png
Screen Shot 2018-04-10 at 14.08.30.png
Screen Shot 2018-04-10 at 14.11.59.png
Screen Shot 2018-04-10 at 14.26.34.png

阻塞方式指的是,在該進(jìn)程沒得到自己所需資源時侠驯,就會被阻塞抡秆,被置為waiting態(tài)。

Screen Shot 2018-04-10 at 14.28.48.png

接收方不拿走這個消息就會被丟棄


Screen Shot 2018-04-10 at 14.28.58.png

會被緩存一會吟策,收的慢的情況下也會丟失


Screen Shot 2018-04-10 at 14.29.02.png

沒有限制


Screen Shot 2018-04-10 at 14.29.08.png
Screen Shot 2018-04-10 at 14.30.07.png
Screen Shot 2018-04-10 at 14.33.33.png

線程

Screen Shot 2018-04-11 at 12.44.32.png

線程的下面這些資源是獨享的儒士,每個線程會有自己:

  • 線程ID
  • 程序計數(shù)器 (存放下一條指令的地址)
  • 寄存器集
  • 棧 (記錄程序的執(zhí)行路徑)


    Screen Shot 2018-04-11 at 12.44.51.png

其他的進(jìn)程的大部分資源會被線程們共享。


Screen Shot 2018-04-11 at 12.48.09.png

單線程與多線程:單線程只有一條執(zhí)行路線檩坚。多線程有各自的執(zhí)行路線着撩。


Screen Shot 2018-04-11 at 12.49.23.png

為什么要創(chuàng)建多線程,而不是選擇創(chuàng)建多進(jìn)程匾委。(比如把耗時的操作拖叙,fork一個進(jìn)程放到里面):

多線程的好處是資源共享(協(xié)作起來更方便),經(jīng)濟(jì)實惠赂乐。進(jìn)程與進(jìn)程之間是完全分隔的薯鳍,不共享(也可以共享,但比較麻煩)挨措,進(jìn)程的創(chuàng)建挖滤,銷毀崩溪,切換開銷都大于線程。

Screen Shot 2018-04-11 at 16.26.41.png

線程分為用戶級線程和內(nèi)核級線程:


Screen Shot 2018-04-11 at 16.40.37.png

用戶級線程指的是壶辜,一個程序在自己內(nèi)部模擬出多個線程,比如担租,保存當(dāng)前正在執(zhí)行的線程的數(shù)據(jù)現(xiàn)場砸民,切換到另一個現(xiàn)場,繼續(xù)執(zhí)行奋救,這樣模擬出了多線程岭参。

用戶級線程的優(yōu)點:

Screen Shot 2018-04-11 at 16.46.47.png

用戶級線程的優(yōu)點:


Screen Shot 2018-04-11 at 16.57.02.png

而且用戶級線程還有一個缺點,就是當(dāng)模擬出多個線程中的一個發(fā)生系統(tǒng)級的阻塞時尝艘,該程序的所有(模擬出的)線程都將被阻塞演侯。因為在系統(tǒng)看來,它就是一個線程背亥。

Screen Shot 2018-04-12 at 13.27.44.png
Screen Shot 2018-04-12 at 13.28.19.png
Screen Shot 2018-04-12 at 13.46.44.png
Screen Shot 2018-04-12 at 13.50.56.png

結(jié)束線程:

  • 直接強制殺死秒际。(會造成一些難以預(yù)料的錯誤,比如該保存的資料沒保存)
  • 告訴線程該退出了狡汉。設(shè)置個退出條件娄徊,達(dá)到條件自己主動退出。

總結(jié)

各個進(jìn)程之間是完全獨立的
線程模型不穩(wěn)定盾戴,任何一個線程出問題寄锐,導(dǎo)致整個進(jìn)程的崩潰
從安全角度看,線程的安全性比進(jìn)程的安全性差

進(jìn)程與線程的區(qū)別:

  • 進(jìn)程絕對隔離尖啡,線程完全共享
  • 進(jìn)程效率低橄仆,線程效率高

CPU調(diào)度

調(diào)度的目的是最大限度的利用CPU。

Screen Shot 2018-04-16 at 15.31.41.png
Screen Shot 2018-04-16 at 15.32.16.png
Screen Shot 2018-04-16 at 15.34.19.png

CPU和I/O交替進(jìn)行:


Screen Shot 2018-04-16 at 15.34.33.png

有些進(jìn)程利用CPU比較多,有些利用I/O比較多:


Screen Shot 2018-04-16 at 15.35.24.png

CPU調(diào)度發(fā)生的情形:


Screen Shot 2018-04-16 at 15.38.20.png
Screen Shot 2018-04-16 at 15.38.33.png
Screen Shot 2018-04-16 at 15.38.40.png
Screen Shot 2018-04-16 at 15.38.58.png

CPU調(diào)度分為搶占式和非搶占式:


Screen Shot 2018-04-16 at 15.39.33.png

分配CPU(恢復(fù)上次運行狀態(tài)等處理既绩,效率靠硬件來決定):

恢復(fù)上次運行狀態(tài)


Screen Shot 2018-04-16 at 15.48.52.png

從系統(tǒng)態(tài)切換到用戶態(tài)


Screen Shot 2018-04-16 at 15.49.06.png

切換完成后跳轉(zhuǎn)到正確的地址開始執(zhí)行:


Screen Shot 2018-04-16 at 15.49.21.png

調(diào)度進(jìn)程和分配資源所花費的時間:

Screen Shot 2018-04-16 at 15.50.34.png

調(diào)度準(zhǔn)則:1.最大化利用CPU


Screen Shot 2018-04-16 at 15.57.44.png

調(diào)度準(zhǔn)則:2.大的吞吐量(單位時間運行的進(jìn)程數(shù)量)


Screen Shot 2018-04-16 at 15.58.33.png

調(diào)度準(zhǔn)則:3.盡可能小的周轉(zhuǎn)時間(從創(chuàng)建到結(jié)束一共經(jīng)過多久wall time(周轉(zhuǎn)時間))


Screen Shot 2018-04-16 at 15.59.00.png

調(diào)度準(zhǔn)則:4.盡可能小的等待時間(在就緒隊列等待時間)

Screen Shot 2018-04-16 at 16.00.03.png

調(diào)度準(zhǔn)則:5.盡可能小的響應(yīng)時間 (接收一個事件到處理該事件經(jīng)過的時間)


Screen Shot 2018-04-16 at 16.00.27.png

先來先服務(wù):


Screen Shot 2018-04-17 at 14.04.47.png

最短作業(yè)優(yōu)先:


Screen Shot 2018-04-17 at 14.05.48.png
Screen Shot 2018-04-17 at 14.06.32.png

兩種調(diào)度模式:

  • 非搶占式和搶占式


    Screen Shot 2018-04-17 at 14.06.32.png

最短剩余時間優(yōu)先:


Screen Shot 2018-04-17 at 14.22.51.png

優(yōu)先級調(diào)度(一種實現(xiàn)策略)

優(yōu)先級調(diào)度可能會導(dǎo)致優(yōu)先級低的進(jìn)程被餓死跪腹。

Round Robin(時間片輪轉(zhuǎn))

Screen Shot 2018-04-17 at 15.04.58.png

如果時間片太大,就變成了先來先服務(wù)
如果時間片太小椎扬,各個進(jìn)程就會被頻繁切換,進(jìn)程切換時比較耗時間的(保存當(dāng)前進(jìn)程的現(xiàn)場具温,調(diào)度算法決定下次調(diào)用哪個進(jìn)程)

將時間片輪轉(zhuǎn)和優(yōu)先級結(jié)合進(jìn)行調(diào)度:

Screen Shot 2018-04-18 at 16.00.23.png

多級隊列(將隊列分為不同的優(yōu)先級)

Screen Shot 2018-04-18 at 16.13.56.png

系統(tǒng)進(jìn)程應(yīng)該處于最高的優(yōu)先級隊列中(I/O綁定的進(jìn)程:用CPU的時間比較短蚕涤,大部分在時間用來I/O)

Screen Shot 2018-04-18 at 16.16.22.png

在隊列之間進(jìn)行調(diào)度:


Screen Shot 2018-04-18 at 16.21.55.png

固定隊列的優(yōu)先級(有可能發(fā)生饑餓):


Screen Shot 2018-04-18 at 16.22.10.png

為了降低饑餓發(fā)生的概率,在具有優(yōu)先級的隊列之間采用時間片:

Screen Shot 2018-04-18 at 16.22.21.png

現(xiàn)在操作系統(tǒng)中大多采用多級反饋隊列調(diào)度算法:

Screen Shot 2018-04-18 at 16.22.43.png
Screen Shot 2018-04-18 at 16.24.23.png
Screen Shot 2018-04-18 at 16.25.11.png

優(yōu)先級從上到下依次降低


Screen Shot 2018-04-18 at 16.27.10.png

進(jìn)程第一次運行時铣猩,都被放在優(yōu)先級最高的隊列中(quantum=8(分配的時間片)的隊列)揖铜,根據(jù)該進(jìn)程運行的狀況將其移到響應(yīng)的隊列中。如:當(dāng)進(jìn)程第一次被運行時达皿,先被放到上圖quantum=8的隊列中(優(yōu)先級從上到下依次降低)天吓,當(dāng)給該隊列分配的8個時間片全被該進(jìn)行消耗完的情況下贿肩,將該進(jìn)程移到下一個優(yōu)先級較低的隊列中;在quantum=16的隊列中時龄寞,給該隊列分配的16個時間片又全被該進(jìn)程消耗完汰规,則將其移到下一個優(yōu)先級較低的隊列。

多核處理器:


Screen Shot 2018-04-19 at 14.10.38.png
Screen Shot 2018-04-19 at 14.13.43.png

多處理器面臨的問題:

Screen Shot 2018-04-19 at 14.14.28.png

對稱多處理器:

Screen Shot 2018-04-19 at 14.21.04.png
Screen Shot 2018-04-19 at 14.21.36.png

所有處理器共享同一個就緒隊列(會存在一個問題物邑,當(dāng)進(jìn)程從一個CPU被切到另一個CPU時溜哮,會導(dǎo)致Cache刷新,有性能損耗)


Screen Shot 2018-04-19 at 14.21.51.png
Screen Shot 2018-04-19 at 14.23.22.png

CPU的親和性:(可將某個進(jìn)程與某個特定的CPU綁定)

Screen Shot 2018-04-26 at 18.14.47.png
Screen Shot 2018-04-26 at 18.15.22.png
Screen Shot 2018-04-26 at 18.18.04.png
Screen Shot 2018-05-10 at 20.29.27.png
Screen Shot 2018-05-10 at 20.27.23.png
Screen Shot 2018-05-10 at 20.28.09.png
Screen Shot 2018-05-10 at 20.32.47.png

防止兩個進(jìn)程同時訪問臨界區(qū)的方法1:

Screen Shot 2018-05-10 at 21.03.10.png
Screen Shot 2018-05-10 at 21.12.18.png

關(guān)了中斷后就不會進(jìn)行進(jìn)程切換色解,當(dāng)一個進(jìn)程進(jìn)入臨界區(qū)后關(guān)中斷


Screen Shot 2018-05-10 at 21.12.50.png
Screen Shot 2018-05-10 at 21.14.36.png
Screen Shot 2018-05-10 at 21.15.13.png
Screen Shot 2018-05-10 at 21.16.01.png
Screen Shot 2018-05-10 at 21.18.04.png
Screen Shot 2018-05-14 at 12.07.13.png
Screen Shot 2018-05-14 at 12.12.05.png
Screen Shot 2018-05-14 at 12.13.15.png

死循環(huán)等待消耗CPU茂嗓,造成性能損耗。這種方式也稱為自旋鎖科阎。

Screen Shot 2018-05-14 at 12.13.33.png
Screen Shot 2018-05-14 at 12.16.48.png
Screen Shot 2018-05-14 at 12.18.46.png
Screen Shot 2018-05-14 at 12.20.43.png
Screen Shot 2018-05-14 at 12.20.51.png
Screen Shot 2018-05-14 at 12.21.53.png
Screen Shot 2018-05-14 at 12.25.48.png
Screen Shot 2018-05-14 at 12.26.26.png
Screen Shot 2018-05-14 at 12.27.44.png
Screen Shot 2018-05-14 at 12.37.12.png
Screen Shot 2018-05-14 at 12.40.57.png
Screen Shot 2018-05-14 at 12.44.35.png
Screen Shot 2018-05-14 at 12.47.19.png
Screen Shot 2018-05-17 at 13.23.24.png
Screen Shot 2018-05-17 at 13.24.09.png
Screen Shot 2018-05-17 at 13.25.19.png
Screen Shot 2018-05-17 at 13.26.27.png
Screen Shot 2018-05-17 at 14.03.05.png
Screen Shot 2018-05-17 at 14.10.45.png
Screen Shot 2018-05-17 at 14.14.16.png
Screen Shot 2018-05-17 at 14.20.22.png

哲學(xué)家就餐問題的另外一種解決方案:

給每個就餐的哲學(xué)家按順序編號述吸,奇數(shù)號的哲學(xué)家第一次只能拿左邊的筷子,偶數(shù)號哲學(xué)家第一次只能拿右邊的筷子锣笨。這樣便可以保證至少有一個哲學(xué)家可以拿到兩只筷子蝌矛。
Screen Shot 2018-05-17 at 14.34.23.png
Screen Shot 2018-05-17 at 14.37.13.png
Screen Shot 2018-05-18 at 10.31.17.png
Screen Shot 2018-05-18 at 12.40.44.png
Screen Shot 2018-05-18 at 12.42.17.png
Screen Shot 2018-05-18 at 15.47.50.png
Screen Shot 2018-05-18 at 15.49.21.png
Screen Shot 2018-05-18 at 15.49.46.png
Screen Shot 2018-05-18 at 15.51.39.png

不死鎖:


Screen Shot 2018-05-18 at 15.52.17.png

死鎖:


Screen Shot 2018-05-18 at 15.54.02.png

不死鎖:


Screen Shot 2018-05-18 at 15.54.53.png
Screen Shot 2018-05-18 at 15.55.39.png

死鎖的四個條件:

  1. 互斥
  2. 保持和等待
  3. 不可剝奪
  4. 循環(huán)等待(我要你的,你要他的错英,他要我的)
Screen Shot 2018-05-18 at 15.56.25.png

解決死鎖:

  1. 預(yù)防死鎖
  2. 避免死鎖
  3. 死鎖的檢測和恢復(fù)
  4. 鴕鳥算法(死鎖裝作沒看見)(讓軟件開發(fā)者自己去解決)
Screen Shot 2018-05-18 at 15.56.41.png
Screen Shot 2018-05-18 at 16.00.52.png
Screen Shot 2018-05-18 at 16.01.14.png
Screen Shot 2018-05-18 at 16.02.20.png
Screen Shot 2018-05-18 at 16.03.42.png
Screen Shot 2018-05-18 at 16.04.29.png
Screen Shot 2018-05-18 at 16.04.52.png
Screen Shot 2018-05-18 at 16.05.22.png
Screen Shot 2018-05-18 at 16.12.22.png
Screen Shot 2018-05-19 at 14.41.01.png
Screen Shot 2018-05-19 at 14.42.16.png
Screen Shot 2018-05-19 at 14.44.23.png
Screen Shot 2018-05-19 at 15.18.14.png
Screen Shot 2018-05-19 at 15.18.21.png
Screen Shot 2018-05-19 at 15.19.07.png
Screen Shot 2018-05-19 at 15.21.33.png
Screen Shot 2018-05-19 at 15.25.32.png
Screen Shot 2018-05-19 at 15.25.40.png
Screen Shot 2018-05-19 at 15.25.56.png
Screen Shot 2018-05-19 at 15.26.02.png
Screen Shot 2018-05-19 at 15.42.10.png
Screen Shot 2018-05-19 at 15.42.18.png
Screen Shot 2018-05-19 at 15.42.43.png
Screen Shot 2018-05-19 at 16.09.57.png
Screen Shot 2018-05-19 at 16.10.22.png
Screen Shot 2018-05-19 at 16.11.39.png
Screen Shot 2018-05-19 at 16.18.22.png
Screen Shot 2018-05-19 at 16.18.37.png
Screen Shot 2018-05-19 at 16.19.10.png
Screen Shot 2018-05-19 at 16.23.45.png
Screen Shot 2018-05-19 at 16.24.47.png
Screen Shot 2018-05-19 at 16.25.40.png
Screen Shot 2018-05-19 at 16.26.19.png
Screen Shot 2018-05-19 at 16.26.58.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朴读,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子走趋,更是在濱河造成了極大的恐慌衅金,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件簿煌,死亡現(xiàn)場離奇詭異氮唯,居然都是意外死亡,警方通過查閱死者的電腦和手機姨伟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門惩琉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夺荒,你說我怎么就攤上這事瞒渠。” “怎么了技扼?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵伍玖,是天一觀的道長。 經(jīng)常有香客問我剿吻,道長窍箍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮椰棘,結(jié)果婚禮上纺棺,老公的妹妹穿的比我還像新娘。我一直安慰自己邪狞,他們只是感情好祷蝌,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帆卓,像睡著了一般巨朦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳞疲,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天罪郊,我揣著相機與錄音蠕蚜,去河邊找鬼尚洽。 笑死,一個胖子當(dāng)著我的面吹牛靶累,可吹牛的內(nèi)容都是我干的腺毫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挣柬,長吁一口氣:“原來是場噩夢啊……” “哼潮酒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邪蛔,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤急黎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侧到,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勃教,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年匠抗,在試婚紗的時候發(fā)現(xiàn)自己被綠了故源。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡汞贸,死狀恐怖绳军,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情矢腻,我是刑警寧澤门驾,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站多柑,受9級特大地震影響猎唁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一诫隅、第九天 我趴在偏房一處隱蔽的房頂上張望腐魂。 院中可真熱鬧,春花似錦逐纬、人聲如沸蛔屹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兔毒。三九已至,卻和暖如春甸箱,著一層夾襖步出監(jiān)牢的瞬間育叁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工芍殖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留豪嗽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓豌骏,卻偏偏與公主長得像龟梦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子窃躲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理计贰,服務(wù)發(fā)現(xiàn),斷路器蒂窒,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計算機的軟硬件資源躁倒,并合理的組織調(diào)度計算機的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 11,928評論 3 34
  • 一洒琢、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運行的地址不確定 關(guān)于...
    SeanCST閱讀 7,806評論 0 27
  • 第一天 二秧秉、 “哦操,行不行拔撤铩福贞!到底她媽咋回事啊停士!”桃子有點慌了挖帘。 “你別說,沒準(zhǔn)她它媽世界末日了”孫子蒙說了一句...
    孤獨的郭先生閱讀 258評論 4 1
  • .box{height: 100px;overflow-y: auto;} .box::-webkit-scrol...
    甘蔗夫閱讀 1,134評論 0 0