TIL/CS

메모리란?

에리조나진생 2024. 1. 10. 13:41

메모리의 종류와 할당 방식

  • 데이터 영역(전역변수, static 변수)
    • 프로그램 실행 시 로딩
  • 힙(Heap) 영역(프로그래머 할당)
    • 런타임에 크기 결정
  • 스택(Stack) 영역(지역변수, 매개변수)
    • 컴파일 타임에 크기 결정
    • 함수 블록을 나가면 os에서 자동으로 해제시킴

메모리가 중요한 이유

  • 메모리는 무한하지 않다. 즉 관리가 필요하다
    • 사용자에 의한 관리가 필요함
  • 프로그램이 종료되면, 할당된 모든 메모리가 날라감(정확히는 OS에 반환)
    • 서비스 중인 유저의 데이터가 날아가게 되므로 데이터의 복구가 어려움
  • 메모리에 값을 읽고 쓰는 행위는 반드시 동시에 일어나선 안된다(데이터 무결성)

메모리의 저장 매체

  • 파일 : 메모리의 데이터를 프로그램에서 직접 하드 디스크에 기록
  • 데이터베이스 : 메모리의 데이터를 DBMS등의 관리 시스템을 통해 기록
  • 레지스트리 : 운영체제(OS)의 설정 및 정보가 저장되는 데이터베이스

데이터 무결성

  • 프로그램에서 동시에 한 메모리를 쓸 경우 데이터가 깨지는 현상
  • 순차적인 프로그램에서는 데이터가 깨질 수 없음
  • 병렬적으로 데이터에 접근하는 멀티스레드 환경에서 반드시 고려해야 하는 요소
  • LOCK / UNLOCK 키워드로 관리 가능(세마포어, 뮤텍스 등)
    • 메모리 사용 시 잠그고 사용이 완료되면 잠금을 품

결론

  • 프로그래머라면 반드시 메모리에 대한 이해가 필요함
  • 메모리는 크게 데이터 영역, 힙, 스택 영역이 있다
  • 메모리는 영구적이지 않으니 저장 매체에 기록해야 다시 꺼내 쓸 수 있다
  • 데이터 무결성에 대해 항상 주의하자

'TIL > CS' 카테고리의 다른 글

[디자인 패턴] 프록시(Proxy) 패턴  (0) 2024.07.09
[디자인패턴] 팩토리 패턴  (0) 2024.05.17
[디자인패턴] 싱글톤 패턴  (0) 2024.05.16
브라우저 렌더링 과정  (0) 2024.02.03