Mar-31: I am out sick, so class is cancelled for today. See you in the lab on Friday.
Mar-30: A reminder that on Friday, April 2, we will be meeting in the lab. Prior to that meeting, you must attempt some real program on Project 3, keeping in mind that the details are intricate, but the goal is simple: load multiple processes and interleave their scheduling.
Mar-09: As you may have noticed, the compiler reads a standard library and a stub code file when doing its job. We can discuss the roles of these files more explicitly later, but critically, what I have provided for default-standard-library.k contains (at least) one error. By using an old grammar, a portion of the standard library doesn't compile, and leaves you with errors for any use of == and not. I have fixed this error; you can obtain the new version from:
~sfkaplan/public/cs26/project-2/default-standard-library.k
Additionally, I was mistaken in how I described the placement of the preserved frame pointer (PFP) in each activation frame. In fact, my compiler code -- particularly, the offset calculations for arguments/parameters -- assumes that the PFP is at offset 0 from %FP. You can keep whatever layout you've used if you have made it work, or you can update your compiler code generation to account for this new placement.
Mar-03: Many people have had problems with the group directories. In particular, some files created or modified by one member of a group cannot be accessed by other members of that group. Worse, the commands that I provided seem not to reliably set the permissions of the files in that group directory properly. Therefore, I have provided a new command that the must be invoked, only when logged into rigel, using this exact command:
$ sudo fix-group-permissions.sh
Note that this command updates the group ownership and the group read/write/execute permissions for all of the files in all of the group directories at once. The approach is heavyweight, but I think it will work. Let me know if you have problems. Some year, I will provide a more elegant solution.
Feb-26: The due-date for Project 2 has been extended (or, really, assigned for the first time) to Thursday, March 4, 11:59 pm.
Feb-25: Tomorrow (Friday) will be a lecture day. We have a great deal of material to cover, and you already have plenty of project work on which to make progress.
Feb-24: No class today. I am out sick for the day, so enjoy the snow. We will meet in class on Friday to continue with CPU schedulers and move onto main memory models and management.
Feb-19: The code that I provided for Project 1 is missing two classes. In order to obtain AsmGen.java and AssemblyInjection.java, use the following command from your project-1 directory:
cp -v ~sfkaplan/public/cs26/project-1/As*.java .
Feb-16: A couple of you discovered, while working on Project 0, that there were problems with state setting instructions (SETTBR, SETIPR, and SETPTR). The problem was, ultimately, a bug with the assembler, which was setting the wrong group of operand status bits. As a consequence, a normal attempt to use of these instructions was likely to fail because the operand used to specify the new state would be misinterpreted by the processor. That bug has been fixed (I think!) Let me know if you encounter any other inexplicable problems.
Feb-16: I have created groups and shared directories on the department systems. Here are the groups:
Let me know if there are any problems with those groupings. Moreover, I have created a shared directory for each group. Specifically, for group X, your shared directory is:
/home/cs26-groups/X
You must be certain that the files you create in these directories can be used by your group members. To do so, use the following commands from time to time:
$ chgrp -R cs26X /home/cs26-groups/X
$ chmod -R g+w /home/cs26-groups/X
Feb-16: I have prepared Project 1, Revision 1. First, I have slightly changed the grammar:
if-then and if-then-else: The exact syntax for these have changed just slightly. Moreover, their order as statement rules has been corrected.
reference and dereference rules: These expressions were added to allow one to reference a variable (that is, for the variable x, you can obtain its address with the expression &x) and to dereference an expression (that is, to take a value, say y, treat it as a pointer, and get the value contained at the address at which it points, with the expression *y).
More importantly, I have substantially foreshortened the task of creating a parser for this project. In particular, I have a new version of Parser.java from which you should start working. (My apologies for whatever work you have completed!) In this new version, there are simply a handful of methods whose bodies have been removed (and replaced with a comment that reads "// FIX ME". You should fill in these methods. To get the new version of Parser.java, do the following from your project-1 directory:
$ cp ~sfkaplan/public/cs26/project-1/Parser.java .
Feb-15: At long last, I have posted a Project 0, Revision 1, which contains details of interrupt handling and the trap table needed to complete the initial kernel for the project. A modification to Project 1 will be coming soon as well.
Feb-09: Some of you noticed that the k-simulator command would not accept more than one executable image on the command line, thus preventing you from doing what Project 0 required -- executing a BIOS that loads and jumps into a kernel. I have changed two things about the simulator:
You may now pass as many executable image pathnames to the simulator as you like. For example:
$ k-simulator bios.vmx kernel.vmx program-1.vmx program-2.vmx
When the simulator is started, the listing of bus devices now includes not only the type of each bus, but also the numeric encoding of that device type. In other words, you should see the integer value that the bus controller will provide in its device map, thus aiding your debugging.
Feb-03: At long last, Project 0 is posted on the Assignments page. It is a lengthy document, so start reading it soon. Note that one section is incomplete, but will be completed soon.
Jan-18: Welcome to Computer Systems II! If you are enrolled in this class, or even if you are considering this class, please begin, before our first class on Monday, Jan-25, by reading the course information. This document makes clear what material we will cover, what is expected of you as a student, how I will evaluate your work, etc. It may also help you to determine whether this course is one that interests you.