Welcome to the CSE 433 Home page.
Administrivia
Instructor:
Tarun
Soni
Grader:
None as of now. Sigh.
Time: Tue, Thursdays 4:00pm-5:15pm
Place: ACD408
Office Hours:
Tuesday 5:15-6:15pm, Sci-2, 229. I am also available generally after class.
Text book:
Applied Operating System Concepts, First Edition
Abraham Silberschatz, Peter Galvin and Greg Gagne.
See book web page
Homeworks:
Homeworks will typically be programming assignments which further
your understanding of operating systems. In general these will include
using a Unix machine (Linux) and understanding some
system calls which illustrate a specific OS feature.
Homeworks do not need to be turned in, however, the quizzes will be
based on the homeworks and hence it is recommended that you
follow a strict regimen of completing the homeworks on time.
Computer Account Stuff
- We have put together a specific Linux machine for this course.
The IP number for the machine is 144.37.168.135 (it does not have a DNS entry for "name"
access). Your student accounts should have a username and passord as your student ID
(user=joe001 and pass=joe001). Please log in and change the password as soon
as possible
- The machine is a Mandrake 9.0 pentium machine. It should have gcc, g++ and java providing
you with C, C++ and Java development environments.
- Generally speaking, I am agnostic to languages (Java, C++, C) or
Operating systems (Linux, Windows, Solaris) that you use for your homeworks and projects.
That said, recognize that I will not be "debugging" your programs, so coming to
me with a "why does this code not work" is strongly discouraged.
- In all of the homeworks and projects, I expect concepts of operating
systems to be the main piece you learn. Not a new language. Not a new OS.
Not a new compiler. Now a new Makefile. Just concepts. So make sure
that you work in an environment which you are comfortable with. I do not want
you spending huge amounts of time battling the machine, I'd much rather
you spend that time, doing a more interesting project.
Other stuff:
I will try and supplement material in the course with
"hands-on" fun things to do. Examples include running benchmarks on CS machines.
These are not required and certainly not expected
in the course and are primarily meant for your enjoyment, however if you do run
some
of these exercises, drop me a note.
Also, feel free to look at my material from last year's course. This years course
will (pretty much by definition) look similar to last years with additions
in the course being new material (latest and greatest stuff?) which should
be in my lecture notes.
Grading Scheme
Grading will be based on:
- 40% Final Project.
- 0% Project-Mid-term submission.
- 20% Mid-term quiz/test.
- 40% Five surprise quizzes of which only the top 4 will count.
Important Dates:
- Mid-term: March 13, 2003
- Project Mid-term submission: March 20, 2003 (This is flexible,
and for your feedback only. No grades assigned.
- Project Final submission: May 8, 2003 (This is a hard deadline)
- Project Demonstrations: Week of May 1-7, 2003 (Email me for time slots)
- Quizzes: Surprise, no announced dates (take your best guess !)
Miscellaneous Information
- Project notes
- Need help on Unix .. follow this link
- A good collection of Unix programming links
- Various other
information
which is interesting and educational on aspects of operating systems.
Course Structure
Note that although this section looks very similar to last years and
the slide format is similar, using this years slides for your study is highly
recommended since they will, generally speaking, be super-sets of last years
slides + extra material I may be using.
Module 1: Introduction, Overview of OSs
(Jan 21-Feb 4 2002)
- Includes
- Functions of an OS
- What belongs in an OS and what does not ?
- Basic architecture concepts including pipelines, interrupts, instruction
execution steps etc.
- The boot process
- A little bit of history of OSes
- Structure of OSes including monolithic kernels etc.
- The System Call Interface
- Reading: Chapter 1-3 of the text.
- Lecture Notes: ppt
Module 2: Processes, Threads, Schedulers etc.
(Feb 6- 2002)
- Includes
- Processes, PCBs etc.
- Pre-emptive multi-tasking.
- The basic strcuture of a scheduler
- Various states of a process
- Different types of schedulers
- Issues in SMP scheduling, and scaling of schedulers.
- Threads
- Different thread implementations
- Reading: Chapter 4-5 of the text.
- Lecture Notes: ppt
- Homework: 1: Get your hands dirty with a little process and thread creation
Module 3: Concurrency, Interprocess Communications
- Reading: Chapter 6,7
- Lecture Notes: ppt
- Includes
- Producer-Consumer problems
- Critical Regions
- Mutual Exclusion in Software
- Bakery Algorithm
- Test and Set Instructions : Hardware solutions
- Semaphores
- Classical problems: Bounded buffer producer consumer, Reader-writer, Dining Philosopher etc.
- Monitors, Mailboxes and other message passing.
- Unix: pipe, messages, shared memory, semaphores
- Quiz 1 solutions
- Homework: 2: Time to do some IPC stuff. Note that this includes a section on developing
the software only mechanism for managing critical sections as described in the text (Petersen's algorithm)
Module 4: Deadlock and Resource Starvation
- Reading: Chapter 8
- Lecture Notes: ppt
- Homework: 3: Try working with barriers and designing
your own barriers from mutex-es.
- Includes:
- What is a deadlock?
- Process resource trajectories
- Prevention
- Avoidance
- Banker's algorithm
- Detection
- Recovery
Module 5: Memory Management
- Reading: Chapter 9 and 10
- Lecture Notes: ppt
- Includes
- Address binding: compile, link, load etc.
- logical vs. physial address spaces
- Requirements for a memory management systems
- Swapping, fixed and dynamic partitioning
- Fragmentation, Buddy systems
- Relocation
- Paging and Segmentation
- Virtual memory
- Address translation
- Page tables, TLBs, Segment tables
- Thrashing and locality issues
- Policies for placement, replacement etc.
- Resident/Working set strategies
Module 6: File Systems
- Reading: Chapter 11
- Lecture Notes: ppt
- Includes
- File types, operations, access methods
- Directories, tree structures, cyclic and acyclic links
- Implementation issues
- Allocation of space on disk
- Unix Inode strucure, indexed allocation
- Virtual file systems
Module 7: I/O and Storage
- Reading: Chapter 12 and 13
- Lecture Notes: ppt
- Includes
- Programmed, Interrupt and DMA IO
- DMA mechanisms
- Buffered IO
- Unix: device driver structure
- Unix: /dev model
- Unix: sockets and network IO
- Secondary storage: disk IO strategy
- Tertiary storage
Module 8: Networking
- Reading: Chapter 14
- Lecture Notes: ppt
- Includes
- Distributed topologies
- Types of networks: LAN/WAN etc.
- Communication issues: naming, routing, connections etc.
- OSI/ISO stack
- TCP/IP details
- Socket communications
- A quick search sent me
here
for a reasonable example of socket based programming examples
in unix
- The Unix Socket Programming
FAQ .
- Distributed and network operating systems
- Client sever bindings
- Distributed file systems
- NFS details
Module 9: Protection and Security
- Reading: Chapter 18
- Lecture Notes: ppt
- Includes
- History
- Policy vs. Mechanism or security and protection
- Protection Domains
- Access Control
- Authentication, Password mechanisms
- Enforcement in the kernel
- Security threats,network security
- Cryptography
- levels of encryption
- Ciphers, DES, Symmetric key encryption
- Pulic key cryptography, RSA algorithm, number theory
- Authentication, Non-repudiation
- Hash functions and data integrity
- Key management, real digital commerce issues
- Firewalls, threat monitoring
- Network management, SNMP
Module 10: Advanced Topics, Distributed Communications
- Reading: Chapter 15,16,17