[운영체제] 나초스(Nachos) 소스코드 분석
- 최초 등록일
- 2005.04.05
- 최종 저작일
- 2005.04
- 6페이지/ MS 워드
- 가격 1,000원
소개글
c++ 버전 nacho의 소스코드 분석입니다.
컴파일 실행환경
1. Overview
2. Source Code Analysis
2.1 Thread directory
2.2 Userprog directory
3. Discussion
본문내용
이번 project는 앞으로 project를 수행하기 위해 Nacho 및 gcc, util의 설치를 통한 환경 구축과 더불어, nachos의 source code 분석을 통한 nachos 구성의 이해이다.
Valencia 서버에 nachos 환경을 구축하였으며, code/thread와 code/userprog directory 아래에서 nachos를 실행시킨 후 각각 경우의 execution routine을 분석하였다.
2.1 Thread directory
threads directory의 main.cc 파일로부터 소스 분석을 시도하였다.
우선 main.cc 파일은 argument를 받고 있었으며, argument로 받는 옵션들은 각각 다음을 뜻하였다.
-d 옵션을 주었을 경우, debug string을 argument로 입력을 주었음을 의미하였다.
-u 옵션은 usage를 출력하며, 간단한 usage 문장을 출력하도록 되어있었다.
-z 옵션은 copyright 옵션으로, copyright 정보를 출력하였다.
-rs 옵션은 random seed를 지정하여, time slice가 random으로 발생하도록 하였다.
입력 받은 argument가 없거나, argument parsing이 끝나면, Debug class의 object를 생성한다. 그 후, 해당 debug option이 enable 상태인지 확인하여, disabled 상태이면, error 메시지를 출력한다. 이 class는 debug.h/cpp에 구현되어 있다.
그 후, 입력 받은 argument로 KernelType class의 object를 생성하는데, main.h에 보면, Threads가 define되어 있는 경우, KernelType은 ThreadedKernel을 aliasing하고 있음을 알 수 있다. 따라서, 이는 ThreadedKernel의 object를 생성한 것임을 알 수 있다.
ThreadedKernel의 constructor는 main의 argument를 그대로 parameter로 전달 받으며, 입력 받은 argument에 –rs 옵션을 주었었는지를 확인한다. 만약 –rs 옵션을 준 경우, 다음 parameter를 pseudo-random의 seed 값으로 받아, initialization을 해주는 것을 볼 수 있다. 그리고, time slice를 random으로 지정하는 randomSlice flag를 TRUE로 바꿔주며, -rs 옵션을 주지 않은 경우, randomSlice flag는 FALSE로 지정된다.
참고 자료
없음