안녕하세요! 개발하는 윤기사입니다. 이제부터 Computer Science에 대해서도 공부를 해야겠다 싶어서 만들었습니다!
[CS_정리]!! 앞으로도 열심히 공부해서 게시글 올리겠습니다~^__^
첫 번째 게시글은 메모리 구조에 관한 내용을 다뤄보려고 합니다!!
메모리의 구조
프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다.
또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다.
따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다.
프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같습니다.
1. 코드(code) 영역
2. 데이터(data) 영역
3. 스택(stack) 영역
4. 힙(heap) 영역
⭐️ 코드 영역에서 힙 영역으로 갈수록 High memory를 갖습니다!
1) 코드(code) 영역
메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트 영역이라고도 불립니다.
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리합니다.
2) 데이터(data) 영역
메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적 변수가 저장되는 영역입니다.
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다.
3) 스택(stack) 영역
메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.
스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다..
이러한 스택은 후입선출(LIFO) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됩니다.
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다. (High Memory -> Low Memory)
4) 힙(heap) 영역
메모리의 힙(heap) 영역은 사용자가 직접 관리할 수 있는 '그리고 해야만 하는' 동적인 메모리 영역입니다.
힙 영역은 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됩니다.
객체의 참조값(Object Reference)이 이 힙 영역에 저장되는 대표적인 데이터이다.
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다. (Low Memory -> High Memory)
🍎여기서 알고 가는 Struct와 Class의 차이점
1) Struct (값 타입)
- Stack 영역(컴파일 단계에서 결정됨)에 저장되는 값 타입으로 메모리에서 자동으로 값을 제거해 준다.
- 컴파일 타임: 소스코드가 실행가능한 기계어코드로 변환되어 머신에서 실행가능한 프로그램이 되며, 이러한 편집과정을 뜻한다.
2) Class (참조 타입)
- Heap 영역(런타임 단계에서 결정됨)에 저장되는 참조 타입으로 상속과 재정의가 가능하다.
- deinit()을 이용해 인스턴스 메모리 해제를 확인할 수 있고 ARC로 메모리 관리를 한다.
- 런타임: 컴파일 과정을 마친 프로그램이 사용자에 의해 실행되고 이러한 응용프로그램이 동작되는 시점을 뜻한다.
참고 :
https://www.tcpschool.com/c/c_memory_structure
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
'CS_정리 & 정보처리기사 💾' 카테고리의 다른 글
[정보처리기사] 2020_06_06 (1회,2회 통합)_1과목 (30) | 2023.03.20 |
---|---|
[CS_정리] TCP/UDP 전송 계층 _ 5 (0) | 2023.01.20 |
[CS_정리] HTTP/HTTPS (비연결 지향 통신) _ 4 (30) | 2023.01.19 |
[CS_정리] 객체 지향프로그래밍 특징 & 장단점 _ 3 (31) | 2023.01.16 |
[CS_정리] SOLID 객체 지향의 5가지 원칙 _ 2 (30) | 2023.01.15 |