[운영체제, OS, 시스템 프로그래밍] nachos 커널분석

등록일 2003.09.26 MS 워드 (doc) | 5페이지 | 가격 1,000원

소개글

그렇게 상세하게 하지는 못했습니다. 첫번째 프로젝트라 내용이 그리 어렵진 않지만 수백 라인이 넘는 소스를 분석하느라 잠도 제대로 이루지 못했습니다. 어설프지만 개요를 파악하는데는 도움이 될듯 합니다.

목차

1.System 환경
2.실행결과
3.설치중 시행착오와 해결법
4.소스분석

본문내용

4.2 machine.Machine.main() 메소드 분석
- machine.Machine 클래스는 nachos 실행시 최초 실행되는 master 클래스이다. Main() 메소드의 첫 부분에서 “nachos 5.0j initializing…” 메시지를 출력하고 입력받은 인자(args)를 전달한다.
- 현재 위치와 nachos 가 설치된 위치, test 폴더의 위치를 각각 저장한다.
- ProcessArgs() 메소드를 호출하며 processArgs() 메소드에서 전달받은 인자를 검사하여 각각에 해당하는 메소드를 실행한다.
- Config 클래스를 부르고 nachos.conf 파일을 로드한다.
- NachosSecurityManager 클래스의 getPrivilege 메소드를 실행하여 system mode 를 설정한다.
- CreateDevices() 메소드를 통해 bank, processor, console, filesystem, network 디바이스를 생성한다.
- CheckUserClasses() 메소드를 통해 User 를 체크한다.
- new TCB().start 에서 TCB 객체를 생성하며 이때 AutoGrader.start() 를 실행하여 설정된 privilege와 args 를 가지고 kernel.initialize(args) 호출한다. 그러나 현재 kernel 클래스에는 구현된 메소드가 없으므로 차후 프로젝트에서 kernel initialize 메소드를 구현해야 한다.
- Autograder 를 호출할 때 config 파일에서 kernel.kernel 변수값을 사용하는데 이때 결과적으로 thread.Threadkernel 클래스의 initialize() 메소드를 호출하게 된다. 여기서 Scheduler 를 설정하고 filesystem 을 작성하고 다시 KThread() 객체를 생성한다.
- KThread 객체가 생성될 때 현재 생성된 thread 를 검사하여 생성된 thread 가 없으면 TCB 클래스의 threadroot() 메소드를 privileged 인자와 함께 실행하게 되며 그렇지 않을 때는 createIdleThread() 메소드를 실행한다.
- CreateIdleThread() 메소드는 fork() 메소드를 실행하여 idle 상태로 KThread 객체를 복제하여 새로운 스레드를 생성한다.
- 마지막으로 Machine.interrupt().enable() 메소드를 수행하며 커널 initialize 작업을 끝낸다.

이 자료와 함께 구매한 자료

      최근 구매한 회원 학교정보 보기
      1. 최근 2주간 다운받은 회원수와 학교정보이며
         구매한 본인의 구매정보도 함께 표시됩니다.
      2. 매시 정각마다 업데이트 됩니다. (02:00 ~ 21:00)
      3. 구매자의 학교정보가 없는 경우 기타로 표시됩니다.
      최근 본 자료더보기