Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Operating System 2004 Nachos Project 2004 운영체제 프로젝트 Nachos Assignment #3 : Multiprogramming & System Call 2004. 4. 27 Due date(source code) : 2004. 5. 17 23:59 Due date(report) : 2004. 5.18 오후 1:00 1 Operating System 2004 Nachos Project Introduction 관련 루틴 분석 멀티 프로그래밍 구현 프로세스 관련 시스템 호출 구현 파일 관련 시스템 호출 구현 2 Operating System 2004 Nachos Project Related Files(1) • Userprog/ – – – – userkernel.cc : 사용자의 응용 프로그램 실행하는 nachos kernel addrspace.cc : address space 생성 및 application program load syscall.h : system call들의 interface exception.cc: Exception handler가 구현. System call, exception, interrupt를 처리 • Machine/ – translate.cc: virtual address를 physical address로 translate – machine.cc: hardware를 software로 emulation – mipssim.cc: MIPS instruction simulation code 3 Operating System 2004 Nachos Project Related Files(2) • Test/ – start.s : stub code for handling system call ( assembly language ) – halt.s: system call Halt()를 부르는 test program – shell.s: shell program code • Filesys/ – filesys.h: “stub” file system (“#ifdef FILE_STUB” ~ “#else” 이전 부 분) • Lib/ – sysdep.cc: “stub” file system에서 사용하는 routine들 구현 4 Operating System 2004 Nachos Project Source Analysis(1) • User program execution routine 분석 – UserProgKernel, AddrSpace class를 중점적으로 분석 • • • • • Physical memory(page) allocation method User application loading method User application loading sequence Page table setup & management Procedure for existing application 5 Operating System 2004 Nachos Project Source Analysis(2) • System Call 처리 routine 분석 – Machine::RaiseException, ExceptionHandler • • • • System Call Halt()의 처리 과정 어떤 System Call을 수행하는지를 명시하는 방법 System Call 호출시, type 과 parameter 전달 방법 System Call을 처리한 후, Program counter의 값 증가 이유 ( ++4 ) 6 Operating System 2004 Nachos Project Multiprogramming구현 • Multiprogramming – 현재는 uni-programming(UserProgKernel:Run()) • 모든 물리 메모리를 하나의 UserProcess가 독점 – AddrSpace class 수정 • 여러 process가 각각 서로 분리되고 독립된 address space를 가질 수 있도록 변경 – User Process의 Page-Table set up – Physical page allocation method 의 design & implementation • Free page list, page usage bitmap design & implementation • Program을 loading 할 때 이용 7 Operating System 2004 Nachos Project Multiprogramming구현(cont’d) • Notes – 이번 프로젝트에서 수행되는 응용 프로그램들의 모든 page들은 모두 physical memory에 있다고 가정합니다. 즉, paging, swapping은 고려 하지 않습니다. – Nachos user-process는 heap을 가지지 않습니다. 그래서, loading time에 user-process의 address space의 정확한 크기를 알 수 있습니다. – 응용 프로그램을 나타내는 SpaceId를 사용하기 위해 (UNIX에서 pid와 유 사) id를 unique하게 할당하는 메커니즘, 대응하는 thread를 찾는 방법, id로부터 AddrSpace instance를 찾는 방법을 고려해야 합니다. – 단순화를 위해 concurrent하게 수행되는 프로세스의 수에 제한을 줄 수 있습니다. 8 Operating System 2004 Nachos Project Process 관련 System-Call 구현 • 다음 system call들을 구현 – int Exec(char* name) – int Join(SpaceId id) – void Exit(int status) Notice 각 시스템 호출의 semantic에 대해서는 userprog/syscall.h 내 의 comment를 기준으로 함 9 Operating System 2004 Nachos Project “stub” file system 분석 • Filesys/filesys.h • FILESYS_STUB가 define되었을 때 사용되는 FileSystem class 분석 • File System을 구현하기 위해서가 아닌, File 관련 System call을 구현하 기 위한 test용으로 사용하는 것임 • Stub file system이 사용하는 routine들 ( OpenForWrite,OpenForReadWrite, Unlink ... )들은 lib/sysdep.cc file에 구현되어 있으며 이를 분석 10 Operating System 2004 Nachos Project File 관련 System Call 구현 • 다음 System Call들을 구현. userprog/syscall.h에 기술된 syntax,semantics를 따른다. – – – – – void Create(char *name) OpenFileId Open(char *name) void Write(char *buffer, int size, OpenFileId id) int Read(char *buffer, int size, OpenFileId id) void Close(OpenFileId id) 11 Operating System 2004 Nachos Project File 관련 System Call 구현 • Notes – 각 user process 에서 OpenFileId는 unique합니다.(cf. SpaceId is unique in kernel) 이를 위해서 user process의 각 address space는 unique한 OpenFileId table을 가져야 합니다. – ConsoleIn, ConsoleOut: predefined OpenFileId • Keyboard로부터 사용자 입력을 받아들이거나 모니터에 message를 출력하 기 위해 필요한 것입니다. ConsoleInput과 ConsoleOutput은 OpenFileId 0 번과 1번을 차지하게합니다. 이는 마치 Linux에서 File list 0번과 1번에 console device를 넣어주는 것과 유사합니다. • SynchConsole Class는 사용하지 않음 – User virtual address에 접근하기 위한 routine을 구현해야 합니다. 이것 은 data를 kernel address space에서 user address space로 복사하기 위해서, 또 이와 정반대의 경우를 위해 Read, Write안에서 사용됩니다. *buffer 인자는 user space의 address를 point합니다. 12 Operating System 2004 Nachos Project Test Program 작성 • test/ : shell과 기타 test 프로그램 – test를 위해 간단한 test 프로그램들을 사용 • Test program, test routine은 추가, 변경 가능 • multiprogramming 과 file handling 각각에 대해 테스트 할 수 있도록 작성 • Test 주안점 – 구현된 시스템 호출들이 제대로 동작하는가? • 시스템 호출이 kernel을 종료 시키지 않도록 주의 – 여러 프로세스들이 concurrent하게 수행되는가? 13 Operating System 2004 Nachos Project Guidelines • 결과는 조별로 받습니다 • 결과는 소스코드와 보고서로 나뉩니다. • 구현을 위해 수정한 code는 e-mail을 통해 제출하고, 보고서의 장수는 20장으로 제한합니다. • 반드시 주석을 달아주기 바랍니다. • 수정한 소스의 앞뒤에는 다음과 같은 lines을 추가합니다. #if(n)def CHANGED …. #endif • 보고서는 2004년 5월 18일 오후 1시까지 302동 311-2호의 숙제 제출 함에 제출합니다. • 14 Operating System 2004 Nachos Project Guidelines(cont’d) • 소스 코드는 수정한 file만 제출합니다. • 예를 들어 code/threads/thread.cc와 thread.h 그리고 /userprog/addrspace.cc 를 수정했다면 thread directory와 userprog directory를 만들고 threads directory안에 수정한 thread.cc 와 thread.h , userprog directory안에 addrspace.cc를 넣고 압축을 합니다. • 따라서 숙제 검사시 /code directory에서 압축을 풀면 올바른 위치에 압축이 풀리도록 합니다. 압축 파일의 이름은 [조이름]_proj3.tar.gz ( ex : os049_proj3.tar.gz )입니다. – tar czvf os049_proj3.tar.gz * • 이렇게 압축한 파일은 2004년 5월 17일 23:59시까지 [email protected]로 제출합니다. 15 Operating System 2004 Nachos Project 보고서 양식 • 과제의 개요 및 팀 구성원의 작업 분담 내용(구체적으로) • 기존 루틴의 분석 – 자료 구조 분석 – 기능의 요약 및 필드 정의 설명 – 주요 함수의 분석 • arguments, global variable, local variable • 함수의 기능 설명 – 각 구현 루틴에 대해서 • 설계 및 디자인 • 루틴에 대한 설명 – test program • 설명 및 실행 방법 • 수행 결과를 변경/추가 부분과 관련하여 설명 16