메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
열왕기 상하는 중요하다 ! 왜 ? 시가 3 권 예언서 12 원 열왕기 상하는 중요하다 ! 대라느스 단겔학슥말.
Indent Style, Recursive Function 전자계산입문 2009/03/27.
(2) 고대 국가의 성립  1) 고대 국가의 성격    ① 중앙 집권 체제      - 국왕의 지위 강화, 부족장 세력의 통합,
이진 나무 구조 강윤섭 2008년 5월 23일.
2015 담당 강사 : 정세진 중국 명문 감상 2015 담당 강사 : 정세진
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
암 보다 더 무서운 당뇨 2010년 [아시아경제 강경훈 기자 ].
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Python(파이썬) 하늘소 20기 서 정인.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
NML 프로그래밍 소개 2004년 9월 9일 신재호 서울대학교 컴퓨터공학부 년 봄, A 수업에서 김재황님이 사용했던 것을 다듬은 자료입니다.
07. 디바이스 드라이버의 초기화와 종료 김진홍
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
인류의 분산 언어의 대 혼잡시기 창조,타락 홍수 바벨탑사건 아브라함 모세 BC 고조선 하/은/주 (창 11:7,9) 『[7] 자, 우리가.
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
도덕 1학년 1학기 2. 개성신장과 인격 도야:인물학습 석가모니 인물학습 -석가모니.
23장. 구조체와 사용자 정의 자료형 2.
Tail-recursive Function, High-order Function
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
KIM HEESANG PL/SQL 2 KIM HEESANG
C#.
Method & library.
C 언어 교육 02 주차 – scanf & 반복문과 조건문 교육부장 조하정.
Chap 6.Assembler 유건우.
사례를 통해 문제 제시하기 진아는 왜 갑자기 사라졌나요? 진아에게 무슨 말을 해줄 수 있을까요?
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
27장. 모듈화 프로그래밍.
메모리 관리 & 동적 할당.
효율적인 메모리 사용을 위한 free 명령어 삽입 알고리즘
Mar 김 준 영 (juny924@gmail.com)
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
쿰란 쿰란 와디 항공촬영 .
보고서 (due 5/8) 다음과 같은 방식으로 문제를 해결하시오. 문제 분석 알고리즘 작성 프로그램 작성 테스트 및 검증
인천공항 스카이 허브라운지 상세페이지  배송비 부분에서 B2B, B2C 두가지 버전이 필요하며,
ARM Development Suite v1.2
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
이광근 프로그램분석 시스템 연구단 ropas.kaist.ac.kr KAIST 전산학과
강의 소개 컴퓨터시뮬레이션학과 2017년 봄학기 담당교수 : 이형원 E304호,
Fucntion 요약.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Canary value 스택 가드(Stack Guard).
알고리즘 알고리즘이란 무엇인가?.
데이터 동적 할당 Collection class.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
소리 편집 안 재 형.
프로그램분석 어떻게하나 (quick/tiny)
7주차: Functions and Arrays
Lecture 4 C 프로그램 구성의 기본 C 프로그램에서 이름짓기 C 프로그램에서 이름 충돌/이름 재사용.
함수, 모듈.
비교분석 보고서 Template 2015.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
CCIT 네트워크 발표 정보보호학과 평문 사이트와 SSL 사이트, SSL strip과 데이터 변조를 이용한 로그인 취약점
Docker Study 6~7.
2012년 9월 16일 바벨탑 사건과 셈의 후손들의 족보 ▣말씀:창세기 11:1-32 예 수 복 된 교 회.
7 생성자 함수.
6 객체.
Presentation transcript:

메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용 메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용 이욱세 이광근 전자전산학과 / 프로그램 분석 시스템 연구단 한국과학기술원 2002년 4월 27일

동기 자동 메모리 관리가 항상 좋은가? 안전하게 제거(deallocation)할 수 있는가? fun append x y = case x of [] => y | h::t => h :: append x t 안전하게 제거(deallocation)할 수 있는가? 재귀적인 데이터 구조에 대해 적절한 방법론이 없다

목적 재귀적 데이터 구조와 제거 명령어가 있는 언어의 안전성 검증

메모리 분석 각 변수에서 볼 수 있는 메모리의 모양새를 분석 각 칸(heap cell)은 이름 붙여 구별 x y x y a b ::(1, ) ::(2, ) ::(3, ) [] x y a b c d ::(;, ) [] x y a b c d

무너뜨린 타입 메모리의 모양새가 일정치 않을 수 있음 무너뜨려 분석 x y xory a b c d c d ::(;, ) ::(;, ) ::(;, ) [] c d y ::(;, ) [] xory = if … then x else y a,c ::! {b,c} []! {d} xory ::(;, )

재건축 무너뜨린 것은 재건축 가능 xory xory a,c ::! {b,c} []! {d} case (tl xory) of … ::(;, ) case (tl xory) of … a,c b,c ::! {b,c} []! {d} xory ::(;, ) ::(;, )

e1에서 제거한 것 Å e2 에서 사용/제거한 것 = ; 사용/제거의 안전성 검증 메모리 분석을 통해 각 프로그램 부분에서 사용/제거한 것을 모음 제거한 것을 이후에 사용/제거 불가 let x = e1 in e2 e1에서 제거한 것 Å e2 에서 사용/제거한 것 = ;

함수 분석과 이름 혼동 (aliases) 인자에 대해 가정하고 함수 코드를 분석한 것을 결과로 함  ! (, U, R) 함수 호출시 가정에 맞추어 얻어진 결과를 사용 이름이 혼동되는 경우 한 쪽이 함수 코드에서 제거되었으면 다른 쪽은 사용/제거 금지

분석 정확도 높이기 정교한 재건축 실행 시간 제거 여부 전달과 선택적 제거 경로별 분석

정교한 재건축 경우에 따라 정교한 재건축 가능 xory xory e + f = { b, c } a,c ::! {b,c} []! {d} xory ::(;, ) case (tl xory) of … a,c e ::! { f } []! {d } xory ::(;, ) ::(;, ) e + f = { b, c }

선택적 제거 함수 호출의 상황에 따라 제거 여부가 결정 실행 시간에 제거 여부를 전달받아 선택적 제거 fun append x y = … free x … append l1 l2 실행 시간에 제거 여부를 전달받아 선택적 제거 fun append  x y = … free x when  … append false l1 l2 append true l1 l2 제거한 것에 제거 조건을 붙여 모음으로써 해결

경로별 분석 경로별로 분석하지 않아 제거 못하는 경우 경로별로 분석 가능 let fun incr x = case x of [] => [] | h::t => h+1 :: incr t val z = if … then l else incr l in print_list z end 경로별로 분석 가능

메모리 재사용에 응용한 실험 결과 제거 + 할당 = 재사용 리스트 기반 작은 프로그램 실험 플랫폼: 수정된 Objective Caml

결론 재귀적 데이터 구조의 제거의 안전함을 보장하는 타입 시스템 제시 2.8-99% 메모리 재사용 DAG 형태 데이터 구조에 취약 예상