컴퓨터 시스템 3계층
- 컴퓨터 시스템 : 하드웨어와 소프트웨어, 펌웨어의 결합으로 이루어짐
하드웨어
- 가정용 PC의 각종 본체 부품 ( 하드디스크, CPU, 그래픽 카드 등등 ) 과 모니터, 키보드 등이 모두 하드웨어에 속한다.
- 컴퓨터의 기능을 수행하기 위해 전기적 신호로 구성된 정보, 데이터를 이동하거나 처리하는 물질적 실체를 의미 / 하드웨어의 품질은 컴퓨터의 정보 처리 능력을 결정한다.
- ( CPU의 클락이 몇 Hz냐, 코어가 몇개냐, RAM이 몇 GB냐 등등 )
소프트웨어
- 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조장하는 기능을 수행
응용 프로그램
- 사용자의 여러 요구사항을 해결하기 위해 제공되는 프로그램
- ( EX . 스프레드시트, 워드 프로세스 )
하드웨어 중 메모리!
메모리
- 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치
- 메모리는 크게 내부 기억장치인 주기억 장치와 외부 기억장치인 보조 기억장치로 분류됨
- DRAM (RAM, DDRF ) 등의 메모리, CPU 안에 있는 레지스터와 캐쉬 등이 내부 기억 장치인 주기억장치에 해당
- SSD, HDD 등이 외부 기억장치인 보조 기억장치로 구분
가상 메모리와 캐시
1. 가상 메모리 ( Virtual Memory )
- 컴퓨터에는 기본적으로 RAM 과 가상메모리의 두가지 유형의 메모리가 존재
- 가상메모리는 RAM 공간이 부족할 때 사용하는 파일로 SSD나 HDD를 RAM 처럼 사용하는 기술을 말한다.
- 가상메모리를 사용한다는 것은 페이징 파일과 정보를 이동하여 충분한 RAM을 확보하여 높은 메모리를 요구하는 프로그램이 올바르게 실행되도록 하는 것
- 가상 주소를 사용
- 선할당으로 인한 부담을 줄임
- 느린 속도를 개선함
✨가상 메모리 등장 배경 ✨
- 초창기 컴퓨터에서는 사용 가능한 RAM 의 용량이 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했음 → 메모리 부족 발생
- 애플리케이션 일부만 기억장치에 올려 실행하도록 지정할 수 있게 하는 오버레이 기법을 사용하고자 함. → 여전히 메모리 부족 발생
- 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지 집중하지 않고 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 대해 논의
= 메모리 접근이 순차적이고 지역화 되어있기에 가능
= 애플리케이션의 일부만 메모리에 올라간다면 메모리에 올라가지 않는 나머지는 보조기억장치인 디스크!
= 가상 메모리의 핵심이 보조기억장치!
✨가상 메모리 동작 방식 ✨
- 애플리케이션이 실행될 때, 실행에 필요한 일부분만 메모리에 올라가고 나머지는 디스크에 남게 됨.
- 빠르고 작은 기억장치 ( RAM )을 크고 느린 기억 장치 (디스크)와 병합하여 하나의 크고 빠른 기억장치 처럼 동작하게 하는 것!
- 가상 메모리 구현을 위해서는 메모리 관리 하드웨어인 MMU ( Memory Management Unit )이 필요!
🎆 MMU ( Memory Management Unit )
- 가상 주소를 물리 주소로 변환하고 메모리를 보호하는 기능을 수행함.
- CPU 가 각 메모리에 접근하기 이전에 메모리 주소 번역 작업이 수행됨
- 메모리를 일일이 가상주소에서 물리적 주소로 번역하면 작업 부하가 너무 많아짐으로 MMU는 RAM을 여러 부분 ( 페이지) 로 나누어 하나의 독립된 항목으로 처리함
🎇MMU 동작에 필요한 2가지! ( TLB, TTB )
- TTB ( Translation Table Base Address )
- 페이지 테이블이 존재하는 위치를 알려줌
- MMU의 레지스터 중 하나에 저장되어 있음
- TLB ( Page Table )
- Virtual Address 와 Physical Address를 연결해 주는 Table
- CPU는 메모리의 어딘가를 접근하기 위해서 Virtual Adress를 발생 시킴
- MMU는 Virtual Address를 받아서 Memory TTB에서부터 시작해 존재하는 Page Table을 접근
- 찾아간 Page Table 안에서 물리 주소를 찾아내어 주소 신호를 발생
- Memory는 해당 물리주소 안에 Data를 출력해 cpu에게 전달
🎆요구 페이징 ( Demand Paging )
- 요구 페이징은 CPU가 요청할 때 프로세스의 데이터를 메모리에 올리는 것을 의미함. 즉 처음 부터 모든 데이터를 메모리에 적재하지는 않음
🎆페이지 폴트 ( PAGE FAULTS )
- 어떤 페이지에 접근하려고 했을 때 해당 페이지가 실제 물리 메모리에 부재할 때 뜨는 인터럽트
- 어떤 프로그램이 자신의 주소 공간 ( 가상 메모리 공간 )에는 존재하지만 시스템의 RAM에는 존재하지 않는 데이터/코드에 접근 시도할 경우 발생
- 페이지 폴트가 발생하면 운영체제가 이를 해결한 뒤 다시 동일한 명령을 수행하는 식으로 동작함
- 페이지 폴트 발생 시 운영체제는 그 데이터를 메모리로 가져와서 페이지 폴트가 전혀 발생하지 않은 것처럼 동작하게 함.
- 페이지 폴트가 많이 발생할 수록 운영체제 성능이 많이 저하 되기에 이를 최소화 하기 위한 방법으로 ‘페이지 교체 정책’이 있음
🎆페이지 교체 정책
- 메모리가 꼭 차있을 때 기존 페이지 중 하나를 물리 메모리에서 저장 매체로 내리고, 새로운 페이지를 방금 비워진 해당 물리 메모리 공간에 올림.
- 어떤 기존 페이지를 내리면 좋을 지 결정하는 알고리즘이 바로 페이지 교체 알고리즘
- 페이지 교체 알고리즘 종류
- OPT ( Optional ) : 앞으로 가장 오랫동안 사용되지 않을 페이지 교체 / 이상적이나 실현 불가
- FIFO ( First in First Out )
- LRU ( Least Recently Used ) : 가장 오랫동안 사용되지 않은 페이지 교체
- LFU ( Least Frequntly Used ) : 참조 횟수가 가장 적은 페이지 교체
- MFU ( Most Frequently Used ) : 참조 횟수가 가장 많은 페이지 교체
- NUR ( Not Used Recently ) : 최근에 사용하지 않은 페이지 교체 ( 클럭 알고리즘 - 참조 비트 & 변형 비트 사용 )
2. 캐시
- 주기억 장치와 CPU 사이 위치
- 캐시는 가상메모리와 달리 프로세서 자체에서 구현되는 저장 장치
- 속도가 빠른 cpu와 느린 장치 (메모리) 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리
- 최근에 사용된 데이터나 자주 사용되는 데이터를 임시로 저장
- 캐시의 크기는 보통 수십 KByte ~ 수백 KByte
🎆캐시의 지역성
- 캐시가 효율적으로 동작하려면 캐시의 적중률 ( hit - rate )를 극대화 시켜야한다.
- 캐시에 저장할 데이터가 지역성을 가져야한다.
- 지역성이란 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미한다.
- 지역성의 전제 조건으로 프로그램은 모든 코드나 데이터를 균등하게 접근하지 않는다는 특성을 기본으로 한다.
- 즉 지역성은 어느 한 순간에 기억장치 내 특정부분을 집중적으로 참조하는 특성
[ 지역성의 종류 ]
- 시간적 지역성 : 특정 데이터가 한번 접근 되었을 경우, 가까운 미래에 한번 더 데이터에 접근할 가능성이 높은 것
- 공간적 지역성 : 특정 데이터와 가까운 주소가 순서대로 접근 되는 경우
가상메모리와 캐시의 주요 차이점
- 가상 메모리는 사용자를 위해 가상 메모리의 용량을 확장하지만 캐시 메모리는 cpu에 대한 데이터 엑세스를 더 빠르게 만든다
- 가상 메모리는 메인 메모리보다 큰 프로그램의 실행을 가능하게 한다. 반면 캐시 메모리는 최근 사용된 원본 데이터의 복사본을 저장
- 가상 메모리 관리는 운영 체제에 의해 수행되는 반면 캐시 메모리 관리는 하드웨어에 의해 수행
- 가상 메모리 기술은 매핑 구조(가상 주소 → 물리주소 )가 필요하지만 캐시 메모리는 매핑 구조를 필요로 하지 않음
'데일리IT🌱' 카테고리의 다른 글
Git Flow & MR & Code Review 효율적 사용 _ 기술블로그 보는! (1) | 2022.10.10 |
---|---|
[ 운영체제 ] 인터럽트 & 시스템콜 (0) | 2022.03.23 |
[ 소프트웨어 이슈 ] 2022 SW 산업 10대 이슈 전망 (0) | 2022.03.02 |
[ 컴퓨터 구조 ] 메모리 ( 가상 메모리 / 캐시 메모리 ) (0) | 2022.02.24 |
[ 네트워크 ] Blocking & Non Blocking (0) | 2022.02.02 |
댓글