Skip to main content
Department of Information Technology

Computer Systems DV1, Fall 2005, Project Assignment

New: Demonstrations are sceduled.

Lab Assistant Hours

  • By appointment
  • Or just drop in and ask

Groups

  • The project is performed in groups of 4-5 students.
  • The groups will be formed by the following algorithm:
    1. The students pair up into twos
    2. In some cases, groups of three are also possible
    3. These pairs are randomly combined to form groups of four or five students
  • All groups will be required to sign a group declaration form to show their serious intent to complete the project part of the course.
  • All groups will appoint a group leader who acts as the face of the group outwards, and who is responsible for making sure that all group members participate in the work.
Group Name Project Description Arch. Sketch System Design Pres. Hand in
datorsys05-2 S(imple)OS G G G G G
datorsys05-3 Vinter-OS 2005 G G G G G
datorsys05-4 G G G G G
datorsys05-5 G G G G G
datorsys05-6 G G G G G
datorsys05-7 G G G G G
datorsys05-8 G G G G G
datorsys05-9 G G G G G
datorsys05-10 G G G G G
datorsys05-11 GuannOS G G G G G
datorsys05-12 G G G G G

Grading

The grades for the prject part are only pass or fail (G or U). However, groups that do a very good project can raise their grades on the exam from a pass (G) to a pass with distinction (VG), provided they score close to VG on the exam (typically, 25 out of 40 points). Doing a very good project is defined as completing one or more extra credit requirements, as found in the specification of the project.

All projects are to be handed in at a specific date, before Christmas. If the project does not fulfil the basic requirements at this point, you will need to give a good structured explanation for why your project failed to produce the required output to pass the project. There will be no extensions given.

Preliminary Time Plan

The project starts after the exam of part I of the course, and runs up until Christmas. In detail, this means:

  • During period I -- group assignment (precise date for this will come later)
  • 25/10 -- official starting date of the project
  • 25/10 -- first lesson
  • 28/10 16:00 -- hand-in project description (your interpretation of the requirements)
  • 3/11 16:00 -- architecture sketch due
  • 11/11 16:00 -- system design due
  • 21/12 10-17 -- demonstration and final hand-in held at P1211.

It is a good idea to familiarize yourself with the tools you will be using early on in the project. For example, make sure to setup cvs and do the Simics introduction lab.

On the hand-in day, there will be a final handin session. Each group is given approximately 25 minutes to show their results to the teachers. The sessions are scheduled on every half hour, starting at 10.00. The demonstration order is as follows.

Day Start time Group
Tuesday 13.15 7
Wednesday 10.00 12
10.30 11
11.00 10
11.30 9
13.00 8
13.30 6
14.00 5
14.30 4
15.00 3
15.30 2

Schedule

There will be scheduled lessons for the Computer Systems Project, information will be posted here.

Booked Labs

For your convenience, lab rooms will be booked for your exclusive use for the Computer Systems Project, information will be posted here.

Tools

In the project, you will use a range of programming and project management tools, some of which will be new to you.

  • To compile your C code, you will use a gcc MIPS cross-compiler.
  • The main execution environment for your operating system kernel will be simulated MIPS computer based on a MIPS 4Kc processor and featuring some simple I/O capabilties. The computer will be simulated using Virtutech Simics, a very capable simulator.
  • You will be using '''CVS''', the concurrent versioning system, to track your source files and changes to these files. Documentation for CVS can be found at www.cvshome.org, as well as on the project CVS page.
  • To debug your code, you will use a gdb MIPS cross-debugger, with Simics as the remote target.
  • There will be a set of example files to help you.
  • The context of a process is described by its stack and register area. Here is a tip on how you can initialize a register area for a new process:

    registers.epc_reg = (uint32_t) program; /* Code pointer */
    registers.sp_reg = (uint32_t) stack + STACK_SIZE - 32; /* Stack pointer */
    registers.gp_reg = 0x80000000; /* Offset for global data */
    registers.ra_reg = (uint32_t) kinit_reg_ra; /* return adress */ 

  • The return adress is initialised to point to a function 'kinit_reg_ra':

    static void kinit_reg_ra()
    {
     // We get here if a program returns.
     while(1);
    }

Updated  2006-03-10 13:41:35 by Mikael Carlsson.