수업시간에 배운 내용을 그냥 지나치긴 아쉬워 배우는 마음으로 적어서 머리에 담자!!🔥
👏👏 메모리의 구조와 어떻게 프로세스가 메모리에 담기는지 알아봅시다!!
-Memory Allocation
- Data Segment
- Stack Segment
- Heap Segment
먼저 프로세스 구조는 메모리 구조에 PCB만 더하면 된다.
즉, 메모리 구조는 Code, Data, Stack, Heap으로 이루어져 있다.
특징
Static Variables로 어디서나 공유 및 참조가 가능하다. 전역변수와 static변수가 할당된다.
위 예에서 객체 c가 Data영역에 속하는 것을 알 수 있다.
특징
Function Memery로 함수의 호출과 함께 할당되고 호출이 완료되면 소멸한다.
지역변수와 매개변수가 저장되는 영역이다.
위 예에서 int x, int y, int z가 Stack영역에 속하는 것을 알 수 있다.
특징
Dynamic Allocation으로 new를 통해 만들어진다. 즉, 사용자에 의해 메모리가 할당된다.
Heap 메모리는 안쓰면 사라지는 사용자에 의해 공간이 동적으로 할당되고 해제된다.
위 예에서 int c, int d, int e가 Heap영역에 속하는 것을 알 수 있다.
----> 위의 예시는 아래 이미지와 같이 메모리에 할당되는 것을 볼 수 있다.
프로그램이 실행되는 과정은 아래와 같다.
즉, 파일시스템인 exe파일을 더블클릭 -> Loader가 Process로 만들어준다. -> Scheduler가 프로세스를 Ready Queue에 제일 뒤에 넣어서 CPU의 서비스 받기를 기다린다.
-Loader가 Ready Queue의 주소를 알고 있어야 한다.
-각각의 독립적인 쓰레드로 운영되고 있다.