CIS381 - Operating Systems Lab Course

Fall 2007

 
Announcements:
  • context_demo.c had some minor errors which have been fixed now.
  • Project 2available av is now available and due at 6pm on December 7th.

 

Co-Instructors

  • Eric Cronin
    ecronin[at]cis.upenn.edu
    Office Hour: Fridays 11am-12pm, GRW461
  • Gaurav Shah
    gauravsh[at]cis.upenn.edu
    Office Hour: Tuesdays, 4pm-5pm, GRW461
  • Micah Sherr
    msherr[at]cis.upenn.edu
    Office Hour: Thursdays, 11am-12pm, GRW461

Teaching Assistants

  • Sandy Clark
    saender[at]seas.upenn.edu
    Office Hour: Mondays, 3pm-4pm, Moore 100A
  • Joseph Schorr
    jschorr[at]seas.upenn.edu
    Office Hour: Thursdays, 5:30-6:30, Moore 100A
  • Luke Zarko
    zarko[at]seas.upenn.edu
    Office Hour: Wednesdays, 2:30-3:30, Moore 100A
  • For fastest response, please direct your emails to cse381@seas.upenn.edu.

     

    Time and Place

    Recitations are held every Wednesday from 7-8pm in Towne 313.

     

    Course Description

    This course is the lab component of CIS380 (Operating Systems), taught by Prof. Matt Blaze. This course consists of two large projects to design and implement your own operating system. Typical components include a process management system, a command interpreter, and a file management system.

    Throughout the semester, we will hold regularly scheduled lectures/tutorials relating to topics discussed in CIS380. We will cover tools and techniques that will be invaluable for completing the assignments. A brief outline of the tutorials is presented below.

     

    Course Resources

    We will periodically post messages to this webpage and to the class newsgroup. These messages may contain crucial information (e.g., clarifications, explanations, changes, etc.). Students are expected to check these resources to keep up-to-date.

    Recommended text: Advanced Programming in the UNIX Environment, Second Edition by W. Richard Stevens and Stephen A. Rago. We will assign weekly readings from this text. The book is available for online browsing at the above link, but we recommend a hardcopy, as this book will be an invaluable resource in your future career as an OS developer.

    The class newsgroup is upenn.cis.cse381. (Please don't post questions relating to this course on the upenn.cis.cse380 newsgroup.) Information concerning Penn newsgroups is found at the Penn Computing webpage.

    Please direct course-related emails to cse381@seas.upenn.edu. Emails sent to this address will reach the entire teaching staff, and will increase your chances of getting a fast response.

    We require that students complete their assignments on seas.upenn.edu. seas (formly eniac-l) is a cluster of computers running the Linux operating system. We will not accept code written specifically for SunOS (the operating system that powers eniac-s.seas.upenn.edu). Please contact CETS if you do not already have access to the eniac cluster.

     

    Cheating Policy

    Cheating will not be tolerated. All students at Penn are bound by the University's Code of Academic Integrity. The Code reads as follows:

    Activities, that have the effect or intention of interfering with education, pursuit of knowledge, or fair evaluation of a student's performance are prohibited. Examples of such activities include but are not limited to the following definitions:

    A. Cheating: using or attempting to use unauthorized assistance, material, or study aids in examinations or other academic work or preventing, or attempting to prevent, another from using authorized assistance, material, or study aids. Example: using a cheat sheet in a quiz or exam, altering a graded exam and resubmitting it for a better grade, etc.

    B. Plagiarism: using the ideas, data, or language of another without specific or proper acknowledgment. Example: copying another person's paper, article, or computer work and submitting it for an assignment, cloning someone else's ideas without attribution, failing to use quotation marks where appropriate, etc.

    C. Fabrication: submitting contrived or altered information in any academic exercise. Example: making up data for an experiment, fudging data, citing nonexistent articles, contriving sources, etc.

    D. Multiple submission: submitting, without prior permission, any work submitted to fulfill another academic requirement.

    E. Misrepresentation of academic records: misrepresenting or tampering with or attempting to tamper with any portion of a student's transcripts or academic record, either before or after coming to the University of Pennsylvania. Example: forging a change of grade slip, tampering with computer records, falsifying academic information on one's resume, etc.

    F. Facilitating academic dishonesty: knowingly helping or attempting to help another violate any provision of the Code. Example: working together on a take-home exam, etc.

    G. Unfair advantage: attempting to gain unauthorized advantage over fellow students in an academic exercise. Example: gaining or providing unauthorized access to examination materials, obstructing or interfering with another student's efforts in an academic exercise, lying about a need for an extension for an exam or paper, continuing to write even when time is up during an exam, destroying or keeping library materials for one's own use., etc.

    * If a student is unsure whether his action(s) constitute a violation of the Code of Academic Integrity, then it is that student's responsibility to consult with the instructor to clarify any ambiguities.

    Ignorance of the integrity code is not an excuse. If you have a question regarding whether something is permissible, ASK US. Otherwise, be conservative.

    Our policy is simple: If you are caught cheating, we will report you to the Office of Student Conduct. No exceptions.

     

    Tutorials

    This is a tentative and preliminary list of the weekly tutorials and is subject to change.

    LectureTopics CoveredAssigned Readings
    1 UNIX architecture, files and directories, programs and processes, and piping and redirection (slides) Chapter 1 of APUE. Skip sections 1.3, 1.8, and 1.10
    2 C in 60 minutes (slides) C Programming Notes, chapters 8, 9, 10, and 11
    3 Advanced process relationships (slides) APUE chapter 9
    4 File redirection, pipes, and advanced signals (slides) APUE sections 10.11 through 10.20, excluding sections 10.15, 10.17, 10.18, and 10.19. Also section 15.2
    5 Debugging (gdb) and memory checking (Valgrind) (slides) Peruse GDB documentation
    6 User contexts and source-code management (slides) makecontext(3) and getcontext(2) man pages
    Subversion Book
    7 FAT Filesystems (slides) File System Handout
    8 Rob Pike's Notes on Programming in C (slides) Rob Pike's Notes on Programming in C
    9 Finishing up your OS. Testing and Doxygen. (slides) No readings.
    10 Using RPCGen. (example code) No readings.

     

    Assignments

    There will be two programming projects for this class. The first is an individual assignment while the second is a group project. Additional information regarding the assignments will be posted on this page later in the semester.

    Project 1 is now available. It was due at 6pm on October 10th.

    Project 2 is now available. It is due at 6pm on December 7th.

    Project 2 resources: