[운영체제] 나초스 함수구현
본 자료는 2페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
해당 자료는 2페이지 까지만 미리보기를 제공합니다.
2페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[운영체제] 나초스 함수구현에 대한 보고서 자료입니다.

목차

1. Alarm::WaitUntil() 구현
A. 설계 및 디자인
B. 루틴에 대한 설명
C. 소스 코드

2. Thread::Join()의 구현
A. 설계 및 디자인
B. 루틴에 대한 설명
C. 소스코드

본문내용

tThread가 부모Thread. 따라서 currentThread의 자식List에 this
thread 추가.
-this thread의 부모로 currentThread를 저장
3) Thread::Join()
-this thread의 상태가 ZOMBIE이면 return한다.
-부모Thread인 kernel->currentThread를 BLOCKED상태로 바꾸고 스케줄러의
NextThread로 context switch한다.
-Thread에 bool joined을 멤버변수로 둬서 둬서 부모가 join을 실행하면 자식은 부모
가 join을 실행했다는 증거로 이 변수를 TRUE로 만든다.
4) Thread::Finish()
-joined가 TRUE이면 부모가 BLOCKED상태라는 말이므로 다시 READY상태로 바꿔서
스케줄러에 넣음
-자신의 자식List를 비우면서 자식 중에 ZOMBIE인 것은 메모리 해제하고, 동작 중인
것은 자신의 부모로 부모를 변경한다.
-자신의 부모가 최상위 Thread이면 자신이 context switch되면서 메모리 해제가 되게
Sleep(TRUE)를 호출하고 그렇지 않으면 메모리 해제는 되지 않게 하면서 자신의 상
태를 ZOMBIE로 바꿀 수 있도록 Sleep(FALSE, TRUE)를 호출한다
5) Thread::Sleep(bool finishing, bool makeZombie = false)
-finishing이 TRUE이면 context switch를 하며 메모리에서 해제. FALSE이면 Thread
의 상태 변경 후 context switch
-makeZombie가 TRUE면 상태를 ZOMBIE로, 그렇지 않으면 BLOCKED로 변경한다 -우리의 criteria를 보존하기 위해서는 finishing과 makeZombie가 동시에 TRUE일 수
는 없다.(좀비이면서 메모리에서 해제되어 버리면 안된다.)
C. 소스코드
Thread::Join(){
DEBUG(dbgThread, "called join -_- " << this->name);
ASSERT (this != kernel->currentThread);// this means child, currentThread means parent
ASSERT (parent == kernel->currentThread);
if (this->status == ZOMBIE) return;
joined = true;
Thread *nextThread;
IntStatus oldlevel = kernel->interrupt->SetLevel(IntOff);
kernel->currentThread->setStatus(BLOCKED);
while( (nextThread = kernel->scheduler->FindNextToRun()) == NULL )
kernel->interrupt->Idle();
kernel->scheduler->Run(nextThread, FALSE);
(void) kernel->interrupt->SetLevel(oldlevel);
}

키워드

  • 가격2,000
  • 페이지수7페이지
  • 등록일2006.05.31
  • 저작시기2005.4
  • 파일형식한글(hwp)
  • 자료번호#352393
본 자료는 최근 2주간 다운받은 회원이 없습니다.
  • 편집
  • 내용
  • 가격
청소해
다운로드 장바구니