CPS110: Intro to (Operating) SystemsSyllabus: prerequisitesSyllabus: lectures and textbookSyllabus: discussion sectionsSyllabus: homework problemsSyllabus: projectsSyllabus: project environmentSyllabus: project groupsSyllabus: project auto-gradingMore on the auto-graderSyllabus: project timelinesSyllabus: project collaborationSyllabus: grades, examsProjects and examsSyllabus: getting helpQuestions about the course?Goals for CPS 110Duke curriculum: one view“Systems”: A Bigger PictureSystems as ArtThinking about interfacesOS terminologyInterface and abstractionVirtualization?Standards, wrappers, adaptersWhat is an operating system?Slide 27Hardware-software stackOS vs user-level programsFunctions of the OSSlide 31Slide 32Why study operating systems?Hints for designing systemsSystems from 10,000 feetWhy is designing systems hard?Slide 37Slide 38Slide 39Slide 40History of operating systemsFirst phase: single operatorSecond phase: batch processingSlide 44Slide 45Third phase: multi-program batchSlide 47Fourth phase: time-sharing4a: computing as a social mediumFifth phase: personal computingOperating system complexityOS ComplexityDealing with complexityCPS110: Intro to (Operating) SystemsAuthor: Landon CoxInstructor: Jeff ChaseAugust 24, 2009Syllabus: prerequisitesCPS 100 Basic data structures and memory layoutAllocating memory on the stack versus from the heapCPS 104Basic computer architecture, ISAsRegisters: stack pointer, PC, general-purpose Virtual memory translationPage tablesTLB, cachingOther: C/C++Syllabus: lectures and textbookLecture notes on the web (125 pages)Exams based on content of lecturesTextbooksOnly suggested“Modern Operating Systems”Easy to find on-lineNew book: Saltzer and KaashoekSyllabus: discussion sectionsOne section, starting this weekF 2:50 – 4:05Teaching AssistantJie Xiao (“Jennifer”) ([email protected])Undergraduate Teaching AssistantsMatt JacobsonSyllabus: homework problemsPosted on web on Monday of each weekShould be done before discussion sectionNot graded, but count toward participationSyllabus: projectsWhere you will learn the most4 projects0: very simple intro to C++1: build a user-level concurrency package (thread library)2: build a virtual memory manager3: hack into a vulnerable systemProjects aren’t long, but are difficult (and “exacting”)Only 100-1,000 lines/code, but could be many hoursEverything is in C++Project 0 will be posted in a few daysSyllabus: project environmentLinux/GNU environmentYou need a CS accountDon’t have one? Send me e-mail.[email protected] by August 28Login to linux.cs.duke.edu to submitSyllabus: project groupsAll projects done in groups of 2 or 3Email groups to [email protected]By Friday (August 28){name, NetID, CS login} for each memberGroup members may be asked to rate each otherProcedure for firing, quitting in syllabusSyllabus: project auto-gradingAll projects are auto-gradedImmediate feedbackUse submit110 script on cs machinesOne submission/group/day gets feedbackCan’t use to debug your project+ three bonus submissions/group/projectAny group member’s submission countsMore on the auto-graderVery narrow feedback: correct or incorrectDoesn’t say what is wrongFollow specifications carefullyStill have to write a test suite (except P0)Don’t rely on auto-grader feedback aloneTo get more useful feedbackCome talk to us!We will provide many office hours every week(double office hours week before a deadline)Syllabus: project timelinesDue at 6pm, accepted until 11:59:59pmAuto-grader clock is the one that countsLast submission to auto-grader is final3 late days/group/semesterIntended for unexpected problemsNo extensionsStart early!Syllabus: project collaborationOk, among groupsC++ syntax, course concepts“What does this part of the handout mean?”Not ok, among groupsDesign/writing of another’s programIncludes prior class solutions“How do I do this part of the handout?”We use automated similarity-detection softwareJust changing the variable names won’t save youhttp://theory.stanford.edu/~aiken/moss/If in doubt, ask meSyllabus: grades, examsProjects: 35%Midterm: 30%Monday, February 23Final: 30%Wednesday, April 29, 7-10pmParticipation: 5%Projects and examsThe two are not independentFamiliarity with projects is critical to doing well on examsI like to ask questions about projects on exams“Extend Project X to include this functionality”Know your project!You can assign roles to different peopleBut each member must understand all aspectsSyllabus: getting helpNewsgrouphttp://courses.duke.eduOffice hoursWith me: Tu, 1:00 – 3:00, etc…With Jie: Tu, 1:30 – 2:30, Th 4:00-5:00UTAs…Post to the newsgroupAnd you may also cc: usQuestions about the course?Goals for CPS 110First part: demystify the operating systemHow does my computer start running?How does a program load into memory?Second part: demystify the InternetHow does my email know where to go?Why is Google so fast?Duke curriculum: one viewHardwareAssembly language program gatesHardwareAssembly language program gatesCPS 104CPS 104CPS 1,6,100,108CPS 1,6,100,108compiling, reading programs off disk, getting program into memory, reading keyboard, starting the computer, saving files, filenames, networkingcompiling, reading programs off disk, getting program into memory, reading keyboard, starting the computer, saving files, filenames, networkingApplicationsIdeas high-level programming languagesApplicationsIdeas high-level programming languagesWhat’s missing?What’s missing?CPS 110CPS 110“Systems”: A Bigger PictureProgrammable platforms to enable sharing of data and resources“Textbook” example: operating systems“Cloud” clustersEtc…?Systems as Arthttp://www.sammlung.daimler.com/sculpt/potsdamerplatz/potsd_tinguely500.jpgThinking about interfacesConsider the Java language and its key word “interface”What is a Java object?List of methods and collection of internal stateWhat is a Java interface?Set of methods associated with an object that a programmer can callWhat do those methods do?Invoke code (let the object do work on the caller’s behalf)Modify the
View Full Document