검색어 입력폼
평가점수B

[운영체제] 나초스 함수구현

저작시기 2004.06 |등록일 2004.09.17 한글파일한컴오피스 (hwp) | 7페이지 | 가격 1,400원

소개글

나초스 프로젝트의 중심인 함수구현에 관한 리포트입니다. 자세한 설명도 있습니다.

목차

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

본문내용

B. 루틴에 대한 설명
1) class Alarm
-WaitUntil() 을 호출하여 BLOCKED 상태가 된 thread들을 관리할 blockedList 추가
-Alarm의 constructor Alarm() 에서 초기화됨.
2) Alarm::WaitUntil()
-새로운 BlockedThread 의 instance를 만들어서 thread 와 기다릴 시간 x 를 함께
묶는다. 그리고 이 것을 blockedList에 추가한다.
-BLOCKED 상태로 바꾸며 다음 thread 로 제어권을 넘겨주기 위해 Sleep(false)를
호출한다. 이 때 Sleep 을 이용하므로 잠시 인터럽트를 disable한다.
3) Alarm::CallBack()
-blockedList의 원소들을 하나씩 꺼내서 확인하는 작업을 추가하였다.
getWakeUpTime() 은 깨어나기까지 남은 시간을 알려주는데, 이 값이 0보다 크면
decWakeUpTime() 을 호출해서 값을 줄여주고, 그렇지 않으면 unblockedList에
추가하여 BLOCKED 상태를 해제할 thread 로분류한다.
-unblockedList는 이번에 깨어나야 할 thread 들을 가지고 있으므로, list에 들어있
는 thread들을 전부 ReadyToRun()을 이용해서 READY 상태로 만들고, readyList에
넣어준다.
-한편, 처음 주어진 CallBack routine은 시스템(혹은 machine)의 종료 조건을 검사하
고 바로 종료될 수도 있도록 되어있는데, blockedList에서 시간을 기다리는 thread
가 있다면 종료 조건 검사를 하지 못하도록 하였다.
4) class BlockedThread
-Thread *itemThread 와 int itemTime 을 member variable로 하는 class이다.
WaitUntil() 에서 block시킨 thread와 시간 x를 묶어서 처리하기 위해 만들었으며,
get functions 와 decWakeUpTime() 이 있다.
-decWakeUpTime() 은 Alarm::CallBack() 에서 사용하는데, 아직 깨어날 시간이 되
지 않은 경우 TimerTicks만큼, 즉 100 만큼 itemTime의 값을 감소시킨다.

참고 자료

없음
다운로드 맨위로