Fall 2013

Instructor: Betty O'Neil, eoneil@cs.umb.edu

Lectures:  MW 7:00pm  in M-3-430

Syllabus  Note that cs341 is a strong prerequisite for this course. If you haven't taken cs341, you need C programming, computer architecture, some x86 assembly language programming, and preferably experience in hardware programming. Hardware programming and interrupt programming will be reviewed in this course.

First week: get an account for cs444 by running apply, add module ulab to your .cshrc.  Visit www.cs.umb.edu/ulab and its linked documents, review cs341, for example by reading Prof. Wilson’s CS341 lecture slides and run $pcex/test.c on an SAPC with help of microprocessor lab info linked below. 


hw1 (provided files) A Device-independent I/O Package: remgdb-testio0.script due midnight 22 September,  rest due midnight 1 October in your cs444/hw1 directory


(provided files) The Tiny UNIX OS: System Calls due midnight Monday 28 October in your cs444/hw2 directory solution (zip)
hw3 (provided files) Multitasking Tiny UNIX, due Sat., 23 Nov. in your cs444/hw3 directory solution (zip)
hw4 (provided files) A Semaphore Service for Tiny UNIX, due Wed., Dec. 11 in your cs444/hw4 directory Deadline:Sunday, Dec. 15. New: Solution (zip)

Lecture Notes

Wed. Sept. 4 Intro, (Process) Virtual Machine concept
Mon. Sept. 9 User Memory Layout, UNIX System calls
Wed. Sept. 11 SAPC environment, hw1 intro
Mon. Sept. 16 C without malloc, hardware programming in C
Wed. Sept. 18 Interrupts (slides)  (typewr.c handout)
Mon., Sept. 23 Transmit Interrupts, kprintf
Wed., Sept. 25 Interrupt Coding, debugging, scripted execution (handout)
Mon., Sept. 30 Finish intro (Chap 1), start on Chap. 2, processes (handout)
Wed., Oct. 2 Process states and transitions
Mon., Oct. 7 Process-Kernel transitions
Wed., Oct 9 Processes and Threads (user-kernel transition handout)

Wed., Oct. 16 Mutex Mechanisms
Mon., Oct. 21 Producer-Consumer Problem (handout, handout) ProdConsSemaphore.java
Wed., Oct 23 Stacks in hw2, Message Passing, finish IPC (interprocess communication)
Mon., Oct 28 Midterm Review, Scheduling
Midterm Exam Wed., Oct 30 Practice Midterm Exam (Solution)
Mon., Nov. 4 Process switching, for hw3, the multitasking Tiny UNIX
Wed., Nov. 6 Multitasking, for hw3
Wed., Nov. 13 Memory Management Debuglog handout, for hw3
Mon., Nov. 18 Paging
Wed., Nov. 20 Demand Paging, Page Replacement Demo on x86 paging
Mon., Nov. 25 Memory Management hw4 intro
Mon., Dec. 2 More on hw4, Chap. 5 I/O Revisited
Wed., Dec. 4: Preemption (handout)
Mon., Dec, 9 Deadlocks
Wed., Dec. 11 Final Review

Coming: Final exam, Wednesday, Dec. 18, 6:30-9:30 (starting at 6:15 if possible) in M-3-407 Practice Final . New: Solution

Resources: Please email eoneil to correct or improve these!

 Our Google group  (can still request membership at this webpage)

Once in the group, you can send email to cs444_f13@googlegroups.com to post messages, and will get posted messages by email.

How to access ulab.cs.umb.edu from offsite and transfer files

You can do all your development for this class using the department computers, accessed by ssh. Optionally, you can use your own system--

How to use gcc on your Windows system for cs444

How to use gcc on your Linux or Mac system for cs444

Lecture Notes from Fall ‘12

Microprocessor lab info: How to use SAPCs for programming assignments.

CS341 course home page, with more links to hardware resources

From the GNU project:  www.gnu.org: manuals

GDB cheatsheat from CMU for 64-bit x86 systems (includes a few commands with “g” (giant) for 64-bit data format that won’t work on 32-bit systems)

Directories useful for programming assignments

$pcinc – header

$pcex – C example

$pclibsrc – sources for the SAPC support library

Good new-edition book on Linux system calls and system programming, by a well-known Linux kernel developer. It includes coverage of kernel internals where that helps understanding of the system calls. Linux System Programming, 2nd Edition,Talking Directly to the Kernel and C Library, by Robert Love, O'Reilly Media, May 2013

Android: an optional part of this course
Android Linux Poster  Android Linux TechBlog
Android Linux Additions
Android Binder (a thesis)

Good books on Android:
Learning Android by Marko Gargenta, O’Reilly 2011. Covers basics of both UI programming and OS architecture.
Embedded Android by Karim Yaghmour, O’Reilly 2013, Best book I’ve seen for OS-level coverage

VMWare Resources
How to install a virtual SAPC and Linux development host with mtip
vm_tutor.zip  zip of directory with tutor.ovf file for creating virtual SAPC for VMWare
mtip for Linux
mtip executable for use on VMWare Linux development host