관리 메뉴

Jsecurity

시스템의 메모리 본문

프로그래밍언어/리버싱 입문

시스템의 메모리

Great king 2019. 3. 12. 19:56



※메모리의 기본 구조


스택


-후입선출 (LIFO) 방식에 의해 정보를 관리

-Top이라고 불리는 스택의 끝부분에서 데이터의 삽입과 삭제가 발생

-가장 나중에 삽입된 정보가 가장 먼저 읽힘


힙(Heap)


-프로그램의 실행 중 필요한 기억장소를 할당하기 위해 운영체제에 예약되어 있는 기억장소 영역

-데이터를 저장하기 위해 기억 장소를 요청하면 운영체제는 힙에 존재하는 기억장소를 프로그램에 할당

-기억 장치가 더 이상 필요 없으면 할당 받앗던 기억장소를 운영체제에 반납, 운영체제는 반납된 기억장소를 다시 힙에 돌려준다.

-힙에 대한 기억 장소는 포인터를 통해 동적으로 할당되거나 반환

-연결 리스트, 트리, 그래프처럼 동적인 특성이 있는 데이터 구조에서 널리 사용


데이터 세그먼트


-초기화된 외부 변수나 static 변수 등이 저장되는 영역


BSS 세그먼트


-초기화 되지 않은 데이터 세그먼트

-프로그램이 실행될 때 0이나 NULL 포인터로 초기화

-외부 변수나 static 변수 중 초기화 되지 않은 변수들이 정의될 때 저장


텍스트 세그먼트


-CPU에 의해 실행되는 머신 코드가 있는 영역


-> 프로그램 = 텍스트 세그먼트 + 데이터세그 먼트




실제모드 (Real mode)


-8086 CPU에서 사용되던 동작 모드

-20비트 주소 버스를  사용 위해 16비트 레지스터 사용

-총 1MB(220 = 1,048,567)의 메모리 사용 가능

-20비트 주소를 나타내기 위해 세그먼트 레지스터를 도입








보호 모


-80286부터 도입된 보호 모드는 32비트 CPU 80386에 완성  

-32비트 주소 버스를 통해 4GB의 메모리를 사용 가능

-세그먼테이션과 페이징 이용 메모리 관리





Comments