Presentation is loading. Please wait.

Presentation is loading. Please wait.

MFC를 이용한 자바클래스파일 분석기 < Java Virtual Machine Simulator >

Similar presentations


Presentation on theme: "MFC를 이용한 자바클래스파일 분석기 < Java Virtual Machine Simulator >"— Presentation transcript:

1 MFC를 이용한 자바클래스파일 분석기 < Java Virtual Machine Simulator >
지도교수 : 이 광세 교수님 발 표 자 : 손 영언

2 목 차 1. 프로젝트 목적과 개발동기 2. 프로그램의 기능과 구조 3. 클래스 파일의 구조 4. 진 행 일 정 5. 시 연
목 차 1. 프로젝트 목적과 개발동기 2. 프로그램의 기능과 구조 2.1. 프로그램의 기능 2.2. 프로그램 구조도 2.3. 각 모듈별 기능과 과제 3. 클래스 파일의 구조 4. 진 행 일 정 5. 시 연 6. 프로젝트 후기와 향후과제

3 진 행 일 정 발료주제 선정 및 주제에 대한 개괄 적인 구성설정 자바가상머신에 대한 이해와 클래스 파일구조에 대한 자료조사
5월 6월 7월 8월 ~ 발료주제 선정 및 주제에 대한 개괄 적인 구성설정 자바가상머신에 대한 이해와 클래스 파일구조에 대한 자료조사 자바가상머신에서의 메모리관리에 대한 자료 수집과 프로그램 제작 프로그램 제작과 디버깅 작업

4 프로젝트의 개략 자바언어로 작성된 프로그램의 소스를 바이트코드로 부터 직접 받아들여 그 구성과 각각의 요소들을 분석하여 화면상에 시각적으로 표시하여 프로그램이 수행되는 일련의 과정을 직접 눈으로 확인할 수 있으며 고급 프로그램 제작에 필수적 요소인 메모리 관리에 있어 메모리 사용량과 가비지 컬렉션과정을 가시적으로 표시한다. 그로인해 규모가 큰 프로그램 제작시 쉽게 발생하는 난해한 디버깅과 트레이싱 작업을 용이하게 한다.

5 프로젝트의 목적과 개발 동기 자바가상기계의 구조와 동작원리의 이해 - 클래스 파일을 입력으로 받아 바이트코드를 분석, 실행하는 모습을 들여다 볼 수 있는 자바가상기계 시뮬레이터의 제작 보다 높은 단계의 컴파일언어의 이해 시뮬레이터 자바가상기계 클래스 파일 실행 결과

6 기능 및 개발과제 클래스 파일을 분석하여 클래스 정보를 보여주는 기능
바이트코드 실행 시 메모리 변화를 시각적으로 보여주는 기능 자바원시코드의 편집 및 컴파일 기능

7 시 스 템 구 조 미구현 : 모듈 : 자료구조

8 모듈별 기능과 수행과제 -1 클래스 파일 자료구조 모듈 : 클래스 파일의 정보를 가짐

9 모듈별 기능과 수행과제 -2 클래스 파일 분석 모듈 : 클래스 파일을 분석하여 자료구조를 생성

10 모듈별 기능과 수행과제 -3 클래스 파일 분석 뷰어 모듈 : 클래스 파일의 정보를 가짐

11 자바 클래스 파일의 구조 1.1 ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; } 타입(type), 이름(name), 개수(count)의 정보가 순차적으로 나타남 여기서 u1, u2, u4는 각각 unsinged 1, 2, 4 byte값을 의미 자바가상기계 명세 참조 (

12 magic : 자바 클래스 파일이라는 것을 나타내는 고유 값 (0xCAFEBABE)
minor_version & major_number : 클래스 파일을 생성한 컴파일러의 버전 constant_pool_count & constant_pool - 클래스와 인터페이스에 관계되는 상수를 담아 놓은 일종의 메모리 공간 - 상수 값을 한 곳에 모아 둠으로써 모든 곳에서 쉽게 참조 access flag (2byte) - interface 정보와 class의 access permissions표시 this_class (2byte) : 자신 클래스의 이름 super_class (2byte) : 부모 클래스의 이름 (지정하지 않았다면, java.lang.Object) interfaces_count & interfaces - 자신 클래스가 구현한 interface의 개수를 나타냄 - 자신 클래스가 구현한 interface에 해당하는 CONSTANT_Class entry의 index들을 가짐

13 fields_count - 자신의 클래스에서 정의된 클래스 변수 또는 인스턴스 변수들의 개수를 나타냄 - 자신의 클래스에서 명시적으로 정의된 변수들만 해당 - 부모 클래스에서 물려받거나 단순히 접근만 가능한 변수들은 포함하지 않음 fields : 클래스 자신의 필드에 대한 보다 자세한 정보를 가지고 있음 methods_count - 클래스에서 정의된 클래스 메쏘드, 또는 인스턴스 메쏘드의 개수를 나타냄 - 클래스에서 명시적으로 정의된 메쏘드만을 포함, 상속받은 메쏘드는 포함하지 않음 methods - 클래스의 메쏘드에 대한 보다 자세한 정보를 갖고 있으며, fields의 구조체와 비슷함 attributes_count -자신의 클래스에 대한 부과적인 attribute의 개수 attributes - 클래스 혹은 인터페이스의 속성 - class file은 다양한 속성을 가질 수 있음

14

15 모듈별 기능과 향후과제 -1 클래스 로더 모듈 : 클래스 파일 자료구조를 class area영역에 로드

16 모듈별 기능과 향후과제 -1 메모리 자료구조 모듈 : class area, heap, stack

17 모듈별 기능과 향후과제 -2 실행 엔진 모듈 : class area에 있는 바이트코드들을 순차적으로 실행

18 모듈별 기능과 향후과제 -3 메모리 상태 뷰어 모듈 : 메모리 상태를 시각화
■ garbage collector - 실행시간에 메모리를 관리하여, 사용되지 않는 메모리를 회수한다. ■ profiler - 시뮬레이션이 끝난 후 사용된 메쏘드의 실행시간과 사용빈도 및 메모리 사용량을 보여준다.

19 시 연

20 프로젝트 후기 및 향후과제 프로그램 자료 수집 시간대비 직접적인 코딩 시간의 부족으로
완성된 프로그램을 제작하지 못하였음이 아쉽고 많은 에러와 작동상의 문제점을 안고 있음을 스스로 인식하게 되었다. 본 프로그램의 핵심적인 요소인 메모리 관리기술의 완벽한 구현이 앞으로 남은 가장 큰 과제이며 접근이 쉽지않은 주제임에는 분명하나 그 전망과 활용도가 우수함을 직접적인 프로그램 작업수행을 통해서 절감했다.

21 개발툴 및 참고자료 Visual Stiduo 7.0 MFC http://java.sun.com/docs/books/vmspec
자바 가상머신 프로그래밍(인포북)


Download ppt "MFC를 이용한 자바클래스파일 분석기 < Java Virtual Machine Simulator >"

Similar presentations


Ads by Google