meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • 코틀린자료형
  • DHCP
  • cpu사용률
  • 리눅스인증
  • router-link
  • 개발자도서
  • Kotlin
  • docker
  • 배포인프라
  • 안드로이드adaptor
  • SASS Variables
  • Proxy
  • 테크커리어
  • 리눅스방화벽
  • 이차원배열정렬
  • dp #알고리즘
  • dockersecret
  • gabagecollecter
  • django
  • 중첩라우트

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

IT_study/스터디

가상메모리, Redis vs Memcached

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 이하의 응답 시간으로 빠르게 데이터 읽기 가능
    • 개발 문법적으로 사용하기 쉽고 양또한 적음
    • 데이터 여러 노드에 분산 저장 가능 → 데이터 분할
    • 다양한 프로그래밍 언어 지원

 

 

 

반응형
저작자표시 비영리 변경금지

'IT_study > 스터디' 카테고리의 다른 글

객체지향 설계 원칙, 트랜잭션 격리, 해쉬테이블  (0) 2022.08.24
공인ip, 사설ip, nat, 프록시서버, DHCP  (1) 2022.08.18
CDN, CORS, 배포 인프라  (0) 2022.08.11
Rest api, 클러스터형 vs Non클러스터형, 가비지콜렉터  (0) 2022.08.04
TCP vs UDP, 라우터 vs 스위치  (0) 2022.07.28
    'IT_study/스터디' 카테고리의 다른 글
    • 공인ip, 사설ip, nat, 프록시서버, DHCP
    • CDN, CORS, 배포 인프라
    • Rest api, 클러스터형 vs Non클러스터형, 가비지콜렉터
    • TCP vs UDP, 라우터 vs 스위치
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바