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!
- Exercise 1 Due: Mar 18th
- Exercise 2 Due: Apr 1st
- Exercise 3 and
windows test prog and
linux test prog
Due: May 5th
- Exercise 4 Due: May 22nd
- Exercise 5 Due: Jun 3rd
Exercise grades
Prev exams:
1
2
3