201x년도 소프트웨어종합설계

연구개발제안서

201x. 3.

201x년도 컴퓨터학종합설계1 연구개발제안서
①고유번호					②보안등급		[ ]보안, [○]일반
③기술분류코드					④공개가능여부		[○]가, [ ]부
⑤과 제 명	국문	사용자 인증 시스템 적용 Geek-OS 구현
	영문	Geek-OS implementation with authentication system
⑥주관기관	기관명	BANANA GEEK			사업자등록번호		320-92-03587
	주소	경기도 용인시 수지구 죽전동 단국대학교 미디어센터 508호
⑦연구책임자	성명	홍길동			주민등록번호		870810-1xxxxxx
	부서	메인 프로젝트 개발팀			직장전화		031-8005-xxxx
	수행지역	경기도 용인시			휴대전화		010-6423-xxxx
	E-mail	giocafe@naver.com			FAX
⑧총 연구기간	201x 년 3 월 21 일 ~ 201x 년 6 월 20 일 ( 3 개월)
⑨참여인력(M/M)	총 : 4 명( 12 M/M)
⑩핵심키워드	국문	긱-OS		사용자 인증 시스템		운영체제		실제 H/W 기반
	영문	Geek-OS		Authentication System		Operating System		x86-based PCs
관계 규정과 모든 지시사항을 준수하면서 이 연구개발사업을 성실히 수행하기 위하여 아래와 같이 연구개발계획서를 제출합니다. 201x 년 x 월 xx 일 주관연구책임자: 홍 길 동 □ 최종무교수님 귀하

목    차

Ⅰ. 연구개발 개요	4

가. 연구개발과제 예상 결과물	4

나. 연구개발의 필요성	5

다. 국내·외 기술 현황	5

1) Nachos	5

2) Minix	6

3) 타 연구개발과의 차별성	6

Ⅱ. 연구개발의 목표와 내용	6

가. 최종목표 및 세부목표	6

나. 연구별 목표와 내용	7

1) 연구별 목표 및 내용	7

2) Use-Case	8

Ⅲ. 연구개발 추진 전략·방법 및 추진체계	9

가. 연구개발 추진체계	9

1) 연구개발 추진체계도	9

2) WBS (Work Breakdown Structure)	10

나. 연구개발 추진일정	11

Ⅰ. 연구개발 개요

가. 연구개발과제 예상 결과물

<사용자 인증 시스템 적용 Geek-OS 구현>

#0 : 프로젝트 작업환경 구축 → #1 : Loading Executable Files → #2 : Adding Processes

→ #3 : Scheduling and Semaphores → #4 : Virtual Memory → #5 : File System

위와 같은 각 step별로 구현해나가는 점진적 연구 개발 방식을 통하여 Geek-OS를 구현하게 되고,

이와 같이 구현된 Geek-OS는 로그인 시스템이 접목되어 일반 교육용 OS와의 차별성을 갖게 된다.

나. 연구개발의 필요성

1) 현재 안드로이드 및 다양한 운영체제의 등장으로 운영체제에 대한 이해가 중요시되고 있다. 이러한 환경에 발맞춰 운영체제의 교육적 필요성이 증가함에 따라 최대한 실용적인 운영체제 관련 프로젝트를 실행하고자 한다.

2) 대학교 학부생들이 일반 OS를 구현하는데 있어서 단기간에 완성도를 높이는 것은 현실적으로 어려운 일이므로, 교육용 OS를 이용하여 OS 구현 프로젝트를 수행하게 되면 시간적 문제와 완성도 문제를 모두 해결할 수 있다.

3) x86 PC 상에서 동작하는 프로그램을 부팅시키기 위한 새로운 템플릿을 만들어내고자 한다. high-level 언어로 쓰여 있는 프로그램을 부팅시키는 것은 새로운 OS 커널에서 시작되는 첫 단계이기 때문이다.

4) 기존의 Geek-OS 프로젝트와의 다르게 사용자 인증 시스템을 적용하여 차별성을 두고자 한다.

다. 국내․외 기술 현황

1) Nachos (Not Another Completely Heuristic Operating System)

UC Berkeley에서 Thomas Anderson이 개발했고, 대학교 교육용 운영체제로 널리 사용되는 운영 체제 중 하나이다. Nachos는 UNIX에서 유저레벨 프로세스로서 실행되며, MIPS 프로세서에서  명령어 레벨의 시뮬레이터를 통해 사용자 프로그램을 실행한다. 이 운영체제는 C++(호스트 UNIX 시스템에서 컴파일 되고 실행된다)로 작성되었으며, 운영체제 커널은 CPU 시뮬레이터에서 실행 된다. 이러한 접근의 주된 장점은 호스트 시스템의 디버거로 이 운영체제를 디버깅할 수 있다는 점, 그리고 이 운영체제에서의 충돌은 오직 하나의 유저 프로세스에 영향을 미친다는 점이다. 다른 장점으로, 이 운영체제는 저 레벨의 구체적인 하드웨어를 몰라도 된다는 점이다. 호스트  운영체제의 시스템 콜 인터페이스를 하드웨어처럼 쓸 수 있다는 것이다.

프로젝트 주제로써 Nachos가 적합하지 않은 두 가지 이유는 다음과 같다. 첫째, 실제 운영체제가 어떻게 커널과 유저 프로세스와 분리되는지 이해할 때 큰 혼란을 줄 수 있다. 실제 운영체제에서는 운영체제는 사용자 프로그램과 같은 CPU와 하드웨어에서 작동한다. 하지만 Nachos에서는 그렇지 않다. 둘째, Nachos는 칩과 장치 레벨의 프로그래밍을 추상화시켜 버렸다. 이것은 장점으로 보일 수 있지만, 운영체제가 저 레벨의 실제 하드웨어 구조를 공부하기 힘들다. 마지막으로 Nachos의 일반적이지 않은 구조 때문에, OS 커널 프로세스와 유저 프로세스가 같은 CPU에서 작동되는 하드웨어 환경 같은 데에서는 작동되기 힘들지도 모른다.

2) Minix

Minix는 또 다른 교육용 운영체제이다. 1987년 네덜란드의 암스테르담 자유대학교에 재직하던 교수 Andrew Tanenbaum이 개발하였다.  Nachos와는 다르게, 이것은 실제 하드웨어에서 작동된다. 하지만 Minix의 목적은 Geek-OS와는 많이 다르다. Minix는 가상 메모리, 파일시스템, 디바이스 드라이버, TCP/IP 네트워킹 및 많은 유저 모드 프로그램들이 있는 완전한 운영체제이다. 이것은 10만여 줄의 소스코드로 구성되어 있다. 이것은 잘 작성되었고 문서화되었지만, 크고 복잡하다. 이것은 두 가지 문제를 만든다. 우선, 방대한 분량의 소스코드 때문에 한 학기동안의 프로젝트가 힘들어질 수도 있다. 둘째, Minix는 모든 중요한 운영체제 특징이 이미 구현되어 있다. 따라서 대학교 4년 동안 공부한 것을 적용시켜보는 이 프로젝트가 의미 있게 되기 힘들 것이다. Geek-OS는 가장 기초적 구현만 되어 있으며, 이러한 문제들을 겪지 않을 것이다.

3) 타 연구개발과의 차별성

1980년대 퍼스널 컴퓨터의 등장과 함께 발달한 해킹의 역사를 보면, 운영체제의 취약점이 많은 악성코드의 주범이 되고 있다는 것을 알 수 있다. 예를 들어, 배열의 인덱스를 검사하지 않고 메모리 스택에 할당하는 것을 악용한 버퍼-오버플로우 공격은 아주 기본적인 해킹 기법이지만 강력하며, 현재까지도 많은 해킹 공격의 원인이 되고 있다. 따라서 최근 운영체제에도 이러한 이슈에 착안하여 보안성을 강화하고 있다. Geek-OS는 핵심적인 모듈만으로 구성된 아주 기본적 운영체제이지만, 패드워드 기반 사용자 인증 등의 기본적이지만 강력한 보안적 요소를 더하고자 한다.

Ⅱ. 연구개발의 목표 와 내용

가. 최종목표 및 세부목표

1) 최종목표 및 세부목표

구분	내용
최종목표	교육용 운영체제인 Geek-OS의 필수 기능 구현을 통하여 독립적인 운영체제를 완성하고, 사용자 인증 시스템을 적용하여 차별성을 부여하고자 한다.
세부목표 (요구사항)	- ELF (Executable and Linking Format) 형식 파일의 실행 구현 - System Call 구현 - Shell Program 구현 - Authentication System 구현 - Process의 수행 구현 - Scheduler 구현 - Semaphores 구현 - Virtual Memory 구현 - File System 구현

나. 연구별 목표와 내용

1) 연구별 목표 및 내용

구분	연구개발 목표	연구개발 내용 및 범위	계량화된 개발목표
project #0	프로젝트 작업환경 구축	Geek-OS 부팅 1) Linux 설치 2) Bochs emulator 설치 3) Nasm 설치 4) Geek-OS 설치
project #1	Loading Executable Files	1) ELF 헤더 정의 2) ELF 데이터 타입 정의 3) ELF 형식의 파일 실행 (Bochs 실행 시 ELF 형식의 파일을 실행시킨 후 결과도출)
project #2	Adding Processes	1) 유저 모드 프로세스 추가 2) 시스템 콜 추가 3) Geek-OS를 확장
project #3	Scheduling and Semaphores	- Scheduler 1) 선점형 스케줄링 방법인 Round-Robin 구현 2) Time Quantum으로 CPU 자원을 프로세스에 할당 - Semaphore 1) 멀티프로그래밍 환경에서의 공유 자원에 대한 접근을 제한하는 방법으로서 적용 및 구현
project #4	Virtual Memory	1) 물리적 주소로의 직접 매핑이 아닌 가상 주소를 통한 매핑 유도 2) 커널을 위한 단일 페이지 테이블과 사용자 프로세스들을 위한 페이지 테이블을 구현
project #5	File System	1) Geek-OS에 새로운 File System인 GOSFS 추가 2) 상위계층의 VFS 구현 3) 현재 File System 및 지원 가능한 File System에 대한 정보를 지속적으로 확인 가능하도록 구현

2) Use-Case (시연 시나리오)

① User 입장의 Use-Case

② System 입장의 Use-Case

Ⅲ. 연구개발 추진체계

가. 연구개발 추진체계

1) 연구개발 추진체계도

2) WBS (Work Breakdown Structure)

작업 구분	project #0, #1	개발자	홍길동
개발 및 연구	#0 : 프로젝트 작업환경 구축 - Geek-OS 부팅 → 1. Linux 설치 (우분투 권장) → 2.Bochs emulator 설치 → 3. Nasm 설치 → 4. Geek-OS 설치 #1 : Loading Executable Files - ELF 형식의 파일의 실행
개발 목적 및 기대 효과	최대한 빠른 시일 내에 Geek-OS 작업환경 구축 및 실행파일 구현을 목적 → 이어지는 여러 단계의 작업의 윤활제 역할 기대

작업 구분	project #2	개발자	홍길동
개발 및 연구	#2 : Adding Processes - System call 구현 - Shell program 수행 - fork, vfork를 구현
개발 목적 및 기대 효과	프로세스가 만들어내는 소프트웨어 인터럽트인 시스템 콜을 추가 → 운영체제의 기본적인 역할 부여 → segment와 local descriptor table을 이해하고 유저 모드 프로세스를 구현

작업 구분	project #3	개발자	홍길동
개발 및 연구	#3 : Scheduling and Semaphores - Scheduler 구현 - Semaphores구현
개발 목적 및 기대 효과	- Scheduling : 선점형 스케줄링의 방법 중에 하나인 Round-Robin 적용 및 구현 - Semaphore : 공유자원의 접근 시 발생하는 동시성 문제를 적절하게 상호 배제 하기 위한 Semaphore 적용 및 구현

작업 구분	project #4	개발자	홍길동
개발 및 연구	#4 : Virtual Memory - Paging 구현
개발 목적 및 기대 효과	페이징 기법의 구현을 통해 한정된 하드웨어 메모리 기억공간의 효율적 사용 기대 → 구현 과정에서 페이징기법에 대해 정확한 이해 및 구현

작업 구분	project #5	개발자	홍길동, 홍길동
개발 및 연구	#5 : File System - GOSFS 구현 - VFS 구현 - 파일 관련 system call 구현
개발 목적 및 기대 효과	OS에서 관리하는 File System을 실제로 구현을 목적 →File System 인터페이스 최상위 VFS를 구현함으로 여러 파일시스템 관리 역할

나. 연구개발 추진일정

1) 일정

2) 주요 마일스톤

해당월차	번호	마일스톤 명	개발기간		책임자
			시작일	종료일
3월	1.1	프로젝트 작업환경 구축	201x.03.21	201x.03.25	홍길동
4월	2.1	Loading Executable Files	201x.04.01	201x.04.30	홍길동
5월	3.1	Adding Processes (1)	201x.04.30	201x.05.12	홍길동
5월	3.2	Adding Processes (2)	201x.05.12	201x.05.26	홍길동
5월	3.3	Scheduling and Semaphores	201x.05.10	201x.05.30	홍길동
6월	4.1	Virtual Memory	201x.05.25	201x.06.10	홍길동
6월	4.2	File System	201x.06.05	201x.06.20	홍길동

연구개발목표	연구개발내용	추진일정
		3월				4월				5월				6월
		1주차	2주차	3주차	4주차	1주차	2주차	3주차	4주차	1주차	2주차	3주차	4주차	1주차	2주차	3주차	4주차
project #0	프로젝트 작업환경 구축
project #1	Loading Executable Files
project #2	Adding Processes
project #3	Scheduling and Semaphores
project #4	Virtual Memory
project #5	File System