Assigned 4/1/98, due Friday 4/3/98. Give me a list of references
that your group will use for the presentations on your operating system.
Assigned 4/1/98, due Monday 4/6/98. Your group will give a
10-minute presentation on:
How does your operating system schedule processes?
What facilities does your operating system provide for
inter-process communication?
Assigned 4/1/98, due Friday 4/10/98. Write a small
command shell.
Assigned 4/10/98, due Wednesday 4/15/98, on paper.
Do problems 5, 8, 10, 12, 15, 20, 21, 22, 25, and 26 from Chapter 2
of Tanenbaum. Also, look at the linux source code to answer the
following questions:
What is the name of the linux data structure that represents
a single process? (It's defined in sched.h.) How does it compare
to the chart on page 32 of Tanenbaum?
What sort of scheduling algorithm is used?
What happens on a context switch?
The source code is in /Accounts/courses/cs307/linux. You'll especially
want to look at /Accounts/courses/cs307/linux/include/linux/sched.h
and /Accounts/courses/cs307/linux/kernel/sched.c.
Assigned 4/15/98, due Wednesday 4/22/98. Your group will give a
10-minute summary of your operating system's memory management
system. Some questions you might want to address include:
How does memory get allocated to a process when it starts running?
How is relocation of code handled?
How is memory security achieved?
If your OS uses paged virtual memory, give us some details
on the MMU, the page table structure, page sizes, page eviction policy,
etc.
...and so on.
Assigned 4/22/98, due Wednesday 4/29/98, on paper.
Do problems 3, 5, 11, 12, 13, 19, and 25 from Chapter 3, and
problems 3, 10, 11, 13, 20, 21, and 23 from Chapter 4.
Assigned 5/1/98, due Friday 5/8/98.
You have a choice of UNIX programs to write. Regardless of which one
you choose, please don't sneak around the Linux or FreeBSD source code
looking for how someone else has already solved the problem. They
were trying to solve more general problems, anyway, so their code will
be complicated and ugly. Just write these babies yourself. You may
work with a partner.
Choose one:
Write a program that prints the full path names of
all files whose names contain
a given string. Your program should search the entire directory
tree rooted at the current directory. Also, the string
comparison should be case insensitive.
Write a program that searches for a given string in all
the files in the directory tree rooted at the current directory.
For each line that contains the given string, print out the
file name and line number. The search in this case should be
case sensitive.
Write a program that detects and reports loops in the
directory tree rooted at the current directory. For the purposes
of this exercise, consider hard links and soft links to be
identical. That is, you're looking for loops consisting of
hard links, soft links, or a combination of the two.
Assigned 5/20/98, due Monday 5/25/98, on paper.
Do problems 3, 9, and 18 from Chapter 5, and
problems 2, 3, 4, 7, 9, 10, 12, and 13 from Chapter 6.
Suggested Reading
3/30/98. Check out the UNIX manual pages for the
system calls read(), write(), fork(), and execl().
Some related system calls you could take a look at include
lseek(), wait(), getpid(), and getppid().