-
[CS] 메모리란?CS 2023. 4. 17. 09:20
1. 컴퓨터에서 메모리란?
- 프로그램에서 데이터를 저장할 수 있는 공간
2. 메모리의 종류와 할당 방식
전역변수 Static 변수 - 데이터 영역(프로그램 실행 시 로딩, 별로 안 중요함)
프로그래머 할당(런 타임에 크기 결정) - 힙(Heap) 영역
지역변수, 매개변수(컴파일 타임에 크기 결정) - 스택(Stack) 영역
// 힙에 데이터 할당 void testHeap(){ class A = new class(); } // 스택에 할당 void testStack(){ class B; }
new로 Heap에 할당한 메모리가 중요하다! (스택에 할당 되는 것은 나가면 바로 죽음)
3. 메모리가 중요한 이유
- 메모리는 무한하지 않다. 즉 관리가 필요하다.
- 프로그램이 종료되면, 할당된 모든 메모리는 날라간다. (정확히는 OS에 반환)
=> 서비스 하고 있는 유저의 데이터가 날라가는 데, 복구를 할 수 없다.
- 메모리에 값을 읽고 쓰는 행위는 반드시 동시에 일어나선 안된다.
=> 데이터 무결성 (데이터가 깨질 수 있다.)
4. 메모리의 저장 매체
- 파일 : 메모리의 데이터를 프로그램에서 직접 하드 디스크에 기록
- 데이터베이스 : 메모리의 데이터를 DBMS등의 관리 시스템을 통해 기록
- 레지스트리 : 운영체제(OS)의 설정 및 정보가 저장되는 데이터베이스
5. 데이터 무결성
- 프로그램에서 동시에 한 메모리를 쓸 경우 데이터가 깨지는 현상
- 순차적인 프로그램에서는 데이터가 깨질 수 없음
- 병렬적으로 데이터에 접근하는 multi thread 환경에서 반드시 고려해야 하는 요소
- LOCK / UNLOCK 키워드로 관리 가능
6. 결론
- 프로그래머라면 반드시 메모리에 대한 이해가 필요하다.
- 메모리는 크게 데이터 영역, 힙, 스택 영역이 있다.
- 메모리는 영구적이지 않으니 저장 매체에 기록해야 다시 꺼내 쓸 수 있다.
- 데이터 무결성에 대해 항상 주의하자.
'CS' 카테고리의 다른 글
[CS] 공통 코드 (0) 2023.05.08 [CS] 쓰레드에 대한 이해와 활용 (0) 2023.05.01 [CS] 저장 프로시저(Stored Procedure)의 정의와 활용 (1) 2023.04.27 코딩의 DRY 법칙 (0) 2023.04.24 [CS] Http통신과 Socket통신의 차이점 (0) 2023.04.19