검색어 입력폼

Thread 루틴분석

저작시기 2005.06 |등록일 2006.11.18 한글파일한컴오피스 (hwp) | 13페이지 | 가격 1,200원

소개글

Thread 루틴, synchronization 루틴 분석과 thread 관련 루틴, Scheduling의 구현
Test Program 작성이 되어있는 레포트입니다.

목차

1. thread 루틴, synchronization 루틴 분석
- thread 생성에서 소멸까지의 경로
- SWITCH(), StackAllocate() 분석
- thread 종료 시 stack, object를 free 시키는 문제
- sleep에서 interrupt disable을 가정하는 이유
- semaphore와 condition variables의 차이점
- alarm, timer, interrupt의 관계
- Semaphore class 분석

2. thread 관련 루틴, Scheduling의 구현
- Thread::Join()의 구현
- Preemptive priority Scheduling의 구현

3. Test Program 작성
- Synchronization 실험문제

본문내용

II. 기존 루틴 분석
1) Thread 루틴, synchronization 루틴 분석
- Thread 생성에서 소멸까지의 경로
thread..cc는 thread 관리에 관련된 routine으로 주요 연산은 Fork(), Finish(), Yield(), Sleep()이다.
thread.cc는 제일먼저 Thread::Thread(char* threadName), Thread::~Thread()로 시작된다. 이것이 생성자- 소멸자이다. 생성자는 Fork 연산을 할 수 있도록 Thread control block을 초기화한다. 소멸자는 실행중인 thread를 stack에서 지우는 역할을 한다.

▶ Fork()는 함수 호출을 통해 TCB로 사용될 스택이 이제 초기화된다. 이때, parameter로 넘겨받은 func와 arg를 스택에 담아 그 함수가 수행될 수 있도록 한다. 그리고 이 thread를 ready list 에 넣어 READY상태로 만들어준다.
void
Thread::Fork(VoidFunctionPtr func, int *arg)
{
Interrupt *interrupt = kernel->interrupt;
Scheduler *scheduler = kernel->scheduler;
IntStatus oldLevel;

DEBUG(dbgThread, "Forking thread: "<< name << " f(a): " << (int) func << " " << arg);

StackAllocate(func, arg); ---- ①

oldLevel = interrupt->SetLevel(IntOff); ---- ②
scheduler->ReadyToRun(this); ---- ③
(void) interrupt->SetLevel(oldLevel); ---- ④
}
다운로드 맨위로