컴퓨터구조/소프트웨어

스택(stack), Heap, MMU 레지스터

FORHAPPy 2021. 9. 5. 17:52

<1> 스택 (Stack)

 

함수는 단순한 코드로만 이루어지지 않고, 다른 함수를 호출 하거나, 자기자신을 호출(재귀함수)하는 경우도 있다.

이때, 재귀함수가 제대로 작동하려면 반환주소를 가지고 있어야지 원래 함수로 돌아 갈 수 있다.

스택은 이러한 반환 주소를 저장하여 함수 호출에서 돌아 올 수 있도록 해준다. 

또한, 지역변수를 저장하는데도 사용된다. 스택에 저장되는 데이터의 모음을 스택 프레임 이라고 부른다.

스택은 LIFO구조(last in first out) 이다.

 

스택에 더 이상 들어갈 공간이 없으면 이를 스택 오버플로라고 한다.

같은 스택에서 스택으로 넘치는걸 의미한다.

빈 스택에서 물건을 가져오려고 하는 경우를 스택 언더플로라고 한다.

<2> 메모리의 구조

Stack 함수에 대한 정보, 함수 내 지역변수
  힙과 스택이 서로 충돌하지 않게 하는것이 중요한데 이는 시스템프로그래밍 영역이다.
Heap 동적할당된 변수들이 할당 된다.( Alloc(), Malloc(), Calloc() )
BSS 초기화 되지 않은 변수 
DATA 초기화 된 변수
TEXT 코드가 기계어로 들어간다.

<3>MMU ( Memory Management Unit ) : 메모리 관리장치

 

cpu가 메모리에 접근하는 것을 관리하는 컴퓨터 하드뒈어 부품이다. 가상 메모리 주소를 실제 메모리 주소로 변환하며, 메모리 보호, 캐시관리, 버스 중재 등의 역할을 한다.

 

 프로그램이 접근이 금지된 주소공간에 접근하려 하면 MMU는 페이지 실패를 일으킨다.

이때 운영체제는 금지된 공간에 접근하려 하는 페이지 실패를 처리하지 않고 프로그램을 중지시킴으로써 악의가 있는 프로그램이나 버그가 있는 프로그램이 중요한 데이터를 읽거나 쓰는 것을 막을 수 있다.

 

<4>MMU가 쓰였을 경우 

 

명령, 데이터, 스택이 가기 다른 물리적 메모리 페이지에 매핑이 된고, 필요에 따라 할당된 크기를 변경 할 수 있다. 

하지만, 프로그램이 바라보는 메모리(가상메모리)는 여전히 앞에서 설명한 것과 같은 메모리 배치를 사용한다.

'컴퓨터구조 > 소프트웨어' 카테고리의 다른 글

32비트 운영체제  (0) 2021.09.16