for CMSC 412

This page contains late breaking announcements from Dr. Hollingsworth and Simon Hawkin (the TA).
Please check this page a couple of times a week.

Project 5 Graded

  • Project 5 has been graded. Grades and grading guidelines are available. This is important: several (reportedly working) projects could not compile! Or would not run! Accordingly, they received zeros. If you think that your project 5 may let your class grade down (and that's around 8 percentage points!), try to settle this somehow with Dr. Hollingsworth. I (Simon) too will be available later in the day, but that may not be of much help; the class grades may very well be calculated sooner.

    Final Moved!

  • The final will be in 1112 AV Williams (same room as lecture).


    Project 4 Guidelines

  • Guidelines for project 4 are available now.

    Sample Applications for Project 5

  • They are available from the project description. Two of them, cat and tee, have been modified recently. If they do not work for you, please let me know.

    Project 4 Graded

  • Project 4 has been graded. However, several projects could not be tested. Look at the grades; if you do not see your grade in the list, or if you are not satisfied with your grade, you will need to see me. As usual, you can do that either during office hours or set a special appointment at some time convenient for you and me.

    A few words on the testing. As usual, the tests are run under Windows NT; those that fail are run under Windows 95 and MS DOS. Only the best test runs are considered. If you are curious, check out the tests and see for yourself.

    Project 5 - Sample Kernel

  • A sample kernel may be taken from the previous semester. Let me know if it contains any inconsistencies with our current documentation (should not). This version implements everything except the shell. If you decide to use the sample kernel, you will have to implement the shell, which will get you up to 50% of the maximal possible grade for project 5. This option is only recommended if you do not have a working version of kernel (that is, project 4).

    Recitation Evaluation

  • Payback time! On the next lab session (May 6th), you will have a chance to give our department some feedback. There will be separate evaluations of the TA (in the aforementioned session) and the professor (on a lecture, I presume).

    Project 3 Graded

  • The grading guidelines and grades are available now. So are the tests: 0, 1, 2, 3, 4, and 5. Test 5 is the smokers problem; test 0 is very simple; tests 1 and 2 are the enclosed user programs; tests 3 and 4 are taken from the previous semesters.

    The average score is approximately 65, including non-working projects, and around 84 among the working projects (that is, projects that show some life). If you have any suggestions, complaints, or questions, feel free to ask me.

    No Warnings

  • Keep in mind that your project should compile with no warnings (and no errors). If you use #pragma warn to disable warnings, please restrict its effect on one piece of code at a time (at most, one function definition) and reenable it after that (or restore the previous state). If you use -w compiler option, you are only allowed to enable warnings.

    Relocation Table

    Before relocation: After relocation:

  • Relocation table contains references to addresses that are used in the program. For every address A in the program there is an entry B in the relocation table that points to A. These pointers are stored as unsigned longs (only the 20 minor bits are used). Now we can calculate the absolute addresses from the relative addresses (stored in the program before relocation). First, we calculate the starting address of the segment where we load the program (referred to as startseg in the specs). Then, add to it the relative address (pointed to by an entry in the relocation table), getting the absolute address. Finally, repeat this for all entries of the relocation table.

    In the example below, we assume the header was declared as unsigned[]; its contents is described in the specs. Notice that we update ("patch") both the address used in the program and the pointer to that address (stored in the relocation table), since both of them are relative before relocation.

    unsigned **entry; /* pointer to an entry in the relocation table */
    unsigned *seg; /* segment portion of the address to be patched */
    int i;
    entry = (unsigned**)( (char*)header + header[12] ); /* 1st entry */
    for ( i = 0; i < header [3]; ++i ) {
       seg = MK_FP( FP_SEG(*entry) +startseg, FP_OFF(*entry) );
       *seg += startseg;

    Extended Office Hours

  • On Monday, March 30, I will hold additional office hours in the AVW WAM lab (the usual place) between 5 pm and 6 pm. After that, I will stay on campus for another hour or longer; feel free to send me email to make an appointment.


  • Have you voted for your favorite design of this year's T-shirt of our beloved Department?

    Project 3 Diskette Contents

  • I only pay attention to the source code (including the makefile) and the readme file. Whatever object files, executables, etc. may be on the diskette are ignored. Also, you do not have to put them in a special subdirectory on the diskette (as the specs suggest); I assume you have the project in the root directory. This is not important, anyway; just let me know where you keep the files, if you think there may be a confusion.

    Project 3 Semaphores

  • In case you have missed it, the project assumes the semaphores are implemented as in the textbook ("as on the test"), that is, without thresholding the counter.

    Project 3 Additional Requirements

  • Please read them carefully. Send any questions to your TA.

    Spring Break

  • Happy holidays to everyone! In the meantime, in case you decide that working on your project during the break will make your life happier, you are welcome to send me (Simon) questions by email. I will answer them, but the delays may be longer than a day. Also, I will be out of town between Friday, March 27 and Monday, March 30. I cannot promise that I will meet you during the break, unless it is an emergency (in terms of the project). I will hold no office hours either.

    Project 2 Graded

  • You will get the submitted diskettes back with notes (a "notes" file) on them explaining the grade. The grading guidelines and grades are available. So are the tests. The following files should be substituted for proc.c and the project recompiled. (If you have different header file names, replace the included file names.) test1.c, test2.c, test3.c, test3a.c, test4.c, test5.c, test6.c, test6a.c, test7.c, test7a.c. The following batch file does a selected test (including recompilation and running): do.bat.

    Project 2 Wrap Up

  • A few last words have been posted in our newsgroup.

    Project 1 Graded

  • You will get the submitted diskettes back with notes (a "notes" file) on them explaining the grade. The grading guidelines and grades are available.

    Correction to Project 2 Handout

  • See "Implementing system calls", description of the System_service interrupt handler. If you have an old Borland package (versions later than 4), the correct prototype is

    void interrupt System_service
    /* Access to system service routines. Service type is
    to be passed in the AX register */
    unsigned int sbp,sdi,ssi,sds,ses,sdx,scx,sbx,sax,sip,scs,sflags,
    sds2,sbp2,sip2,scs2,argc ;

    and if you have a current version of Borland (4 or later), the correct prototype is

    void interrupt System_service
    /* Access to system service routines. Service type is
    to be passed in the AX register */
    unsigned int sbp,sdi,ssi,sds,ses,sdx,scx,sbx,sax,sip,scs,sflags,
    sbp2,sip2,scs2,argc ;

    The handout, unfortunately, confused the new signature with the old parameter declarations.

    Project 0 Graded

  • You will get the submitted diskettes back with notes (a "notes" file) on them explaining the grade. The grading guidelines and grades are available.

    TA Office Hours

  • The TA will have office hours on Tuesdays 2-3:30 pm, as announced. Another session of office hours is on Thursday, 5:30-7:00 pm. This will satisfy most but not all students. Therefore, if you need to meet me but cannot make it during office hours, email me to set up an appointment.

    Lecture Room Changed

  • Lecture will now meet in AVW 1112 (starting 1/29/98).

    Discussion Section Room Changed

  • Both discussion sections will now meet in CHM0124.

    No lab session on Mondays

  • Correct your schedules: there will be no recitation (discussion, lab) section meetings on Mondays. Both sections meet at their allocated time on Wednesdays only. Office hours will be announced later.