728x90
반응형
운영체제: 메모리관리 가상 메모리에 대해 설명해보세요.
→ 내용참고 자료
https://core.ewha.ac.kr/publicview/C0101020140425151219100144?vmode=f
메모리
- 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) : 디스크
- 많은 사용자의 프로세스 이미지를 담을 만큼 충분히 빠르고 큰 저장 공간
- 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 |