I just submitted the grades to the Studiensekretariat. If you want to know your grade just ask me or Mathias.
The results of the course evaluation are available (PDF):
and will be discussed during the last lecture.
On the lab page you can find a sample solution to the filesystem lab.
The last (optional) lab is finally online. You can get all the details at the parallel lab webpage.
As usual, if there are any questions, comments or bugs, file them to Mathias.
So long, and have fun with the last optimization lab.
If the URL that is passed to parse_uri just contains a hostname withouy any path (e.g. http://www.foo.bar) then the function might cause a core dump because there is a small bug in the parse_uri function…
The diff for the parse_uri function looks as follows:
/* Extract the host name */
hostbegin = uri + 7;
- hostend = strpbrk(hostbegin, ” :/\r\n\0″);
+ /* does not work because it maps to the end-of-string and strpbrk
+ * will return NULL
+ */
+ //hostend = strpbrk(hostbegin, ” :/\r\n\0″);
+ hostend = strpbrk(hostbegin, ” :/\r\n”);
+ if (hostend == NULL) hostend = hostbegin+strlen(hostbegin);
len = hostend – hostbegin;
strncpy(hostname, hostbegin, len);
hostname[len] = ‘\0′;
Of course you can download the corrected handout at http://www.lst.inf.ethz.ch/teaching/lectures/ss07/2100/proxy_lab/proxylab-handout.tar
The traditional D-INFK Semesterapéro with teachers and students will take place on July, 19 at 5:30pm in the Dozentenfoyer (HG J floor).
As Matteo said in the lecture you can choose your programming language for this lab. But keep in mind that the exercise should not be made simpler than it is in C. So you should not use any high-level functions to program sockets and use high-level objects for String manipulation or URL-handling.
Also dont use any uncommon or unusual languages. If you are in doubt, check back with Mathias.
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.
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.
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!
Dave Probert, Microsoft (Windows Core Operating Systems Division), Redmond
Architecture & Design of the Windows Kernel
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 |
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.
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.
On the lab page you can find a sample solution to the filesystem lab.
The new assignment is out, check the website at http://www.lst.inf.ethz.ch/teaching/lectures/ss07/2100/proxy_lab/index.html
A new version of the handout is available online. It contains a new fstest.c with some bug fixes
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).
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"))
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