Download IO-Lite: A Unified I/O Buffering and Caching System

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
Related documents