Outline. overview & concepts files and processes in UNIX the platform and os modules. importing the turtle module drawing a spiral colors with turtle

Similar documents
Overview of Unix / Linux operating systems

Brief Linux Presentation. July 10th, 2006 Elan Borenstein

Introduction to Cygwin Operating Environment

Lecture 3. Unix. Question? b. The world s best restaurant. c. Being in the top three happiest countries in the world.

Lecture 01: welcome and intro what LSD and Unix have in common

Introduction to Linux

Underlying computer system = hardware + software

Systems Programming. The Unix/Linux Operating System

Practical Computing-II. Programming in the Linux Environment. 0. An Introduction. B.W.Gore. March 20, 2015

History. Terminology. Opening a Terminal. Introduction to the Unix command line GNOME

Intro to Linux & Command Line

UNIX. The Very 10 Short Howto for beginners. Soon-Hyung Yook. March 27, Soon-Hyung Yook UNIX March 27, / 29

Perl and R Scripting for Biologists

Lecture Topics. Announcements. Today: Operating System Overview (Stallings, chapter , ) Next: Processes (Stallings, chapter

CISC 220 fall 2011, set 1: Linux basics

Welcome to Linux. Lecture 1.1

Introduction of Linux

Overview LEARN. History of Linux Linux Architecture Linux File System Linux Access Linux Commands File Permission Editors Conclusion and Questions

Chapter Two. Lesson A. Objectives. Exploring the UNIX File System and File Security. Understanding Files and Directories

Introduction to Linux Basics

ELEC 377 Operating Systems. Week 1 Class 2

CSE 390a Lecture 1. introduction to Linux/Unix environment

Introduction to Linux (Part I) BUPT/QMUL 2018/03/14

Introduction to Linux. Fundamentals of Computer Science

The UNIX Operating System. HORT Lecture 2 Instructor: Kranthi Varala

Computer Architecture Lab 1 (Starting with Linux)

CSE 391 Lecture 1. introduction to Linux/Unix environment

Week 2. Exp 2 (a) (b): Introduction to LINUX OS, Installation of LINUX OS, Basic DOS commands

Basics of system administration on a Unix system

Introduction to Linux

Welcome to CIS 90 Introduction to UNIX/Linux

Introduction to Unix. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

UNIX/Linux Fundamentals Lecture 1. Nick Stiffler Philip Conrad

Introduction to Linux Overview and Some History

Chapter 14 Operating Systems

Chapter 14 Operating Systems

Chap2: Operating-System Structures

CS370 Operating Systems

(MCQZ-CS604 Operating Systems)

EKT332 COMPUTER NETWORK

Topics. Prerequisites

Mid Term from Feb-2005 to Nov 2012 CS604- Operating System

Teaching and Examination Scheme: PAPER HRS TH TU PR TH PR OR TW TOTAL

*nix Crash Course. Presented by: Virginia Tech Linux / Unix Users Group VTLUUG

EECS 470 Lab 5. Linux Shell Scripting. Friday, 1 st February, 2018

Unix to Linux. CS 3113 Fall 2018 Dr. Christan Grant

CSE 391 Lecture 1. introduction to Linux/Unix environment

Linux for Beginners. Windows users should download putty or bitvise:

Unix System Architecture, File System, and Shell Commands

Introduction to Linux

Introduction to Linux

Scripting Languages Course 1. Diana Trandabăț

CPS221 Lecture: Operating System Functions

Operating System Labs. Yuanbin Wu

Introduction to Unix. University of Massachusetts Medical School. October, 2014

Computer Fundamentals : Pradeep K. Sinha& Priti Sinha

System Programming. Introduction to Unix

Linux at the Command Line Don Johnson of BU IS&T

An Operating System History of Operating Systems. Operating Systems. Autumn CS4023

Introduction to Linux. Woo-Yeong Jeong Computer Systems Laboratory Sungkyunkwan University

User Guide Version 2.0

CIS 90 Introduction to UNIX/Linux

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and

UNIX Kernel. UNIX History

CS 550 Operating Systems Spring Operating Systems Overview

CPS221 Lecture: Operating System Functions

Linux Operating System

Virtual Machine. Linux flavor : Debian. Everything (except slides) preinstalled for you.

Operating System Study Material

UNIX / LINUX - GETTING STARTED

Python Programming Exercises 1

CSE 303 Lecture 2. Introduction to bash shell. read Linux Pocket Guide pp , 58-59, 60, 65-70, 71-72, 77-80

Roadmap. Tevfik Ko!ar. CSC Operating Systems Fall Lecture - VII CPU Scheduling - II. Louisiana State University

Roadmap. Multilevel Queue Scheduling. Multilevel Queue. Example of Multilevel Feedback Queue. Multilevel Feedback Queue. Tevfik Ko!

UNIX rewritten using C (Dennis Ritchie) UNIX (v7) released (ancestor of most UNIXs).

The Operating System Machine Level

Introduction to Linux

Introduction to computing, architecture and the UNIX OS. HORT Lecture 1 Instructor: Kranthi Varala

COPYRIGHTED MATERIAL. Unix Fundamentals. Brief History

COURSE OUTLINE. UNIX Programming 2014 Fall by Euiseong Seo

Lecture 1. Course webpage. Syllabus and schedule, textbooks CS Lab, Virtual Box. Handouts, assignments Supplemental resources

CMPSC 311- Introduction to Systems Programming Module: UNIX/Operating Systems

MTU Computer Structure

CS 261 Recitation 1 Compiling C on UNIX

CS 300. Data Structures

Topics. Operating System. What is an Operating System? Let s Get Started! What is an Operating System? Where in the Book are we?

Operating Systems. I. Introduction. Eurecom

Lecture 2. Software Development on Linux Platforms (Cygwin( Cygwin,, etc.) INTRODUCTION TO DESIGN AUTOMATION. Guoyong Shi, PhD

GNU/Linux Course Lesson 1. Puria Nafisi

C++ Programming on Linux

Shell / Python Tutorial. CS279 Autumn 2017 Rishi Bedi

ELEC 377 Operating Systems. Week 8 Class 1

Topics. Operating System I. What is an Operating System? Let s Get Started! What is an Operating System? OS History.

CS 3410 Intro to Unix, shell commands, etc... (slides from Hussam Abu-Libdeh and David Slater)

Hitchhiker s Guide to VLSI Design with Cadence & Synopsys

Computer Science 32 Object-Oriented Oriented Design and Implementation (in C++ on Linux)

Introduction to UNIX. SURF Research Boot Camp April Jeroen Engelberts Consultant Supercomputing

ENCM 339 Fall 2017: Editing and Running Programs in the Lab

Announcements Processes: Part II. Operating Systems. Autumn CS4023

Recipes4Success. Draw and Animate a Rocket Ship. Frames 5 - Drawing Tools

Transcription:

Outline 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments MCS 260 Lecture 5 Introduction to Computer Science Jan Verschelde, 22 January 2016 Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 1 / 37

Operating Systems Turtle Graphics 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 2 / 37

The Operating System (OS) needed to operate a computer software layer between users and physical machine single user for Personal Computer (PC) or multi user for workstation or mainframe realization of a virtual machine: give user illusion that computer is fully dedicated to the user MS-DOS and UNIX are commonly used via MS Windows or X Windows respectively (although MS Windows has replaced MS-DOS) goals: satisfy users and maximize performance Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 3 / 37

Layers in an OS Operating System functions user programs 5. command interpreter (shell) activate user programs 4. file system control file access 3. peripherals management manage i/o devices 2. memory management allocate and free memory 1. process management control program execution kernel of OS physical machine Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 4 / 37

Process Management a process evolves in time Three states of a process: start ready external interrupt waiting external interrupt: end of time slice executing internal interrupt internal interrupt: program does input or output end Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 5 / 37

Memory Management allocate memory for each process pagination is the mechanism to partition the main memory into pages, each page is a contiguous memory area, of fixed size segmentation is the division of a program, separating parts that perform different functions virtual memory is the term used to describe the impression the memory manager gives swap space is that part of the disc used to swap memory pages onto disc for memory intensive jobs Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 6 / 37

Peripherals and File Management Drivers provide mechanisms to communicate data to and from the peripherals. We distinguish physical drivers are part of the equipment; logical drivers belong to the OS. The file system is the organization of mass storage: Files are collected in directories. Directories are organized in a tree structure. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 7 / 37

Operating Systems Turtle Graphics 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 8 / 37

The UNIX Operating System a little history Originally written in C by Ken Thompson and Dennis Ritchie at AT&T in the early seventies. Further development ofvi andc shell into BSD UNIX, BSD = Berkeley Software Distribution. Many variants of UNIX by IBM, DEC, HP, Sun. Standards provided by POSIX: Portable Operation System Interface for Computer Environments. Linux is distributed under the GNU General Public License: mandatory to make the source code public. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 9 / 37

Linus Torvalds original developer of the Linux kernel + original developer of the Linux (the x refers to Unix) kernel, decides which code goes into it. + Linus s Law: Given enough eyeballs, all bugs are shallow. Linux is Free and Open Source. + Git originated from Linux kernel developers, including Linus Torvalds. Git is used to manage source code. image taken fromhttp://github.com/torvalds. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 10 / 37

processes in UNIX UNIX is a multi-user system: system administration is done byroot users have restricted privileges Some useful commands to control processes: w lists current users, displays load ps list processes kill halt or stop execution Doman followed by a command name to see the manual pages for that command. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 11 / 37

the file system in UNIX After logging in, by default, the current directory is your home directory where your files are stored. Some useful commands on files cp copy a file, duplicates mv move a file, renames rm remove a file, deletes Some commands on directories: pwd print working directory ls list content of current directory cd change directory,cd.. goes up in the tree mkdir make a directory rmdir remove a directory Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 12 / 37

UNIX in MCS 260 how we experience UNIX 1 Computers in SEL 2263 run Mac OS X. Mac OS X is based on the BSD UNIX implementation. Via Terminal we get a shell as on any UNIX. 2 Cygwin is a Linux-like environment for Windows It emulates (behaves like) the UNIX OS. You can install Cygwin on your Windows PC at home, or install Linux and enable dual boot. 3 Knoppix is based on Debian GNU/Linux, on CD. You can run Linux on most PCs without installation. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 13 / 37

Operating Systems Turtle Graphics 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 14 / 37

The platform Module get information about your OS Using theplatform module, we obtain platform-dependent data in a Python session: >>> import platform >>> platform.machine() x86_64 >>> platform.architecture() ( 64bit, ) >>> platform.processor() i386 Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 15 / 37

More Information about your OS the session continued... >>> platform.python_compiler() GCC 4.2.1 (Apple Inc. build 5666) (dot 3) >>> platform.system() Darwin >>> platform.uname() ( Darwin, asterix.local, 13.1.0, Darwin Kernel Version 13.1.0: Wed Apr 2 23:52:02 PDT 2014; root:xnu-2422.92.1~2/release_x86_64, x86_64, i386 ) Application: platform-independent code. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 16 / 37

the os module: operating system independence The moduleos is an interface to the operating system. To execute any command, useos.system: >>> import os >>> os.system( ls ) The moduleos exports functions on files and directories, independent of specific operating system commands. To list the content of a directory: os.listdir( < directory name > ) on return is a list of file names (as strings). For example, for the current directory: >>> os.listdir(. ) Runs on Unix, MacOS X, and Windows: portable. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 17 / 37

Portability in Python via the moduleos We say that a program is portable if it runs unmodified on different operating systems and architectures. In a Python session we may access OS functions via the methods of theos module, some examples: >>> import os >>> os.uname() # identifies current OS >>> os.listdir(. ) # same as ls on UNIX >>> os.getcwd() # get current directory >>> os.chdir( /tmp ) # change directory to /tmp >>> help(os) # for more information Using the methods of theos module we can build portable system utilities, e.g.: find a file on a disk. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 18 / 37

Operating Systems Turtle Graphics 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 19 / 37

Turtle Graphics: turtle is a builtin module For example, to draw a circle of radius 50 pixels: >>> from turtle import Turtle >>> sam = Turtle() >>> sam.circle(50) Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 20 / 37

modules, classes, and objects Explaining the three statements on the previous slide: 1 We import the classturtle from the moduleturtle: >>> from turtle import Turtle A module is a library of code. A class defines a data type. 2 We then make an objectsam of the classturtle: >>> sam = Turtle() After the assigment,sam refers to aturtle object. 3 Calling a method of the classturtle: >>> sam.circle(50) Thecircle method is defined for any object of theturtle class. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 21 / 37

Operating Systems Turtle Graphics 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 22 / 37

the start of a spiral Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 23 / 37

some useful commands command description from turtle import Turtle importsturtle from theturtle module myturtle = Turtle() myturtle.up() myturtle.down() myturtle.left(angle) myturtle.right(angle) myturtle.forward(d) make an objectmyturtle put the pen up put the pen down turn left by angle given in degrees turn right by angle in degrees go forward bydpixels Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 24 / 37

drawing a spiral with a script from turtle import Turtle LIZ = Turtle() LIZ.down() # put the pen down LIZ.right(90) # turn 90 degrees to the right LIZ.forward(10) # go forward by 10 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(10) # go forward by 10 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(20) # go forward by 20 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(20) # go forward by 20 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(30) # go forward by 30 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(30) # go forward by 30 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(40) # go forward by 40 pixels LIZ.right(90) # turn 90 degrees to the right LIZ.forward(40) # go forward by 40 pixels ANS = input( hit enter to exit ) # leave window Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 25 / 37

more turtle commands Functions exported by theturtle module: command description window_width() #pixels in width of turtle window window_height() #pixels in height of turtle window tracer(false) do not animate arrow to draw faster by default: turtle.tracer(true) Methods applicable to any Turtle object: command description position() returns the position of the turtle goto(x, y) goes to position(x, y) and draws a line from the current position to(x, y) if pen is down Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 26 / 37

a script to draw the spiral from turtle import Turtle # import the Turtle class SAM = Turtle() # SAM is the name of a Turtle object SAM.up() # put the pen up SAM.goto(0, 0) # goto center SAM.down() # put the pen down POS = SAM.pos() # get the current position SAM.goto(POS[0], POS[1] - 10) # go 10 pixels down POS = SAM.pos() SAM.goto(POS[0] - 10, POS[1]) # go 10 pixels to the left POS = SAM.pos() SAM.goto(POS[0], POS[1] + 20) # go 20 pixels up POS = SAM.pos() SAM.goto(POS[0] + 20, POS[1]) # go 20 pixels to the right POS = SAM.pos() SAM.goto(POS[0], POS[1] - 30) # go 30 pixels down POS = SAM.pos() SAM.goto(POS[0] - 30, POS[1]) # go 30 pixels to the left POS = SAM.pos() SAM.goto(POS[0], POS[1] + 40) # go 40 pixels up POS = SAM.pos() SAM.goto(POS[0] + 40, POS[1]) # go 40 pixels to the right ANS = input( hit enter to exit ) # else window disappears Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 27 / 37

Operating Systems Turtle Graphics 1 Operating Systems overview & concepts files and processes in UNIX the platform and os modules 2 Turtle Graphics importing the turtle module drawing a spiral colors with turtle 3 Summary + Assignments Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 28 / 37

colors with turtle Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 29 / 37

rgb code for colors Humans are trichromats, we have 3 types of color receptors. The rgb code defines colors via triplets: r (1.0, 0.0, 0.0) pure red g (0.0, 1.0, 0.0) pure green b (0.0, 0.0, 1.0) pure blue (0.0, 0.0, 0.0) is black, (1.0, 1.0, 1.0) is white, and (x, x, x), for 0 < x < 1, is some shade of grey. Taking numbers less than 1.0 changes the intensity, e.g.: (0.6, 0.0, 0.0) gives a different shade of red. Combining the red, green, and blue intensities allows for all other colors, e.g. (1.0, 1.0, 0.0) gives yellow. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 30 / 37

setting colors with turtle LetmyTurtle be an object of the classturtle. We define the color of the pen withpenpencolor, e.g.: myturtle.pencolor((1.0, 0.0, 0.0)) makes that lines drawn will show up in red. The color used to fill enclosed drawings is set as myturtle.fillcolor((0.0, 1.0, 0.0)) We can set bothfillcolor andpencolor at once, e.g.: myturtle.color((0.0, 1.0, 0.0), (0.0, 1.0, 0.0)) Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 31 / 37

drawing a triangle from math import cos, sin, pi from turtle import Turtle ANGLE = 2*pi/3 # angle to draw a triangle BIGRAD = 200 # radius of the enscribed circle CIRRAD = 80 # radius of the colored circles # first we draw the triangle TRIANGLE = Turtle() TRIANGLE.up() TRIANGLE.goto(BIGRAD, 0) TRIANGLE.down() TRIANGLE.goto(BIGRAD*cos(ANGLE), BIGRAD*sin(ANGLE)) TRIANGLE.goto(BIGRAD*cos(2*ANGLE), BIGRAD*sin(2*ANGLE)) TRIANGLE.goto(BIGRAD, 0) ANS = input("hit enter to continue...") Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 32 / 37

red, green, and blue disks # at the corners we put primary rgb colored disks TRIANGLE.tracer(False) TRIANGLE.up() TRIANGLE.goto(BIGRAD, -CIRRAD) TRIANGLE.down() TRIANGLE.begin_fill() TRIANGLE.color((1.0, 0.0, 0.0), (1.0, 0.0, 0.0)) TRIANGLE.circle(CIRRAD) TRIANGLE.end_fill() TRIANGLE.up() TRIANGLE.goto(BIGRAD*cos(ANGLE), BIGRAD*sin(ANGLE)-CIRRAD) Notice the-cirrad in the second coordinate... Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 33 / 37

script continues... TRIANGLE.down() TRIANGLE.begin_fill() TRIANGLE.color((0.0, 1.0, 0.0), (0.0, 1.0, 0.0)) TRIANGLE.circle(CIRRAD) TRIANGLE.end_fill() TRIANGLE.up() TRIANGLE.goto(BIGRAD*cos(2*ANGLE), \ BIGRAD*sin(2*ANGLE)-CIRRAD) TRIANGLE.down() TRIANGLE.begin_fill() TRIANGLE.color((0.0, 0.0, 1.0), (0.0, 0.0, 1.0)) TRIANGLE.circle(CIRRAD) TRIANGLE.end_fill() ANS = input("hit enter to continue...") Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 34 / 37

combined colors # then we draw the combinations at the edges ANGLE2 = pi/3 # smaller angle for 6-gon EDGE = 100 # to put circles on edges of triangle RAD2 = 40 # radius of the secondary rgb colored disks TRIANGLE.up() TRIANGLE.goto(EDGE*cos(ANGLE2), EDGE*sin(ANGLE2)-RAD2) TRIANGLE.down() TRIANGLE.begin_fill() TRIANGLE.color((1.0, 1.0, 0.0), (1.0, 1.0, 0.0)) TRIANGLE.circle(RAD2) TRIANGLE.end_fill() Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 35 / 37

script continues... TRIANGLE.up() TRIANGLE.goto(EDGE*cos(ANGLE+ANGLE2), \ EDGE*sin(ANGLE+ANGLE2)-RAD2) TRIANGLE.down() TRIANGLE.begin_fill() TRIANGLE.color((0.0, 1.0, 1.0), (0.0, 1.0, 1.0)) TRIANGLE.circle(RAD2) TRIANGLE.end_fill() TRIANGLE.up() TRIANGLE.goto(EDGE*cos(2*ANGLE+ANGLE2), \ EDGE*sin(2*ANGLE+ANGLE2)-RAD2) TRIANGLE.down() TRIANGLE.begin_fill() TRIANGLE.color((1.0, 0.0, 1.0), (1.0, 0.0, 1.0)) TRIANGLE.circle(RAD2) TRIANGLE.end_fill() # to prevent the turtle window from disappearing ANS = input( hit enter to exit... ) Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 36 / 37

Summary + Assignments In this lecture we covered sections 3.1,2,3 of Computer Science. An Overview 1.5.3 of Python Programming in Context Assignments: 1 Find out whatcygwin andknoppix are. 2 Consider installing Linux on your PC. 3 Use turtle to draw a regular pentagon and fill it with your favorite color. 4 Draw the big letters T and E using turtle. 5 Make a smiley face with turtle. Intro to Computer Science (MCS 260) Operating Systems & Turtle L-5 22 January 2016 37 / 37