<4D F736F F F696E74202D206D61696E D F6E D20C7C1B7CEBCBCBCAD20B7CEB5F920C8C420B8DEB8F0B8AE20B9D B20B1B8C1B6C0CCC7D8>

Similar documents
슬라이드 1

hlogin2

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint 프레젠테이션

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - o8.pptx

Chapter 4. LISTS

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

설계란 무엇인가?

JVM 메모리구조

C언어 및 실습 C Language and Practice

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-1Array.ppt

11장 포인터

Microsoft PowerPoint - 15-MARS

Microsoft PowerPoint - chap10-함수의활용.pptx

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

chap 5: Trees

Lab 3. 실습문제 (Single linked list)_해답.hwp

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

03_queue

Microsoft PowerPoint - 07-chap05-Stack.ppt

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

슬라이드 1

Visual Basic 반복문

Microsoft Word - PLC제어응용-2차시.doc

C# Programming Guide - Types

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

03장.스택

슬라이드 1

Microsoft PowerPoint - ch07 - 포인터 pm0415

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - a8a.ppt [호환 모드]

Frama-C/JESSIS 사용법 소개

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

Microsoft Word - FunctionCall

슬라이드 1

Microsoft PowerPoint - chap11-포인터의활용.pptx

11장 포인터

06장.리스트

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

untitled

Microsoft PowerPoint - 제4장-스택과큐.pptx

Problem 1: 스택자료구조구현 (20 점 ) ( 목적 ) 이문제에서는프로그래밍시사용되는자료구조중하나인스택을직접구현해봄으로써, 구조체와포인터를익힌다. ( 스택의정의 ) 스택은쌓아올린더미를의미하며한쪽끝에서만삽입과삭제과일어나는자료구조이다. 즉, 스택구조는아이템을 Las

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint Presentation

Microsoft PowerPoint - chap01-C언어개요.pptx

DBMS & SQL Server Installation Database Laboratory

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다

금오공대 컴퓨터공학전공 강의자료

No Slide Title

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

C++ Programming

o 스택 (stack) ~ 쌓아놓은더미 1. 스택의개요 - 2 -

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint - e pptx

PowerPoint Template

Adobe Flash 취약점 분석 (CVE )

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft PowerPoint - ch07_스택 [호환 모드]

슬라이드 1

<C6F7C6AEB6F5B1B3C0E72E687770>

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

03장.스택.key

PowerPoint 프레젠테이션

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft Word - ExecutionStack

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Chapter #01 Subject

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

PowerPoint Presentation

슬라이드 1

KNK_C_05_Pointers_Arrays_structures_summary_v02

슬라이드 1

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

hlogin7

Microsoft PowerPoint - a10.ppt [호환 모드]

OCW_C언어 기초

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

untitled

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

PowerPoint 프레젠테이션

[ 마이크로프로세서 1] 1 주차 1 차시. 마이크로프로세서개요 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Micropr

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - logo_3.ppt [호환 모드]

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

설계란 무엇인가?

Chapter 4. LISTS

UI TASK & KEY EVENT

슬라이드 1

Transcription:

프로세스로딩후메모리및 stack 구조이해

학습목표 실제프로그램이 CPU 에의해메모리에상주되었을때메모리구조에대하여숙지한다. 논리적스택에대한개념과작동원리를이해한다. 논리적스택구조에대하여자세히각부분별기능이무슨역할을하는지를파악한다.

메모리구조모습 (1) 메모리구조 ( 코드영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 프로그램실행후메모리구조모습 (1) 개념 프로그램이 CPU 에의해메모리에탑재되었을시실제메모리와프로세서와의관계를기준으로메모리와스택의구조를표현한것이다. 프로세스프로세스 A A 물리적물리적메모리메모리 프로세스프로세스 B B data data bss bss data data text text Text( Text( 실행코드실행코드 ) ) O/S O/S bss bss data data text text

메모리구조모습 (2) 메모리구조 ( 코드영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 프로그램실행후메모리구조모습 (2) 개념 특정프로세서가메모리에로딩한후해당프로세서에서사용하고있는각기능별내용이 segment 레지스터를이용하여실제메모리에탑재된모습을자세히표현한것이다. 하위하위상위상위 Code Code zone zone Data Data zone zone Heap Heap zone zone 또는또는BSS zone zone Return Return addr addr 프로그램프로그램명령명령 변수변수영역영역 (public, (public, private, private, static) static) 프로그래머가프로그래머가임의로임의로정한정한메모리메모리 (malloc,alloc,calloc (malloc,alloc,calloc 등시스템시스템콜에콜에의해의해 ) ) 변수나변수나함수의함수의인자가인자가저장저장 데이터를데이터를일시적으로일시적으로보관하는보관하는영역영역 프로그램의프로그램의종료종료

메모리구조모습 (2) 메모리구조 ( 코드영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 메모리구조 ( 코드영역 ) 개요 프로그램작성시사용하는 Instruction( 명령어 ) 들이메모리에로드되는지역으로포인터가 CS 레지스터와연결되어있는구조를가지고있다. 특징 실행파일의텍스트영역과대응하는읽기전용의실행코드가삽입되는지역이다. 이영역의크기는프로그램구동시크기가결정되는특징을가지고있다. 이영역에데이터를기록하려고하면 segment fault 가발생할수있다.

메모리구조모습 (2) 메모리구조 ( 데이터영역 ) 논리적스택개념논리적스택구조논리적스택구조특징 more 메모리구조 ( 데이터영역 ) 개요 이지역은프로그램작성시각종변수를모아두는지역으로 DS 레지스터와연결하여변수포인터를지정하고통제할수있다. 특징 초기화되었거나되어있지않은변수들을저장한다. 정적유형의변수들이나문자열들이이영역에저장되고코드영역에존재하는각종실행명령파일들이이영역과함께참조하여사용한다. Unix 시스템에서초기시스템콜 (0x80) 에의해크기가조정될수있다. 메모리가소진되면프로세스는다시스케줄링되어더큰영역의메모리를할당받게되며이때새로운메모리가데이터영역과스택영역사이를자동삽입하게되어있다.

메모리구조모습 (2) 메모리구조 (Bss 또는 Heap) 논리적스택개념논리적스택구조논리적스택구조특징 more 메모리구조 ( Bss(Block Started by symbol) 또는 Heap ) 개요 프로그램로딩시메모리를동적으로할당되는지역을의미한다. 특징 초기화되지않은동적데이터를저장하는세그먼트로써유닉스링커에의해생성된다. 이름과크기는가질수있지만초기값은 NULL 을저장한다. 프로그래머에의해임의로정한메모리영역 (malloc,alloc,calloc) 등의시스템콜에의해할당된다.

메모리구조모습 (2) 메모리구조 (Bss 또는 Heap) 논리적스택개념논리적스택구조논리적스택구조특징 more 논리적스택개념과작동원리 개념 데이터를잠시보관할메모리영역으로프로그램상에서배열로선언된값이정적으로할당받은지역을의미한다. 작동원리 LIFO : 후입선출법으로가장나중에추가된데이터가가장먼저추출되는방식을의미한다. Push : 스택에새로운데이터요소를추가할때사용. POP : 스택으로부터데이터추출할때사용. SP( Pointer) : CPU 에의해스택을가르키는레지스터를지적하는것을의미한다. 논리적스택구조 buf (0) buf (1) buf (2) buf (3) EBP Return addr a b c EBP Return addr buf (0) buf (0) 로컬변수 saved stack pointer Sub (a, b, c)

메모리구조모습 (2) 메모리구조 (Bss 또는 Heap) 논리적스택개념논리적스택구조논리적스택구조특징 more 개념 논리적스택구조 스택은실제동작하기위해서는반드시논리적으로구분되어진다. 데이터데이터저장저장상위상위 - - 하위로하위로저장저장 : : : : : : 4 4 3 3 2 2 1 0 1 0 limit limit SP( SP( pointer) pointer) top top frame frame base base 스택은 base 로부터데이터항목을차례로쌓아올린모양을가진다. 삽입과삭제는현재저장된최상위항목이위치한 top 에서만일어나며 Top 위치는 sp 라는지시자를가르킨다. 스택포인터는스택 base 에서시작하여항목이삽입되면증가되고삭제되면감소한다. 스택은한계가있어서그한계를초과할수없도록구성되어있다.

메모리구조모습 (2) 메모리구조 (Bss 또는 Heap) 논리적스택개념논리적스택구조논리적스택구조특징 more 논리적스택구조특징 (1) 스택구조특징 SP 는스택을가르키는 CPU 레지스터이며스택의출발지를나타내는베이스주소는항상고정되어있다. 스택의크기는실행시커널에의해서정적으로결정된다. 스택은여러개의스택프래임으로구성되어있다. 스택프래임은 push 와 pop 에의해데이터저장 / 삭제시경계선으로사용되어진다. Intel, Motorola, SPARC, MIPS 등의 CPU 는상위메모리에서하위메모리쪽으로데이터를저장한다.

메모리구조모습 (2) 메모리구조 (Bss 또는 Heap) 논리적스택개념논리적스택구조논리적스택구조특징 more 논리적스택구조특징 (2) SP 외에 FP(Frame pointer) 나 LB(Local pointer) 를사용하는시스템들이존재할수있다. FP 역할 처음함수가불렀을때스택의위치를가리키는역할을한다. 인텔에서는 BP(EBP) 를사용하며모토로라는 A7 레지스터를제외한아무레지스터를사용하여 FP 역할을수행할수있다. 함수사용시 FP 와 SP 작용원리 함수사용전사용하던 FP 를저장 FP 에현재 SP 를대입후지역변수크기만큼증가 (procedure prelude) 함수종료시 SP 와 FP 를원상복귀 (procedure epilogue) Procedure 종류 Procedure prelude Procedure epilogue 인텔 Enter leave 모토롤라 link uplink

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 끝 스택생성적용예제 상황 예제 스택의크기를 10 바이트로생성한후스택이름을 buf 라명명하고 function 함수를이용숫자 12345 string haha 를스택에 push 하는예제이다. 컴파일방법 : # gcc o o test test.c 실행 : #./test

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 끝 스택동작원리 개요 특정프로그램이메모리에상주후정적으로선언한배열은스택의구조를갖게되며다음과같은동작원리에의해동작하게된다. 동작원리순서 Base pointer Push 점검 IS Full POP 점검 IS Empty

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 스택의초기구조 끝 스택동작 스택의초기구조 SP 가처음 Base 주소를가르키고있는것을의미하며이곳으로부터 stack 이초기화되면서 stack 을사용할수있는첫번째지점이된다. PUSH PUSH POP POP Isfull Isfull Isempty Isempty sp sp 지점지점

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 (2) push 끝 스택동작 (2) - push 개념 Cpu 에의해정적으로선언된배열에특정데이터값을삽입, 추가하고자할때사용한다. 만일이명령이사용되어지면 stack pointer 가상위주소로한개씩이동하면서데이터값을저장하게되는특성을가지고있다. 특징 데이터항목을삽입하려면 sp 값을하나씩증가시켜두고스택의 top 에데이터값을저장한다. 데이터항목을삽입하기전에는새로운항목을저장할빈공간이있는지반드시검사한다. D D C C B A B A E E D D C C B A B A E E sp sp 지점지점 sp sp 지점지점

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 (3) 스택의 full checking 끝 스택동작 (3) 스택의 full checking 개요 특징 스택포인터에의해 push 가작동할때반드시선언된배열의최대값을점검하여야하는데이것을스택의 full checking 이라고표현하며만일점검하지않는다면 segmentation fault 가발생한다. 다음그림처럼스택이데이터로가득차면새로운데이터항목을삽입할수없다. 데이터항목삽입전에는먼저스택포인터가스택의한계에도달해있는지를검사해야한다. 만일스택포인터가스택의한계를검사하지못하면 bufferoverflow 가발생한다. G F E D C B A 한계 sp 지점

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 (4) POP 끝 스택동작 (4) - POP 개요 특징 POP 를실제스택내저장된데이터값을추출하거나삭제할때사용하는명령어이며추출시스택포인터는반드시가장나중에추가된값부터추출해야한다. 데이터항목을삭제또는추출하려면스택의 top 에있는데이터항목을제거하고 sp 값을하나씩감소한다. 데이터항목을삭제하기전에스택이비어있는지를검사해야한다. 만일스택이비어있는지를점검하지않으면 segmentation fault 에러가발생할수있다 E D C B A D C B A sp 지점 E sp 지점

논리적스택구조특징 스택생성적용예제 스택동작원리 스택동작 (5) 스택 Empty 값검사 끝 스택동작 (5) 스택 Empty 값검사 개념 스택포인터에의해특정데이터를추출, 삭제시반드시스택의 empty 값을검사하여야하며검사하지않을시에는 segmentation fault 오류가발생한다. 특징 다음의그림처럼스택이비어있으면, 데이터항목을삭제할수없다. 데이터항목을삭제하기전에스택포인터가 base 에도달했는지를반드시확인한다. Empty Empty sp sp 지점지점

요점정리 특정프로그램이 cpu 에의해메모리에상주되었을때구조는다음과같다. Code zone Data zone Heap zone zone ebp Return 스택이란특정프로그램에서배열을선언하였을시 cpu 에의해일시적으로특정데이터값을저장하기위한메모리공간을의미하며정적메모리공간을할당받는다. 스택의동작원리는 Isfull, Isempty, push, pop 등이 stack pointer 의해서이동하면서알맞은역할을하게된다. 스택의구조는다음과같이되어있다. Base frame pointer top limit