SSE3044: Operating Systems (Spring 2018)


  • You will have several projects based on the xv6 instructional operating system. To successfully complete these projects, you must have excellent C programming skill and be familiar with the Linux platform.
  • Required skills
    • Fluent C programming (must!)
    • Basic knowledge on Intel x86 architecture
    • Intel x86 assembly programming
    • Basic knowledge on Unix/Linux systems
    • Ability to read a large, complex program

[Lab. Class]

  • Wednesday, 6:00 PM, #400202 in Semiconductor Bldg.
  • Please bring your laptop
  • First lab will start on 3/14 (Wed.)

[Lab. Oral test]

Project #0 (Last update: 3/15(Thu.), 14:30PM)

  • Try to boot xv6 operating system
  • Show your student ID and name on boot message
  • Reading chap. 0, and chap. 1 of xv6-commentary will help your next projects

Project #1-1 (Last update: 3/22(Thu.), 18:30PM)

  • xv6 template code
  • Implement setnice & getnice system call in xv6
  • Implement minitop shell command in xv6
  • Submit tarball file to TA by e-mail with title "[SSE3044]StudentID-1-1"
  • You have to set initial nice value of process to 20
  • Project #1-1 result

Project #1-2 (Deadline: 3/27~4/10(Tue.), Last update: 4/5(Thu.), 18:00PM)

  • Implement priority based scheduler on xv6
  • Due: 4/10(Thu.) 23:59:59PM -> There will be Q&A session on 4/3(Thu.) 18:00 PM
  • If you have any question, please email or visit 400509
  • There exist oral test after project1-2. This oral test should cover entire project1
  • You should prepare 5~10 minute presentation about your implementation
  • Schedule of oral test will be announced
  • Update list
      - Increase each process's yield count at only yield system call
      - There is no scenario such as target nice value of setnice is same as original nice value 
      - Sample testcase
  • Correct output for test_2_1.c
      [Case 2. Setnice, Yield] Start
         -...state 1...
         -...state 2...
         -...state 3...
         -...state 4...
         -...state 5...
         -...state 6...
         -...state 7...
         -...state 8...
         -...state 9...
         -...state 10...
         -...state 11...

Project #2-1 (Deadline: 4/11~5/1(Tue.), Last update: 4/11(Wed.), 16:00PM)

  • Implement stack growth on xv6
  • Oral test progress after project #2-1 (prepare for 10 minutes of presentation)
  • Schedule of oral test will be announced
  • Project #2-1 testcase
  • ATTENTION!!! If page fault is occurred, you must print out "(Pagefault): invalid access!" or "(Pagefault): allocate new page!"
  • Then, correct results for each test case is
      case 1. (Pagefault): invalid access!
      case 2. (Pagefault): allocate new page!
      case 3. (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              (Pagefault): allocate new page!
      case 4. (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              (Pagefault): invalid access!

Project #2-2 (Deadline: 5/15(Tue.), Last update: 5/2(Wed.), 18:00PM)

Project #3-1 (Deadline: 5/16~5/29(Tue.), Last update: 5/27(Wed.), 23:00PM)

Project #3-2 (Deadline: 5/30~6/12(Tue.), Last update: 6/9(Wed.), 07:20PM)