Presentation is loading. Please wait.

Presentation is loading. Please wait.

Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 1www.nand2tetris.org Operating Systems.

Similar presentations


Presentation on theme: "Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 1www.nand2tetris.org Operating Systems."— Presentation transcript:

1 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 1www.nand2tetris.org Operating Systems Elements of Computing Systems, Nisan & Schocken, MIT Press www.idc.ac.il/tecswww.idc.ac.il/tecs www.nand2tetris.org Building a Modern Computer From First Principles

2 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 2www.nand2tetris.org Where we are at: Assembler Chapter 6 H.L. Language & Operating Sys. abstract interface Compiler Chapters 10 - 11 VM Translator Chapters 7 - 8 Computer Architecture Chapters 4 - 5 Gate Logic Chapters 1 - 3 Electrical Engineering Physics Virtual Machine abstract interface Software hierarchy Assembly Language abstract interface Hardware hierarchy Machine Language abstract interface Hardware Platform abstract interface Chips & Logic Gates abstract interface Human Thought Abstract design Chapters 9, 12

3 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 3www.nand2tetris.org Operating system A software layer to manage resources provide an abstract interface to application developers Applications OS Hardware

4 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 4www.nand2tetris.org Typical OS functions Language extensions / standard library Mathematical operations ( abs, sqrt,...) Abstract data types ( String, Date,...) Output functions ( printChar, printString...) Input functions ( readChar, readLine...) Graphics functions ( drawPixel, drawCircle,...) And more... System-oriented services Memory management (objects, arrays,...) I/O device drivers Mass storage File system Multi-tasking UI management (shell / windows) Security Communications And more...

5 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 5www.nand2tetris.org Jack revisited /** Computes the average of a sequence of integers. */ class Main { function void main() { var Array a; var int length; var int i, sum; let length = Keyboard.readInt(”How many numbers? ”); let a = Array.new(length); // Constructs the array let i = 0; while (i < length) { let a[i] = Keyboard.readInt(”Enter the next number: ”); let sum = sum + a[i]; let i = i + 1; } do Output.printString(”The average is: ”); do Output.printInt(sum / length); do Output.println(); return; } /** Computes the average of a sequence of integers. */ class Main { function void main() { var Array a; var int length; var int i, sum; let length = Keyboard.readInt(”How many numbers? ”); let a = Array.new(length); // Constructs the array let i = 0; while (i < length) { let a[i] = Keyboard.readInt(”Enter the next number: ”); let sum = sum + a[i]; let i = i + 1; } do Output.printString(”The average is: ”); do Output.printInt(sum / length); do Output.println(); return; }

6 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 6www.nand2tetris.org Jack revisited /** Computes the average of a sequence of integers. */ class Main { function void main() { var Array a; var int length; var int i, sum; let length = Keyboard.readInt(”How many numbers? ”); let a = Array.new(length); // Constructs the array let i = 0; while (i < length) { let a[i] = Keyboard.readInt(”Enter the next number: ”); let sum = sum + a[i]; let i = i + 1; } do Output.printString(”The average is: ”); do Output.printInt(sum / length); do Output.println(); return; } /** Computes the average of a sequence of integers. */ class Main { function void main() { var Array a; var int length; var int i, sum; let length = Keyboard.readInt(”How many numbers? ”); let a = Array.new(length); // Constructs the array let i = 0; while (i < length) { let a[i] = Keyboard.readInt(”Enter the next number: ”); let sum = sum + a[i]; let i = i + 1; } do Output.printString(”The average is: ”); do Output.printInt(sum / length); do Output.println(); return; }

7 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 7www.nand2tetris.org The Jack OS Math : Provides basic mathematical operations; String : Implements the String type and related operations; Array : Implements the Array type and related operations; Output : Handles text output to the screen; Screen : Handles graphic output to the screen; Keyboard : Handles user input from the keyboard; Memory : Handles memory operations; Sys : Provides some execution-related services.

8 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 8www.nand2tetris.org class Math { function void init() function int abs(int x) function int multiply(int x, int y) function int divide(int x, int y) function int min(int x, int y) function int max(int x, int y) function int sqrt(int x) } class Math { function void init() function int abs(int x) function int multiply(int x, int y) function int divide(int x, int y) function int min(int x, int y) function int max(int x, int y) function int sqrt(int x) } Jack OS API

9 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 9www.nand2tetris.org Class String { constructor String new(int maxLength) method void dispose() method int length() method char charAt(int j) method void setCharAt(int j, char c) method String appendChar(char c) method void eraseLastChar() method int intValue() method void setInt(int j) function char backSpace() function char doubleQuote() function char newLine() } Class String { constructor String new(int maxLength) method void dispose() method int length() method char charAt(int j) method void setCharAt(int j, char c) method String appendChar(char c) method void eraseLastChar() method int intValue() method void setInt(int j) function char backSpace() function char doubleQuote() function char newLine() } Jack OS API

10 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 10www.nand2tetris.org Class Array { function Array new(int size) method void dispose() } Class Array { function Array new(int size) method void dispose() } class Memory { function int peek(int address) function void poke(int address, int value) function Array alloc(int size) function void deAlloc(Array o) } class Memory { function int peek(int address) function void poke(int address, int value) function Array alloc(int size) function void deAlloc(Array o) } Jack OS API

11 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 11www.nand2tetris.org class Output { function void moveCursor(int i, int j) function void printChar(char c) function void printString(String s) function void printInt(int i) function void println() function void backSpace() } class Output { function void moveCursor(int i, int j) function void printChar(char c) function void printString(String s) function void printInt(int i) function void println() function void backSpace() } Class Screen { function void clearScreen() function void setColor(boolean b) function void drawPixel(int x, int y) function void drawLine(int x1, int y1, int x2, int y2) function void drawRectangle(int x1, int y1, int x2, int y2) function void drawCircle(int x, int y, int r) } Class Screen { function void clearScreen() function void setColor(boolean b) function void drawPixel(int x, int y) function void drawLine(int x1, int y1, int x2, int y2) function void drawRectangle(int x1, int y1, int x2, int y2) function void drawCircle(int x, int y, int r) } Jack OS API

12 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 12www.nand2tetris.org Class Keyboard { function char keyPressed() function char readChar() function String readLine(String message) function int readInt(String message) } Class Keyboard { function char keyPressed() function char readChar() function String readLine(String message) function int readInt(String message) } Class Sys { function void halt(): function void error(int errorCode) function void wait(int duration) } Class Sys { function void halt(): function void error(int errorCode) function void wait(int duration) } Jack OS API

13 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 13www.nand2tetris.org A typical OS:  Is modular and scalable  Empowers programmers (language extensions)  Empowers users (file system, GUI,...)  Closes gaps between software and hardware  Runs in “protected mode”  Typically written in some high level language  Typically grows gradually, assuming more and more functions  Must be efficient.

14 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 14www.nand2tetris.org Efficiency We have to implement various operations on n-bit binary numbers (n = 16, 32, 64,...). For example, consider multiplication Naïve algorithm: to multiply x*y: { for i = 1... y do sum = sum + x } Run-time is proportional to y In a 64-bit system, y can be as large as 2 64. Multiplications can take years to complete Algorithms that operate on n-bit inputs can be either: Naïve: run-time is proportional to the value of the n-bit inputs Good: run-time is proportional to n, the input’s size.

15 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 15www.nand2tetris.org Run-time: proportional to n Can be implemented in SW or HW Division: similar idea. Example I: multiplication

16 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 16www.nand2tetris.org Division Run-time: proportional to n instead of y

17 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 17www.nand2tetris.org Example II: square root The square root function has two convenient properties: It’s inverse function is computed easily Monotonically increasing Functions that have these two properties can be computed by binary search: Number of loop iterations is bounded by n/2, thus the run-time is O(n).

18 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 18www.nand2tetris.org Complexity

19 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 19www.nand2tetris.org Complexity

20 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 20www.nand2tetris.org Donald Knuth 高德納 Born in 1938 Author of “The Art of Computer Programming” 《美國科學家》( American Scientist )雜誌曾將該 書與愛因斯坦的《相對論》、狄拉克的《量子力 學》、理查 · 費曼的《量子電動力學》等書並列為 20 世紀最重要的 12 本物理科學類專論書之一。 Creator of Tex and metafont Turing Award, 1974 $2.56 check

21 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 21www.nand2tetris.org Math operations (in the Jack OS) class Math { function void init() function int abs(int x) function int multiply(int x, int y) function int divide(int x, int y) function int min(int x, int y) function int max(int x, int y) function int sqrt(int x) } class Math { function void init() function int abs(int x) function int multiply(int x, int y) function int divide(int x, int y) function int min(int x, int y) function int max(int x, int y) function int sqrt(int x) }    class Math { class String { class Array { class Output { class Screen { class Memory { class Keyboard { class Sys { function (…) … } class Sys { function (…) … } The remaining functions are simple to implement.

22 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 22www.nand2tetris.org String processing ( in the Jack OS) Class String { constructor String new(int maxLength) method void dispose() method int length() method char charAt(int j) method void setCharAt(int j, char c) method String appendChar(char c) method void eraseLastChar() method int intValue() method void setInt(int j) function char backSpace() function char doubleQuote() function char newLine() } Class String { constructor String new(int maxLength) method void dispose() method int length() method char charAt(int j) method void setCharAt(int j, char c) method String appendChar(char c) method void eraseLastChar() method int intValue() method void setInt(int j) function char backSpace() function char doubleQuote() function char newLine() } class Math { class String { class Array { class Output { class Screen { class Memory { class Keyboard { class Sys { function (…) … } class Sys { function (…) … }

23 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 23www.nand2tetris.org Single digit ASCII conversions asciiCode(digit) == digit + 48 digit(asciiCode) == asciiCode - 48

24 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 24www.nand2tetris.org SingleDigit–to-character conversions: done Number–to-string conversions: Converting a number to a string

25 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 25www.nand2tetris.org SingleDigit–to-character conversions: done Number–to-string conversions: Converting a number to a string

26 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 26www.nand2tetris.org Memory management ( in the Jack OS ) class Memory { function int peek(int address) function void poke(int address, int value) function Array alloc(int size) function void deAlloc(Array o) } class Memory { function int peek(int address) function void poke(int address, int value) function Array alloc(int size) function void deAlloc(Array o) } class Math { class String { class Array { class Output { class Screen { class Memory { class Keyboard { class Sys { function (…) … } class Sys { function (…) … }

27 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 27www.nand2tetris.org The data structure that this algorithm manages is a single pointer: free. Memory management (naive) When a program constructs (destructs) an object, the OS has to allocate (de-allocate) a RAM block on the heap: alloc(size): returns a reference to a free RAM block of size size deAlloc(object): recycles the RAM block that object refers to

28 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 28www.nand2tetris.org Memory management (improved)

29 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 29www.nand2tetris.org Peek and poke class Memory { function int peek(int address) function void poke(int address, int value) function Array alloc(int size) function void deAlloc(Array o) } class Memory { function int peek(int address) function void poke(int address, int value) function Array alloc(int size) function void deAlloc(Array o) } Implementation: based on our ability to exploit exotic casting in Jack:

30 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 30www.nand2tetris.org Graphics primitives ( in the Jack OS ) Class Screen { function void clearScreen() function void setColor(boolean b) function void drawPixel(int x, int y) function void drawLine(int x1, int y1, int x2, int y2) function void drawRectangle(int x1, int y1,int x2, int y2) function void drawCircle(int x, int y, int r) } Class Screen { function void clearScreen() function void setColor(boolean b) function void drawPixel(int x, int y) function void drawLine(int x1, int y1, int x2, int y2) function void drawRectangle(int x1, int y1,int x2, int y2) function void drawCircle(int x, int y, int r) } class Math { class String { class Array { class Output { class Screen { class Memory { class Keyboard { class Sys { function (…) … } class Sys { function (…) … }

31 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 31www.nand2tetris.org Memory-mapped screen mapBase MemoryScreen

32 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 32www.nand2tetris.org Pixel drawing Implementation: using poke(address,value)

33 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 33www.nand2tetris.org Image representation: bitmap versus vector graphics Bitmap file: 00100, 01010,01010,10001,11111,10001,00000,... Vector graphics file: drawLine(2,0,0,5), drawLine(2,0,4,5), drawLine(1,4,3,4) Pros and cons of each method. (0,0) vector bitmap pixel

34 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 34www.nand2tetris.org Vector graphics: basic operations drawPixel(x,y) drawCircle(x,y,r) drawLine(x1,y1,x2,y2) drawRectangle(x1,y1,x2,y2) drawLine(0,3,0,11) drawRectangle(1,3,5,9) drawLine(1,12,2,12) drawLine(3,10,3,11) drawLine(6,4,6,9) drawLine(7,0,7,12) drawLine(8,1,8,12) (Primitive operation) drawTriangle(x1,y1,x2,y2,x3,y3) etc. (a few more similar operations) 1 2 3... 0123... 0 Screen = grid of pixels

35 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 35www.nand2tetris.org How to draw a line? drawLine(x1,y1,x2,y2) Basic idea: drawLine is implemented through a sequence of drawPixel operations Challenge 1: which pixels should be drawn ? Challenge 2: how to draw the line fast ? Simplifying assumption: the line that we are asked to draw goes north-east.

36 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 36www.nand2tetris.org Line Drawing Given: drawLine(x1,y1,x2,y2) Notation: x=x1, y=y1, dx=x2-x1, dy=y2-y1 Using the new notation: We are asked to draw a line between (x,y) and (x+dx,y+dy) set (a,b) = (0,0) while there is more work to do drawPixel(x+a,y+b) decide if you want to go right, or up if you decide to go right, set a=a+1; if you decide to go up, set b=b+1 set (a,b) = (0,0) while (a ≤ dx) and (b ≤ dy) drawPixel(x+a,y+b) decide if you want to go right, or up if you decide to go right, set a=a+1; if you decide to go up, set b=b+1

37 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 37www.nand2tetris.org Line Drawing algorithm drawLine(x,y,x+dx,y+dy) set (a,b) = (0,0) while (a ≤ dx) and (b ≤ dy) drawPixel(x+a,y+b) decide if you want to go right, or up if you decide to go right, set a=a+1; if you decide to go up, set b=b+1 drawLine(x,y,x+dx,y+dy) set (a,b) = (0,0) while (a ≤ dx) and (b ≤ dy) drawPixel(x+a,y+b) if b/a > dy/dx set a=a+1 else set b=b+1 costy

38 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 38www.nand2tetris.org Line Drawing algorithm, optimized b/a > dy/dx is the same as a*dy < b*dx Define diff = a*dy – b*dx Let’s take a close look at this diff: 1. b/a > dy/dx is the same as diff < 0 2. When we set (a,b)=(0,0), diff = 0 3. When we set a=a+1, diff goes up by dy 4. When we set b=b+1, diff goes down by dx drawLine(x,y,x+dx,y+dy) set (a,b) = (0,0) while (a ≤ dx) and (b ≤ dy) drawPixel(x+a,y+b) if b/a > dy/dx set a=a+1 else set b=b+1 drawLine(x,y,x+dx,y+dy) set (a,b) = (0,0), diff = 0 while (a ≤ dx) and (b ≤ dy) drawPixel(x+a,y+b) if diff < 0 set a=a+1, diff = diff + dx else set b=b+1, diff = diff - dy Motivation When you draw polygons, e.g. in animation or video, you need to draw millions of lines Therefore, drawLine must be ultra fast Division is a very slow operation Addition is ultra fast (hardware based)

39 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 39www.nand2tetris.org Circle drawing The screen origin (0,0) is at the top left.

40 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 40www.nand2tetris.org To do vector graphics (e.g. display a PPT file), you have to draw polygons To draw polygons, you need to draw lines To draw lines, you need to divide Division can be re-expressed as multiplication Multiplication can be reduced to addition Addition is easy. To sum up (vector graphics)…

41 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 41www.nand2tetris.org Ivan Sutherland Born in 1938 PhD dissertation on Sketchpad (3D demo), 1963Sketchpad3D demo one of the most influential computer programs ever written. This work was seminal in Human-Computer Interaction, Graphics and Graphical User Interfaces (GUIs), Computer Aided Design (CAD), and contraint/object-oriented programming. TX-2 computer (built circa 1958) on which the software ran was built from discrete transistors (not integrated circuits -it was room-sized) and contained just 64K of 36-bit words (~272k bytes). PhD advisor: Claude Shannon Father of computer graphics Turing Award, 1988

42 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 42www.nand2tetris.org Character output primitives ( in the Jack OS ) class Output { function void moveCursor(int i, int j) function void printChar(char c) function void printString(String s) function void printInt(int i) function void println() function void backSpace() } class Output { function void moveCursor(int i, int j) function void printChar(char c) function void printString(String s) function void printInt(int i) function void println() function void backSpace() } class Math { class String { class Array { class Output { class Screen { class Memory { class Keyboard { class Sys { function (…) … } class Sys { function (…) … }

43 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 43www.nand2tetris.org Character output Given display: a physical screen, say 256 rows by 512 columns We can allocate an 11 by 8 grid for each character Hence, our output package should manage a 23 lines by 64 characters screen Font: each displayable character must have an agreed-upon bitmap In addition, we have to manage a “cursor”.

44 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 44www.nand2tetris.org class Output { static Array charMaps; function void initMap() { let charMaps = Array.new(127); // Assign a bitmap for each character do Output.create(32,0,0,0,0,0,0,0,0,0,0,0); // space do Output.create(33,12,30,30,30,12,12,0,12,12,0,0); // ! do Output.create(34,54,54,20,0,0,0,0,0,0,0,0); // “ do Output.create(35,0,18,18,63,18,18,63,18,18,0,0); // #... do Output.create(48,12,30,51,51,51,51,51,30,12,0,0); // 0 do Output.create(49,12,14,15,12,12,12,12,12,63,0,0); // 1 do Output.create(50,30,51,48,24,12,6,3,51,63,0,0); // 2... do Output.create(65,0,0,0,0,0,0,0,0,0,0,0); // A ** TO BE FILLED ** do Output.create(66,31,51,51,51,31,51,51,51,31,0,0); // B do Output.create(67,28,54,35,3,3,3,35,54,28,0,0); // C... return; } class Output { static Array charMaps; function void initMap() { let charMaps = Array.new(127); // Assign a bitmap for each character do Output.create(32,0,0,0,0,0,0,0,0,0,0,0); // space do Output.create(33,12,30,30,30,12,12,0,12,12,0,0); // ! do Output.create(34,54,54,20,0,0,0,0,0,0,0,0); // “ do Output.create(35,0,18,18,63,18,18,63,18,18,0,0); // #... do Output.create(48,12,30,51,51,51,51,51,30,12,0,0); // 0 do Output.create(49,12,14,15,12,12,12,12,12,63,0,0); // 1 do Output.create(50,30,51,48,24,12,6,3,51,63,0,0); // 2... do Output.create(65,0,0,0,0,0,0,0,0,0,0,0); // A ** TO BE FILLED ** do Output.create(66,31,51,51,51,31,51,51,51,31,0,0); // B do Output.create(67,28,54,35,3,3,3,35,54,28,0,0); // C... return; } Font implementation ( in the Jack OS )

45 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 45www.nand2tetris.org Font implementation ( in the Jack OS ) // Creates a character map array function void create(int index, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k) { var Array map; let map = Array.new(11); let charMaps[index] = map; let map[0] = a; let map[1] = b; let map[2] = c;... let map[10] = k; return; } // Creates a character map array function void create(int index, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k) { var Array map; let map = Array.new(11); let charMaps[index] = map; let map[0] = a; let map[1] = b; let map[2] = c;... let map[10] = k; return; }

46 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 46www.nand2tetris.org Keyboard primitives ( in the Jack OS ) Class Keyboard { function char keyPressed() function char readChar() function String readLine(String message) function int readInt(String message) } Class Keyboard { function char keyPressed() function char readChar() function String readLine(String message) function int readInt(String message) } class Math { class String { class Array { class Output { class Screen { class Memory { class Keyboard { class Sys { function (…) … } class Sys { function (…) … }

47 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 47www.nand2tetris.org Keyboard input If the RAM address of the keyboard’s memory map is known, the above logic can be implemented using a peek function Problem I: the elapsed time between a “key press” and key release” events is unpredictable Problem II: when pressing a key, the user should get some visible feedback (cursor, echo,...).

48 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 48www.nand2tetris.org A historic moment remembered … Wozniak began writing the software that would get the microprocessor to display images on the screen. After a couple of month he was ready to test it. “I typed a few keys on the keyboard and I was shocked! The letters were displayed on the screen.” It was Sunday, June 29, 1975, a milestone for the personal computer. “It was the first time in history,” Wozniak later said, “anyone had typed a character on a keyboard and seen it show up on their own computer’s screen right in front of them” (Steve Jobs, by Walter Isaacson, 2012) … Wozniak began writing the software that would get the microprocessor to display images on the screen. After a couple of month he was ready to test it. “I typed a few keys on the keyboard and I was shocked! The letters were displayed on the screen.” It was Sunday, June 29, 1975, a milestone for the personal computer. “It was the first time in history,” Wozniak later said, “anyone had typed a character on a keyboard and seen it show up on their own computer’s screen right in front of them” (Steve Jobs, by Walter Isaacson, 2012)

49 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 49www.nand2tetris.org Keyboard input (cont.)

50 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 50www.nand2tetris.org Keyboard input (cont.)

51 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 51www.nand2tetris.org Jack OS recap class Math { function void init() function int abs(int x) class Math { function void init() function int abs(int x) Class String { Class String { Class Array { function Array new(int size) method void dispose() } Class Array { function Array new(int size) method void dispose() } class Output { class Output { Class Screen { Class Screen { class Memory { function int peek(int address) class Memory { function int peek(int address) Class Keyboard { Class Keyboard { Class Sys { function void halt(): function void error(int errorCode) function void wait(int duration) } Class Sys { function void halt(): function void error(int errorCode) function void wait(int duration) } Project 12: Build it. Implementation: just like GNU Unix and Linux were built: Start with an existing system, and gradually replace it with a new system, one library at a time.

52 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 52www.nand2tetris.org Perspective What we presented can be described as a: mini OS Standard library Many classical OS functions are missing No separation between user mode and OS mode Some algorithms (e.g. multiplication and division) are standard Other algorithms (e.g. line- and circle-drawing) can be accelerated with special hardware And, by the way, we’ve just finished building the computer.

53 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 53www.nand2tetris.org Operating system A software layer to manage resources provide an abstract interface to application developers Applications OS Hardware

54 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 54www.nand2tetris.org Operating system An OS mediates programs’ access to hardware resources Computation (CPU) Volatile storage (memory) and persistent storage (disk, etc.) Network communications (TCP/IP stacks, ethernet cards, etc.) Input/output devices (keyboard, display, sound card, etc.) The OS abstracts hardware into logical resources and well-defined interfaces to those resources processes (CPU, memory) files (disk) sockets (network)

55 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 55www.nand2tetris.org OS as a resource manager

56 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 56www.nand2tetris.org A detailed view of OS Slide by Tom Anderson

57 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 57www.nand2tetris.org OS History Slide by Tom Anderson

58 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 58www.nand2tetris.org Increasing software complexity

59 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 59www.nand2tetris.org Computer Performance Over Time Slide by Tom Anderson

60 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 60www.nand2tetris.org OS Challenges Performance Latency/response time  How long does an operation take to complete? Throughput  How many operations can be done per unit of time? Overhead  How much extra work is done by the OS? Fairness  How equal is the performance received by different users? Predictability  How consistent is the performance over time? Slide by Tom Anderson

61 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 61www.nand2tetris.org Booting The bootstrap program and other basic input/output functions are contained in a special ROM, called BIOS (basic input/output system) A program stored in ROM is called firmware.

62 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 62www.nand2tetris.org Process switching

63 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 63www.nand2tetris.org Process and context switching When to switch? Call system service Interrupts (e.g. time slice) Switch to which process? Scheduling: first-com- first-serve, shortest job first, round robin … What to store/restore? Basically registers Competition to resource Semaphore Critical section

64 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 64www.nand2tetris.org 64 Memory management

65 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 65www.nand2tetris.org Segmentation hardware Each process has its own segment table managed by OS.

66 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 66www.nand2tetris.org Paging hardware

67 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 67www.nand2tetris.org Paging example

68 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 68www.nand2tetris.org Virtual memory The page could locate on the disk => virtual memory

69 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 69www.nand2tetris.org Root directory bin cse facultygrads lspscpcsh Hierarchical file systems elmsbrandtkagamer4 stuff classesresearch stuff

70 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 70www.nand2tetris.org Storage 1956 IBM RAMDAC computer included the IBM Model 350 disk storage system (5M) Hard Disk Solid State Disk

71 Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 71www.nand2tetris.org 數位電子與數位電路 ( 二上 ) 數位系統與實驗 ( 二下 ) 計算機結構 ( 三上 ) 自動機與形式語言 ( 三上 ) 作業系統 ( 二下 ) Compiler The tour map Assembler Chapter 6 H.L. Language & Operating Sys. abstract interface Compiler Chapters 10 - 11 VM Translator Chapters 7 - 8 Computer Architecture Chapters 4 - 5 Gate Logic Chapters 1 - 3 Electrical Engineering Physics Virtual Machine abstract interface Software hierarchy Assembly Language abstract interface Hardware hierarchy Machine Language abstract interface Hardware Platform abstract interface Chips & Logic Gates abstract interface Human Thought Abstract design Chapters 9, 12 Course overview: Building this world, from the ground up 資料結構與演算法 ( 一下 ) ,演算法設計與分析 ( 二上 ) 系統程式設計 ( 二上 ) ,計算機網路 ( 三上 ) 線性代數 ( 二上 ) ,機率 ( 二上 )


Download ppt "Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 12: Operating System slide 1www.nand2tetris.org Operating Systems."

Similar presentations


Ads by Google