MyOOPS開放式課程
請加入會員以使用更多個人化功能
來自全球頂尖大學的開放式課程,現在由世界各國的數千名義工志工為您翻譯成中文。請免費享用!
課程來源:MIT
     

6.828 2003秋季課程:作業系統工程(Operating System Engineering, Fall 2003)

翻譯:曾琬瑂
翻譯:陳盈夙(Grace Chen)

Sun Solaris 9 operating system on an MIT Athena workstation.
麻省理工學院Athena工作站上的Sun Solaris™ 9作業系統。(圖片由MIT OCW提供)
Sun Solaris™ 9 operating system on an MIT Athena workstation. (Image courtesy of MIT OCW.)

課程重點

本課程學生在學期末時,將經由完成一系列的實作課程作業開發出自己的作業系統。授課可幫助學生熟悉設計作業系統所需要的主要概念。

Students in this course develop their own operating system by the end of the semester, through the completion of a series of lab assignments. The lectures help to familiarize students with the main concepts needed to engineer an operating system.

課程描述

6.828 這門課程教授工程作業系統的基礎。下列為詳細研究主題:虛擬記憶體、核心和使用者模式、系統呼叫、執行緒、環境切換、中斷、行程間通訊、同步活動間的協 調,以及軟體和硬體間的介面。最重要的是,課程將探討這些概念之間的互動與相互影響。本課程被分為2部分:第一部分將詳細的介紹UNIX® v6作業系統,;第二部分的課堂講稿,包含了在1976年現世的UNIX® v6之後所創建的重要作業系統概念。

6.828 teaches the fundamentals of engineering operating systems. The following topics are studied in detail: virtual memory, kernel and user mode, system calls, threads, context switches, interrupts, interprocess communication, coordination of concurrent activities, and the interface between software and hardware. Most importantly, the interactions between these concepts are examined. The course is divided into two blocks; the first block introduces one operating system, UNIX® v6, in detail. The second block of lectures covers important operating systems concepts invented after UNIX® v6, which was introduced in 1976.


技術需求

本課程網址所提供的.zip檔案必須使用檔案解壓縮軟體,如Winzip®StuffIt®來開啟。同時還需要開發工具來編譯和執行本課程網址中的.c檔案。請參考本課程教材以得知任何特定的使用說明與建議。

File decompression software, such as Winzip® or StuffIt®, is required to open the .zip files found on this course site. Any number of development tools can be used to compile and run the .c files found on this course site. Please refer to the course materials for any specific instructions or recommendations.

師資
講師:
Frans Kaashoek教授
上課時數
教師授課:
每週2節
每節1.5小時
程度
研究所
回應
告訴我們您對本課程或「開放式課程網頁」的建議。
聲明
麻省理工學院開放式課程認可 開放式課程計畫(OOPS)的翻譯計畫,開放式課程計畫(OOPS)乃是運用其獨立團隊、獨立資源、獨立流程進行翻譯計畫之團隊。

所有麻省理工學院開放式課程之材料皆以麻省理工學院開放式課程創作共享授權發佈,所有之翻譯資料皆由開放式課程計畫(OOPS)所提供,並由其負翻譯品質之責任。

此 處麻省理工學院開放式課程之資料乃由 開放式課程計畫(OOPS) 譯為正體中文。麻省理工學院開放式課程在此聲明,不論是否遭遇或發現相關議題,麻省理工學院開放式課程、麻省理工學院教師、麻省理工學院校方並不對翻譯正 確度及完整性作保證。上述單位並對翻譯後之資料不作明示或默許對任一特定目的之適合性之保證、非侵權之保證、或永不出錯之保證。麻省理工學院校方、麻省理 工學院開放式課程對翻譯上之不正確不負任何責任。由翻譯所引發任何關於此等資料之不正確或其他瑕疵,皆由開放式課程計畫(OOPS)負全責,而非麻省理工 學院開放式課程之責。

原文聲明

 

概要

6.828這門課程教授工程作業系統的基礎。你將詳細地研究虛擬記憶體、核心和使用者模式、系統呼叫、執行緒、環境切換、中斷、行程間通訊、同步活動間的協調,以及軟體和硬體間的介面。最重要的是,你將研討這些概念之間的互動,並且學會如何去處理這些互動產生的複雜度。

為了要掌握這些概念,6.828課程有系統地分成3個部分:課堂講稿、相關閱讀資料和主要的實作課 程。課堂講稿和相關閱讀資料可讓你熟悉主要的概念。實作課程則促進你瞭解更深一層的概念,因為你將從最基礎完成創建一個作業系統。在實作課程後你將能體會 設計目標的意思,如「降低複雜度」和「概念上的完整性」。

課堂講稿被組織成2個主要部分。第一部分詳細介紹UNIX® v6這個作業系統。在每一課中,我們將以一部分的v6原始碼為例並且研讀,家庭作業將幫助你預習每一課程。在第一部分的最後(大約是期中),你將瞭解一個 構思設計精良的作業系統原始碼,如此可幫助你創建自己的作業系統。

第二部分的課堂講稿,包含了在UNIX®v6(1976)之後所創建的重要作業系統概念。藉由閱讀研究論文和課堂討論,我們將研讀更多最新的觀念。你也可以在自己的作業系統中實作這些新的概念。

你可能懷疑為何我們研究的是UNIX®v6,而不是最新和最廣泛的Linux®、Windows® 或BSD UNIX®的系統。其中一個理由是UNIX®v6系統不但簡單,程式精簡(由2個人撰寫的9000行程式),而且完整(能提供完整的多使用者分時系統)。 另一個理由是v6具備了智慧型的完整性, 是一個良好設計的典範。最後,幾乎大多數的現代作業系統都採用了v6的構思(包含了c程式語言)。許多現代的UNIX®系統有著和v6一樣的內部結構,而 且他們的資料結構的命名甚至和v6一樣。總之,v6系統雖然舊,但不表示已不適用。(例如牛頓定律在今天仍然適用,而且愛因斯坦的相對論也還相當值得一 讀。)

實作課程就像讓一部車的輪子上路一樣。在實作課程中你將吸收這些概念和他們之間的互動細節。舉例來 說,雖然你已在6.004和6.033的課程中學習到虛擬記憶體,而且在6.828課程中又再複習了一次;很快地你將在實作課程中發現,之前讀過的理論並 沒有令你真的那麼瞭解虛擬記憶體以及它如何和其他概念互相作用。

實作課程由6主題重疊架構組成一個最精簡的作業系統,在其上你可以用自己的shell程式執行簡單命令。(我們保留了最後一次上課時間讓你示範你的作業系統給班上其他人參考)

你所建構的作業系統要有UNIX®-like的功能(如fork和exec系統呼叫),但是要以外核心的方式呈現(即UNIX®的功能大部分以使用者層次類別庫的方式來實現,而非內建在核心裡 )。作業系統的主要部分為:

1. 啟動載入器
2. 記憶體管理
3. 行程和環境切換
4. Fork系統呼叫和IPC
5. Exec系統呼叫和精簡檔案系統
6. shell程式

我們會提供部分的程式碼架構,但是你將實作所有困難的工作。

前5項作業是獨立作業,最後一項是分組作業。第一部分的作業某些部分細節可自由的設計,最後一項作業大部分皆可自由設計。你當然無法完全仿照UNIX® v6;但藉由不同的方法建構出相似的功能,你將吸收到這些概念。

你將建構個人電腦(x86 PC)的作業系統。為了簡化開發過程,我們使用完整的機器模擬器(Bochs)。這個模擬器足以讓你在實際硬體上真正啟動你的作業系統。

在實作課程的最後,你將能輕鬆了解大多數作業系統的原始碼,簡單來說, 就是能夠輕鬆掌握系統軟體。你將瞭解作業系統概念的細節,並將此概念運用在其他的環境底下。你也會更徹底明白x86處理器和C程式語言。

必備先修課程

C程式語言、6.033 資訊系統工程(Computer System Engineering), and 6.170 軟體工程實驗(Laboratory in Software Engineering) (也涉及 6.004)
研究生學分課程 (高等研究生學分課程)
3-6-3
6延伸學位課程
(譯註:(3-6-3)、「研究生學分」和「高等研究生學分」請參考這裏的解說。)

6.828課程研究作業系統工程的基本設計和實作問題。課堂講稿內容是根據UNIX®的研究和研究 論文所編製。課題包含虛擬記憶體、執行緒、環境切換、核心、中斷、系統呼叫、行程間通訊、協調以及軟體和硬體間的介面。各個實作課程的作業教授學生們以C 語言和最少數的x86組合語言,發展一個精簡的作業系統。學生希望具有C程式設計的背景知識。

6.828課程可記為學生在電腦系統學程中工程組必修課程之一。

誰適合加入本課程?

6.828預期的對象主要為想詳細學習作業系統的高年級和工學院碩士班學生。博士班學生也相當歡迎,但必須注意6.828課程並非TQE的核心學科。

計分方式

6.828課程的分數主要根據兩次測驗的結果計算(一個在期中,另一個在最後一週,總共佔30%),實作課程練習(50%),還有家庭作業和課程參與度(合計20%)。

作業繳交方式

繳交實作課程,請在實作課程截止日星期四中午前寄送電子郵件。

每一個實作課程都必須繳交。如果沒有繳交實作課程將得到成績「F」,有繳交實作課程但分數是0分時 將得到成績[D] 。在整個學期中你可以有3天的遲交時間不會影響到你的成績,遲交天數以整數計算:一個作業只要遲交6小時就算一天遲交。當你用完你的遲交天數,每額外遲交 一天,將會讓你總成績受到影響。星期六和星期日也算在內。

合作研究

我們的教學方式相當簡單,皆根據專業標準:在測驗時你不應該和其他同學合作。但所有其他的作業你,可以和任何人合作交換想法和觀念,但是你必須自己完成所有的作業,並且仔細地致謝其他人提供的想法,無論是同學或是你所閱讀的相關資源。


上課時間

授課時間為星期一和星期三各1.5小時。

講師

Frans Kaashoek

講師的致謝

6.828課程由於一群極為出色的助教群今天才能存在:Josh Cates、Russ Cox、Bryan Ford和Emil Sit。他們實現這個課程。我們全體將課程6.828獻給Josh Cates並紀念他,希望Josh對作業系統的熱忱能鼓舞許多的學生。

Overview

6.828 teaches the fundamentals of engineering operating systems. You will study, in detail, virtual memory, kernel and user mode, system calls, threads, context switches, interrupts, interprocess communication, coordination of concurrent activities, and the interface between software and hardware. Most importantly, you will study the interactions between these concepts, and how to manage the complexity introduced by the interactions.

To master the concepts, 6.828 is organized in three parts: lectures, readings, and a major lab. The lectures and readings familiarize you with the main concepts. The lab forces you to understand the concepts at a deep level, since you will build an operating system from the ground up. After the lab you will appreciate the meaning of design goals such "reducing complexity" and "conceptual integrity".

The lectures are organized in two main blocks. The first block introduces one operating system, UNIX® v6, in detail. In each lecture we will take one part of v6 and study its source code; home work assignments will help you prepare for these lectures. At the end of the first block (about half-way the term), you will understand the source code for one well-designed operating system, which will help you building your own operating system.

The second block of lectures covers important operating systems concepts invented after UNIX® v6 (1976). We will study the more modern concepts by reading research papers and discussing them in lecture. You will also implement some of these newer concepts in your operating system.

You may wonder why we are studying UNIX® v6 instead of the latest and greatest version of Linux®, Windows®, or BSD UNIX®. One reason is that UNIX® v6 is simple and small (9,000 lines of code, written by two people), yet complete (it provides a complete multi-user time sharing system). Another reason is that v6 is a great example of good design with intellectual integrity. Finally, almost all modern operating systems have adopted ideas from v6 (including the C programming language). Many modern UNIX® have an internal structure identical to v6 and many of their data structures are still named as in v6. In short, because v6 is old, it doesn't mean it is irrelevant. (The laws of Newton are still relevant and Einstein's papers on relativity theory are still well worth reading too.)

The lab is the place where the rubber meets the road. In the lab you will internalize the details of the concepts and their interactions. For example, although you have seen virtual memory in 6.004, 6.033, and again in 6.828 lectures, you will soon discover, during the labs, that you didn't really understand virtual memory, and how it interacts with other concepts.

The lab is split into 6 major parts that built on top of each other, accumulating in a primitive operating systems on top which you can run simple commands through your own shell. (We reserve the last lecture for you to demo your operating system to the rest of the class.)

The operating system you will build will have UNIX®-like functions (e.g., fork, exec), but is implemented in an exokernel style (i.e., the UNIX® functions are implemented mostly as user-level library instead of built-in to the kernel). The major parts of the operating system are:

1. A boot loader
2. Memory management
3. Processes and context switching
4. Fork and IPC
5. Exec and a primitive file system
6. A shell

We will provide skeleton code for pieces, but most you will have to do all the hard work.

The first 5 assignments are done individually. The last assignment is a team assignment. The first set of assignments have design freedom in the details; the last assignments have a lot of design freedom. You will never be able to pattern match from UNIX® v6; you internalize the concepts by building similar functions in a radical different way.

You will develop your operating system for a personal computer (an x86-based PC). To simplify development we will use a complete machine simulator (Bochs). This simulator is real enough that you can boot your own operating system on the real hardware.

At the end of the lab you will be able to find your way around the source code of most operating systems, and more generally, be comfortable with system software. You will understand many operating systems concepts in detail and will adapt them to other environments. You will also under the x86 processor and the C programming language well.

Prerequisites

C, 6.033, and 6.170 (and, by implication, 6.004)
G (H)
3-6-3
6 EDP

6.828 studies fundamental design and implementation issues in the engineering of operating systems. Lectures are based on a study of UNIX® and research papers. Topics in virtual memory; threads; context switches; kernels; interrupts; system calls; interprocess communication; coordination, and the interaction between software and hardware. Individual laboratory assignments teach students the development of a minimal operating system written in C, with minimal amount of x86 assembly. Knowledge of C programming expected.

Students can use 6.828 to fulfill the engineering concentration requirements for Computer Systems.

Who should take 6.828?

6.828 is primarily intended for seniors and Meng students who want to learn about operating systems in detail. PhD students are also welcome, but note that 6.828 is not a "core" subject for the TQE.

Grading Policy

Grades in 6.828 will be based on the results of two quizzes (one during the term and one in final's week, 30% in total), lab exercises (50%), and home-work assignments and class participation (together 20%).

Turn-in Policy

To turn-in the labs, send email by noon on the Thursday that the lab is due.

You are required to turn in each lab. Labs that are not turned in will receive an F. Labs that are turned in but score 0 points will receive a D. You have a total of 3 late days to use throughout the semester. There are no partial late days: an assignment that is only six hours late uses an entire late day. After you have used up your late days, each additional day late will incur a full letter grade penalty. Saturday and Sunday both count as days.

Collaboration

Our policy is simple, based on professional standards: On quizzes you should not collaborate. On all other assignments you are welcome to work with anyone else on ideas and understanding, but you should complete all assignments on your own, and you should carefully acknowledge all contributions of ideas by others, whether from classmates or from sources you have read.


Class Meetings

Lectures will be held on Monday and Wednesday for 1.5 hours.

Instructor

Frans Kaashoek

Acknowledgements from Instructor

6.828 would not exist today had it not been for a wonderful set of TAs: Josh Cates, Russ Cox, Bryan Ford, and Emil Sit. They made this class a reality. Collectively we dedicate 6.828 to the memory of Josh Cates; We hope that many students will be inspired by Josh's enthusiasm for operating systems.

 

 
課 課程單元 重點日期
第一週
1 作業系統概要
Operating System Overview
 
第二週
2 PC硬體和x86程式設計
PC Hardware and x86 Programming
額外作業:實作課程1(PC啟動程式和呼叫慣例)
Out: Lab 1 (PC Bootstrap and Calling Conventions)
3 定址空間
Address Spaces
 
第三週
4 定址空間管理
Managing Address Spaces
 
5 x86的定址空間
Address Spaces on the x86
額外作業:實作課程2(記憶體管理)
Out: Lab 2 (Memory Management)

作業繳交截止日:實作課程1
Due: Lab 1
第四週
6 執行緒和環境切換
Threads and Context Switching
 
第五週
7 核心進入與離開
Entering and Leaving Kernel
 
8 X86的中斷和例外處理控制
Interrupt and Exception Handling on x86

額外作業:實作課程3(可搶先排程)
Out: Lab 3 (Preemptive Scheduling)

作業繳交截止日:實作課程2
Due: Lab 2

第六週
9 行程抽象化和管理
Process Abstraction and Management
 
10 行程間通訊
Interprocess Communication
 
第七週
  期中考
Mid-term Quiz
額外作業:實作課程4(系統呼叫、IPC分頁錯誤和Fork系統呼叫)
Out: Lab 4 (System Calls, IPC Page Faults, and Fork)

作業繳交截止日:實作課程3
Due: Lab 3
  不授課;實作課程4
No Lecture; Work on Lab 4
 
  不授課;實作課程4
No Lecture; Work on Lab 4
作業繳交截止日:實作課程4,A部分
Due: Lab 4 Part A
11 核心API
Kernel API
 
12 行程間通訊
IPC
作業繳交截止日:實作課程4,B部分
Due: Lab 4 Part B
第八週
13 協調
Coordination
 
14 輸入和輸出系統
I/O
額外作業:實作課程5(檔案系統和繁衍處理)
Out: Lab 5 (File System and Spawn)

作業繳交截止日:實作課程4,C部分
Due: Lab 4 Part C
第九週
15 檔案和目錄系統
Files and Directories
 
第十週
16 可靠的檔案和目錄系統
Reliable Files and Directories
作業繳交截止日:實作課程5,A部分
Due: Lab 5 Part A
17 緩衝區快取和直接記憶體存取
Buffer Cache and DMA
 
第十一週
18 排程
Scheduling
額外作業:實作課程6(Shell程式)
Out: Lab 6 (The Shell)

作業繳交截止日:實作課程5,B部分
Due: Lab 5 Part B
第十二週
19 虛擬記憶體
Virtual Machines
 
20 擴充性
Extensibility
 
第十三週
21 作業系統錯誤
Operating System Bugs

作業系統展示切磋
OS Bakeoff

最後一天課程
Last Day of Classes
作業繳交截止日:實作課程6
Due: Lab 6
第十四週
  隨堂考 2
Quiz 2
 
 

 

除 非另作說明,下面引用的相關閱讀資料是從課程教科書:《Lions UNIX分析第六版(Lions Commentary on UNIX® 6th Edition)》,Lions, John著,La Jolla: Annabooks 於1996年出版(ISBN No. 1-57398-013-7)。書本的原始碼經由PDP Unix Preservation Society提供下載(下載並存放在usr/sys目錄下)。除了下面指定的相關閱讀資料外,也有本課程建議的其他一般相關閱讀資料

Unless otherwise specified, readings referenced below are from the course textbook: Lions, John. Lions Commentary on UNIX® 6th Edition. La Jolla: Annabooks, 1996 (ISBN No. 1-57398-013-7). The source code for the book is also available online (download and look in usr/sys) through the PDP Unix Preservation Society. In addition to the readings assigned below, there are other general readings recommended for the course.

課 課程單元 相關閱讀資料
第一週
1 作業系統概要
Operating System Overview
課程教科書第1, 3, 4和5章。
Chapters 1, 3, 4, and 5 of Lions.
第二週
2 PC硬體和x86程式設計
PC Hardware and x86 Programming
《PC組合語言(PC Assembly Language)》,Carter, Paul A.著,2002年1月15日出版。[除了第六章]

Carter, Paul A. PC Assembly Language. January 15, 2002. [Except Chapter 6.]
3 定址空間
Address Spaces
課程教科書第2和6章和其原始碼。
Chapters 2 and 6 Lions plus source code.
第三週
4 定址空間管理
Managing Address Spaces
第6章和第7-1頁到7-4頁的第一行。
Chapter 6 and Pages 7-1 through 7-4, first column.
5 X86的定址空間
Address Spaces on the x86
「保護模式記憶體(Protected-Mode Memory)」,《IA-32 Intel®架構軟體開發手冊,第三冊:系統程式設計導引》第三章(The IA-32 Intel® Architecture Software Developer's Manual, Volume 3: System Programming Guide)於2002年出版。[包含有:基本架構、指令集參考手冊和系統程式設計導引]

"Protected-Mode Memory." Chapter 3 in The IA-32 Intel® Architecture Software Developer's Manual (System Programming Guide) Vol. 3 (2002). [Includes: Basic Architecture, Instruction Set Reference Manual, and the System Programming Guide.]
第四週
6 執行緒和環境切換
Threads and Context Switching
課程教科書第7章其餘部分和第8章,及其原始碼。
Remainder of Chapters 7 and 8 of Lions plus source code.
第五週
7 核心進入與離開
Entering and Leaving Kernel
課程教科書第9, 10, 11和12章(到sys1.c為止),及其原始碼。
Chapters 9, 10, 11, and 12 (until sys1.c) of Lions plus source code.
8 X86的中斷和例外處理控制
Interrupt and Exception Handling on x86
「中斷和例外處理控制(Interrupt and Exception Handling)」,《IA-32 Intel®架構軟體開發手冊,第三冊:系統程式設計導引》第三章(The IA-32 Intel® Architecture Software Developer's Manual, Volume 3: System Programming Guide)於2002年出版。[包含有:基本架構、指令集參考手冊和系統程式設計導引]

"Interrupt and Exception Handling." Chapter 5 in The IA-32 Intel® Architecture Software Developer's Manual (System Programming Guide) Vol. 3 (2002). [Includes: Basic Architecture, Instruction Set Reference Manual, and the System Programming Guide.]
第六週
9 行程抽象化和管理
Process Abstraction and Management
課程教科書第七章和第12章其餘部分,及其原始碼。
Chapter 7 and remainder of Chapter 12 of Lions plus source code.
10 行程間通訊
Interprocess Communication
課程教科書第13和32章,及其原始碼。
Chapters 13 and 21 of Lions plus source code.
第七週
  期中考
Mid-term Quiz
 
  不授課
No Lecture

實作課程4
Work on Lab 4
 
  不授課
No Lecture

實作課程4
Work on Lab 4
 
11 核心API
Kernel API
「外核心:應用階層資料管理的作業系統架構 (Exokernel:An Operating System Architecture for Application-Level Resource Management)」,Engler, Dawson R.、M. Frans Kaashoek和James O 'Toole, Jr.合著,Cambridge, MA: M.I.T.電腦科學實驗室,1995年作業系統原理論文集。

Engler, Dawson R., M. Frans Kaashoek, and James O 'Toole, Jr. "Exokernel: An Operating System Architecture for Application-Level Resource Management." Symposium on Operating Systems Principles. Cambridge, MA: M.I.T. Laboratory for Computer Science. 1995.
12 行程間通訊
IPC
「由核心設計改善IPC(Improving IPC by Kernel Design)」,Liedtke, Jochen著,第14屆ACM作業系統原理研討會(SOSP),北卡羅來納州艾西維爾市:1993年12月5日~8日。

Liedtke, Jochen. "Improving IPC by Kernel Design." 14th ACM Symposium on Operating System Principles (SOSP). Asheville, North Carolina: 5-8 Dec. 1993.
第八週
13 協調
Coordination
「單一處理器的快速互斥(Fast Mutual Exclusion for Uniprocessors)」,Bershad, Brian N.、David D. Redell和John R. Ellis合著。[本論文其中一種版本在1992年10月第五屆程式語言和作業系統的架構支援研討會(ASPLOS V)中]

Bershad, Brian N., David D. Redell, and John R. Ellis. "Fast Mutual Exclusion for Uniprocessors." [A version of this paper will appear on the Fifth Symposium on Architectural Supports for Programming Languages and Operating Systems (ASPLOS V), Oct 1992.]
14 輸入和輸出系統
I/O
課程教科書第15, 16和17章,及其原始碼。
Chapters 15, 16, and 17 of Lions plus source code.
第九週
15 檔案和目錄系統
Files and Directories
課程教科書第18和19章,及其原始碼。
Chapters 18 and 19 of Lions plus source code.
第十週
16 可靠的檔案和目錄系統
Reliable Files and Directories
「軟體更新:檔案系統中詮釋資料格式更新問題的解決方法(Soft Updates: A Solution to Metadata Update Problem in File Systems)」,Ganger, Gregory R.、M. Kirk McKusick、Craig A. N. Soules和Yale N. Patt合著,ACM電腦系統會刊 Vol.18, No.2, 127-153頁,2002年5月出版。

Ganger, Gregory R., M. Kirk McKusick, Craig A. N. Soules, and Yale N. Patt. "Soft Updates: A Solution to the Metadata Update Problem in File Systems." ACM Transactions on Computer Systems 18, 2 (May 2000): 127-153.
17 緩衝區快取和直接記憶體存取
Buffer Cache and DMA
「IO-Lite:統一I/O緩衝和快取系統(IO-Lite: A Unified I/O Buffering and Caching System)」,Pai, Vivek S.、Peter Druschel和Willy Zwaenepoel合著,1997年ACM電腦系統會刊,萊斯大學,電子與電腦工程學系、電腦科學學系。

Pai, Vivek S., Peter Druschel, and Willy Zwaenepoel. "IO-Lite: A Unified I/O Buffering and Caching System." ACM Transactions on Computer Systems. Department of Electrical and Computer Engineering, Department of Computer Science, Rice University. 1997.
第十一週
18 排程
Scheduling
「減低中斷驅動核心中的活結接收 (Eliminating Receive Livelock in an Interrupt-driven Kernel)」,Mogul, Jeffrey和K. K. Ramakrishnan合著。[本論文原出版於加州聖地牙哥1996年1月舉辦的年度USENIX科技研討會的議項]

Mogul, Jeffrey, and K. K. Ramakrishnan. "Eliminating Receive Livelock in an Interrupt-driven Kernel." [This paper was originally published in the Proceedings of the USENIX 1996 Annual Technical Conference, San Diego, California. January 1996.]
第十二週
19 虛擬機器
Virtual Machines
「Disco:可擴充式多重處理器上運行商品化作業系統(Disco: Running Commodity Operating Systems on Scalable Multiprocessors)」,Bugnion, Edouard、Scott Devine和Mendel Rosenblum合著,法國聖馬儂:1997年10月舉辦的第16屆ACM作業系統原理研討會議項。

Bugnion, Edouard, Scott Devine, and Mendel Rosenblum. "Disco: Running Commodity Operating Systems on Scalable Multiprocessors." In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles. Saint-Malo, France: Oct. 1997.
20 擴充性
Extensibility
「改善商品化作業系統的可靠性(Improving the Reliability of Commodity Operating Systems)」,Swift, Michael M、Brian N. Bershad和Henry M. Levy合著,Seattle, WA:華聖頓大學,電腦科學與工程學系,作業系統原理論文集。

Swift, Michael M, Brian N. Bershad, and Henry M. Levy. "Improving the Reliability of Commodity Operating Systems." Symposium on Operating Systems Principles. Seattle, WA: Department of Computer cience and Engineering, University of Washington.
第十三週
21 作業系統錯誤
Operating System Bugs

作業系統展示切磋
OS Bakeoff

最後一天課程
Last Day of Classes
Approach to Inferring Errors in Systems Code)」,Engler, Dawson、David Yu Chen、Seth Hallem、Andy Chou和Benjamin Chelf合著,Stanford, CA:史丹福大學電腦系統實驗室,2001年作業系統原理論文集, 57-72頁。

Engler, Dawson, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf. "Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code." Symposium on Operating Systems Principles. Stanford, CA: Computer Systems Laboratory, Stanford University, 2001, pp. 57-72.
第十四週
  隨堂考 2
Quiz 2
 


一般相關閱讀資料
General Reading Materials

《PDP11/40處理器手冊(PDP11/40 Processor Handbook)》, Digital Equipment Corporation於1972年出版。
PDP11/40 Processor Handbook. Digital Equipment Corporation. 1972.
「UNIX分時系統(The UNIX Time Sharing System)」,Ritchie, Dennis M. 和Ken L. Thompson合著,貝爾系統技術雜誌,Vol.57,No. 6,part 2 (1978): 1905-1930。(可在課程6.033閱讀此論文)
Ritchie, Dennis M., and Ken L.Thompson. Bell System Technical Journal 57, 6, part 2 (1978): 1905-1930. (You read this paper in 6.033.)

實作課程背景知識教材
Lab Background Material

《C程式語言(The C Programming Language)》,Kernighan和Ritchie合著,Prentice Hall, Inc.於1998年出版。(中譯本:C程式語言,譯者:蔡文能)
Kernighan, and Ritchie. The C Programming Language. Prentice Hall, Inc., 1988.
《PC組合語言(PC Assembly Language)》,Carter, Paul A.著,2002年1月出版。
Carter, Paul A. PC Assembly Language. January 2002.
《IA-32 Intel® 架構軟體開發手冊,第二冊:指令集參考手冊(IA-32 Intel® Architecture Software Developer's Manual, Volume 2: Instruction set reference)》,Intel Corporation於2002年出版。
IA-32 Intel® Architecture Software Developer's Manual, Volume 2: Instruction set reference. Intel Corporation. 2002.
《IA-32 Intel® 架構軟體開發手冊,第三冊:系統程式設計導引(IA-32 Intel® Architecture Software Developer's Manual, Volume 3: System programming guide)》,Intel Corporation於2002年出版。
IA-32 Intel® Architecture Software Developer's Manual, Volume 3: System programming guide. Intel Corporation. 2002.
  除 非另作說明,在課堂講稿裡引用的相關閱讀資料是來自課程教科書:《Lions UNIX分析第六版(Lions Commentary on UNIX® 6th Edition)》,Lions, John著,La Jolla: Annabooks 於1996年出版(ISBN No. 1-57398-013-7)。

Unless otherwise specified, readings referenced in the lecture notes are from the course textbook: Lions, John. Lions Commentary on UNIX® 6th Edition. La Jolla: Annabooks, 1996 (ISBN No. 1-57398-013-7).

課 課程單元
第一週
1 作業系統概要
Operating System Overview
第二週
2 PC硬體和x86程式設計
PC Hardware and x86 Programming
3 定址空間
Address Spaces
第三週
4 定址空間管理
Managing Address Spaces
5 x86的定址空間
Address Spaces on the x86
第四週
6 執行緒和環境切換
Threads and Context Switching
第五週
7 核心進入與離開
Entering and Leaving Kernel
8 X86的中斷和例外處理控制
Interrupt and Exception Handling on x86
第六週
9 行程抽象化和管理
Process Abstraction and Management
10 行程間通訊
Interprocess Communication
第七週
  期中考
Mid-term Quiz
  不授課
No Lecture

實作課程4
Work on Lab 4
  不授課
No Lecture

實作課程4
Work on Lab 4
11 核心API
Kernel API
12 行程間通訊
IPC
第八週
13 協調
Coordination
14 輸入和輸出系統
I/O
第九週
15 檔案和目錄系統
Files and Directories
16 可靠的檔案和目錄系統
Reliable Files and Directories
17 緩衝區快取和直接記憶體存取
Buffer Cache and DMA
第十一週
18 排程
Scheduling
第十二週
19 虛擬機器
Virtual Machines
20 擴充性
Extensibility
第十三週
21 作業系統錯誤
Operating System Bugs


作業系統展示切磋
OS Bakeoff

最後一天課程
Last Day of Classes
第十四週
  隨堂考 2
Quiz 2

  本節所提供的.zip檔案必須使用檔案解壓縮軟體,如Winzip®StuffIt®來開啟。同時還需要開發工具來編譯和執行本節中的.c檔案。請參考實作課程作業以得知使用其餘支援檔案的說明。

File decompression software, such as Winzip® or StuffIt®, is required to open the .zip files in this section. Any number of development tools can be used to compile and run the .c files in this section. Please refer to the lab assignments for instructions on using the rest of the supporting files.


實作課程 支援檔案
實作課程1 - PC啟動程式和呼叫慣例 (PDF)

Lab 1 - PC Bootstrap and Calling Conventions (PDF)
lab1.zip (ZIP) (此zip檔案包含:7個.h檔案、6個.S檔案、4個.c檔案、1個.bochsrc檔案和3個text檔案)

lab1.zip (ZIP) (This zip file includes: 7 .h files, 6 .S files, 4 .c files, 1 .bochsrc file, and 3 text files.)
實作課程2 - 記憶體管理 (PDF)

Lab 2 - Memory Management (PDF)
lab2.zip (ZIP) (此zip檔案包含:19個.h檔案、7個.c檔案、2個.S檔案、1個.bochsrc檔案、1個.pl檔案、1個.sh檔案、1個.bochsrc檔案、1個.40檔案和7個text檔案)

lab2.zip (ZIP) (This zip file includes: 19 .h files, 7 .c files, 2 .S files, 1 .bochsrc file, 1 .pl file, 1 .sh file, 1 .bochsrc file, 1 .40 file, and 7 text files.)
實作課程3 - 可搶先排程 (PDF)

Lab 3 - Preemptive Scheduling (PDF)
lab3.zip (ZIP) (此zip檔案包含:22個.h檔案、10個.c檔案、3個.S檔案、1個.bochsrc檔案、1個.pl檔案、1個.sh檔案、1個.40檔案和7個text檔案)

lab3.zip (ZIP) (This zip file includes: 22 .h files, 10 .c files, 3 .S files, 1 .bochsrc file, 1 .pl file, 1 .sh file, 1 .40 file, and 7 text files.)
實作課程4 - 系統呼叫、IPC分頁錯誤和Fork系統呼叫(PDF)

Lab 4 - System Calls, IPC Page Faults, and Fork (PDF)
lab4.zip (ZIP) (此zip檔案包含:25個.h檔案、39個.c檔案、3個.S檔案、2個.pl檔案、1個.sh檔案、1個.bochsrc檔案、1個.40檔案和8個text檔案)

lab4.zip (ZIP) (This zip file includes: 25 .h files, 39 .c files, 3 .S files, 2 .pl files, 1 .sh file, 1 .bochsrc file, 1 .40 file, and 8 text files.)

lab4-grade-sh.txt (TXT)
lab4-grade-sh.txt (TXT)

printf.txt (TXT)
printf.txt (TXT)
實作課程5 - 檔案系統和繁衍處理(PDF)

Lab 5 - File System and Spawn (PDF)
lab5.zip (ZIP) (此zip檔案包含:grade.sh、init.c和spawn.c)

lab5.zip (ZIP) (This zip file includes: grade.sh, init.c, and spawn.c.)
實作課程6 - Shell程式(PDF)

Lab 6 - The Shell (PDF)
lab6.zip (ZIP) (此zip檔案包含:30個.h檔案、54個.c檔案、3個.S檔案、2個.pl檔案、1個.key檔案、1個.out檔案、1個.bochsrc檔案、2個.sh檔案、1個.40檔案、和14個text檔案)

lab6.zip (ZIP) (This zip file includes: 30 .h files, 54 .c files, 3 .S files, 2 .pl files, 1 .key file, 1 .out file, 1 .bochsrc file, 2 .sh files, 1 .40 file, and 14 text files.)

lab6b.zip (ZIP) (此zip檔案包含:console-closed.c、grade.sh、printf.c和textpiperace2.c)

lab6b.zip (ZIP) (This zip file includes: console-closed.c, grade.sh, printf.c, and testpiperace2.c.)

 

 

在 每次授課前都有一項作業到期。 作業通常包括閱讀作業或者是在授課開始前繳交的書面部分。除非另作說明,在課堂講稿裡引用的相關閱讀資料是來自課程教科書:《Lions UNIX分析第六版(Lions Commentary on UNIX® 6th Edition)》,Lions, John著,La Jolla: Annabooks 於1996年出版(ISBN No. 1-57398-013-7)。

There is a homework assignment due at the beginning of each lecture. The assignment is usually comprised of a reading assignment and/or a written portion to be turned in at the beginning of class. Unless otherwise specified, readings referenced in the lecture notes are from the course textbook: Lions, John. Lions Commentary on UNIX® 6th Edition. La Jolla: Annabooks, 1996 (ISBN No. 1-57398-013-7).


課 課程單元 作業
第一週
1 作業系統概要
Operating System Overview
(PDF)
(PDF)
第二週
2 PC硬體和x86程式設計
PC Hardware and x86 Programming
(PDF)
(PDF)
3 定址空間
Address Spaces
(PDF)
(PDF)
第三週
4 定址空間管理
Managing Address Spaces
(PDF)
(PDF)
5 x86的定址空間
Address Spaces on the x86
(PDF)
(PDF)
第四週
6 執行緒和環境切換
Threads and Context Switching
(PDF)
(PDF)
第五週
7 核心進入與離開
Entering and Leaving Kernel
(PDF)
(PDF)
8 X86的中斷和例外處理控制
Interrupt and Exception Handling on x86
(PDF)
(PDF)
第六週
9 行程抽象化和管理
Process Abstraction and Management
(PDF)
(PDF)
10 行程間通訊
Interprocess Communication
(PDF)
(PDF)
第七週
  期中考
Mid-term Quiz
 
  不授課
No Lecture

實作課程4
Work on Lab 4
 
  不授課
No Lecture

實作課程4
Work on Lab 4
 
11 核心API
Kernel API
(PDF)
(PDF)
12 行程間通訊
IPC
(PDF)
(PDF)
第八週
13 協調
Coordination
(PDF)
(PDF)
14 輸入和輸出系統
I/O
(PDF)
(PDF)
第九週
15 檔案和目錄系統
Files and Directories
(PDF)
(PDF)
第十週
16 可靠的檔案和目錄系統
Reliable Files and Directories
(PDF)
(PDF)
17 高速緩衝區快取和直接記憶體存取
Buffer Cache and DMA
(PDF)
(PDF)
第十一週
18 排程
Scheduling
(PDF)
(PDF)
第十二週
19 虛擬機器
Virtual Machines
(PDF)
(PDF)
20 擴充性
Extensibility
(PDF)
(PDF)
第十三週
21 作業系統錯誤
Operating System Bugs

作業系統展示切磋
OS Bakeoff

最後一天課程
Last Day of Classes
(PDF)
(PDF)
第十四週
  隨堂考 2
Quiz 2
 

 

測驗1
(PDF)
時間1.5小時。可攜帶課本和筆記等。但不可使用手提電腦、無線網路和手機等。不需要計算機。
測驗1的範圍為到第10課的所有教材(行程抽象化和管理)。第10課的主題是行程間通訊,但不包含在測驗 1裏。此教材包括到第10課(對應到課程教科書:《Lions UNIX分析第六版(Lions Commentary on UNIX® 6th Edition)》,Lions, John著,La Jolla: Annabooks 於1996年出版(ISBN No. 1-57398-013-7))的所有v6原始碼,x86那一課中涵蓋的x86架構,而且此教材也包括了實作課程0, 1和2。

Quiz 1 (PDF) is 1.5 hours in duration. It is open book, open notes, etc., but no laptops, wireless networks, cellphones, etc. There shouldn't be a need for a calculator.

Quiz 1 covers all material through lecture 10 (process abstraction and management). Lecture 10 lists Interprocess Communication as a topic, but this is not covered in Quiz 1. This material includes all v6 source code covered through lecture 10 (and corresponding chapters of the course textbook: Lions, John. Lions Commentary on UNIX® 6th Edition. La Jolla: Annabooks, 1996, ISBN No. 1-57398-013-7), x86 architecture as covered in the x86 lectures, and the material covered in labs 0, 1, and 2.

測驗2
(PDF)
時間1.5小時。可攜帶課本和筆記等。但不可使用手提電腦、無線網路和手機等。不需要計算機。請攜帶v6的參考書和指定相關閱讀資料。
測驗2的重點在第11課到期末的教材上。此教材包含了從第11課到期末的所有v6原始碼、指定相關閱讀資料,以及實作課程3,4,5和6所涵蓋的教材。

Quiz 2 (PDF) is 1.5 hours in duration. The quiz is open book, open notes, etc., but no laptops, wireless networks, cellphones, etc. There shouldn't be a need for a calculator. Bring a copy of the v6 book and the assigned readings.

The emphasis in Quiz 2 is on the material from lecture 11 through the end of the term. This material includes all v6 source code covered from lecture 11 through the end of the term, the assigned readings, and the material covered in labs 3, 4, 5, and 6.
 

 

 

回應

告訴我們這些 .ZIP檔如何協助你進行教導與學習。

.ZIP檔案中的課程內容與「麻省理工開放式課程」所出版的材料一樣,必需依照創作共享理念授權同意書規範。

為了離線或窄頻使用者,「麻省理工開放式課程」免費提供了完整的課程檔案下載。「麻省理工開放式課程」永遠是免費開放的電子出版品,你的捐款將可以讓我們維持更高的出版品質,及提供免費下載.ZIP檔案。請閱讀本頁以了解如何在經濟上支援我們。「麻省理工開放式課程」檔案下載的文件內容與課程網頁版本相同,讓你在本機上就可以瀏覽OCW課程材料。

課程下載

6-828Fall-2003.zip

 

 

下載課程的方法

點擊上方的連結來並開始下載 .ZIP 檔案。
使用解壓縮軟體,像是WinZipStuffIt來開啟.ZIP檔。解壓縮後,請依「麻省理工開放式課程」各課程內容需求,選用相應軟體來處理課程內容。你所下載的各課程首頁會列出所需軟體。
完成後,.ZIP即被下載並存放在你的電腦上。若已安裝解壓縮軟體,即可依軟體指示在電腦上開啟並將.ZIP檔案解開。

尋找並使用課程內容

開啟.ZIP並解壓縮後,就可使用瀏覽器開啟「麻省理工開放式課程」的html網頁。解壓後根目錄下的 Welcome.htm 檔案會將你導向該課程首頁。

.ZIP檔案中的課程內容與「麻省理工開放式課程」所出版的材料一樣,必需依照創作共享理念授權同意書規範。

常見問答集

下載一門課要多久?
麻省理工開放式課程的.ZIP檔案大小約介於 1MB 到 100MB間,多為 25MB-30MB。下載.ZIP檔案時可能佔用您一些時間,所需時間依您網路的連線速度而定。
為什麼.ZIP檔案裏少了某些課程材料,像是影片課程或模擬媒體?
像是影片、Java Applet等材料,以及一些沒有直接放在「麻省理工開放式課程」伺服主機上的特殊內容,在.ZIP裏亦不直接收錄,而是以連結的形式提供。你可以瀏覽內容網頁來下載這些影音檔案,請閱讀開放式系統說明網頁的我能夠把RealPlayer的影像檔案儲存到我的硬碟嗎?
如果下載課程時發生問題,我該找誰?

請寄信到 意見反應信箱ocw@mit.edu
留下您對本課程的評論
標題:
您目前為非會員,留言名稱將顯示「匿名非會員」
只能進行20字留言

留言內容:

驗證碼請輸入5 + 1 =

標籤

現有標籤:1
新增標籤:


有關本課程的討論

目前暫無評論,快來留言吧!

Creative Commons授權條款 本站一切著作係採用 Creative Commons 授權條款授權。
協助推廣單位: