0512.4402 Introduction to System Programming


Quick Links

  1. Slides used in lectures - in Moodle
  2. Assignments - in Moodle
  3. Recitations - in Moodle
  4. Frequently asked questions : Miscellaneous technical information
  5. Course Moodle site
  6. Video feed of lectures (TAU login required)

Old exams:

  1. 2004      Answers
  2. 2005
  3. More Questions      Answers

Contents

  1. Administrivia  
  2. Statement of intentions  
  3. Bibliography  
  4. Homework and Grading  
  5. Topic list  
  6. Important dates  
  7. Pointers to on-line resources  

 

Administrative Information

Lectures:
     Sunday 15:00-17:00, Kitot Hashmal 103
     Wednesday 10:00-11:00, Wolfson 001 (Tau hall)
 
Recitations:
     Tuesday 15:00-16:00 Kitot Hashmal 207
     OR
     Wednesday 11:00-12:00 Kitot Hashmal 207
     

Staff:
    Lecturer:
Prof. Avishai Wool, yash(at)eng.tau.ac.il.
      Office: Wolfson Software 314, Phone: 640-6316. Office hours by appointment - please coordinate by email.
    Recitations: Amnon Drory,
amnondro (at) mail.tau.ac.il
      Reception time: Wednesday 12:00, Office: Wolfson Software 212
    Teaching Assistant: Revital Levin,
revitallevin(at)mail.tau.ac.il
      Reception time: Wednesday 20:00 at the computer labs


    Assignments Submission: isp-grader@eng.tau.ac.il

Objective of the course

Our goal is that when the course is over, each one of you will have a better idea about the way computers really work, and that your programming skills will be greatly improved. You should already be acquainted with the way computer hardware is constructed and designed. Most of you have a considerable experience as computer users, using many sophisticated software systems. You also know how to write simple computer programs. But how do the really large systems work? How do programs control the actual hardware? In this course you will see the bridge between the hardware and the software, called the operating system. The course will cover many of the abstractions supported by operating systems, and the way these abstractions are implemented. The course includes extensive programming assignments in C. It is expected that by the end of the course, you will have a working knowledge in this environment.

Bibliography

  1. Modern Operating Systems, 3rd edition, by Tanenbaum. Prentice-Hall, 2008. This will be the main text book for the course.
    The 2nd edition from 2001 is fine too.
  2. מערכות הפעלה, מאת סיון טולדו. הוצאת אקדמון, 2001.. Text in Hebrew.
  3. Operating Systems, 6th edition, by W. Stallings. Prentice Hall, 2009. Alternative text. 4th or 5th editions fine too.
  4. Operating Systems: A Design-Oriented Approach, by Charles Crowley. Irwin, 1997. Contains many code examples.
  5. The Design of the Unix Operating System, by Bach. Prentice-Hall, 1986. A classical book describing the design of SVR3 Unix.
  6. Unix Internals, by Vahalia. Prentice-Hall, 1995. Comprehensive description of state-of-the-art Unix dialects, including BSD, System V, Solaris, and Digital Unix (OSF).
  7. The Design and Implementation of the 4.4BSD Operating System, by McKusick, Bostic, Karels, and Quarterman. An excellent book describing the structure of a particular OS.
  8. Inside Windows NT (2nd edition), by Solomon. Microsoft Press, 1998. The best overview of Windows NT.
  9. תקשורת בעידן ה-"IP" מאת צבי שחם. הוצאת בינת, 2005  Text in Hebrew, 1-2 chapters may be relevant to later lessons.

Homework and Grading

The grading in the course will be based on homework assignments that include a serious programming effort.  The breakdown will be:

This means that you must put an effort throughout the semester. Homework assignment will be handed in class and posted on the web .

 

Ethics. Unless told otherwise, homework is to be done individually. You may discuss your work with another student, but if you borrow a substantial idea from somebody else, you should acknowledge him or her explicitly in your work. In any case, you should write your work on your own. Cheating will result with serious consequences.

Communication

Other than lectures and recitations, the main mode of communication in the course will be e-mail and constant updates of the course web site . It will be assumed that you read e-mail at least twice a week.

Topic List

Review of the C programming language.


What is an Operating System?
The hardware/software interface: a summary of physical computer organization.
System calls and interrupts.
Processes and threads.
Inter-Process communication. hardware solutions, busy-wait, mutex, semaphores.
Dining Philosophers. Readers/writers.
CPU scheduling: measures, preemption, policies.
Deadlocks: detection, prevention. Banker's Algorithm. Two Phase Locking.
Memory management. Swapping, Virtual memory, Paging.
Caching algorithms: FIFO, LRU, Clock.
I/O devices: Introduction; DMA; Disk drivers.
File systems: organization and implementation on disks.
Security: Authentication. Trojan horses. Buffer Overflows. Viruses and worms. Protection mechanisms.
 

On-Line Resources

We will try to put as much material as possible on the web. The starting point is this page.

 

Course home page: www.eng.tau.ac.il/~isp.