EEE3052: Introduction to Operating Systems (Fall 2017)

[Projects]

  • 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]

  • When: 22:00 - 24:00 (Monday)
  • Where: Lecture room #400126, Semiconductor Bldg.
  • Please take your laptop, if possible

[Project Result]

  • 프로젝트 1 결과를 업로드했습니다. 문제가 있는 학생은 조교에게 메일을 보내주시기 바랍니다. 학번은 본인의 뒤 4자리로 확인 가능합니다.
  • Project #1 Result
  • 프로젝트 1-1의 점수가 70으로 된 두 명의 학생은 80점으로 바뀌었습니다. 채점 상의 오류가 있었습니다.

[Time table] (Project 2-*)

Oral test 대상자는 전날 자정 마감합니다.

남은 칸 중에 가능한 시간이 없으면 메일을 보내주시기 바랍니다.

https://docs.google.com/spreadsheets/d/1YX9YnZyb8UsGtY-6NK88isCxVPbP-FqY2CtDadiMDLs/edit?usp=sharing

  • For project 2, oral test will take maximum 30 min. (Presentation 15min. + Question(+alpha))
  • Please fill out your possible time
  • Please, don't be late!

Project #0 (Deadline: 9/10 11:59PM)

  • Install Ubuntu 16.04 -- This is an official Linux distribution we will use.
  • Install xv6 & qemu
  • Print your student ID, name, and message in the xv6 boot message. Your result should be printed before the shell is running. This means that you have to insert a code (yeah, just a single line) into one of the xv6 kernel code.
  • Submit your screenshot to the TA.

Project #1-1 (Deadline: 9/17 11:59PM)

  • Implement getnice & setnice system call in xv6
  • Implement minitop command in xv6
  • xv6 project #1-1 testcase
  • Submit your tarball file to the TA by email with title of "[EEE3052]Project-1_1-STUDENTID-YOURNAME"
  • setnice의 인자 중 nice 값의 범위를 -20~19가 아닌 0~39로 수정하겠습니다. 즉, nice 값이 바로 priority에 적용되면 됩니다.

Project #1-2 (Deadline: 9/24 11:59PM)

  • Implement priority scheduler in xv6
  • Implement yield & getyieldcnt system call in xv6
  • xv6 project #1-2 testcase
  • Submit your tarball file to the TA by email with title of "[EEE3052]Project-1_2-STUDENTID-YOURNAME"
  • getyieldcnt 함수의 인자는 pid 한 개 입니다.

Project #2-1 (Deadline: 10/15, 23:59:59 PM, Last update: 10/15, 19:00PM)

  • Lab will be taken on 9/25(Mon.) 15:00 PM~ and it will be videotaped.
  • Due date is extended for 1 week!
  • Implement stack growth in xv6
  • xv6 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!
               PASSED!
      case 3. (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              PASSED!
      case 4. (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              (Pagefault): allocate new page!
              (Pagefault): invalid access
  • Test case can be added
  • Please follow submission rules
  • If you have any question, please email to TA or visit #400509 Semiconductor building
  • Update list
  • 1. For invalid address accessed process, you should call "exit()" (do not kill process)
  • 2. Don't forget there is no lab on 10/9
  • 3. You have to solve kernel panic when copying user vm ("copyuvm" function in vm.c).
  • (Remind)4. Make sure that you allocated 1 page for stack at exec(), not 4 pages.
  • 5. Oral test of this project will be taken with project2_2. Study hard for your mid-term!!

Project #2-2 (Deadline: 11/12, 23:59:59 PM, Last update: 10/31, 01:00 AM)

  • Please check last update time of test case!!
  • Implement Copy-on-Write(COW) in xv6
  • Lab will be taken on 10/16(Mon.). Time: 19:00 ~
  • xv6 project #2-2 testcase ===> Newly updated at 10/31, 01:00 AM
  • If you have any question, please email to TA or visit(11/2~) #400509 Semiconductor building

Project #3-1 (Deadline: 11/21(Tue) 23:59:59 PM)

  • Implement thread in xv6
  • xv6 project #3-1 testcase
  • Submit your tarball file to the TA by email with title of "[EEE3052]Project-3_1-STUDENTID-YOURNAME"
  • Check project due date
  • tid!=1인 thread가 thread_join(1, **retval)을 실행할 경우에도 일반적인 join처럼 wait하기 위하여 sleep을 시켜주시기 바랍니다.
  • thread_create에서 메모리 배치에 대한 이미지를 업로드합니다. 해당 내용이 이해가 가지 않을 경우 11/16(목)까지 조교에게 메일을 보내 반드시 연구실로 찾아와 이해를 완벽히 하시기 바랍니다. 해당 부분이 이해가 되지 않는다면 thread_create는 완성시킬 수 없습니다.

image1 image2

  • ustack의 경계에 대한 설명이 애매하다는 메일이 있어 새로 이미지를 업로드 합니다. 해당 이미지에는 메모리가 4096Byte로 표시되어 있습니다.

image3

  • thread가 kill 할 수 있는 대상은 실행 중이 아닌 thread로 한정하겠습니다. 다른 CPU에서 동작 중인 thread까지 kill하는 기능을 넣는 것은 난이도가 너무 높아질 것 같아 제외합니다.
  • testcase3에서 OK문자가 OOK 혹은 두번씩 출력되는 문제는 무시하고 넘어가셔도 됩니다. WRONG이 출력되지만 않으면 됩니다.

Project #3-2 Δ (Deadline: 12/3, 23:59:59 PM)

  • Will present at 11/20(Mon)