메모리 관리

김두현·2023년 1월 12일
2

Backend Curriculum

목록 보기
11/16
post-thumbnail

Goal

  • 메모리 관리가 필요한 이유를 파악한다.
  • 주소 바인딩(Address Binding)에 대해 파악한다.
    • Compile Time Binding
    • Load Time Binding
    • Run Time Binding
      • MMU
  • 연속 메모리 할당(Contiguous allocation)에 대해 파악한다.
  • 단편화(Fragmentation)에 대해 파악한다.
    • 내부 단편화 , 외부 단편화
  • 단편화 해결 방법에 대해 파악한다.
    • 연속 메모리 할당
    • 메모리 압축(Compaction) : First fit , Best Fit , Worst Fit
    • Paging
    • Segmentation

메모리 관리

각 프로세스는 독립된 메모리 공간을 갖는다는 것을 배웠다.
따라서, Multi Programming 환경에서 한정된 메모리 공간을 효율적으로 사용하는 것이 중요하다.


주소 바인딩 (Address Binding)

  • Binding : 논리적 주소와 물리적 주소를 mapping 하는 것
    - 논리적 주소 : CPU에 의해 생성된 가상 주소
    - 물리적 주소 : 논리적 주소에 대응되는 메모리 공간에서의 위치

Compile Time Binding


  • Compile Time Binding : 메모리 주소가 compile 시에 결정된다.
    즉, 논리적 주소가 곧 물리적 주소가 된다.
  • 단점 : 현재 컴퓨터 상황을 파악하지 않고 물리적 주소를 사용하게 되면,
    다른 프로세스가 할당되기 어려울 수 있다.

Load Time Binding


  • Load Time Binding : 프로세스가 실행될 때, 로딩되는 위치에 따라 물리적 주소가 결정된다.
  • 단점 : 실행 시마다 mapping을 하게되면, 메모리를 로딩할 때 시간이 오래 걸린다.

Run Time Binding


  • Run Time Binding : 실행 후에도 물리적 주소가 변경될 수 있다.
    CPU가 주소를 참조할때마다, mapping table을 확인해 binding한다.
    이때, 코드 명령어를 저장하는 segment 계산은 MMU가 담당한다.

  • MMU (Memory Management Unit) :
    논리적 주소를 물리적 주소로 변환해주는 하드웨어 장치이다.
    기준 Register(relocation register , limit register)의 값과 논리적 주소의 연산을 통해 binding한다.

연속 메모리 할당 (Contiguous allocation)

논리적 주소가 연속적이면, 물리적 주소도 연속적으로 할당한다.

  • 밑에서 설명할 Fragmentation 문제를 낳게된다.

단편화 (Fragmentation)

  • Fragmentation : 메모리 상에 공간이 남아있음에도, 공간이 흩어져있어 새로운 프로세스가 할당될 수 없는 상태
  • 내부 단편화 : 남은 메모리 공간이 너무 작아 새로운 프로세스를 할당할 수 없는 상태
  • 외부 단편화 : 메모리가 해제되어 빈 메모리 공간이 있음에도, 새로운 프로세스를 할당할 수 없는 상태

단편화 해결 방법

메모리 압축 (Compaction)


  • Compaction : 메모리의 빈 공간을 연속적인 공간으로 만든다.
    • 최초 적합(First fit) : 가장 먼저 발견한 공간에 메모리를 배치한다.
    • 최고 적합(Best fit) : 빈 공간의 크기와 프로세스의 크기의 차가 가장 적은 곳에 배치한다.
    • 최악 적합(Worst fit) : 빈 공간의 크기와 프로세스의 크기의 차가 가장 큰 곳에 배치한다.
  • 단점 : 메모리를 이동하는 과정에서 오버헤드가 일어날 가능성이 높다.

Paging


  • Paging : 메모리 공간이 연속적일 필요는 없다는 생각에 기인하여,
    논리적 주소는 page, 물리적 주소는 frame으로 쪼개어 mapping 한다.
    이때, page와 frame은 크기가 동일하다.
  • 단점 : 내부 단편화가 증가한다.

Segmentation


  • Segmentation : 논리적 주소와 물리적 주소를 서로 다른 크기의 segment로 분할하여,
    segment table의 변수(Base : 시작 위치,Limit : segment 길이)를 참조해 mapping 한다.
  • 단점 : 외부 단편화가 증가한다.

✨오늘 내용은 여기까지✨


커리큘럼 남은 일정

인터넷

  • 인터넷 작동 원리
  • HTTP란?
  • 브라우저 동작 원리
  • DNS 작동 원리
  • 도메인 네임이란?
  • 호스팅이란?

    기본적인 프론트엔드 지식
  • HTML
  • CSS
  • JavaScript

    OS 및 일반적인 지식
  • 터미널 사용방법
  • OS 작동 방식
  • 프로세스 관리
  • 스레드와 동시성
  • 기본적인 터미널 명령어
  • 메모리 관리
  • 프로세스간 통신 (IPC)
  • 입출력 관리
  • POSIX 기초
  • 기본적인 네트워크 개념

    버전 관리
  • Git 기본 사용법

    DataBase
  • PostgreSQL (변경 가능성 있음)
  • MongoDB

    DataBase 상세 정보
  • ORM
  • ACID
  • Transaction
  • N + 1 Problem
  • DataBase 정규화
  • Index와 작동 방식

    API
  • 인증
  • REST
  • JSON APIs

    캐싱
  • CDN
  • Server side
  • Client side

    웹 보안 지식
  • MD5, SHA family, scyrpt, bcrypt
  • HTTPS, CORS, SSL/TL, 보안 정책

    Testing
  • 통합 테스트
  • 단위 테스트
  • 기능 테스트

  • CI/CD

    개발과 설계 원칙
  • SOLID
  • KISS
  • YAGNI
  • DRY

    아키텍처 패턴
  • 모놀로틱 앱
  • 마이크로서비스
  • SQA
  • Serverless

    검색 엔진
  • ElasticSearch

    메세지 브로커
  • RabbitMQ, Kafka

    컨테이너화 vs 가상화
  • Docker

    GraphQL
  • Apollo

  • 웹 소켓

  • 웹 서버

    확장성
  • 측정, 모니터링, 원격측정
  • 마이그레이션 전략
  • 수평적 확장 vs 수직적 확장
  • 관찰 가능성을 고려한 확장

참고 자료

https://resilient-923.tistory.com/381
https://resilient-923.tistory.com/390


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

1개의 댓글

comment-user-thumbnail
2023년 1월 12일

d와.. 정말 꼼꼼하게 공부하셨네요 본받겠습니다!!

답글 달기