( Latest Revision --
Wed Nov 20 12:05:16 PST 2002
)
11/20/2002: Reformatted the HW #4 assignment (no material change)
Homework Problems for CS 3750
Doing the homework will be likely to raise your course grade by one
full letter grade (e.g. from C to B, or from B to A).
Directions for homework submissions
You'll get good grades on the homework if you show mastery of the
material. Give thoughtful and complete answers.
Explain your answers so as to demonstrate and prove to a skeptical
reader that they are correct.
Put things into your own words. Do not copy, quote, or closely paraphrase
the textbook or other people's writings.
Write so as to be understandable to a certain intended readership -- an
intelligent person who has completed the prerequisites for CS 3750 but who
has not yet taken CS 3750.
If I don't feel that what you write is understandable to that audience then
you will lose substantial credit.
Format
- Everything except source code (including "psuedo-code"): Turn
in hard copy. Double space. Make margins of between 1" and 1-1/4" on
sides, top and bottom. Use a font size from 10 to 14. (I prefer a
fixed-width font.) Turn in the printout at the beginning of class on
the due date.
- Source code: Turn in a neat, compilable copy by e-mail. No
attachments, please. No more than 70 characters per line. The e-mail
must be sent before midnight on the due date.
Send e-mail to: john@ishi.csustan.edu
Homework Assignment #1.
Due Monday, September 16
Chapter #01 -- Introduction
- Based on your reading of the first chapter, write a concise essay
describing the important functions and responsibilities of a modern
time-sharing operating system. Write 500 words or more.
Chapter #02 -- Computer System Structures
- The HAL 3000 computing system has a primary memory X and a
secondary memory Y. HAL also has a cache C
that it uses to reduce the average time required to move a word of
data from Y to X. Write a pseudo-code algorithm for a function
read(A, B) that places a copy of the word at address
B in Y into the word at address A in
X. (Your algorithm does not have to be very detailed, but it
is important that you show you understand how to properly select and
sequence the cache-maintenance actions and the memory-transfer
actions.)
- The summary section of the second chapter states: "Multiprogramming
and time-sharing systems improve performance by overlapping CPU and
I/O operations on a single machine." Suppose that initially in such a
system there is no I/O occurring and a user-program is executing in
the CPU. What chain of events would typically change that situation
into one where a user-program is executing and I/O is occurring
simultaneously? When you answer this, don't skimp on details. Show
me that you learned the information in the text that applies here.
Homework Assignment #2.
Due Monday, September 30
Chapter #03 -- Operating System Structures
- For each of the indicated system calls in the list below, write a few
sentences summarizing what tasks the operating system might have to
perform to implement the system calls.
(For example, creating a file would require that an entry be placed in
some directories or tables on the disk, perhaps some allocation of
disk blocks.)
Try to be thorough and include enough plausible detail. I think
basically you need to consider what resources have to be
allocated/deallocated and what kinds of records are required to keep
track of the changes.
Remember your intended audience -- the student who has the
prerequisites for this course. Make your answer undestandable and
enlightening to your audience.
It is to be understood that there is no one correct way to implement a
system call.
- load process
- open file
- request device
- set process attributes
- delete communications session
Chapters #04 & #05 -- Processes and Threads
- Write a small essay in your own words on the topic of programs,
processes, and threads. Concentrate on defining each of the three
concepts, and on clarifying the similarities and differences among
them. Use information distilled from your readings of chapters 4-5,
and add whatever else you think will be helpful. (Keep in mind the
"intended readership" described in the directions above.)
Chapter #06 -- Scheduling
- Do problem 6.3 on page 185 (this involves making Gantt charts and
calculating measures of the performance of several scheduling
algorithms).
Homework Assignment #3.
Due Monday, October 21
Chapter #07 -- Process Synchronization
- Do the problem in the file
hymanProb.html
in this directory. Please take note of the example
"scenario" described in the problem statement. Make sure
that the solution you construct is the same kind of specific
and detailed scenario.
- Do Problems 7.1, and 7.6 (Remember to use exposition suitable to your
"intended audience" -- a student who has the prerequisites for this
course.)
- Give a pseudo-code solution to the readers-writers problem.
Your solution must not let readers starve, nor let writers starve. To
achieve synchronization, use only one or more semaphore(s) of the type
described in section 7.4.2. Assume that the list in every semaphore
is a FIFO queue.
Homework Assignment #4.
Due Wednesday, December 4
Chapter #08 -- Deadlocks
- Do problem #8.13 on page 269. Show all your work (in detail)..
Chapter #10 -- Virtual Memory
- Do the following problem. Show all work in detail.
A virtual address of 76543656 (hex) appears in a program that is being run
on a computer that does demand paging. The computer has 24-bit physical
addresses, 32-bit virtual addresses, and a 1K-word page-size. How many
physical frames are there? How many virtual pages are there? What are the
page number and the offset corresponding to the virtual address? (Give
the last two both in hex notation and decimal notation.)
- Do problem #10.10 on page 367. Show all your work in detail and
explain all your reasoning in detail.