(音樂) (音樂) (音樂) (音樂) 所以這個作業其實是不只是程式作業 它應該也跟你們之前的程式作業 會發現還蠻不同的 好 那這個程式的這個作業部分的這個分數 這個分數 分數還有這個去評量的話就是 基本上當然第一個是correctness 所以如果都不會跑 答案結果不對當然就不用講 當然就是有問題 大家要去繼續debug把它修正 第二個就是會有demo 所以我們會有助教 不只是你要去解釋你的程式 助教人會去問你問題 就是你是怎麼去設計的怎麼去實作的 因為你會發現其實這些作業是有一定的彈性的 你可以去有很多不同的寫法 甚至於我們會問的問題 甚至於是到什麼程度就是說 或許你在任何一個檔案都可以去宣告一個變數 但是你宣告的地方 如果不恰當的話 助教可能也會提出來問一下你 或是告訴你一下 因為畢竟你可以想像這是一個系統 並不是說程式會動就好 很多時候你放的位置 它每個檔案有它的目的對不對 所以你寫的地方不對 就算最後結果是有的 不代表你有正確的概念 跟符合它的設計的理念在裡頭 所以這些其實當然助教都會盡量的 根據以往的經驗累積等等去告訴各位 不過就自己寫的時候也要注意這一點 不是只會動就好 你要去稍微想一下 你對於這整個作業系統的概念 它整個程式設計概念的角度來講 你這樣子去實作的方式 是不是適合的 所以要注意留意一下 好 最後就report 那report其實不會 這樣就解釋你怎麼實作的 所以就是稍微描述一下 讓助教在demo前 可能就稍微已經了解你的實作的方式 而不是當場才在那邊看你的程式 當然這也可以用來輔助你 就是你自己描述了一遍 所以你可能就按照裡面的內容 解釋給助教聽你的實作的方式是什麼 那比較重要的就是要剛才提醒的 就是可以看見 因為有兩個人嘛 所以要稍微註明解釋一下 到底誰負責哪一塊 這樣才會知道你們是不是兩個人 都有contribution在裡頭 是要分擔的 而不是也很不建議的 有些case我知道 兩個嘛 那大家就輪流 你負責作業一跟三 我負責二跟四 不是沒有啦 我知道很多也是這樣 這非常不建議 像剛才說的不是說你每個人都要寫到程式 一個人負責trace 另外一個負責implement 這也ok啊 所以說但是你不要說這個就丟給你的同伴 然後就這樣子了 自己做自己的 這就很不好 因為代表另外一半的程式作業你完全沒學到 所以這也是不行的 好 OK齁 好 這很基本的啦 這個不需要刻意 大家應該要非常 當作沒看見就是不要遲交就對了 所以我們都有很充足的時間才對 自己分配時間 這大學最重要要會的基本技能之一 所以就是不要遲交 真的遲交的話我們當然就只好 去斟酌的去扣一些分數了
那這是很不建議 因為都寫好了嘛 那還被扣分這太不值得了 所以千萬不要這個去遲交 那當然更不要就是去抄襲等等 我們助教都還蠻有經驗的 都會去用一些tool比對你們的程式碼等等 那demo的時候也會問你們問題 所以你們其實是看得出來的 真的其實是很明顯 尤其是你真的都沒有自己做的 就算你交出來會動 其實看得出來是不是你做的 所以千萬不要這樣子 那也可以討論嘛對不對 所以我們說過你可以在這個forum上討論 但是就是不要做抄襲的動作啦 好 那最後這個當然啦 就是其實我們非常歡迎 同學就在上課的時候 就隨時可以打斷我 然後就問問題 盡量 我會的我當然就盡量回答 或者是解釋不夠清楚 我們就再解釋一遍 所以這個當然是非常歡迎大家 就不需要這個等 就是上課的時候的問題 就盡量的舉手就發問沒問題 但是當然就是不要自己在下面 竊竊私語啊 接電話這些 會影響到你同學學習的 那當然就不好了 所以這很基本的 大家當然我想都知道 好 終於到最後了 所以對於這堂課的基本的這個內容 大家應該知道了 那到底要學什麼咧 作業系統這麼的重要 當然東西非常非常的多 那那本書那麼厚也不是假的 不是說後面都是什麼reference 或者是很大的圖片就這樣子 都是紮實的內容 那所以你可以看見 它一共有八個part 不是chapter 是part 每一個part裡面還有兩三個章節 所以會非常的多 那這堂課我們會cover的部分 其實只有一半而已 就是到了第五個part 那當然原因很明顯 就是我們說的作業系統 或者電腦的組成的三個最重要的要素 不可或缺的要素是什麼 CPU就是process memory 對不對 還有Storage system 或者file system 就是你的檔案 對不對 所以拿到一個電腦 稱之為這個電腦的話 一定有這三個part 所以你可以看見我們前面的 這些就是在講的process memory 還有storage 當然還有overview 因為這整個系統設計的概念 我們剛才說的system code是什麼 會有一個part在介紹 所以其實我們也就cover這些最基礎的 但這些就有好多章節在裡頭了 那後面呢 當然可以有興趣的可以自己看一下 比如說protection security 這個電腦我們都知道很怕中毒 或者是被人家入侵 尤其這個議題是越來越重要 你可以這樣講 因為實在太方便了 到處有網路這些都可以連到電腦裡頭 這個跟當初一開始電腦出現的環境 是完全不同的 所以security這邊其實非常重要 也是屬於系統的一部分 因為你如果把系統就當成一個家
你沒有security 人家可以隨便break in你的家的話 這當然一定不是安全好的一個系統 所以當然也是屬於系統的一部分 但是當然我們這堂課就沒有辦法cover到這邊了 有興趣的未來的研究所 這都有相關的課 這是一個研究的領域 本身就是一個領域了 再來還有分散式系統 對不對 所以就一樣 早期的時候電腦又昂貴 然後這個連接性網路這邊不是很發達 所以可能各自用各自的電腦 但現在不是這樣 現在處理的問題越來越大 最近大家一定也聽過什麼雲端計算 對不對 打巨量資料 這些新的科技或是什麼IoT 大家可能有興趣有接觸到的 可能有稍微聽過這些名詞 總而言之所有事情都不是一台電腦可以做得出來的 一定都是把所有電腦全部連在一起之後 然後一起去管理 變成像是一台電腦一樣去做事情 這就是分散式系統 所以它們就是分散在各地的電腦 所以這當然也是非常熱門的東西 最後當然還有一些Special Purpose 就像一些我們知道控制 現在什麼東西都是用電腦來控制 車子 核電廠 一些武器太空梭等等 全部都是電腦在裡頭 所以這些電腦當然不會跟你一般我們在那邊玩的手機 用一用手機電池就爆掉 這種東西 這個當然差距很遠 但它還是一個系統 它還是要有OS 所以它的考量設計等等 你會發現完全不同 所以這是Special Purpose 它就有它特殊的議題在裡頭 當然也是一些很重要的東西 但這部分我們上課當然就沒辦法講 我們等一下 也就是我們的第一個Chapter 0 不是Chapter 1 Chapter 0 會幫大家先講一下電腦 就是在OS這邊的演進 還有就是會簡單的提一下這些基本的概念跟東西 所以只是一個overview而已 有興趣的同學 當然大家就可以再進去看了 但這部分畢竟不是核心 所以說只是一個概念而已 基本上是未來大家在大四、選修課等等 就可以再進一步的去了解 這幾個part我簡單的先給大家知道一下就好 Overview Introduction 有講跟沒講一樣 但每一個book都有第一個introduction 所以會簡單介紹一下 作業系統的角色到底是什麼 尤其是system structure裡面最重要的東西是什麼 就是system code 各位的第一個作業 system code到底是什麼 它的定義、它的運作的原理非常非常重要 所以也有一個作業在那邊 讓大家實際的去implement 第二個part process 所以可以看到這邊 基本上會分成一個人就是怎麼去schedule process 因為我們都知道電腦上可以run process 現在電腦上面run都是幾千個幾百個 看你要run多少的問題而已 其實可以非常非常多的程式同時run在電腦上 但電腦有幾個CPU再厲害的也不過就十幾個五十幾個 也就是那樣的數字 所以為什麼可以run這麼多的程式 在這麼少的計算的這些硬體上
就是因為有作業系統的存在 它的角色最重要就是scheduling分配資源 到底現在該誰來執行 所以這邊會有process scheduling會是很重要 當然什麼是process等等 這邊會定義會介紹一下 所以同樣的可以看見這裡會有一個作業3 大家會去implement scheduling algorithm 就會知道它怎麼運作了 至少在Nachos這個作業系統上 它真的就可以用不同的方式去做程式的排程 你就可以看到什麼時候哪一個程式開始執行 什麼時候它結束 結束的順序是什麼 這全是作業系統在控制的 第二個部分就是這些process跟process之間 其實他們不只是要去share這個CPU的執行的cycle 他還要去share很多的資源 甚至於有溝通 所以這個部分就在介紹 當他們在有去同時使用相同的資料資源或在溝通的時候 會遇到一個非常非常討厭的問題 叫做synchronization同步化 這個章節是整本作業系統裡面 通常是最可能大家會覺得是最困難的部分 因為很多真的是概念而已 但是這個有一點接近像algorithm一樣 它要更嚴謹 所以不是只是大概知道就好 你要真的make sure他們不會出問題 所以這個章節到時候大家要特別的留意 通常是比較複雜一點的 你要設計同步化的一些policy 去make sure它的正確性 所以到這要注意的synchronization 那是下半部課程的時候最重要的部分就在synchronization這一塊 這當然就沒有作業 因為你去寫程式也不一定能夠證實證明它的正確性 因為可能性太多了 你只是當下那個結果而已 但是schedule裡就會有一個程式 最後兩個part memory跟storage 所以memory的話就會是上半部的時候最複雜的時候 所以最多內容的部分就在memory的管理了 那我們到時候會去講 大家當然也會看見就會有一個作業在那邊去做memory的管理 storage這邊的話相對大家會比較容易的去想像 因為用電腦大家都在存取檔案 電腦在那就是在那邊存檔案看裡面的內容 所以你都在操作那些檔案系統的指令 所以你一定會比較的熟悉比較能夠連接 但是它也相對的比較的雜亂一點 就會發現我們都只會touch到一點點一點點 很基本的但不是很多 為什麼 因為儲存還有在做IO就是input output 這跟變化最大的 像我們知道以前也沒有觸控式螢幕 現在大家都用觸控式螢幕 這就是新的一個IO device了 所以其實它是比較相對比較雜亂的 所以看到這邊有四個章節 好像很多 但每一個其實講的內容並不是那麼的多 也就會稍微比較雜亂一點 但是只讓大家稍微都各方面有一個基本的了解 那檔案系統會特別會請大家再寫一個程式 去決定我一個檔案的內容到底放在硬碟的什麼位置 所以是把使用者的程式的東西 放到physical的device上的一個過程 好最後一頁了 所以最後這個我們整個上課的這個agenda 請大家留意一下我們有對調chapter 我們並不是死板板的 按照這個課本裡的第一章上到最後一章 因為你會發現我們為了要配合我們的程式 MP的部分 必須要先implement memory的部分 你能夠implement完memory之後 你才有辦法run很多個程式在這個作業系統上面 那你能夠run了之後 才有所謂的scheduling的部分 所以其實是要memory先去implement 再去implement scheduling 所以你會發現我們上課的先講完基本的前面的三章 知道的process的基本運作原理之後 我們會先跳到第八跟第九章 就是memory管理的部分 讓大家可以同時就去寫memory的這個層次的部分 也就是midterm之前
我們剛才說的memory是最主要的一個章節 那midterm之後呢 就會開始進到這個process scheduling algorithm 還有synchronization 然後就後面的io系統 那最後當然就是exam 那這樣說我們這兩個exam其實並不會重疊 所以基本上大家就是先focus在前面的部分 final就是focus在後面的課程的部分 (音樂)