pop up description layer
Last modified: 20080814:162744/added labs 2-6

FIT2022 AJH-2008-10

FIT2022 Computer Systems 2 Lab Notes

Laboratory Timetable | Laboratories | Lab 1: The Mutual Update Problem | Lab 2: Processes | Lab 3: The Disk and File Systems | Lab 4: Memory Management | Lab 5: Process Scheduling | Lab 6: Optimizing a System

Laboratory Timetable

Click on each content item to visit the appropriate web page.

Week Date Lecture Tute Lab Objs Content PDFs
2 21 Jul     1 6 Python and Mutual Update pdf version
4 04 Aug     2 2 Processes pdf version
6 18 Aug     3 Disk and File Systems pdf version
8 01 Sep     4 Memory Management
10 15 Sep     5 Process Scheduling
12 06 Oct     6 Disk Scheduling

Laboratories

The laboratories are designed to give the student hands-on development of various computer systems concepts. Each lab is offered as a partial developed set of program exercises, where demonstrations show the student what is required, and extensions to complete or extend the exercise are required to be completed by the student. This is called the lab work, and it is a required part of the assessment for the unit. Students may work together in pairs (if they wish) for this purpose.

The laboratories are structured around using the programming language Python to develop the various subsystems of an operating system, and to use these components to explore the working behaviour in a very hands-on way. Each lab is structured to have a set of basic exercises, together with some extension exercises. You need to complete all the basic exercises to satisfy the minimum requirements of the lab, and get a satisfactory mark for the lab. The labs culminate in the development of a complete working Python Operating System (PythOS) written entirely in Python.

An introduction to the topic of the lab will be provided in the tutorial in the week preceeding the lab. (Students should attend all tutorials, and a roll will be kept.) Students should read through the lab sheet in the week between the tutorial and corresponding laboratory, and should prepare their lab work as required.

Laboratory Hurdle

The laboratories are compulsory, and attendance records will be kept. A mark will be allocated for each lab attended, on the following scale:

0 Non-attendance at lab
1 Lab attended, but lab work unsatisfactory.
2 Lab attended, and lab work satisfactory.
3 Lab attended, and lab work excellent.
unsatisfactory
You did not correctly complete the minimum requirements of the lab
satisfactory
You correctly completed the minimum requirements of the lab.
excellent
You correctly completed not only the minimum requirements of the lab, but also all the extension exercises.

A total mark of 9 or more (over 6 laboratories) is required to complete the laboratory hurdle.

Laboratory Journal

Students should keep a journal of work done for and in the laboratory. This journal may be kept electronically or on paper, but it must be written up as a text or LaTex document (no Word documents will be accepted!) and recorded in your svn repository.

The journal should contain the material prepared in advance to the lab session, together with answers to each of the exercises attempted during the lab session.

You are asked to keep your laboratory journals on-line, using the svn repository provided, for the reason that I will be reviewing these at the end of semester with a view to see what things worked well, and what didn't. This information will be used to improve next year's unit.

There is also a Guidelines for Writing Lab Journals page.

Lab 1: The Mutual Update Problem

Lab Session 1 is an introductory session, with some tutorials on Python and Subversion (SVN). Python is an object-oriented scripting language, which allows rapid development of software projects, offers excellent error messaging, comes with a comprehensive library system, and importantly for this unit, has a reflexive eval function. Subversion is a version control system which you can use for the lab work development. The lab also shows what happens when you have several people trying to update a file simultaneously. This is a common scenario in Operating Systems, and the lab will show you how this problem arises, and how it might be solved.

The group work to be used throughout the unit will also be introduced.

Lab 2: Processes

Lab Session 2 is about understanding the basic unit of operating systems activity: the process. We look various examples of processes, the various states that a process can go through, and how the operating system becomes involved at each stage. We model process execution with its Python counterparts.

The group work consists of adding individually written processes to a common group execution framework.

Lab 3: The Disk and File Systems

Lab Session 3 is about managing the disk resources and building the user-level file system abstractions over them. It explores the underlying kernel code that responsible for interfacing operating system requests to the disk and file subsystems.

The group work consists of writing code to implement a different file system structure.

Lab 4: Memory Management

Lab Session 4 is about managing the memory resource. We build a model of a contiguous dynamic partition memory management system, using the file system from the previous lab to supply process code, and the eval built-in Python function to support execution of the process image. The final result is a toy operating system PythOS, that can actually read and execute Python program files.

The group work consists of writing code to implement a shortest job first scheduler, and a memory compactor.

Lab 5: Process Scheduling

Lab Session 5 is about managing the CPU resource, and modelling the behaviour of some (preemptive) short term CPU scheduling algorithms.

No group work in this lab.

Lab 6: Optimizing a System

Lab Session 6 explores how to improve system performance by by designing new algorithms. The particular context used here is disk subsystem performance, and the various disk scheduling algorithms employed.

No group work in this lab.

Please make sure you complete the survey!


Document History

20080814:162744 2.0.2 ajh added labs 2-6
20080611:101139 2.0.1 ajh made lab marks into table
20080520:180535 2.0.0 ajh first version for 2008

This page maintained by John Hurst.
Copyright Monash University Copyright Policy
2681 accesses since
11 Jun 2008
My PhotoTrain Photo

Generated at 20091123:0221 from an XML file modified on 20080814:1636
Maintainer use only; not generally accessible: Local Server Work Server CSSE Server

2685 accesses since 11 Jun 2008, HTML cache rendered at 20091124:2307