IT_study/스터디

가상메모리, Redis vs Memcached

meong_j 2022. 7. 28. 22:21
728x90
반응형

운영체제: 메모리관리 가상 메모리에 대해 설명해보세요.

→ 내용참고 자료

https://core.ewha.ac.kr/publicview/C0101020140425151219100144?vmode=f

 

반효경 [운영체제] 18. Memory Management 1

설명이 없습니다.

core.ewha.ac.kr

메모리

  • Logical address (virtual address) 논리적주소, 가상주소
    • 프로세스마다 독립적으로 가지는 주소공간
    • 각 프로세스마다 0번지부터 시작
    • CPU가 보는 주소는 logical address임
  • Physical address 물리적주소
    • 메모리에 실제 올라가는 위치
    • 주소에서 데이터를 읽고 /쓸때만 물리주소로 바꾼다

 

💡 주소 바인딩 : 주소를 결정하는 것

Symbolic Address(소스코드) → Logical address(숫자주소) → Physical Address(실행주소)

 

  • 주소 변환 관리! 하는애 → MMU (Memory-Management Unit)
    • Logical address→ Physical Address 로 매핑해주는 Hardware device
    • CPU에 코드 실행시, 가상 주소 메모리 접근이 필요할때 해당 주소를 물리주소값으로 변환해주는 하드웨어 장치
    • 운영체제 및 사용자 프로세스 간의 메모리 보호를 위해 사용하는 레지스터
      • Relocation register 를 이용해서 주소변환함(접근할 수 있는 물리적 메모리 주소의 최솟값)
      • limit register로 프로그램의 주소 범위 지정(크기 벗어났는지 체크)
  • 사용자 프로그램
    • logical address만 다룬다
    • 실제 phycal address를 볼수 없으며 알 필요도 없다

Dynamic Loading 동적로딩

  • 프로세스 전체를 메모리에 미리 다 올리는 것이 아니라!
  • 해당 루틴이 불려질때마다 메모리에 load하는것!
  • 메모리 효율향상
  • 가끔씩 사용되는 많은 양의 코드의 경우 유용

*Loading : 메모리에 올리는 것

 

Swapping

  • 프로세스를 일시적으로 메모리에서 backing store로 쫒아내는 것
    • backing store(swap area) : 디스크
      • 많은 사용자의 프로세스 이미지를 담을 만큼 충분히 빠르고 큰 저장 공간
  • Swap in / Swap out
    • 일반적으로 swapper에 의해 swap out 시킬 프로세스 선정
    • priority 가 높은 프로세스를 메모리에 올려놓음

Dynamic Linking

  • Linking을 실행 시간까지 미루는 기법
  • Static linking
    • 라이브러리가 프로그램의 실행 파일 코드에 포함됨
    • 실행 파일의 크기가 커짐
  • Dynaimc linking
    • 라이브러리가 실행시 연결(link)됨

메모리는 일반적으로 두 영역으로 나뉘어 사용

  • OS 상주 영역
    • 낮은 주소 영역 사용
  • 사용자 프로세스 영역
    • 높은 주소 영역 사용

가상메모리

1. 나오게 된 배경

  • 기존에는 코드 전체를 메모리에 load해야 해서 메모리 용량보다 더 큰 프로그램 실행X 문제 발생
    • 물리 메모리보다 큰 프로세스 수행할 수 없는 문제생김
    • 메모리 용량 부족 이슈
    • 프로세스 메모리 영역간에 침범 이슈

2. 기능

  • 가상 메모리는 이러한 물리적 메모리 크기 한계 극복
    • 프로세스 실행시 실행에 필요한 일부만 메모리 로드하고 나머지는 디스크에 둔다
    • 물리 메모리보다 큰 프로세스 수행가능!
    • 한정된 메모리에서 여러 프로세스를 실행시킬 수 있다!
    • 메모리가 실제 메모리보다 많아보이게 한다
    • 이처럼 현재 필요한 page (단위)만 메모리에 올리는 것을 Demand Paging 이라고 함
    • 프로세스간 공간 분리로, 프로세스 이슈가 전체 시스템에 영향주지 않음

 


Redis에 대해서 간단히 설명해주세요. Redis와 Memcached의 차이에 대해서 설명해주세요.

  • Redis (Remote Dictionary Server)
    • 고성능 키-값 저장소로서 문자열, List(리스트), Hash(해시), Set(셋), 정렬된 셋 형식의 데이터를 지원하는 NoSQL이다
    • 캐시 시스템
    • 모든 데이터를 메모리에 저장하고 조회 → 인메모리 데이터베이스
    • 다양한 자료구조 있음
    • 지속성을 보장하기 위해 데이터를 Disk에 저장 가능
      • 서버가 내려가더라도 Disk에 저장된 데이터 읽어서 메모리에 로딩
  • Redis와 Memcached 차이
    • 유명한 인메모리 데이터 저장소
    • 모두 사용하기 쉽고 고성능임
    • 1ms 이하의 응답 시간으로 빠르게 데이터 읽기 가능
    • 개발 문법적으로 사용하기 쉽고 양또한 적음
    • 데이터 여러 노드에 분산 저장 가능 → 데이터 분할
    • 다양한 프로그래밍 언어 지원

 

 

 

반응형