• 캠퍼스북
  • 파일시티 이벤트
  • LF몰 이벤트
  • 서울좀비 이벤트
  • 탑툰 이벤트
  • 닥터피엘 이벤트
  • 아이템베이 이벤트
  • 아이템매니아 이벤트

[공학]heap 영역 출력

*현*
개인인증판매자스토어
최초 등록일
2006.12.21
최종 저작일
2006.04
6페이지/파일확장자 압축파일
가격 1,500원 할인쿠폰받기
다운로드
장바구니

소개글

메모리 구조인 HEAP 영역을 출력하는 방법과 HEAP 영역을 출력한 소스입니다.
설명 DOC 문서가 6페이로 따로 첨부되어있구요. 실행환경은 리눅스입니다.
사용언어는 C입니다.

목차

과제 개요
과제 배경 지식
과제 접근방법&구현설명
프로그램 소스
실행화면

본문내용

☞ 과제 개요

초기화된 데이터와 (initialized data) 초기화안된 데이터 (uninitialized data : bbs) 와 HEAP 메모리 영역에 각각의 변수가 설정되도록 프로그래밍 하여 실제 데이터와 HEAP 영역의 내용을 파일로 쓰고 해당 파일을 octal dump 받도록 한다.


☞ 과제 배경 지식
● C프로그램의 기억 장소 배치
프로세스가 필요로 프로그램을 실행할 때 필요한 공간을 프로세스 메모리라고 하는데 아래와 같은 형태를 갖추고 있다. 개개의 프로세스 마다 단독의 메모리를 사용하는 것 처럼 하기 위해서 Virtual Memory 방식이다. 각 부분별 용도를 살펴 보자.

프로그램 실행시 입력하는 Command-line에 Arguments 와 환경변수가 저장되는 곳은 virtual 메모리 가장 상단이다.

Stack : function call 과 관계된 영역이다. 프로그램상에서 어느 function 을 call하게 되면 ( frame pointer, return address, parameter, local Variable, Stack point) 값이 저장되는 곳이다. Stack point 는 low address로 향한다.

Heap : 동적 메모리 할당 공간이다. 프로그램 실행 도중에 필요로 하는 메모리 공간을 위해 예비로 마련해 두는 곳이다. Heap의 포인터는 high address로 향한다.
Ex) malloc, calloc

DATA : Uninitialized Data 영역과 Initialized Data 영역으로 나뉜다.

Uninitialized Data : 초기화 안된 전역변수가 저장되는 곳이며 프로그램이 실행되기 전에 0으로 초기화 된다. BBS라 불린다.

Initialized Data : 프로그램에서 특별히 초기화되는 변수들이다. 전연변수라도 초기화되어 있으면 이곳에 저장된다.

Text : 프로그램의 본체이다. 이곳은 각종 코드와 읽기 전용 코드로 구성되어 있으며 이곳에 잘못 접근하게 되면 ( Segmentaion Fault ) 로 프로그램이 종료된다.

Stack과 Heap가 Free한 영역이 된다. Stack과 Heap과 Free 부분을 제외하고는 Read만 된다고 보면된다.


☞ 과제 접근방법&구현설명

1. DATA 영역의 시작주소 찾기

1) 외부변수 이용하는 방법
Extern 변수, 즉 외부변수는 현재 파일 밖에 정의되어 있을 때 선언하는 것이다. 이 외부변수가 시작주소를 찾는데 도움을 주는 외부변수는 메모리의 TEXT 영역 마지막 페이지에 저장된다는 것이다. TEXT 영역 위가 dump 받길 원하는 DATA 영역이 므로 외부변수 주소값에 해당 시스템의 페이지 크기를 더하면 되는 것이다. 그러나 외부변수가 복수개이면 TEXT의 맞지막 페이지 영역에 저장되는 변수가 무엇인지 보장할 수는 없으므로 주의해야 한다.

l Main 함수 밖에 외부변수 선언
extern type text;
l 해당 시스템의 페이지 크기를 알아낸다.
name이 _SC_PAGESIZE 일경우 페이지 크기를 리턴한다.
#include <unistd.h>
long sysconf(int name);

2) ELF Header 를 이용하는 방법
ELF 해더는 오브젝트 파일에서 고적된 위치를 가지는 섹션이다. ELF는 항상 파일에 첫
부분에 위치하게 된다. 이 같은 성질을 이용하면 된다.
그러나 이번 프로그램에서는 위 1의 방법을 사용하였다.


2. HEAP 영역의 종료주소 찾기

Data segment size를 변경해주는 sbrk 명령어를 이용하면 된다. Data space의 크기를 증가시킬 때 쓰는 명령으로 increment 값을 0으로 주면 본래 찾고자 하던 Heap 영역의 종료 주소가 리턴되게 된다.

참고 자료

없음

압축파일 내 파일목록

9905087#2.doc
dump.c
extern.c
*현*
판매자 유형Bronze개인인증

주의사항

저작권 자료의 정보 및 내용의 진실성에 대하여 해피캠퍼스는 보증하지 않으며, 해당 정보 및 게시물 저작권과 기타 법적 책임은 자료 등록자에게 있습니다.
자료 및 게시물 내용의 불법적 이용, 무단 전재∙배포는 금지되어 있습니다.
저작권침해, 명예훼손 등 분쟁 요소 발견 시 고객센터의 저작권침해 신고센터를 이용해 주시기 바랍니다.
환불정책

해피캠퍼스는 구매자와 판매자 모두가 만족하는 서비스가 되도록 노력하고 있으며, 아래의 4가지 자료환불 조건을 꼭 확인해주시기 바랍니다.

파일오류 중복자료 저작권 없음 설명과 실제 내용 불일치
파일의 다운로드가 제대로 되지 않거나 파일형식에 맞는 프로그램으로 정상 작동하지 않는 경우 다른 자료와 70% 이상 내용이 일치하는 경우 (중복임을 확인할 수 있는 근거 필요함) 인터넷의 다른 사이트, 연구기관, 학교, 서적 등의 자료를 도용한 경우 자료의 설명과 실제 자료의 내용이 일치하지 않는 경우

이런 노하우도 있어요!더보기

찾던 자료가 아닌가요?아래 자료들 중 찾던 자료가 있는지 확인해보세요

  • 한글파일 기기분석 52페이지
    자세, 일상생활, 이동을 지원하는 다섯 개의 영역으로 구분할 수 있다. ... 스위치로도 사용가능 제품명 제작년도 제품가격 간편한 의사소통기구 (cheap ... 정보통신보조공학 ▣ 정보통신보조공학의 개념 보조공학은 인간의 기능을 도와주는
  • 한글파일 임베디드 시스템 프로그래밍 20페이지
    임베디드시스템프로그래밍 담당교수 황기현 교수님 제 출 일 2008년 12월 5일 정보네트워크공학 ... [] args) -프로그램 시작점 { Console.WriteLine("출력할내용들어감 ... 저장된 메모리 힙 영역의 주소 값이다.
최근 본 자료더보기
탑툰 이벤트
[공학]heap 영역 출력
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업
  • 레이어 팝업