Monthly Archive for May, 2007

Deadline extension for proxy lab & information for HTTP/1.1

Some of you told me that you don’t have enough time to complete the proxy lab, so the deadline is postponed to June, 10.

Also you have to take care for some special hickups if you use HTTP/1.1 because the connection is not closed when all data is transfered.

You can use the following procedure to avaid a (forever) blocking read:

  • Read the header line based and parse the content-length field (if present)
  • If the content-length is present, then read the given bytes and pass them to the client
  • Otherwise continue reading until you read

Also keep in mind that you might need to reformat “GET http://server/path/ HTTP/1.1″ to “GET path/ HTTP/1.1\nHost: server” depending on the server implementation of HTTP/1.1.

Last lab: optional

The last lab about parallelization with OpenMP will be optional and will provide the possibility to raise the grade of a student or a group (but not to lower it).

I will present the details during monday’s lecture.

New exercise sheet for the proxy_lab available

I was told that there was a mistake in the proxy_lab and filesystem_lab exercise sheets. They stated that groups up to three people could be formed, but the course homepage itself says that only groups up to two people are allowed.

So I wanted to clarify that only groups up to TWO people are allowed to work together.

I hope that this does not cause any inconveniences to you. If there are any problems, step by at my office and we’ll try to solve them!

Talk: Architecture & Design of the Windows Kernel

Dave Probert, Microsoft (Windows Core Operating Systems Division), Redmond

Architecture & Design of the Windows Kernel

download calendar entry

Abstract
There are arguably only two flavors of operating systems that matter today in the commercial world. The most widely deployed OS is Windows, but there has been relatively little information available about its internals until recently. This talk will present some of the more interesting aspects of the Windows kernel, and how it contrasts with Unix—particularly with respect to key design decisions. The talk will conclude with a discussion of the challenges facing operating systems, and some speculation about the future. The source code for the core of the Windows kernel, the original design documents, and a collection of slide-ware describing the architecture will be handed out during the talk.

About the speaker
Dave Probert is a kernel architect within the Windows Core Operating Systems Division at Microsoft where he is currently working on the next generations of Windows. Dave is also the architect for the Windows Academic Program, developing both the WRK package and ProjectOZ. Previously Dave managed kernel development for Windows, starting with the Windows 2000 release. Dave joined Microsoft in 1996, after earning his Ph.D. in Electrical & Computer Engineering at UC Santa Barbara developing the SPACE project with Prof. John Bruno. His prior industry experience includes serving as Vice President of Software Engineering at Culler Scientific Systems, consulting for various companies on UNIX kernel internals, and working as a systems architect at Burroughs Corporation designing hardware and writing microcode for the B1900.

Language English
Host Bertrand Meyer
Place IFW A 36
Date Tuesday, 29 May 2007
Time 16:15

2007-06-04: Course evaluation

The SS07 course evaluation for the Syslab course will take place during the next lecture (2007-06-04). I would like to recommend to be there to express your opinion on the course so that we will be able to analyze your feedback and improve the lesson.

Doxygen documentation

An example of Doxygen documentation for the filesystem lab is available in HTML and PDF format. The settings used to generate the documentation can be found in the Doxygen configuration file.

Sample solution to the filesystem lab

On the lab page you can find a sample solution to the filesystem lab.

Proxy Lab

The new assignment is out, check the website at http://www.lst.inf.ethz.ch/teaching/lectures/ss07/2100/proxy_lab/index.html

Tests for the append operation

A new version of the handout is available online. It contains a new fstest.c with some bug fixes

Addition to the evaluation image tests

A new command file is available to test for the append operation (if a write is issued on an existing file the written content will be appended at the end of the existing data).

Wrong arguments

You can assume that the parameters passed to the filesystem lab are correct. You are not requested to check for invalid file names (with non-legal characters) or invalid paths (e.g. fs_creat("/non-existing-dir/file-to-be-created.ext"))

Filesystem Lab: simplifications

Your FAT driver can have the following limitations:

  • you can limit yourself to FAT12 images
  • your driver should be able to create new files but not necessarily new directories
  • you can ignore long file names
  • required operations:
    • open and close a file
    • open a file, read the content, close it
    • open a file in a subdirectory, read the content, close it
    • create a file, write Hello world! and close it
    • create a file in a subdirectory, write Hello world! and close it
    • work with more than one open file at the same time
    • create a file with more than 2K of content and close it
    • append content to an existing file

You can test the listed operations with evaluation.img image file and the corresponding evaluation.img.command command file

Deadline extension

Die deadline for the filesystem lab is extended to 2007-05-20 (next Sunday).

Sample solution to the scheduler lab

On the lab page you can find a sample solution to the scheduler lab.

Checking a disk image

To test changes on a disk image (performed with the fs_creat and fs_write calls) you should check the modified image file with a filesystem checker.

Example on Linux:

$ fsck.vfat -lnv single.img
dosfsck 2.11 (12 Mar 2005)
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
Checking we can access the last sector of the filesystem
Boot sector contents:
System ID "mkdosfs"
Media byte 0xf8 (hard disk)
       512 bytes per logical sector
      2048 bytes per cluster
         1 reserved sector
First FAT starts at byte 512 (sector 1)
         2 FATs, 12 bit entries
      1024 bytes per FAT (= 2 sectors)
Root directory starts at byte 2560 (sector 5)
       512 root directory entries
Data area starts at byte 18944 (sector 37)
       502 data clusters (1028096 bytes)
32 sectors/track, 64 heads
         0 hidden sectors
      2048 sectors total
Checking file /single
Checking file /FILE.TXT
Checking for unused clusters.
single.img.orig: 2 files, 1/502 clusters

Options:

  • -l: list path names of files being processed
  • -n: no-operation mode: non-interactively check for errors, but don’t write anything to the filesystem
  • -v: verbose

malloc lab results

The points computed by mdriver are not absolute but depend on the machine where the test is run as they depend on an evaluation of the installed libc performance. You might therefore notice different results for your lab. All the labs are tested on the same machine and evaluated using the same libc performance values.

Sample solutions for the malloc lab

Some sample solutions and examples for the malloc lab are availble.

mm-naive.c The simplest solution: malloc simply sbrk’s and writes a size header. free does nothing. realloc is implemented directly with malloc and free. This solution has great throughput but terrible space utilization, and thus fails on many traces because it exhausts memory.
mm-implicit.c Solution based on coalescing implicit free lists with boundary tag. This is the simplest reasonable package.
mm-explicit.c Solution based on explicit free list with boundary tag coalescing and first fit placement.
mm-tree.c Highly optimized solution based on red-black trees.
mm-test.c A buggy malloc that produces overlapping blocks. Used for testing the driver.