網站介紹
關於我們
毅力王(Elite99)介紹
Elite99隱私權聲明
課程類別
所有課程(46)
國際語文(8)
英語
日語
韓語
歐語
新住民語言
原住民語言
專業類暨檢定考試
其他語言
行銷企劃
社群經營
文案企劃
網路行銷
品牌廣告
口語公關
行銷講堂
財務金融(2)
投資
財務管理
會計財報
不動產
財經趨勢
金融證照
其他
商業管理(2)
專業證照
資訊科技(4)
設計文創(1)
AI智慧(3)
攝影(1)
社會科學(11)
職場技能(11)
生活品味(3)
(0)
還沒有選擇商品
查看購物車
登入/註冊
首頁
資訊科技
作業系統概論
學生數:
27
老師:
羅習五
課程時長:
價格:
Free
取得此課程
目錄
已看過
作業系統概論
OS-ch01.01-為什麼需要OS。好用、又增加硬體效率。
6m 56s
OS-ch01.02-為什麼介紹Linux
4m 57s
OS-ch01.03-雙模式執行與硬體多工
12m 12s
OS-ch01.04-課程相關資源
6m 54s
OS-ch01.05-記憶體分為kernel space與user space。設定記憶體可以從哪個模式執行
7m 27s
OS-ch01.06-記憶體的管理單位。固定大小的page和不固定大小的segment
4m 46s
OS-ch01.07-dual mode & system call。硬體提供privileged mode給核心使用,讓所有應用程式透過核心才能存取真實的硬體
9m 13s
OS-ch01.08-system call & signal。signal會打斷system call的執行,怎麼處理?為什麼要這樣設計?
5m 19s
OS-ch01.09-Linux的核心是「monolithic kernel」,放在核心的東西,使用kernel提供的功能只要function call的代價。放在核心外的需要切換模式
8m 51s
os-ch01.10-Linux或許很小,但不是為核心。Linux核心的插件叫kernel module,執行於kernel mode
3m 15s
os-ch01.11-DRAM開著不用還是耗掉,所以用完它,但怎樣用呢?
6m 36s
os-ch01.12-從記憶體回存到硬碟,讀寫的效能及重要性,考量是否有電池、熱插拔
8m 59s
os-ch01.13-rwx,rwx,rwx到ACL,root不是真實世界的神
6m 32s
os-ch01.14-對I/O下命令,memory-mapped I/O及port-mapped I/O
7m 8s
os-ch01.15-用DMA傳資料,通常CPU cache的資料是最新的,但DMA造成CPU中的cache的資料比較舊!
15m 25s
os-ch01.16-因為DRAM通常只有一個讀寫阜,CPU與DMA競爭記憶體的讀寫權
7m 41s
os-ch01.17-通知處理器的方法,使用中斷,新的PCI有2048個中斷。『老師竟然不小心說出和結依的關係』
4m 26s
os-ch01.18-中斷的硬體概念。CPU上真的有一根針腳叫做INT,輸入「1」就會啟動中斷。
2m 29s
os-ch01.19-中斷的軟體處理機制。中斷有一點像是signal,處理完中斷以後,不能影響應用程式(如:excel、powerpoint)的正常執行
3m 13s
os-ch01.20-處理中斷的函數陣列。依照中斷編號呼叫相對應的function。但實際上不是C函數,而是程式碼,ISR的起始和結束通常要用組語撰寫
5m 7s
os-ch01.21-中斷盡量短
4m 24s
os-ch01.21.5-bottom half,裝置驅動程式的主要部分,不需要立即處理的部份
1m 57s
os-ch01.22-解釋interrupt context。相對於task context的觀念,在interrupt context中有些函數不能呼叫,例如:任何會造成context switch
5m 18s
os-ch01.23-解釋bottom和top half間如何對應。我們希望將ISR盡可能地縮短。讓裝置驅動程式「大部分」執行於bottom half
6m 48s
os-ch01.24-polling和中斷互有優缺點,慢速裝置和OS想要自行控制資料進入系統速度時,使用polling(附帶提競技滑鼠)
4m 39s
os-ch01.25-buffering及kernel bypass。buffering可以讓撰寫程式和裝置的驅動獨立開來
3m 51s
os-ch01.26-Linux中process和thread都是task。產生thread呼叫clone,產生process呼叫fork。這二者背後都是do_fork()
1m 47s
os-ch01.27--scheduler。UNIX最通常的目標是提升系統效率,現在CPU排成器還要顧及使用者體驗和省電等等議題
4m 39s
os-ch01.28-檔案系統,硬碟隨機存取速度不快,相較於flash是很成熟的技術。快閃記憶體貴,隨機存取佳。檔案系統除了顧及效率還要顧及可管理性
1m 12s
os-ch01.29-對稱式多處理器與SMT,SMT將一顆處理器模擬成二顆,可以增加CPU內部資源(如加法器、浮點)的使用率,進而提升效能
5m 8s
os-ch01.30-兼顧效能與省電的設計,大小核心的設計,二種核心使用同樣的指令集。差別在效能與省電
3m 27s
os-ch01.31-多核心技術繼續帶來效能的改進
2m 17s
os-ch01.32-記憶體陣列,可以使用多個bank增加記憶體頻寬,如果每一個bank可以獨立控制,甚至還可能同時增加頻寬和降低延遲
2m 26s
os-ch01.99-Linux裝置驅動架構
14m
os-ch01.33-啟動作業系統。為什麼無法直接由disk啟動呢?BIOS(ROM)有什麼樣的特性?因此我們一定需要用BIOS(ROM)
6m 35s
os-ch02.01-作業系統的目的。對使用者來說是讓硬體更好用,對設計師而言,能提高系統使用率
4m 37s
os-ch02.02-作業系統的使用者介面。圖形化介面適合一般使用者,但文字介面較精準並且批次、穩定性高
1m 48s
os-ch02.03-系統呼叫的定義與Linux的實現。這裡的system call專指kernel對外export的部分。
4m 33s
os-ch02.04-system call的overhead,可能地降低方式。如果不會發生ctx-sw可以少存一點。如果所需的資料沒機密性,就放在user mode
13m 30s
os-ch02.05-Linux的kernel類似插件(plugins),執行於kernel mode。而micro kernel的「元件」則是執行於user mode
1m 54s
os-ch02.06-Linux用C寫物件導向。struct內有function pointer和property,此外可用container of實現繼承或interface
4m 8s
os-ch02.07-Layered approach的優缺點。這個方法在OS上會引起雞生蛋、蛋生雞的問題
1m 43s
os-ch02.08-硬體抽象層,抽象層式讓軟體系統可以抽換掉底層或上層的做法。硬體抽象層將操作方式和操作策略區方開來。不過Android的硬體抽象層居然是在Linux kernel的上方!
8m 27s
ch02.09-正確唸法(期中考送分題,必考)
6m 57s
928-1-01-孔子對作業系統的巨大貢獻
1m 40s
928-1-02-task從生到死
5m 57s
928-1-03-task control block就是OS對這個task的紀錄
4m 13s
928-1-04-三層排成器及切換
7m 32s
928-1-05-task分類成IO及CPU
5m 1s
928-1-06-建立行程,fork與clone
6m 56s
928-1-07-行程結束變殭屍。Linux會釋放掉這個行程的所有資源,只留下task_struct
3m 33s
928-1-08-行程間通訊的基本分類
13m 8s
928-1-09-行程間溝通方法,直接或間接
5m 4s
928-1-10-重要的生產消費問題。透過queue來解決生產與消費者問題。這裡給的方法是很棒的。但只適用於一個生產者與一個效費者
3m 57s
928-1-11-執行緒的動機和「考古與展望」
15m 37s
928-2-00-「仲尼生日快樂歌」,注意聽喔,裡面唱的真的是「仲尼生日快樂」
1m 43s
928-2-01-scheduler的分類。OS kernel是否可以將正在執行的task中斷掉,然後把CPU交給另外一個行程?
10m 10s
928-2-02-課外補充,協調式多工的極致。Netware用200MHz的處理器就可以設計出上百人使用的檔案伺服器
2m 18s
928-2-03-Preemptive OS分二種,差別在核心模式是否可以立即ctx-sw,立即ctx-sw可以更符合優先權的設定,但效能(throughput)會低一些
8m 47s
928-2-04-如何定量分析scheduler的好壞(理論上)
928-2-05-對簡單演算法的分析及啟發,如何預測接下來的CPU burst的長度
12m 20s
928-2-06-傳統UNIX排程的重點
35s
928-2-07-Linux 2.4排程方法的架構,如何處理多核心?如何對multithread及multicore進行優化
8m 2s
928-2-08-Linux 2.4如何提高IO性能。利用epoc的概念,藉由「上個週期的表現」預測接下來。time slice長度與優先權是相關的。沒用完的time要對折
8m 10s
928-3-01-2.6排程器的架構,從架構上解決run queue是效能瓶頸的問題
14m 29s
928-3-02-O(1)的資料結構
5m 12s
928-3-03-O(1)的演算法
6m 45s
928-3-04-複雜度為什麼是o(1),及優缺點
7m 33s
928-3-05-CFS中優先權的意義。優先權越高,在相同時間內拿到的cpu越多次。注意:每個task拿到「一次cpu」的時間相同。
11m 51s
928-3-06-CFS要怎樣設定time slice。CFS依照使用者希望的response設定time slice而不是針對I/O進行優化
1m 3s
928-4-01-CFS的CPU排程部分。給所有task執行一樣的時間,然後每個task的vruntime增幅不一樣,低優先權的增幅大。高優先權的增幅小
13m 40s
928-4-02-CFS怎樣優化IO。從I/O回來的task給予一個比min-vruntime還有小一點點的數字
8m 5s
928-4-03-新進的task如何設定vruntime,就是把vruntime設定為當時的最小值。fork bomb就是密集的fork,造成系統當住
1m 38s
928-4-04-跳脫vruntime談CFS,低優先權的每次重新排隊從最後面,高優先權的的可以從中間開始
9m 12s
os-ch05-01-為什麼要同步?如果不同步的話,或有「重複寫」的問題
12m 50s
os-ch05-02-什麼是正確,簡單來說就是平行化版本和單核心版本的結果要一樣,race condition就是執行結果的順序與事件(如執行)順序相關
4m 56s
os-ch05-03-滿足CS的三條件,及制訂這三個條件的原因為何
3m 52s
os-ch05-04-Peterson's solution的前提。對記憶體的讀取和寫入都是atomic operation
2m 37s
os-ch05-05-race condition的詳細解釋
39s
x86-Arch-01-為什麼要了解計算機結構。CPU執行一個指令和同時執行10個指令對軟體來說使用率都是100%,但透過perf可以知道目前一次執行多少指令。並且為何每週期的指令數較少
6m 15s
x86-Arch-02-為什麼要分成front-和beck-end。在古老時代使用組合語言寫程式,並且記憶體較貴,但精簡指令集更易於硬體優化,因此x86在前端將指令編譯成精簡指令
14m 44s
x86-Arch-介紹fron-end,使用virt. addr.存取x86指令,並且使用分支預測和堆疊引擎分別對if-else和函數的return進行優化
8m 50s
x86-Arch-04-backend,當指令所需要的資料準備好,並且運算器(如加法器)剛好閒置,就可以執行該道指令,這是out of order execution。實體暫存器數量較邏輯暫存器多
12m 31s
x86-Arch-05-在data cache的部分,load和store各自有buffer因此這二個指令通常不是atomic,L2 cache可能會外接core-to-core的通訊
6m 4s
OS-ch05.06-Peterson's solution,這裡是做程式碼的解說,並需要想像,這樣的程式是會平行執行的,例如二個執行緒。必須假設load和store是atomicOS-ch05.06-Peterson's solution,這裡是做程式碼的解說,並需要想像,這樣的程式是會平行執行的,例如二個執行緒。必須假設load和store是atomic
14m 56s
OS-ch05.07-證明,bounded waiting最難證明,重點在於重新執行一次的人,會執行「讓」的程式碼,而另外一個人一直在等待,不會再「讓」
12m 4s
ch05.08-對調turn與flag,這個結果很「嘿嘿」,會錯。因此在實現時必須限制處理器和編譯器的優化
2m 8s
ch05.09-對調以後,證明會出錯。說明在原本證明哪個地方在對調後不滿足
49s
OS-ch05.10-使用C11實現,在這裡我們使用最簡單的atomic operation,不考慮memory order方面的優化
14m 51s
os-ch05.11-Peterson's solution的小結論。50個字。50個字。50個字。50個字。50個字。50個字。50個字。50個字。50個字。
3m 42s
ch05.12-semaphore與spinlock的不同。semaphore在鎖不到資源的時候會ctx-sw
1m 58s
ch05.13-使用銀行轉帳當範例,沒有同步會如何。嘿嘿,這是哪家銀行,這麼佛心
12m 40s
os-ch05.14-只使用一顆處理器實現銀行轉帳問題,在這一連串的例子中我們可以發現,只有一顆處理器速度最快。但如果overhead降低,處理器非常多,那麼平行化還是比較好的
6m 57s
ch05.15-使用直觀方法解決轉帳的同步問題,如果沒有使用atomic直接寫Peterson's solution結果往往是錯的
6m 45s
ch05.16-幾乎是對的,以Peterson's solution為基礎。其中一個while我打錯字
4m 57s
OS-ch05.17-二個atomic operation會是對的嗎?在這個例子中有一個是對的,一個是錯的。但在大部分情況下通常一連串的atomic還是會有race condition
11m 30s
os-ch05.18-semaphore的定義,「0」代表沒有人可以進去critical section(CS),「-x」代表有x個人在等。「+x」代表可以有x個人同時進去。
7m 20s
os-ch05.19-在Kernel如何實現semaphore。大致上就是自己把自己放入waiting queue,呼叫scheduler,醒來時檢查一下為什麼醒來(timeout? 真的等到?)
14m 25s
os-ch05.20-真的只是練習,用semaphore解決「生產者、消費者」問題。這個解法最大的問題在於semaphore的速度很慢,用了三個semaphoe會「很」拉低速度。
11m 29s
os-ch05.21-介紹readers-writers問題。在計算機中,大部分只會對變數進行讀取,少數人會寫入,因此對讀取做優化是很有意義的。如果「會讀又會寫」,那就是「寫」
3m 36s
os-ch05.22-mutex不只是0-1-sem,semaphore中引入了一個重要的觀念「誰,目前鎖定lock」,根據「誰」做一些額外的事情
9m 19s
os-ch05.24-使用較新的方式 test+test_n_set,即atomic_compare_exchange(),這是C11的規範喔
14m 42s
os-ch05.25-用新的方法,多個CPU轉帳更快
2m 5s
os-ch05.26-介紹一下小技巧。在compare_exchange()前面,自己寫一個回圈不斷的檢查lock的值
2m 33s
os-ch05.27-『本週作業』活用compare_exchange。在「Lock」中放入行員的編號。假設行員的員工編號一定不會有「0」
6m 54s
os-ch05.28-回答問題,什麼是test+test_n_set
2m 21s
os-ch05.29-spinlock只能用在共享記憶體系統,例如是「nonuniform memory access」(高階電腦)、「uniform memory access」(多數電腦架構)
3m 19s
os-ch05.30-CPU內部core之間的溝通結構。有可能是格狀網路、樹狀、環狀、crossbar、不規則形狀。core間的溝通速度和結構有關
6m 31s
os-ch05.31-cache coherence,重點在核心可以直接對其他核心溝通,不需要透過記憶體。因此spinlock在設計的時候要考慮溝通成本
6m 33s
os-ch05.32-所有會存取記憶體的裝置都需要加入「一致性協定」,確保所有裝置看到的「內容」是一樣的,現在最新的內容不見得在cache或者DRAM
6m 13s
os-ch05.33-硬體如何實現atomic op,鎖定的越細「代價」越高,但平行度也越高,當core的數量很多時,我們寧願選擇「代價高」但「平行度也高」的方法。
5m 13s
os-ch05.34-更詳細的說明test_n_set和test+test_n_set。主要的原因是前者會不斷的更新「lock」,後者則是當「lock」發生改變,試著去搶lock(設定為「1」)
1m 58s
os-ch05.35-spinlock的設計及使用的「心法」。1. 先改變鎖的狀態,再檢查。2. 硬體支援同時檢查和鎖上。如果「搶先」(preempt)是單方向,可以透過disable,但注意方向
6m 36s
ch0x.1.1-期中總複習
47m 53s
os-10.31
39m 12s
os-10.31.1
41s
os-11.7-期中考補充說明,semaphore與mutex的用法。sem如果要等待一定會ctx-sw,如果mutex要「等太久」會ctx-sw
27m 36s
os-11.13-lockfree queue,這是之前producer-consumer的問題,在該問題中沒有使用critical section但為什麼是對的?
5m 5s
os-11.13-ticket lock,很有名的機制,所有人拿到號碼牌,等叫到號碼以後就可以進入CS
7m 21s
os-11.13-seqLock,writer隨時可以更新資料,reader如果遇到writer,那麼reader重新讀一次
11m 13s
os-11.13-seqlock進階考量,想一下version++是否必須馬上讓其他core知道
2m 58s
os-11.13-rw-spinlock,writer一次拿走所有的票,reader一次拿走一張票。記得先改變狀態再做檢查
5m 5s
os-11.16-relaxed,指令可以前後移動順序,通常用於做全域變數的加總
4m 14s
os-11.16-consume-release,release之前的指令不能往後搬動,確保收的人一定收到完全更新過的。consume則是與「A」無關的可以前後移動順序,consume比較少用
2m 47s
os-11.16-acquire release,很常用的memory order ,常常用來設計critical section、spinlock
2m 14s
os-11.16-acq_rel,「cut」所有指令不能往前或者往後調換順序,例如merge sort
2m 17s
os-11.16-seq_cst,速度最慢,保證所有core看到的記憶體的操作都是同一個順序
4m 8s
os-11.16-peteorson's solution & mem order + hw0c,如果Peterson's solution裡面的flag又是1又是0可以嗎?
2m 35s
os-11.16-TSX與transactional memory,資料庫的transaction大概就是OS的critical section,這裡的tran. mem.是很樂觀的去做交易
3m 44s
deadlock就是互相等待,而且會一直等待下去,例如A和B都需要{x, y},但A拿走x,B拿走y。造成A等B,B等A
3m 14s
飢餓問題,通常來自於「高低優先權的不同」,例如優先權太低的,就很可能會一直拿不到資源
2m 59s
deadlock的四個必要條件,只要一個條件不符合就不會造成deadlock。互斥的資源的,看看可不可以拆成好幾份,每個人用自己的。不夠用再去跟別人借
4m 38s
持有並等待。一開始就拿走所有的資源,或者要拿新的資源前先放棄之前的資源。第一種方法會造成資源使用率低。第二種方法往往會造成「飢餓問題」
5m 1s
「不可搶先」,如果可以讓被搶先的人『重做』就可以解決這個問題。例如transactional memory。例如資料庫的存取機制
4m 38s
環狀等待。只要所有『資源』(資源有順序,非process有順序)形成固定順序(樹狀也沒關係,但資源的使用順序只能朝一個方向),所有人依照順序鎖定資源,就不會造成環狀等待。記憶體的位址就是很有用的順序
2m 4s
「避免環狀等待」:記憶體就是一個「完美的」順序,不會造成環狀等待。
2m 4s
『優先權繼承』:當高的等低的,那麼低的那個人可以繼承高的人的優先權。『PCP』則是高的等低的,那麼繼承『所有可能存取此資源中,優先權最高的』
4m 31s
Banker's algorithm源於51年前(我於2019年寫這段話)。考試常常考這題。
2m 48s
最好能夠事先避免,例如使用軟體偵測程式碼是否按照固定順序鎖定(valgrind),真的進入deadlock狀態,大概只能重新開機了
3m 31s
介紹主記憶體的問題。『分配+釋放』必定會造成『碎裂問題』。可以使用MMU解決,但MMU的成本很高,作業系統實際上是使用『MMU+軟體演算法』
8m 14s
執行檔案長得很像『他在記憶體的樣子』,如果是一個能動態載入應用程式的作業系統。最簡單的方法就是把執行檔複製到記憶體,然後給他heap、stack就可以開始執行了
6m 47s
電腦系統中存在好幾個裝置,例如:記憶體、顯示卡、網路卡,CPU必須對這些裝置進行讀寫的操作。由於PC是動態系統,因此要使用一顆晶片將CPU送出的address對應到不同裝置
1m 34s
如果要解決記憶體的外部碎裂問題,簡單的方式是:搬動應用程式。但程式碼中常常會寫出「絕對位址」,在這樣的情況下可以透過硬體設定(base, limit)解決。但搬移應用程式太花時間。不實用
7m 21s
我們之前談的簡單記憶體管理系統(base, limit),可以用來做「保護」,每個程式碼有獨立的base和limit。這樣的記憶體管理系統稱之為MPU,提供保護機制,但無法解決記憶體外部碎裂問題
2m 53s
記憶體的外部碎裂問題,大概會造成1/3的記憶體無法使用,也就是所有可用記憶體夠多,但他們不是連續的,但程式碼對記憶體的假設是「OS給我一塊連續記憶體」,這要克服
3m 54s
os-12-03
49m 11s
os-12-05
30m 8s
os-12-10
53m 42s
os-12-19
57m 36s
os-12-24
49m 8s
os-期末總複習-1
58m 57s
os-12-26
35m 54s
老師
羅習五
此老師的課程
名稱
等級
發行日期
系統程式設計
2021-03-03 08:37:40
作業系統概論
2021-03-04 05:52:36
內容
老師
已看過
課程時長
作業系統概論
OS-ch01.01-為什麼需要OS。好用、又增加硬體效率。
6m 56s
OS-ch01.02-為什麼介紹Linux
4m 57s
OS-ch01.03-雙模式執行與硬體多工
12m 12s
OS-ch01.04-課程相關資源
6m 54s
OS-ch01.05-記憶體分為kernel space與user space。設定記憶體可以從哪個模式執行
7m 27s
OS-ch01.06-記憶體的管理單位。固定大小的page和不固定大小的segment
4m 46s
OS-ch01.07-dual mode & system call。硬體提供privileged mode給核心使用,讓所有應用程式透過核心才能存取真實的硬體
9m 13s
OS-ch01.08-system call & signal。signal會打斷system call的執行,怎麼處理?為什麼要這樣設計?
5m 19s
OS-ch01.09-Linux的核心是「monolithic kernel」,放在核心的東西,使用kernel提供的功能只要function call的代價。放在核心外的需要切換模式
8m 51s
os-ch01.10-Linux或許很小,但不是為核心。Linux核心的插件叫kernel module,執行於kernel mode
3m 15s
os-ch01.11-DRAM開著不用還是耗掉,所以用完它,但怎樣用呢?
6m 36s
os-ch01.12-從記憶體回存到硬碟,讀寫的效能及重要性,考量是否有電池、熱插拔
8m 59s
os-ch01.13-rwx,rwx,rwx到ACL,root不是真實世界的神
6m 32s
os-ch01.14-對I/O下命令,memory-mapped I/O及port-mapped I/O
7m 8s
os-ch01.15-用DMA傳資料,通常CPU cache的資料是最新的,但DMA造成CPU中的cache的資料比較舊!
15m 25s
os-ch01.16-因為DRAM通常只有一個讀寫阜,CPU與DMA競爭記憶體的讀寫權
7m 41s
os-ch01.17-通知處理器的方法,使用中斷,新的PCI有2048個中斷。『老師竟然不小心說出和結依的關係』
4m 26s
os-ch01.18-中斷的硬體概念。CPU上真的有一根針腳叫做INT,輸入「1」就會啟動中斷。
2m 29s
os-ch01.19-中斷的軟體處理機制。中斷有一點像是signal,處理完中斷以後,不能影響應用程式(如:excel、powerpoint)的正常執行
3m 13s
os-ch01.20-處理中斷的函數陣列。依照中斷編號呼叫相對應的function。但實際上不是C函數,而是程式碼,ISR的起始和結束通常要用組語撰寫
5m 7s
os-ch01.21-中斷盡量短
4m 24s
os-ch01.21.5-bottom half,裝置驅動程式的主要部分,不需要立即處理的部份
1m 57s
os-ch01.22-解釋interrupt context。相對於task context的觀念,在interrupt context中有些函數不能呼叫,例如:任何會造成context switch
5m 18s
os-ch01.23-解釋bottom和top half間如何對應。我們希望將ISR盡可能地縮短。讓裝置驅動程式「大部分」執行於bottom half
6m 48s
os-ch01.24-polling和中斷互有優缺點,慢速裝置和OS想要自行控制資料進入系統速度時,使用polling(附帶提競技滑鼠)
4m 39s
os-ch01.25-buffering及kernel bypass。buffering可以讓撰寫程式和裝置的驅動獨立開來
3m 51s
os-ch01.26-Linux中process和thread都是task。產生thread呼叫clone,產生process呼叫fork。這二者背後都是do_fork()
1m 47s
os-ch01.27--scheduler。UNIX最通常的目標是提升系統效率,現在CPU排成器還要顧及使用者體驗和省電等等議題
4m 39s
os-ch01.28-檔案系統,硬碟隨機存取速度不快,相較於flash是很成熟的技術。快閃記憶體貴,隨機存取佳。檔案系統除了顧及效率還要顧及可管理性
1m 12s
os-ch01.29-對稱式多處理器與SMT,SMT將一顆處理器模擬成二顆,可以增加CPU內部資源(如加法器、浮點)的使用率,進而提升效能
5m 8s
os-ch01.30-兼顧效能與省電的設計,大小核心的設計,二種核心使用同樣的指令集。差別在效能與省電
3m 27s
os-ch01.31-多核心技術繼續帶來效能的改進
2m 17s
os-ch01.32-記憶體陣列,可以使用多個bank增加記憶體頻寬,如果每一個bank可以獨立控制,甚至還可能同時增加頻寬和降低延遲
2m 26s
os-ch01.99-Linux裝置驅動架構
14m
os-ch01.33-啟動作業系統。為什麼無法直接由disk啟動呢?BIOS(ROM)有什麼樣的特性?因此我們一定需要用BIOS(ROM)
6m 35s
os-ch02.01-作業系統的目的。對使用者來說是讓硬體更好用,對設計師而言,能提高系統使用率
4m 37s
os-ch02.02-作業系統的使用者介面。圖形化介面適合一般使用者,但文字介面較精準並且批次、穩定性高
1m 48s
os-ch02.03-系統呼叫的定義與Linux的實現。這裡的system call專指kernel對外export的部分。
4m 33s
os-ch02.04-system call的overhead,可能地降低方式。如果不會發生ctx-sw可以少存一點。如果所需的資料沒機密性,就放在user mode
13m 30s
os-ch02.05-Linux的kernel類似插件(plugins),執行於kernel mode。而micro kernel的「元件」則是執行於user mode
1m 54s
os-ch02.06-Linux用C寫物件導向。struct內有function pointer和property,此外可用container of實現繼承或interface
4m 8s
os-ch02.07-Layered approach的優缺點。這個方法在OS上會引起雞生蛋、蛋生雞的問題
1m 43s
os-ch02.08-硬體抽象層,抽象層式讓軟體系統可以抽換掉底層或上層的做法。硬體抽象層將操作方式和操作策略區方開來。不過Android的硬體抽象層居然是在Linux kernel的上方!
8m 27s
ch02.09-正確唸法(期中考送分題,必考)
6m 57s
928-1-01-孔子對作業系統的巨大貢獻
1m 40s
928-1-02-task從生到死
5m 57s
928-1-03-task control block就是OS對這個task的紀錄
4m 13s
928-1-04-三層排成器及切換
7m 32s
928-1-05-task分類成IO及CPU
5m 1s
928-1-06-建立行程,fork與clone
6m 56s
928-1-07-行程結束變殭屍。Linux會釋放掉這個行程的所有資源,只留下task_struct
3m 33s
928-1-08-行程間通訊的基本分類
13m 8s
928-1-09-行程間溝通方法,直接或間接
5m 4s
928-1-10-重要的生產消費問題。透過queue來解決生產與消費者問題。這裡給的方法是很棒的。但只適用於一個生產者與一個效費者
3m 57s
928-1-11-執行緒的動機和「考古與展望」
15m 37s
928-2-00-「仲尼生日快樂歌」,注意聽喔,裡面唱的真的是「仲尼生日快樂」
1m 43s
928-2-01-scheduler的分類。OS kernel是否可以將正在執行的task中斷掉,然後把CPU交給另外一個行程?
10m 10s
928-2-02-課外補充,協調式多工的極致。Netware用200MHz的處理器就可以設計出上百人使用的檔案伺服器
2m 18s
928-2-03-Preemptive OS分二種,差別在核心模式是否可以立即ctx-sw,立即ctx-sw可以更符合優先權的設定,但效能(throughput)會低一些
8m 47s
928-2-04-如何定量分析scheduler的好壞(理論上)
928-2-05-對簡單演算法的分析及啟發,如何預測接下來的CPU burst的長度
12m 20s
928-2-06-傳統UNIX排程的重點
35s
928-2-07-Linux 2.4排程方法的架構,如何處理多核心?如何對multithread及multicore進行優化
8m 2s
928-2-08-Linux 2.4如何提高IO性能。利用epoc的概念,藉由「上個週期的表現」預測接下來。time slice長度與優先權是相關的。沒用完的time要對折
8m 10s
928-3-01-2.6排程器的架構,從架構上解決run queue是效能瓶頸的問題
14m 29s
928-3-02-O(1)的資料結構
5m 12s
928-3-03-O(1)的演算法
6m 45s
928-3-04-複雜度為什麼是o(1),及優缺點
7m 33s
928-3-05-CFS中優先權的意義。優先權越高,在相同時間內拿到的cpu越多次。注意:每個task拿到「一次cpu」的時間相同。
11m 51s
928-3-06-CFS要怎樣設定time slice。CFS依照使用者希望的response設定time slice而不是針對I/O進行優化
1m 3s
928-4-01-CFS的CPU排程部分。給所有task執行一樣的時間,然後每個task的vruntime增幅不一樣,低優先權的增幅大。高優先權的增幅小
13m 40s
928-4-02-CFS怎樣優化IO。從I/O回來的task給予一個比min-vruntime還有小一點點的數字
8m 5s
928-4-03-新進的task如何設定vruntime,就是把vruntime設定為當時的最小值。fork bomb就是密集的fork,造成系統當住
1m 38s
928-4-04-跳脫vruntime談CFS,低優先權的每次重新排隊從最後面,高優先權的的可以從中間開始
9m 12s
os-ch05-01-為什麼要同步?如果不同步的話,或有「重複寫」的問題
12m 50s
os-ch05-02-什麼是正確,簡單來說就是平行化版本和單核心版本的結果要一樣,race condition就是執行結果的順序與事件(如執行)順序相關
4m 56s
os-ch05-03-滿足CS的三條件,及制訂這三個條件的原因為何
3m 52s
os-ch05-04-Peterson's solution的前提。對記憶體的讀取和寫入都是atomic operation
2m 37s
os-ch05-05-race condition的詳細解釋
39s
x86-Arch-01-為什麼要了解計算機結構。CPU執行一個指令和同時執行10個指令對軟體來說使用率都是100%,但透過perf可以知道目前一次執行多少指令。並且為何每週期的指令數較少
6m 15s
x86-Arch-02-為什麼要分成front-和beck-end。在古老時代使用組合語言寫程式,並且記憶體較貴,但精簡指令集更易於硬體優化,因此x86在前端將指令編譯成精簡指令
14m 44s
x86-Arch-介紹fron-end,使用virt. addr.存取x86指令,並且使用分支預測和堆疊引擎分別對if-else和函數的return進行優化
8m 50s
x86-Arch-04-backend,當指令所需要的資料準備好,並且運算器(如加法器)剛好閒置,就可以執行該道指令,這是out of order execution。實體暫存器數量較邏輯暫存器多
12m 31s
x86-Arch-05-在data cache的部分,load和store各自有buffer因此這二個指令通常不是atomic,L2 cache可能會外接core-to-core的通訊
6m 4s
OS-ch05.06-Peterson's solution,這裡是做程式碼的解說,並需要想像,這樣的程式是會平行執行的,例如二個執行緒。必須假設load和store是atomicOS-ch05.06-Peterson's solution,這裡是做程式碼的解說,並需要想像,這樣的程式是會平行執行的,例如二個執行緒。必須假設load和store是atomic
14m 56s
OS-ch05.07-證明,bounded waiting最難證明,重點在於重新執行一次的人,會執行「讓」的程式碼,而另外一個人一直在等待,不會再「讓」
12m 4s
ch05.08-對調turn與flag,這個結果很「嘿嘿」,會錯。因此在實現時必須限制處理器和編譯器的優化
2m 8s
ch05.09-對調以後,證明會出錯。說明在原本證明哪個地方在對調後不滿足
49s
OS-ch05.10-使用C11實現,在這裡我們使用最簡單的atomic operation,不考慮memory order方面的優化
14m 51s
os-ch05.11-Peterson's solution的小結論。50個字。50個字。50個字。50個字。50個字。50個字。50個字。50個字。50個字。
3m 42s
ch05.12-semaphore與spinlock的不同。semaphore在鎖不到資源的時候會ctx-sw
1m 58s
ch05.13-使用銀行轉帳當範例,沒有同步會如何。嘿嘿,這是哪家銀行,這麼佛心
12m 40s
os-ch05.14-只使用一顆處理器實現銀行轉帳問題,在這一連串的例子中我們可以發現,只有一顆處理器速度最快。但如果overhead降低,處理器非常多,那麼平行化還是比較好的
6m 57s
ch05.15-使用直觀方法解決轉帳的同步問題,如果沒有使用atomic直接寫Peterson's solution結果往往是錯的
6m 45s
ch05.16-幾乎是對的,以Peterson's solution為基礎。其中一個while我打錯字
4m 57s
OS-ch05.17-二個atomic operation會是對的嗎?在這個例子中有一個是對的,一個是錯的。但在大部分情況下通常一連串的atomic還是會有race condition
11m 30s
os-ch05.18-semaphore的定義,「0」代表沒有人可以進去critical section(CS),「-x」代表有x個人在等。「+x」代表可以有x個人同時進去。
7m 20s
os-ch05.19-在Kernel如何實現semaphore。大致上就是自己把自己放入waiting queue,呼叫scheduler,醒來時檢查一下為什麼醒來(timeout? 真的等到?)
14m 25s
os-ch05.20-真的只是練習,用semaphore解決「生產者、消費者」問題。這個解法最大的問題在於semaphore的速度很慢,用了三個semaphoe會「很」拉低速度。
11m 29s
os-ch05.21-介紹readers-writers問題。在計算機中,大部分只會對變數進行讀取,少數人會寫入,因此對讀取做優化是很有意義的。如果「會讀又會寫」,那就是「寫」
3m 36s
os-ch05.22-mutex不只是0-1-sem,semaphore中引入了一個重要的觀念「誰,目前鎖定lock」,根據「誰」做一些額外的事情
9m 19s
os-ch05.24-使用較新的方式 test+test_n_set,即atomic_compare_exchange(),這是C11的規範喔
14m 42s
os-ch05.25-用新的方法,多個CPU轉帳更快
2m 5s
os-ch05.26-介紹一下小技巧。在compare_exchange()前面,自己寫一個回圈不斷的檢查lock的值
2m 33s
os-ch05.27-『本週作業』活用compare_exchange。在「Lock」中放入行員的編號。假設行員的員工編號一定不會有「0」
6m 54s
os-ch05.28-回答問題,什麼是test+test_n_set
2m 21s
os-ch05.29-spinlock只能用在共享記憶體系統,例如是「nonuniform memory access」(高階電腦)、「uniform memory access」(多數電腦架構)
3m 19s
os-ch05.30-CPU內部core之間的溝通結構。有可能是格狀網路、樹狀、環狀、crossbar、不規則形狀。core間的溝通速度和結構有關
6m 31s
os-ch05.31-cache coherence,重點在核心可以直接對其他核心溝通,不需要透過記憶體。因此spinlock在設計的時候要考慮溝通成本
6m 33s
os-ch05.32-所有會存取記憶體的裝置都需要加入「一致性協定」,確保所有裝置看到的「內容」是一樣的,現在最新的內容不見得在cache或者DRAM
6m 13s
os-ch05.33-硬體如何實現atomic op,鎖定的越細「代價」越高,但平行度也越高,當core的數量很多時,我們寧願選擇「代價高」但「平行度也高」的方法。
5m 13s
os-ch05.34-更詳細的說明test_n_set和test+test_n_set。主要的原因是前者會不斷的更新「lock」,後者則是當「lock」發生改變,試著去搶lock(設定為「1」)
1m 58s
os-ch05.35-spinlock的設計及使用的「心法」。1. 先改變鎖的狀態,再檢查。2. 硬體支援同時檢查和鎖上。如果「搶先」(preempt)是單方向,可以透過disable,但注意方向
6m 36s
ch0x.1.1-期中總複習
47m 53s
os-10.31
39m 12s
os-10.31.1
41s
os-11.7-期中考補充說明,semaphore與mutex的用法。sem如果要等待一定會ctx-sw,如果mutex要「等太久」會ctx-sw
27m 36s
os-11.13-lockfree queue,這是之前producer-consumer的問題,在該問題中沒有使用critical section但為什麼是對的?
5m 5s
os-11.13-ticket lock,很有名的機制,所有人拿到號碼牌,等叫到號碼以後就可以進入CS
7m 21s
os-11.13-seqLock,writer隨時可以更新資料,reader如果遇到writer,那麼reader重新讀一次
11m 13s
os-11.13-seqlock進階考量,想一下version++是否必須馬上讓其他core知道
2m 58s
os-11.13-rw-spinlock,writer一次拿走所有的票,reader一次拿走一張票。記得先改變狀態再做檢查
5m 5s
os-11.16-relaxed,指令可以前後移動順序,通常用於做全域變數的加總
4m 14s
os-11.16-consume-release,release之前的指令不能往後搬動,確保收的人一定收到完全更新過的。consume則是與「A」無關的可以前後移動順序,consume比較少用
2m 47s
os-11.16-acquire release,很常用的memory order ,常常用來設計critical section、spinlock
2m 14s
os-11.16-acq_rel,「cut」所有指令不能往前或者往後調換順序,例如merge sort
2m 17s
os-11.16-seq_cst,速度最慢,保證所有core看到的記憶體的操作都是同一個順序
4m 8s
os-11.16-peteorson's solution & mem order + hw0c,如果Peterson's solution裡面的flag又是1又是0可以嗎?
2m 35s
os-11.16-TSX與transactional memory,資料庫的transaction大概就是OS的critical section,這裡的tran. mem.是很樂觀的去做交易
3m 44s
deadlock就是互相等待,而且會一直等待下去,例如A和B都需要{x, y},但A拿走x,B拿走y。造成A等B,B等A
3m 14s
飢餓問題,通常來自於「高低優先權的不同」,例如優先權太低的,就很可能會一直拿不到資源
2m 59s
deadlock的四個必要條件,只要一個條件不符合就不會造成deadlock。互斥的資源的,看看可不可以拆成好幾份,每個人用自己的。不夠用再去跟別人借
4m 38s
持有並等待。一開始就拿走所有的資源,或者要拿新的資源前先放棄之前的資源。第一種方法會造成資源使用率低。第二種方法往往會造成「飢餓問題」
5m 1s
「不可搶先」,如果可以讓被搶先的人『重做』就可以解決這個問題。例如transactional memory。例如資料庫的存取機制
4m 38s
環狀等待。只要所有『資源』(資源有順序,非process有順序)形成固定順序(樹狀也沒關係,但資源的使用順序只能朝一個方向),所有人依照順序鎖定資源,就不會造成環狀等待。記憶體的位址就是很有用的順序
2m 4s
「避免環狀等待」:記憶體就是一個「完美的」順序,不會造成環狀等待。
2m 4s
『優先權繼承』:當高的等低的,那麼低的那個人可以繼承高的人的優先權。『PCP』則是高的等低的,那麼繼承『所有可能存取此資源中,優先權最高的』
4m 31s
Banker's algorithm源於51年前(我於2019年寫這段話)。考試常常考這題。
2m 48s
最好能夠事先避免,例如使用軟體偵測程式碼是否按照固定順序鎖定(valgrind),真的進入deadlock狀態,大概只能重新開機了
3m 31s
介紹主記憶體的問題。『分配+釋放』必定會造成『碎裂問題』。可以使用MMU解決,但MMU的成本很高,作業系統實際上是使用『MMU+軟體演算法』
8m 14s
執行檔案長得很像『他在記憶體的樣子』,如果是一個能動態載入應用程式的作業系統。最簡單的方法就是把執行檔複製到記憶體,然後給他heap、stack就可以開始執行了
6m 47s
電腦系統中存在好幾個裝置,例如:記憶體、顯示卡、網路卡,CPU必須對這些裝置進行讀寫的操作。由於PC是動態系統,因此要使用一顆晶片將CPU送出的address對應到不同裝置
1m 34s
如果要解決記憶體的外部碎裂問題,簡單的方式是:搬動應用程式。但程式碼中常常會寫出「絕對位址」,在這樣的情況下可以透過硬體設定(base, limit)解決。但搬移應用程式太花時間。不實用
7m 21s
我們之前談的簡單記憶體管理系統(base, limit),可以用來做「保護」,每個程式碼有獨立的base和limit。這樣的記憶體管理系統稱之為MPU,提供保護機制,但無法解決記憶體外部碎裂問題
2m 53s
記憶體的外部碎裂問題,大概會造成1/3的記憶體無法使用,也就是所有可用記憶體夠多,但他們不是連續的,但程式碼對記憶體的假設是「OS給我一塊連續記憶體」,這要克服
3m 54s
os-12-03
49m 11s
os-12-05
30m 8s
os-12-10
53m 42s
os-12-19
57m 36s
os-12-24
49m 8s
os-期末總複習-1
58m 57s
os-12-26
35m 54s
羅習五
此老師的課程
名稱
等級
發行日期
系統程式設計
2021-03-03 08:37:40
作業系統概論
2021-03-04 05:52:36
課程洽詢:05-2720411 #15831
系統操作:05-2720411 #15813
傳真 : 05-2722027
聯絡我們
訂閱 / 取消電子報
隱私權聲明
星期一至星期五 08:30-17:30
國定例假日休館
Email:
adultedu@ccu.edu.tw
今日來訪
235
昨日來訪
241
本週來訪
1386
本月來訪
4494
來訪人數
235675
網站介紹
關於我們
毅力王(Elite99)介紹
Elite99隱私權聲明
課程類別
所有課程(46)
國際語文(8)
英語
日語
韓語
歐語
新住民語言
原住民語言
專業類暨檢定考試
其他語言
行銷企劃
社群經營
文案企劃
網路行銷
品牌廣告
口語公關
行銷講堂
財務金融(2)
投資
財務管理
會計財報
不動產
財經趨勢
金融證照
其他
商業管理(2)
專業證照
資訊科技(4)
設計文創(1)
AI智慧(3)
攝影(1)
社會科學(11)
職場技能(11)
生活品味(3)