Memory Allocation(메모리 구조)

MinsHouse·2022년 10월 3일
0

수업시간에 배운 내용을 그냥 지나치긴 아쉬워 배우는 마음으로 적어서 머리에 담자!!🔥

👏👏 메모리의 구조와 어떻게 프로세스가 메모리에 담기는지 알아봅시다!!

-Memory Allocation

  • Data Segment
  • Stack Segment
  • Heap Segment

먼저 프로세스 구조는 메모리 구조에 PCB만 더하면 된다.
즉, 메모리 구조는 Code, Data, Stack, Heap으로 이루어져 있다.

- Data Segment

<위 사진은 예시입니다.>

특징
Static Variables로 어디서나 공유 및 참조가 가능하다. 전역변수와 static변수가 할당된다.
위 예에서 객체 c가 Data영역에 속하는 것을 알 수 있다.

- Stack Segment

특징
Function Memery로 함수의 호출과 함께 할당되고 호출이 완료되면 소멸한다.
지역변수와 매개변수가 저장되는 영역이다.
위 예에서 int x, int y, int z가 Stack영역에 속하는 것을 알 수 있다.

- Heap Segment

특징
Dynamic Allocation으로 new를 통해 만들어진다. 즉, 사용자에 의해 메모리가 할당된다.
Heap 메모리는 안쓰면 사라지는 사용자에 의해 공간이 동적으로 할당되고 해제된다.
위 예에서 int c, int d, int e가 Heap영역에 속하는 것을 알 수 있다.

----> 위의 예시는 아래 이미지와 같이 메모리에 할당되는 것을 볼 수 있다.

ps.

프로그램이 실행되는 과정은 아래와 같다.

즉, 파일시스템인 exe파일을 더블클릭 -> Loader가 Process로 만들어준다. -> Scheduler가 프로세스를 Ready Queue에 제일 뒤에 넣어서 CPU의 서비스 받기를 기다린다.

-Loader가 Ready Queue의 주소를 알고 있어야 한다.
-각각의 독립적인 쓰레드로 운영되고 있다.

profile
MiniBee

0개의 댓글