• 파일시티 이벤트
  • LF몰 이벤트
  • 서울좀비 이벤트
  • 탑툰 이벤트
  • 닥터피엘 이벤트
  • 아이템베이 이벤트
  • 아이템매니아 이벤트

나초스 스레드 코드분석

*문*
개인인증판매자스토어
최초 등록일
2004.09.17
최종 저작일
2004.09
5페이지/한글파일 한컴오피스
가격 1,500원 할인쿠폰받기
다운로드
장바구니

소개글

운영체제론 프로젝트 리포트입니다. 나초스 스레드 분석자료입니다.

컴파일 실행환경

작업환경
- 데스크탑
- CPU : 1.3GHz
- Memory : 256Mbyte
- Hdd : 60 Gbyte
- 운영체제 : window XP
- 통신속도 : adsl lite (1Mbps)
- 접속환경 : telnet을 통한 리눅스 서버 접속

본문내용

1. /threads 밑에 있는 ./nachos를 실행시켰을 경우 수행되는 과정 분석



main.h에서 "kernel.h"가 불려온다. 여기는 ThreadedKernel클래스가 정의되어 있다. thread에서는 이 클래스가 kernel의 type으로 쓰인다. global 변수로 ThreadedKernel의 인스턴스인 kernel을 만든다.

main을 실행시키면 명령줄의 각 argument를 받아들이는 작업을 하고, debug클래스의 인스턴스를 활성화시킨다. 그리고 kernel의 Initialize 메소드를 실행한다.
그리고
OnUserAbort(Cleanup); // if user hits ctl-C
kernel->SelfTest();
kernel->Run();
를 각각 실행하게 된다.

kernel->Run 함수는 아직 아무것도 구현이 되어있지 않고 Thread::Finish만 실행시킨다.
그럼 이제 kernel->SelfTest를 하나씩 따라갈 필요가 있다.


ThreadedKernel::SelfTest() {
Semaphore *semaphore;
SynchList<int> *synchList;

LibSelfTest();

currentThread->SelfTest(); // test thread switching

// test semaphore operation
semaphore = new Semaphore("test", 0);
semaphore->SelfTest();
delete semaphore;

// test locks, condition variables
// using synchronized lists
synchList = new SynchList<int>;
synchList->SelfTest(9);
delete synchList;

ElevatorSelfTest();
}


LibSelfTest() 에서는 만들어놓은 Bitmap, List, SortedList, hashTable 자료구조들이 잘 돌아가는지 테스트한다.

그리고 Thread클래스의 SelfTest를 실행하게 되는데, 여기서는 SimpleThread라는 함수를 실행시키고 똑같은 함수를 Thread로 Fork하여 concurrent하게 실행시킨다. 이 SimpleThread함수는 주어진 숫자를 5번 인쇄한다. 그러면 맨 처음에 주어진 결과에서 알 수 있듯이 각 thread가 스위치 되며 0과 1을 5번 출력 한 것을 알 수 있다.

Thread를 Fork 할 때는 Thread::Fork를 실행시키는데 이 곳에서는 새 Thread를 만들고 실행할 함수를 스택에 allocate한 후, 인터럽트를 끄고 scheduler::ReadyToRun을 실행하여 이 쓰레드를 READY 상태로 바꾸고 readyList 에 집어넣는다 그러고 난 후 아까 바꿨던 interrupt의 level을 원래 상태로 바꾼다.

이렇게 Thread의 SelfTest는 끝나고, 다음은 Semaphore를 생성하고 SelfTest한다.(Semaphore는 sync.cc에 정의되어 있다)semaphore의 SelfTest는 ping이라는 static Semaphore를 만들고 만들어진 test라는 semapore에서 ping이라는 static semaphore를 더 만들어 이것을 각각 10번씩 P()와 V()를 번갈아가며 테스트 한다. (semaphore는 value가 P 함수를 통해 value가 0이면 기다리게 만들어서 critical sention 에 여러 process가 접근하는 걸 막는다. 그리고 V 함수가 호출되면 value를 증가시켜서 다른 프로세스가 접근하는 것을 활성화 시켜준다). test의 경우 main thread에서 P를 호출해 멈춰놨다가 <font color=aaaaff>..</font>

참고 자료

없음

자료후기(3)

*문*
판매자 유형Bronze개인인증

주의사항

저작권 자료의 정보 및 내용의 진실성에 대하여 해피캠퍼스는 보증하지 않으며, 해당 정보 및 게시물 저작권과 기타 법적 책임은 자료 등록자에게 있습니다.
자료 및 게시물 내용의 불법적 이용, 무단 전재∙배포는 금지되어 있습니다.
저작권침해, 명예훼손 등 분쟁 요소 발견 시 고객센터의 저작권침해 신고센터를 이용해 주시기 바랍니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우
최근 본 자료더보기
탑툰 이벤트
나초스 스레드 코드분석
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업
AI 챗봇
2024년 06월 03일 월요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
4:13 오전
New

24시간 응대가능한
AI 챗봇이 런칭되었습니다. 닫기