SSE3044F14.Projects History

Show minor edits - Show changes to markup

December 22, 2014, at 06:33 AM by 115.145.175.26 -
December 22, 2014, at 06:18 AM by 115.145.175.26 -
Changed lines 12-17 from:
to:

기여도는 50%에 대해 10%마다 2%의 추가점수(혹은 감점으로) 채점되었습니다. Oral test에 따라 Project 3에서 -20~+10의 점수가 감점 혹은 추가되었습니다. Code Data영역에 대한 Lazy loading 구현 안했을 시, sys 서버에서 받은 3-2점수에서 15점이 감점됩니다.

테스트 점수 비율은 project 1이 1:3, project 2가 1:6, project 3이 1:1로 채점됩니다. 각 프로젝트마다 주석 및 보고서의 점수 비율은 30%입니다.

December 22, 2014, at 06:14 AM by 115.145.175.26 -
Added lines 4-12:

[2014. 12. 3 Notice]

Project Score

OSproject Score

December 03, 2014, at 04:21 AM by 115.145.175.26 -
Changed line 7 from:

Project 3 Oral test 신청

to:

Project 3 oral test 신청

December 03, 2014, at 04:21 AM by 115.145.175.26 -
Added lines 4-9:

[2014. 12. 3 Project Notice]

Project 3 Oral test 신청

https://docs.google.com/spreadsheets/d/1-8fMzOLqDOrC8z7BC7zP0lfro-Iv-k-aoPWn3M8tFd8/edit?usp=sharing

November 26, 2014, at 01:40 AM by 115.145.175.26 -
Changed lines 7-9 from:

[2014. 11. 25 Project Notice]

to:

[2014. 11. 25 Project Notice (11.26 수정)]

Added lines 21-22:

pool의 크기는 조절 할 수 없습니다.(수정)

November 25, 2014, at 01:33 PM by 115.145.175.26 -
Changed lines 16-18 from:

swap read/write 횟수와, 시간 측정은 노멀 테스트에 의해 진행됩니다.

to:

swap read/write 횟수와, 시간 측정은 지터를 적용하지 않은 테스트에 의해 진행됩니다. 따라서 지터 적용한 테스트가 fail이어도 가산점을 받을 수 있습니다.

November 25, 2014, at 01:29 PM by 115.145.175.26 -
Added lines 4-22:

[2014. 11. 25 Project Notice]

project 3-2가 업로드 되었습니다. 테스트 시간이 최대 30분정도까지 늘어날 수 있습니다. (보통은 5~10분 정도입니다. 모든 테스트에서 100초가 넘어가면 30분정도 걸릴 수 있습니다.) 마지막 날에 급하게 테스트하지 마시고, 미리미리 테스트해 보시기 바랍니다.

swap read/write 횟수와, 시간 측정은 노멀 테스트에 의해 진행됩니다. 시간측정은 tick으로 출력되며, swap은 read/write횟수가 출력됩니다. 출력되는 위치는 예전에 FAIL을 확인하던 success 버튼에서 확인 할 수 있습니다.


November 24, 2014, at 10:49 AM by 115.145.175.26 -
Added lines 4-8:

[2014. 11. 24 Project Notice]

mmap을 구현 못하신분들도 끝까지 하시기 바랍니다. 3-2에서 mmap과 관련된 테스트는 하나뿐입니다.

November 24, 2014, at 08:34 AM by 115.145.175.26 -
Changed line 8 from:
to:
November 24, 2014, at 08:34 AM by 115.145.175.26 -
Added lines 4-8:

[2014. 11. 24 Project Notice]

project3-1

November 19, 2014, at 02:19 PM by 115.145.175.26 -
Added lines 6-10:

[2014. 11. 19 Project Notice]

vm/Make.vars 에서 --qemu 를 --bochs로 바꿔주세요. 안 그러면 채점서버에서 채점이 되지 않습니다.

November 18, 2014, at 08:39 AM by 115.145.175.26 -
Added line 10:

(통과하지 않아도 감점 대상이 아닙니다.)

November 18, 2014, at 01:50 AM by 115.145.175.26 -
Added lines 6-9:

[2014. 11. 18 Project Notice]

project3-1에 multi-oom은 포함되지 않습니다. 참고바랍니다.

November 17, 2014, at 04:46 AM by 115.145.175.26 -
Changed line 11 from:
to:
November 17, 2014, at 04:43 AM by 115.145.175.26 -
Changed line 11 from:
to:
November 17, 2014, at 04:42 AM by 115.145.175.26 -
Added lines 4-13:

[2014. 11. 17 Project Notice]

아직 2의 Doc 점수는 반영이 안 되었습니다.

Project1, 2 Score

November 15, 2014, at 03:42 AM by 115.145.175.26 -
Added lines 9-10:

제한 조건 : filesys/ , vm/ , userprog/, thread/ 의 내부와 Makefile.* Make.*를 고칠 수 있음. tests/폴더는 변경해도 반영 안 됨.

November 13, 2014, at 07:19 AM by 115.145.175.26 -
Added lines 6-8:

project 3-1에서 새로운 파일 만들어도 됩니다.

November 13, 2014, at 02:45 AM by 115.145.175.26 -
Added lines 4-43:

[2014. 11. 12 Project 3-1 Notice]


프로젝트 3 전체 순서

페이지폴트에서 메모리 할당할때 (palloc 할때) PAL_USER flag를 붙여야 합니다.

1. 스택 growth 부터 작성

  -스택 페이지 폴트가 났을 때 새로운 physical page 할당하고,
  -페이지 테이블에 맵핑해줌
  -판단은 페이지 폴트 났을 때 esp와 유저모드->커널모드 전환시 스택 포인터

2. mmap/munmap system call

  -자료구조는 자유이나, 프로세스마다 하나씩 있는 supplemental page table(스왑에서도 동일한 테이블 사용)이 필요함 

(페이지 폴트시 mmap 영역인지 아닌지 판단 여부와, 그 위치, 프로세스 죽을 때 해제 여부 판단)

  -어떤 파일이 매핑되었고 그 길이가 얼마인지 프로세스마다 정보 필요

3. code/ data lazy loading (project 3-2)

  -load_segment 함수에서 palloc을 모두 빼고, 페이지 폴트를 통해서만 페이지 할당
  -code data여부는 load함수에서 load_segment를 부를 때 한 루프에 해당함.

4. frame table 구현 (project 3-2)

  -page 할당될때마다 어떤 물리페이지인지 주소 모두 저장(커널 주소로)
  -메모리가 부족할 때 페이지를 회수(reclaim)하는 메커니즘을 위해 필요

5. page_replacement 구현 (project 3-2)

  -회수 대상이 되는 페이지는 유저 페이지
  -backing storage가 있으면 dirty할때만 writeback. clean이면 버림.
  -backing storage가 없으면 swap


November 10, 2014, at 03:24 PM by 115.145.175.26 -
Changed line 22 from:

4. 2에서도 bad ptr 처리를 모두 page fault에서 exit -1 하면 된다고 얘기했었는데, 3에서 "페이지 폴트를 핸들링해서 물리 페이지를 할당한다는 의미"는 페이지 폴트가 난 시점과 exit -1하기 전 사이에 처리를 해주면 됩니다.

to:

4. 2에서도 bad ptr 처리를 모두 page fault에서 exit -1 하면 된다고 얘기했었는데, 3에서 "페이지 폴트를 핸들링해서 물리 페이지를 할당한다는 의미"는 페이지 폴트가 난 시점과 exit -1하기 전 사이에 처리를 해주면 된다는 의미입니다.

November 10, 2014, at 03:23 PM by 115.145.175.26 -
Changed line 9 from:
to:

project 2-2는 11월 11일 밤 12시(12일로 넘어가는 밤)까지 제출입니다.

November 10, 2014, at 12:29 PM by 115.145.175.26 -
Added lines 21-22:

4. 2에서도 bad ptr 처리를 모두 page fault에서 exit -1 하면 된다고 얘기했었는데, 3에서 "페이지 폴트를 핸들링해서 물리 페이지를 할당한다는 의미"는 페이지 폴트가 난 시점과 exit -1하기 전 사이에 처리를 해주면 됩니다.

November 10, 2014, at 12:08 PM by 115.145.175.26 -
Added lines 7-9:

다음 수업은 11.24입니다.

November 10, 2014, at 11:56 AM by 115.145.175.26 -
November 10, 2014, at 11:54 AM by 115.145.175.26 -
Added line 14:
Added line 16:
November 10, 2014, at 11:54 AM by 115.145.175.26 -
Changed lines 14-15 from:

2. mmap된 페이지에서 unmap(3-1) 혹은 eviction(3-2)될 때 해당 페이지 테이블이 dirty하면 writeback하고, clean하면 원본이 파일과 같으므로 그냥 회수(free)한다.

to:

2. mmap된 페이지에서 unmap(3-1) 혹은 eviction(3-2)될 때 해당 페이지 테이블이 dirty하면 writeback하고, clean하면 원본이 파일과 같으므로 그냥 회수(free)한다. dirty인 경우 clear해줘야 한다. 3. dirty 검사를 할때 커널 페이지 테이블(init_page_dir)도 dirty한지 검사해 줘야 한다. (user page는 커널과 유저 모두 공유(share)하고 있음. 하지만 페이지 테이블은 따로 있음.)

November 10, 2014, at 11:48 AM by 115.145.175.26 -
Changed lines 5-19 from:

[2014. 11. 9 Project 3-1 Notice

to:

[2014. 11. 10 Project 3-1 Notice]


프로젝트 3 팁

1. 페이지 폴트(exception.c) 혹은 pagedir_get_page 함수에서 NULL이 나오면

  -> 페이지가 없다. 다른 의미로 페이지 엔트리의 비트맵(PTE_P)이 클리어 된 상태이다.

2. mmap된 페이지에서 unmap(3-1) 혹은 eviction(3-2)될 때 해당 페이지 테이블이 dirty하면 writeback하고, clean하면 원본이 파일과 같으므로 그냥 회수(free)한다.


[2014. 11. 9 Project 3-1 Notice]

November 10, 2014, at 04:35 AM by 115.145.175.26 -
Added line 7:
November 09, 2014, at 12:55 PM by 119.214.112.142 -
Changed lines 5-7 from:

[2014. 11. 9 Project 3-1 Notice]

project3-1

to:

[2014. 11. 9 Project 3-1 Notice

November 09, 2014, at 06:44 AM by 115.145.175.26 -
Changed lines 5-6 from:

[2014. 11. 8 Project 3-1 Notice]

to:

[2014. 11. 9 Project 3-1 Notice]

Added lines 8-11:

project 2 oral test

https://docs.google.com/spreadsheets/d/1x82lwoKArfYEU2IPZ-HQIVXpOR8dlO6JK1KRaMpdpZk/edit?pli=1#gid=0

November 09, 2014, at 06:42 AM by 115.145.175.26 -
Changed lines 5-8 from:
to:

[2014. 11. 8 Project 3-1 Notice]

project3-1

Deleted line 350:
November 06, 2014, at 02:36 PM by 115.145.175.26 -
Changed lines 9-11 from:

thread preemption을 빼는 것은 금지입니다. 이 부분을 뺄 경우 감점하도록 하겠습니다.

to:

thread preemption을 빼는 것은 금지입니다. 이 부분을 뺄 경우 그와 관련된 모든 테스트가 통과하지 않았다고 판단하겠습니다. (자식 쓰레드를 부르는 모든 테스트에 대해서 통과하지 않았다고 판단함)

November 06, 2014, at 02:33 PM by 115.145.175.26 -
Changed line 9 from:

kernel preemption을 빼는 것은 금지입니다. 이 부분을 뺄 경우 감점하도록 하겠습니다.

to:

thread preemption을 빼는 것은 금지입니다. 이 부분을 뺄 경우 감점하도록 하겠습니다.

November 06, 2014, at 02:32 PM by 115.145.175.26 -
Added lines 5-9:

[2014. 11. 7 Project 2-2 Notice]

thread.c에서 kernel preemption을 빼는 것은 금지입니다. 이 부분을 뺄 경우 감점하도록 하겠습니다.

November 06, 2014, at 07:33 AM by 115.145.175.26 -
Added lines 4-10:

[2014. 11. 6 Project 2-2 Notice]

  • 채점 서버에서 execution의 success 버튼을 누르면 어떤 테스트가 fail 됐는지 알 수 있습니다.
October 28, 2014, at 08:29 AM by 115.145.175.26 -
Changed lines 9-12 from:

하나 잘못 알려드린 부분이 있습니다. 커널 모드에서 유저 어드레스를 접근할 수 없는 것처럼 설명해 드렸는데, 접근할 수 있고, 굳이 함수(pagedir_get_page)를 써서 커널어드레스로 바꿀 필요가 없습니다.(여전히 유저모드에서는 커널 어드레스에 접근 할 수 없습니다.) 하지만 잘못된 주소 접근 시에, 페이지 폴트로만 핸들링하는지 함수를 써서 핸들링 하는지에 따라서 나중에 project3에서의 구현이 조금 차이가 날 수 있습니다.

(page fault만 써서 해결할 경우 user address를 따로 저장하고 있어야 되는 부분이 있습니다.)

to:
  • 하나 잘못 알려드린 부분이 있습니다. 커널 모드에서 유저 어드레스를 접근할 수 없는 것처럼 설명해 드렸는데, 접근할 수 있고, 굳이 함수(pagedir_get_page)를 써서 커널어드레스로 바꿀 필요가 없습니다.(여전히 유저모드에서는 커널 어드레스에 접근 할 수 없습니다.) 하지만 잘못된 주소 접근 시에, 페이지 폴트로만 핸들링하는지 함수를 써서 핸들링 하는지에 따라서 나중에 project3에서의 구현이 조금 차이가 날 수 있습니다.
  • read/write구현은 제가 수업에서 말한 것 처럼 하지 않아도 시스템 콜에서 user address 로 접근하면 됩니다. 단지 project3에서 핸들링 하는 방법에서 바뀌게 됩니다.
October 27, 2014, at 12:45 PM by 115.145.175.26 -
Changed lines 5-6 from:

[2014. 10. 27 Project 2-1 Notice]

to:

[2014. 10. 27 Project 2-2 Notice]

시험 성적 확인하실 분들은 수요일 오후(1~5시)에 오시면 됩니다.

하나 잘못 알려드린 부분이 있습니다. 커널 모드에서 유저 어드레스를 접근할 수 없는 것처럼 설명해 드렸는데, 접근할 수 있고, 굳이 함수(pagedir_get_page)를 써서 커널어드레스로 바꿀 필요가 없습니다.(여전히 유저모드에서는 커널 어드레스에 접근 할 수 없습니다.) 하지만 잘못된 주소 접근 시에, 페이지 폴트로만 핸들링하는지 함수를 써서 핸들링 하는지에 따라서 나중에 project3에서의 구현이 조금 차이가 날 수 있습니다.

(page fault만 써서 해결할 경우 user address를 따로 저장하고 있어야 되는 부분이 있습니다.)

[2014. 10. 27 Project 2-2 Notice]

Changed line 20 from:

[2014. 10. 17 Project 2-1 Notice]

to:

[2014. 10. 17 Project 2-2 Notice]

October 27, 2014, at 03:26 AM by 115.145.175.26 -
Changed lines 5-8 from:
to:

[2014. 10. 27 Project 2-1 Notice]

project2-2

Deleted line 324:
October 17, 2014, at 04:23 AM by 115.145.175.26 -
Deleted line 35:

10. argument passing, syscall handler에서 caller의 return address를 고려할 필요가 없습니다. 알아서 쌓아줍니다.

October 17, 2014, at 04:22 AM by 115.145.175.26 -
Added line 36:

10. argument passing, syscall handler에서 caller의 return address를 고려할 필요가 없습니다. 알아서 쌓아줍니다.

October 17, 2014, at 04:21 AM by 115.145.175.26 -
Changed line 30 from:

7. address 비교할 때 unsigned int 로 연산하시기 바랍니다.(예 0xc0000000는 signed int 범위 넘음)

to:

7. address로 덧셈, 뺄셈, 비교 연산할 때 unsigned int 로 연산하시기 바랍니다.(예 0xc0000000는 signed int 범위 넘음)

October 17, 2014, at 04:17 AM by 115.145.175.26 -
Changed lines 8-9 from:

vm/Make.vars 에서 SIMULATOR = --bochs 로 수정해주시기 바랍니다.

to:

userprog/Make.vars 에서 SIMULATOR = --bochs 로 수정해주시기 바랍니다.

October 17, 2014, at 04:17 AM by 115.145.175.26 -
Added lines 4-9:

[2014. 10. 17 Project 2-1 Notice]

vm/Make.vars 에서 SIMULATOR = --bochs 로 수정해주시기 바랍니다. 채점은 bochs 시뮬 환경에서 진행됩니다.

October 16, 2014, at 06:57 AM by 115.145.175.26 -
Changed line 5 from:

[2014. 10. 16 Project 2-1 Notice]

to:

[2014. 10. 16 Project 2-1 Notice] (수정, 추가부분 있음)

October 16, 2014, at 06:57 AM by 115.145.175.26 -
Changed line 27 from:

9. 각각의 테스트는 점수가 같습니다. 비율은 모두 동일합니다.

to:

9. project 2-1에서 각각의 테스트는 점수가 같습니다. 비율은 모두 동일합니다. 2-2에는 변경될 수 있습니다.

October 16, 2014, at 06:56 AM by 115.145.175.26 -
Changed lines 5-6 from:

[2014. 10. 16 Project 1-2 Notice]

to:

[2014. 10. 16 Project 2-1 Notice]

Changed line 33 from:

[2014. 10. 15 Project 1-2 Notice]

to:

[2014. 10. 15 Project 2-1 Notice]

October 16, 2014, at 06:56 AM by 115.145.175.26 -
Added lines 26-27:

9. 각각의 테스트는 점수가 같습니다. 비율은 모두 동일합니다.

October 16, 2014, at 06:55 AM by 115.145.175.26 -
Changed line 25 from:

8. load 함수에서 실행할 파일을 열 때 첫 번째 토큰을 파일이름으로 해서 열어야 합니다.

to:

8. load 함수에서 실행할 파일을 열 때 argument의 첫 번째 토큰을 파일이름으로 해서 열어야 합니다.

October 16, 2014, at 06:54 AM by 115.145.175.26 -
Changed line 25 from:

8. load 함수에서 첫 번째 토큰을 파일이름으로 해서 열어야 합니다.

to:

8. load 함수에서 실행할 파일을 열 때 첫 번째 토큰을 파일이름으로 해서 열어야 합니다.

October 16, 2014, at 06:47 AM by 115.145.175.26 -
Added lines 24-25:

8. load 함수에서 첫 번째 토큰을 파일이름으로 해서 열어야 합니다.

October 16, 2014, at 06:38 AM by 115.145.175.26 -
Added line 23:

7. address 비교할 때 unsigned int 로 연산하시기 바랍니다.(예 0xc0000000는 signed int 범위 넘음)

October 16, 2014, at 05:45 AM by 115.145.175.26 -
Changed line 21 from:
to:

6.fd 0번은 표준 입력(standard input), 1번은 표준 출력 (standard output), 2번은 에러 출력입니다. fd 0,1,2 중에 1번만 처리하면 project 2 전체에서 표준 입출력은 통과합니다.

October 16, 2014, at 04:59 AM by 115.145.175.26 -
Changed line 13 from:

2. syscall_handler에서 f->esp는 user stack이고 kernel address로 바꾸어 주어야 합니다. 각 esp에서 0, +4, +8 한 값이 어떤 것인지 printf로 찍어보면 금방 알 수 있습니다.

to:

2. syscall_handler에서 f->esp는 user stack이고 kernel address로 바꾸어 주어야 합니다. 각 esp에서 0, +4, +8 한 값이 어떤 것인지 printf로 찍어보면 금방 알 수 있습니다. 리턴 값(예, open일 경우 fd / write,read인 경우 성공한 바이트 수) 은 f->eax에 넣으면 됩니다.

October 16, 2014, at 02:31 AM by 115.145.175.26 -
Changed lines 21-23 from:

순서는 3번을 먼저하시고, exit/wait/write(화면 출력만) 시스템 콜을 짠후 테스트에 출력이 이뤄지는지 보고, 1번을 나중에 하는 게 좋습니다.

to:
October 16, 2014, at 02:30 AM by 115.145.175.26 -
Added line 12:
Added line 14:
Changed lines 17-20 from:

4. exit /wait는 initial value 0인 semaphore를 이용하시는 게 좋습니다. 몇번 이용할지는

5. 당장은 필요없겠지만 process loading할때도 sync를 맞춰줘야 하는 부분이 있습니다.물론 짜기 나름이겠지만, (예, 프로세스가 로딩을 하는 과정에서 오류가 나면 exit(-1)하고 exec가 pid -1을 리턴해야하는데, exec가 pid를 미리 리턴해버린 경우) initial value 0인 semaphore를 이용하는 게 좋습니다.

to:

4. exit /wait는 initial value 0인 semaphore를 이용하시는 게 좋습니다. condition variable 이용해도 구현 할 수는 있습니다.

5. 당장은 필요없겠지만 process loading할때도 sync를 맞춰줘야 하는 부분이 있습니다.물론 짜기 나름이겠지만, (예, 프로세스가 execute 하는 과정에서 오류가 나면 exit(-1)하고 exec가 pid -1을 리턴해야하는데, exec가 pid를 미리 리턴해버린 경우) initial value 0인 semaphore를 이용하는 게 좋습니다.

순서는 3번을 먼저하시고, exit/wait/write(화면 출력만) 시스템 콜을 짠후 테스트에 출력이 이뤄지는지 보고, 1번을 나중에 하는 게 좋습니다.


October 16, 2014, at 02:25 AM by 115.145.175.26 -
Added lines 4-20:

[2014. 10. 16 Project 1-2 Notice]

Tip


1. argument passing 은 프로세스 스택이 만들어진 직후(페이지가 할당한 직후)에 시행해야 합니다. 2. syscall_handler에서 f->esp는 user stack이고 kernel address로 바꾸어 주어야 합니다. 각 esp에서 0, +4, +8 한 값이 어떤 것인지 printf로 찍어보면 금방 알 수 있습니다. 3. argument passing없이 일단 exit / wait 부터 하고 싶으면 문서에도 있는데, esp = PHYS_BASE; 를 esp = PHYS_BASE-12; 로 바꾸고 하시면 됩니다.

4. exit /wait는 initial value 0인 semaphore를 이용하시는 게 좋습니다. 몇번 이용할지는

5. 당장은 필요없겠지만 process loading할때도 sync를 맞춰줘야 하는 부분이 있습니다.물론 짜기 나름이겠지만, (예, 프로세스가 로딩을 하는 과정에서 오류가 나면 exit(-1)하고 exec가 pid -1을 리턴해야하는데, exec가 pid를 미리 리턴해버린 경우) initial value 0인 semaphore를 이용하는 게 좋습니다.

October 15, 2014, at 10:42 AM by 115.145.175.26 -
Changed lines 9-10 from:

userprog 폴더에서 make 하시고

to:

userprog 폴더에서 make 먼저 한번 하고

Changed lines 12-15 from:

make check 로 하셔야 테스트가 되고, 개별적인 테스트도 모두 build 폴더 아래에서

to:

make check

로 하셔야 테스트가 되고, 개별적인 테스트도 모두 build 폴더 아래에서

October 15, 2014, at 10:41 AM by 115.145.175.26 -
Deleted lines 4-9:

[2014. 10. 10 Project 2-1 Notice]

project2-1

Added lines 13-19:

[2014. 10. 10 Project 2-1 Notice]

project2-1

October 15, 2014, at 10:41 AM by 115.145.175.26 -
Added lines 11-18:

[2014. 10. 15 Project 1-2 Notice]

이번 과제는 build폴더 밑에서 make check하셔야 됩니다.

userprog 폴더에서 make 하시고 cd build make check 로 하셔야 테스트가 되고, 개별적인 테스트도 모두 build 폴더 아래에서 해 주시기 바랍니다.

October 10, 2014, at 02:02 PM by 115.145.175.26 -
Added lines 4-11:

[2014. 10. 10 Project 2-1 Notice]

project2-1

October 10, 2014, at 09:28 AM by 115.145.175.26 -
Changed line 13 from:

-mlfqs옵션을 주면 thread_mlfqs가 true값을 가지게 되어서 해당 옵션을 줬을 때 특정 메커니즘을 동작시킬 수 있습니다. 그래서, 다른 테스트와 독립적으로 동작하려면 thread_mlfqs가 참일 때만 aging(priority, recent cpu, load avg ... 계산)을 시켜줘야 합니다.

to:

-mlfqs옵션을 주면 thread_mlfqs가 true값을 가지게 되어서 해당 옵션을 줬을 때만 특정 메커니즘을 동작시킬 수 있습니다. 그래서, 다른 테스트와 독립적으로 동작하려면 thread_mlfqs가 참일 때만 aging(priority, recent cpu, load avg ... 계산)을 시켜줘야 합니다.

October 10, 2014, at 09:25 AM by 115.145.175.26 -
Added lines 4-20:

[2014. 10. 10 Project 1-2 Notice]

mlfqs 에 대한 질문이 많습니다.

thread.h 에

extern bool thread_mlfqs 이라는 글로벌 변수가 선언 되어 있습니다.

-mlfqs옵션을 주면 thread_mlfqs가 true값을 가지게 되어서 해당 옵션을 줬을 때 특정 메커니즘을 동작시킬 수 있습니다. 그래서, 다른 테스트와 독립적으로 동작하려면 thread_mlfqs가 참일 때만 aging(priority, recent cpu, load avg ... 계산)을 시켜줘야 합니다.

다음은 make check 할 때 나온 로그 중에 커맨드 하는 부분을 긁은 부분입니다.

pintos -v -k -T 480 --bochs -- -q -mlfqs run mlfqs-load-60 < /dev/null

위 커맨드 처럼 하시면 개별적으로 다 테스트를 할 수 있습니다.

October 02, 2014, at 08:32 AM by 115.145.175.26 -
Added lines 4-10:

[2014. 10. 2 Project 1-2 Notice]

multiple-donate-nest2라는 테스트 케이스가 서버에 추가 되었습니다. 현재 핀토스 multiple-donate-nest 케이스를 보면 3개의 쓰레드에서 두개의 락만 중첩해서 걸린 케이스만 통과하면 되는데, nest2 테스트는 그 이상의 쓰레드가 중첩될 때도 priority-donate를 적절하게 수행해 주어야 합니다.

October 01, 2014, at 08:13 AM by 115.145.175.26 -
Changed line 3 from:

TA Office Hour : Wed 15:00~17:00 / Thu 15:00~17:00 (수정됨)

to:

TA Office Hour : Wed 15:00~17:00 / Thu 15:00~17:00 85557

October 01, 2014, at 01:18 AM by 115.145.179.156 -
Changed line 18 from:

다음 프로젝트에서 jitter를 적용하고 위의 5개의 테스트는 채점에 제외하도록 하겠습니다.

to:

다음 프로젝트에서 jitter를 적용한 5개의 테스트는 채점에 제외하도록 하겠습니다.

Changed line 21 from:

TA시간에 잘못 전해 드린 부분이 있었는데, semaphore에 대해서도 donation을 통과해야하지만 multiple/nested에 대한 부분은 inital value가 1인 케이스에 대해서만 통과하시면 됩니다.

to:

semaphore에 대해서도 donation을 통과해야하지만 multiple/nested에 대한 부분은 inital value가 1인 케이스에 대해서만 통과하시면 됩니다.

September 30, 2014, at 12:24 PM by 115.145.179.156 -
Added lines 4-22:

[2014. 9. 30 Project 1-2 Notice]


 tests/threads/mlfqs-recent-1
 tests/threads/mlfqs-fair-2
 tests/threads/mlfqs-fair-20
 tests/threads/mlfqs-nice-2
 tests/threads/mlfqs-nice-10

다음 프로젝트에서 jitter를 적용하고 위의 5개의 테스트는 채점에 제외하도록 하겠습니다. (지터를 적용하지 않은 부분에 대해서는 여전히 통과해야 합니다.)

TA시간에 잘못 전해 드린 부분이 있었는데, semaphore에 대해서도 donation을 통과해야하지만 multiple/nested에 대한 부분은 inital value가 1인 케이스에 대해서만 통과하시면 됩니다.

September 26, 2014, at 02:15 PM by 115.145.179.156 -
Added lines 4-24:

[2014. 9. 26 Project 1-1 Notice]

주석은 이번 프로젝트에서는 한글 혹은 영어로 달아주시면 됩니다.

리눅스 한글 사용법에 대해서 질문하시는 분들이 많은데

nabi 라는 툴을 이용하시면 됩니다.

sudo apt-get install nabi

우분투 14.04의 경우 Ubuntu의 language support 메뉴 - keyboard input method system에서 hangul/(nabi가 있다면 nabi) 선택 - Ubuntu 다시 시작

다른 리눅스 버전도 비슷할텐데, 그부분은 찾아보시기 바랍니다.

다음 프로젝트부터는 일괄적으로 한글로 달아주시면 됩니다.

September 24, 2014, at 01:22 AM by 115.145.179.156 -
Added line 62:

16 고재현 김상훈

September 23, 2014, at 08:26 AM by 115.145.179.156 -
Added lines 4-9:

[2014. 9. 22 Project 1-2 Notice] (~10/12 23:59:59)

project1-2

미리 하실분들은 미리 sys.skku.edu에 올리셔도 무방합니다.

September 23, 2014, at 08:11 AM by 115.145.179.156 -
Changed line 3 from:

TA Office Hour : Wed 15:00~17:00 / Thu 15:00~17:00

to:

TA Office Hour : Wed 15:00~17:00 / Thu 15:00~17:00 (수정됨)

September 23, 2014, at 08:11 AM by 115.145.179.156 -
Changed lines 3-7 from:

TA Office Hour : Wed 15:00~17:00 / Fri 15:00~17:00

to:

TA Office Hour : Wed 15:00~17:00 / Thu 15:00~17:00

[2014. 9. 22 Project 1-1 Notice]

September 23, 2014, at 08:10 AM by 115.145.179.156 -
Added line 4:

Hint : 더 높은 priority를 가진 thread가 create 되거나 change 되면 즉시, thread_current를 그 thread로 바꾸어야 합니다.

September 23, 2014, at 04:14 AM by 115.145.179.156 -
Added lines 2-3:

TA Office Hour : Wed 15:00~17:00 / Fri 15:00~17:00

September 23, 2014, at 02:29 AM by 115.145.179.156 -
Deleted line 11:

조교시간에도 말씀드렸지만, 지터값을 적용하게 되면 alarm-simultaneous는 원래 틀릴 수 밖에 없습니다. 채점에는 지터를 적용한 alarm-simultaneous는 빠져있습니다.

September 23, 2014, at 02:28 AM by 115.145.179.156 -
Added lines 11-12:

조교시간에도 말씀드렸지만, 지터값을 적용하게 되면 alarm-simultaneous는 원래 틀릴 수 밖에 없습니다. 채점에는 지터를 적용한 alarm-simultaneous는 빠져있습니다.

September 22, 2014, at 11:30 AM by 115.145.179.156 -
Changed lines 6-10 from:

Hint : init_thread와 thread_create가 따로 있습니다. 두 부분 모두, thread를 초기화하는 부분이니 차이점을 잘 살펴보시기 바랍니다.

to:

TA시간 때 2 가지 빠뜨린 점이 있어서 알려드립니다.

Hint : init_thread와 thread_create가 따로 있습니다. init_thread는 가장 처음에 한번만 실행되는 부분이며, 두 부분 모두, thread를 초기화하는 부분이니 차이점을 잘 살펴보시기 바랍니다.

Hint : 4 Tick 마다 thread_tick함수가 자동으로 thread_yield를 하게끔 되어 있고, 그때마다 cpu를 점유하고 있던 thread들이 바뀌게 됩니다.

September 22, 2014, at 11:00 AM by 115.145.179.156 -
Added lines 2-6:

[2014. 9. 21 Project 1-1 Notice] (~9/28 23:59:59)

Hint : init_thread와 thread_create가 따로 있습니다. 두 부분 모두, thread를 초기화하는 부분이니 차이점을 잘 살펴보시기 바랍니다.

Changed line 38 from:
to:

15 최창호

Changed lines 36-39 from:

13

to:

13 박주연 홍시내 14 김승주 김종화

September 22, 2014, at 07:44 AM by 115.145.179.156 -
Changed lines 34-36 from:

11 이선종 이종열

to:

11 이선종 이종열 12 조현광 이규선 13

September 22, 2014, at 06:47 AM by 115.145.179.156 -
Changed line 44 from:
       4. 다른 하나의 터미널에서 pintos-gdb kernel.o 수행한다.
to:
       4. 다른 하나의 터미널에서 src/thread/build 폴더에서 pintos-gdb kernel.o 수행한다.
September 22, 2014, at 04:29 AM by 115.145.179.156 -
Changed lines 17-18 from:

src/devices/, src/threads/ 디렉토리 외에 수정 사항은 채점에 반영되지 않음.

to:

src/devices/, src/threads/ 디렉토리 외에 수정 사항은 채점에 반영되지 않음.

September 22, 2014, at 04:28 AM by 115.145.179.156 -
Changed lines 35-37 from:
to:

Added lines 47-48:

September 22, 2014, at 01:20 AM by 115.145.179.156 -
Changed line 33 from:

11 ?

to:

11 이선종 이종열

September 21, 2014, at 02:09 PM by 115.145.179.156 -
Added lines 20-33:

조확인

1 장인수 이태혁 2 김현석 조성혁 3 김대현 이동윤 4 신석하 강경문 5 안성기 김인선 6 한상훈 오창현 7 김경훈 김진수 8 김민수 이재호 9 김민우 이창근 10 김용해 한동빈 11 ?

September 21, 2014, at 02:06 PM by 115.145.179.156 -
Changed lines 40-46 from:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현, 김진수, 이창근, 오창현, 안성기, 김종화, 김현석, 한동빈, 박주연, 조현광, 김민우, 이규선, 한상훈

보고서 미제출자 : 홍시내

제출확인못함 : 이태혁, 이재호

보고서까지 제출해주셔야 됩니다!

to:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현, 김진수, 이창근, 오창현, 안성기, 김종화, 김현석, 한동빈, 박주연, 조현광, 김민우, 이규선, 한상훈, 홍시내, 이재호

제출확인못함 : 이태혁

September 21, 2014, at 02:00 PM by 115.145.179.156 -
Changed lines 17-19 from:
               src/devices/,  src/threads/ 디렉토리 외에 수정 사항은 채점에 반영되지 않음.
to:

src/devices/, src/threads/ 디렉토리 외에 수정 사항은 채점에 반영되지 않음.

소스코드만 제출하시고, 문서는 모두 project1이 종료될 때 받는 것으로 하겠습니다. 소스코드의 주석은 잘 달아주셔야 됩니다.

September 21, 2014, at 01:55 PM by 115.145.179.156 -
Changed lines 3-4 from:

[Project 1-1 Notice] (~9/28 23:59:59)

to:

[2014. 9. 21 Project 1-1 Notice] (~9/28 23:59:59)

Changed lines 7-27 from:
to:

앞으로 제출은 sys.skku.edu를 통해서 받겠습니다. sys.skku.edu 에 가입하시면 제가 권한을 승인해 드립니다. 이미 컴퓨터 시스템 개론은 듣고 계신 분들은 재가입하실 필요 없습니다.

제출 방법 : 로그인후, 해당과목(Operating System) 세션의 Assignment -> Submit & Test 클릭 -> Source code 라디오 버튼 -> Choose File-> Submit -> 해당 파일 Run

주의사항 : 반드시 make clean 하시고 업로드 하시고 src 폴더만을 압축해서 올려야 합니다.

               압축파일을 풀면 src 폴더만 딱 나와야 합니다.

제한사항 : 15초 제한시간 내에 7개의 테스트가 모두 통과할 것. (make 하는 시간 포함, testcase는 2번의 테스트를 각각 15초 내에 통과해야 점수를 얻게 되어 있습니다.) 시간 오버시, 그 때까지 나온 테스트를 통해 점수를 반영.

               src/devices/,  src/threads/ 디렉토리 외에 수정 사항은 채점에 반영되지 않음.

GDB 사용방법 :

       0. utils/pintos-gdb파일에서 위쪽의 경로를 자신의 홈폴더로 바꾼다.
       1. 커널을 make한다.
       2. 터미널을 두 개 켠다.
       3. 하나의 터미널에서 pintos --gdb -- run alarm-multiple 을 친다.
       4. 다른 하나의 터미널에서 pintos-gdb kernel.o 수행한다.
       5. gdb가 뜨면 target remote localhost:1234를 입력한다.
       6. 명령어는 appendix E: Debugging Tools에 수록되어 있다.
September 21, 2014, at 01:30 PM by 115.145.179.156 -
September 21, 2014, at 01:25 PM by 115.145.179.156 -
Added lines 2-7:

[Project 1-1 Notice] (~9/28 23:59:59)

project1-1

September 21, 2014, at 01:24 PM by 115.145.179.156 -
Added lines 15-16:

제출확인못함 : 이태혁, 이재호

September 21, 2014, at 01:09 PM by 115.145.179.156 -
Changed line 12 from:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현, 김진수, 이창근, 오창현, 안성기, 김현석, 박주연

to:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현, 김진수, 이창근, 오창현, 안성기, 김종화, 김현석, 한동빈, 박주연, 조현광, 김민우, 이규선, 한상훈

September 21, 2014, at 01:03 PM by 115.145.179.156 -
Changed lines 12-14 from:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현

보고서 미제출자 : 김진수, 홍시내

to:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현, 김진수, 이창근, 오창현, 안성기, 김현석, 박주연

보고서 미제출자 : 홍시내

September 20, 2014, at 01:53 PM by 115.145.179.156 -
Changed lines 12-32 from:

김민수

김승주

김상훈

김인선

강경문

이종열

김용해

장인수

이선종

김대현

to:

김민수, 김승주, 김상훈, 김인선, 강경문, 이종열, 김용해, 장인수, 이선종, 김대현, 김경훈, 조성혁, 최창호, 신석하, 이동윤, 고재현

보고서 미제출자 : 김진수, 홍시내

보고서까지 제출해주셔야 됩니다!

September 20, 2014, at 04:52 AM by 115.145.179.156 -
Changed lines 6-8 from:

Make sure that you should "make clean" on Pintos and only compress src directory. The mail that includes binary files or other executable scripts will not be sent to TA !!!!

Please send TA your team members (2 people) to me, if you do not until next Monday, TA will make groups at random.'

to:

Make sure that you should "make clean" on Pintos and only compress a src directory. The mail that includes binary files or other executable scripts will not be sent to TA !!!!

Please send TA your team members (2 people) , if you do not until next Monday, TA will make groups at random.'

September 20, 2014, at 04:51 AM by 115.145.179.156 -
Added lines 19-32:

강경문

이종열

김용해

장인수

이선종

김대현

September 19, 2014, at 06:11 AM by 115.145.179.156 -
Changed line 6 from:

Make sure that you should "make clean" on Pintos and only compress src directory. The mail that includes binary files will not be sent to TA !!!!

to:

Make sure that you should "make clean" on Pintos and only compress src directory. The mail that includes binary files or other executable scripts will not be sent to TA !!!!

September 19, 2014, at 06:10 AM by 115.145.179.156 -
Changed lines 8-9 from:

제출명단

to:

Please send TA your team members (2 people) to me, if you do not until next Monday, TA will make groups at random.'

project 0 제출명단

Deleted line 129:
  • Group (2 or 3)
September 19, 2014, at 06:06 AM by 115.145.179.156 -
Added lines 3-16:

[Project 0 Notice] (~9/21 23:59:59)

Make sure that you should "make clean" on Pintos and only compress src directory. The mail that includes binary files will not be sent to TA !!!!

제출명단

김민수

김승주

김상훈

김인선

September 17, 2014, at 05:54 AM by 115.145.179.156 -
Added lines 22-23:
  • Make sure that you compress the 'src' directory, not 'pintos' directory
September 16, 2014, at 11:42 AM by 115.145.179.156 -
Added lines 78-79:

$make

September 15, 2014, at 05:30 AM by 115.145.179.156 -
Changed lines 96-97 from:

set cst cs add /home/topcoder2/pintos/pintos/src/cscope.out /home/topcoder2/pintos/pintos/src/

to:
 set cst 

 cs add /home/topcoder2/pintos/pintos/src/cscope.out /home/topcoder2

/pintos/pintos/src/

September 15, 2014, at 05:29 AM by 115.145.179.156 -
Changed line 92 from:

$cscope.out

to:

$cscope -R

September 15, 2014, at 05:29 AM by 115.145.179.156 -
Changed lines 90-91 from:

''' src 디렉토리에서'''

to:

src 디렉토리에서

September 15, 2014, at 05:28 AM by 115.145.179.156 -
Added lines 84-104:

8. cscope 설정

$apt-get install cscope

''' src 디렉토리에서'''

$cscope.out

$vi ~/.vimrc

set cst cs add /home/topcoder2/pintos/pintos/src/cscope.out /home/topcoder2/pintos/pintos/src/

경로에 맞춰 추가 한 후

:wq 로 저장

September 15, 2014, at 05:14 AM by 115.145.179.156 -
Changed line 72 from:

- vi ~/.bashrc 해서 가장 마지막 줄 추가 (주의 : root권한(sudo su 했을 때)과 일반계정의 파일이 따로 있음)

to:

- vi ~/.bashrc 해서 가장 마지막 줄 추가 (주의 : root권한(sudo su 했을 때)과 일반계정의 파일이 따로 있음), 이경우 반드시 터미널을 다시 켤것

September 15, 2014, at 05:09 AM by 115.145.179.156 -
Changed lines 68-70 from:

export PATH="$PATH:/home/topcoder2/pintos/pintos/src/utils

- ".bashrc"에 추가해두면 이후에 이 구문을 작성하지 않아도 된다.

to:

export PATH=$PATH:/home/topcoder2/pintos/pintos/src/utils

- "~/.bashrc"에 추가해두면 이후에 이 구문을 작성하지 않아도 된다.

- vi ~/.bashrc 해서 가장 마지막 줄 추가 (주의 : root권한(sudo su 했을 때)과 일반계정의 파일이 따로 있음)

September 15, 2014, at 05:07 AM by 115.145.179.156 -
Added lines 61-63:

SRCDIR = bochs 다운로드 받은 tar.gz 파일이 있는 디렉토리 PINTOSDIR = pintos 루트 디렉토리

September 15, 2014, at 05:04 AM by 115.145.179.156 -
Changed line 40 from:
 $ wget http://csl.skku.edu/uploads/SSE3044S14/pintos.tar.gz
to:
 $ wget http://csl.skku.edu/uploads/SWE3004S14/pintos.tar.gz
September 15, 2014, at 05:04 AM by 115.145.179.156 -
Changed line 40 from:
 $ wget http://csl.skku.edu/uploads/SWE3004S14/pintos.tar.gz
to:
 $ wget http://csl.skku.edu/uploads/SSE3044S14/pintos.tar.gz
September 15, 2014, at 05:03 AM by 115.145.179.156 -
Changed lines 44-45 from:

4. bochs 다운 및 압축 풀기

to:

4. bochs 다운로드

Changed line 50 from:

압축은 풀지 않는다.

to:

압축은 풀지 않는다. 5번에서 알아서 압축을 해제한다.

September 15, 2014, at 05:02 AM by 115.145.179.156 -
Changed line 36 from:
 $ apt-get install g++ xorg-dev ncurses-dev
to:
 $ apt-get install g++ xorg-dev ncurses-dev vim
September 15, 2014, at 05:00 AM by 115.145.179.156 -
Added line 41:
Added lines 56-57:
Added line 59:
Added line 75:
Added line 77:
September 15, 2014, at 05:00 AM by 115.145.179.156 -
Changed line 28 from:
  • install instruction (Ubuntu 14.04 64bits)
to:

[ install instruction ](Ubuntu 14.04 64bits)

September 15, 2014, at 04:59 AM by 115.145.179.156 -
Added lines 26-73:
  • install instruction (Ubuntu 14.04 64bits)

1. 루트 권한 획득

 $ sudo su

2. 필수 유틸 설치

 $ apt-get install g++ xorg-dev ncurses-dev

3. pintos 다운 및 압축풀기

 $ wget http://csl.skku.edu/uploads/SWE3004S14/pintos.tar.gz
 $ tar xzf pintos.tar.gz

4. bochs 다운 및 압축 풀기

http://bochs.sourceforge.net

– Make sure you are downloading v2.2.6 (bochs-2.2.6.tar.gz)

압축은 풀지 않는다.

5. pintos 내부 스크립트 이용해 bochs 설치

pintos/pintos/src/misc 에서 예시) sudo env SRCDIR=/home/topcoder2/Downloads/ PINTOSDIR=/home/topcoder2/pintos/pintos/ DSTDIR=/usr/local/ ./bochs-2.2.6-build.sh

6. pintos 경로 설정

export PATH="$PATH:/home/topcoder2/pintos/pintos/src/utils

- ".bashrc"에 추가해두면 이후에 이 구문을 작성하지 않아도 된다.

7. test 해보기

pintos/pintos/src/threads에서

$pintos run alarm-multiple $make check $make grade

September 15, 2014, at 03:20 AM by 115.145.179.156 -
Changed lines 17-18 from:

[Project 0]

to:

[Project 0] (~9/21 23:59:59)

Added lines 26-29:

[Project 1]

  • Group (2 or 3)
September 15, 2014, at 03:13 AM by 115.145.179.156 -
Changed line 23 from:
to:
September 15, 2014, at 03:07 AM by 115.145.179.156 -
Changed line 23 from:
to:
September 14, 2014, at 08:00 AM by 115.145.179.156 -
Changed line 14 from:
to:
September 14, 2014, at 06:54 AM by 115.145.179.156 -
Changed line 23 from:

[Attach:project0.pdf | project 0 pdf]

to:
September 14, 2014, at 06:54 AM by 115.145.179.156 -
Changed line 23 from:
to:

[Attach:project0.pdf | project 0 pdf]

September 14, 2014, at 06:35 AM by 115.145.179.156 -
Changed lines 14-16 from:
to:
Changed lines 21-23 from:
  • Create new test case on your source code
to:
  • Create new test case on your source code

Attach:project0.pptx Δ

September 11, 2014, at 04:46 AM by 115.145.179.156 -
Added lines 3-4:
Changed line 10 from:
  • TA Class
to:
  • TA Class
Changed lines 12-19 from:

Time : 7 pm. Monday

to:

Time : 7 pm. Monday

[Project 0]

  • Install Pintos on your computer
  • Create new test case on your source code
September 02, 2014, at 04:51 AM by 115.145.179.156 -
Changed lines 5-10 from:
  • We will use the Pintos instructional operating system. To successfully complete these projects, you must have excellent C programming skills and be familiar with the Linux platform.
to:
  • We will use the Pintos instructional operating system. To successfully complete these projects, you must have excellent C programming skills and be familiar with the Linux platform.
  • TA Class

Place : 400202 Time : 7 pm. Monday

August 18, 2014, at 05:07 AM by 115.145.179.182 -
Added lines 1-5:

SSE3044: Operating Systems (Fall 2014)

[Projects]

  • We will use the Pintos instructional operating system. To successfully complete these projects, you must have excellent C programming skills and be familiar with the Linux platform.