[운영체제]나쵸스(nachos) 프로젝트
- 최초 등록일
- 2006.09.29
- 최종 저작일
- 2006.05
- 63페이지/
한컴오피스
- 가격 1,500원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
소개글
미완성 운영체제 프로그램에 여러가지 내용을 작성하여 완성하는 나쵸스 프로젝트~!
결코 쉽지 않은 과제~!
포기하지 마시고 많은 도움 받아가세요.
목차
C++로 구현한 리포트
1. thread 및 synchronization, scheduling 루틴 분석
2. 기존 루틴의 분석
3. 구현 및 테스트 프로그램 및 설명
java 로 구현한 리포트
1. 과제 개요
2. Thread 관련루틴분석
본문내용
1. thread 및 synchronization, scheduling 루틴 분석
① Thread class 분석
② Semaphore class 분석
③ Scheduler class 분석
④ Alarm class 분석
⑤ thread 생성 및 소멸 경로 분석
⑥ SWITCH(), StackAllocate() 분석
⑦ thread 종료 시 stack, object를 free 시키는 문제
⑧ sleep에서 interrupt disable를 부르는 이유
⑨ semaphore와 condition variables의 차이점
⑩ alarm, timer, interrupt의 관계
2. thread 관련 루틴, Synchronization primitive, Scheduling algorithm의 구현
① Alarm::WaitUntil의 구현
② Thread::Join()의 구현
③ Preemptive Scheduling의 구현
④ Condition variable의 구현
3. Test Program 작성
2. 기존 루틴의 분석
1. Thread class
public:
Thread(char* debugName);
Thread class의 1-parameter constructor이다. Thread객체를 만들고 thread를 새로 생성하고자 할 때 불리어진다. parameter로 thread의 이름을 받고, 내부에서 이름을 저장하고 스택을 새로 만들고 스택포인터도 만든다. thread가 초기화될 때이므로 machine register 모두 초기화한다.
~Thread();
Thread class의 destructor이다. thread가 끝날 때, thread가 사용 중이었던 메모리를 반납하기 위해 thread 자신이 가지고 있던 스택이 있으면 스택을 제거한다.
void Fork(VoidFunctionPtr func, void *arg);
생성된 thread를 스택에 allocate하는 2-parameter function이다. parameter로 func와 arg를 받는데, 이는 fork할 때, function pointer인 func를 다시 부르게 되고, 이 과정에서 arg를 그 함수의 parameter로 다시 넘긴다. 즉, (*func)(arg)를 부르게 된다. 이 함수를 부름으로써 실질적으로 thread가 돌 수 있게 된다. 함수 내부에서 먼저 스택에 parameter로 받은 func와 arg를 받아서 StackAllocate() 함수를 호출해서 저장하고, fork된 이 thread를 스케쥴러의 ready list에 넣게 된다. 물론, ready list에 넣는 과정은 interrupt가 disable상태에 있어야 한다.
참고 자료
없음