Operating systems - Spring 2005

Operating systems - Spring 2005


Messages:

General:

  • This course will have programming assignments in Linux and Windows. Obviously, you will need a computer account in Linux.
  • There will be five assignments this semester, all of them are obligatory.
  • Students wishing to appeal regarding their exercises grades should put the checked exercise together with an explanation in my box no. 311, or send me an email.

  • Every week I will send an email with a brief note about the com-ming TIRGUL. make sure you get these emails. They contain important information.
  • In the mail I send I usually give a link to notes summarizing the material and more.
  • I also send links to code examples. Make sure to print them before class! I will not hand printed code during class!.
  • Please read the code (and notes) I send you BEFORE class - This will improve your learning curves since it is very hard to understand a code example if you are looking at it for the first time.

Linux help:

Linux RedHat Fedora 2.0 Download
Linux-kinneret CD-bootable linux in Heberw (No need to install)
Linux-knoppix CD-bootable linux (No need to install)
Linux getting started
Linux Kernel Hacker's Guide
Linux Kernel Hacker's Guide
Linux Programmer's Guide
The Linux Kernel - A very good document.
Understanding the Linux kernel - A very good (but somewhat hard) book.
Red Hat Linux Unleashed A book for a newbie sys. admin.

Windows help:

Windows help (file related functions)
Windows help (therad/process related functions)
Windows help (mutex/semaphore/event related functions)

Notes of the class:

Amir Averbuch's page
Slides from class

Previous symester lecture notes of the Targil:

Lecture1 - Introduction
Lecture2 - Introduction Contd'
Lecture3 - Processes
Lecture4 - Threads
Lecture5 - Mutex and Semaphore
Lecture6 - Events and Condition variables
Lecture7 - Memory Management
Lecture8 - Memory Management Contd'
Lecture9 - File system
Lecture10 - File systems cntd' and device drivers
Lecture11 - Networking - introductory overview
Lecture12 - Networking - Writing blocking application
Lecture13 - Networking - Writing non-blocking application


Appendix 1 - How Linux starts
Appendix 2 - SMP synchronization
Appendix 3 - IPC (Inter Process Communication)

Code examples for Linux:

Generic Makefile: Makefile
File copy: file_copy.c
Getting a list of files: file_list.cc
Serial port bridge - Device driver example: com_bridge.c
fork & wait: fork.c
fork & execv: for_exec.c
Pipes (pipe()): pipe.c
Messages: msgtool.c
Pipes (popen()): popen1.c popen2.c popen3.c
FIFO: fifoclient.c fifoserver.c
Shared memory: shmtool.c
Semaphores: semtool.c semstat.c
Mutex (threads): mutex.c
Conditinal variables (threads): cond.c
Implementing semaphore from a muetx and a cond. var. (threads): semaphore1.c semaphore2.c
Socket (polling): client.c iterative-server.c process-server.c
Socket (select): defs.h multi_client.c multi_server.c
Signals (signal): signal.c
Signals (sigaction): sigaction.c

Code for windows

Threads: threads.cc

Some papers:

creating (and proving corectneses of) a mutex (a bit old but still nice)

Exercises:

  • In programming assignements you need to hand the printouts of the code AND leave the code in your unix-home-directories.
  • The code should be kept in the directory ~/os/ex1/q2 where in this case ex1 stands for the first exercise and q2 stands for the second question.
  • Make sure you give read and execute permissions to everyone to the whole path. Use: chmod 755 ~ ~/os/ ~/os/ex1 etc.
  • Specify your username on the printuots you hand.
  • Submissions that are unreadable, late, missing printouts, missing code, or not specifying username on the printout will not be checked causing you point loss!
  1. Exercise 1 Due: Mar 18th
  2. Exercise 2 Due: Apr 1st
  3. Exercise 3 and windows test prog and linux test prog Due: May 5th
  4. Exercise 4 Due: May 22nd
  5. Exercise 5 Due: Jun 3rd
Exercise grades

Prev exams:

1
2
3