본문 바로가기

CS(ComputerScience)

가상 메모리

728x90

가상 메모리

메인 메모리를 추상화 한것.

가상메모리에서 지원하는 포로세서는 가상주소지정이라고 하는 간접화의 형태로 메인 메모리를 참조.

 

🔎 가상 메모리 기능

  • 자동으로 최근에 사용한 디스크상의 가상 주소공간의 내용을 메인 메모리로 캐시한다.
  • 메모리 관리를 단순화해주고 링킹, 프로세스들 간의 데이터 공유, 프로세스를 위한 메모리 할당, 프로그램 로딩을 단순화 해준다.
  • 매 페이지 테이블 엔트리 내 보호 비트를 사용해 메모리 보호를 단순화해준다.

📌 폰 노이만 구조

메모리는 프로그램과 데이터를 구분없이 저장한다.
메모리는 속도보다는 용량을 중시..
 

  메모리 cache
속도 DRAM < SRAM
DRAM >SRAM
DRAM >SRAM
비용
집적도

속도만 고려하면 DRAM보다 SRAM을 고름.
비용만 고려하면 SRAM보다 DRAM을 고름(DRAM이 상대적으로 저렴)
 

📌 프로세스

실행중인 프로그램
 
실행중인 프로그램은 연산 결과로 인해 상태가 지속적으로 변할 수 있다.

process 가상메모리

Stack 함수 스코프
지역변수, 파라미터
재귀함수 사용시 return 조건 없으면 stack overflow 발생
Heap 동적메모리
calloc, realloc
인스턴스(객체) 생성 예를 들어, Java new
Data 전역 스코프
전역변수, static 변수
Code(Text) 실행 코드 및 함수

 
 

📌 Kernel

컴퓨터 운영체제의 핵심 부분으로 하드웨어와 프로세스 간의 상호작용을 관리

  • 자원 관리
  • 입출력 요청을 처리
  • 프로세스 간의 스케줄링 및 동기화
  • 메모리와 파일 시스템 관리
User Mode(App)

Task
Process
---------------
OS(Kernel)
4GB
---------------
H/W
RAM + HDD

User Mode가 없을 땐 Process Lock 걸리면 OS를 재부팅했었다고 한다.


📌 Page

가상 메모리를 일정한 크기로 나눈 블록
 

📌 Prame

물리 메모리를 일정한 크기로 나눈 블록
 

📌 Disk

쓰이지 않는 페이지들의 임시 거처
물리 메모리 용량보다 더 많은 용량을 사용하기 위해 쓰임.

mapping

프로세스 페이지별 가상주소와 RAM 프레임별 물리주소가 mapping 되어 잇음.
어떤 기준으로 부터  offset한 크기의 블록을 할당받고 mapping되어 있어 동시에 여러 프로그램을 사용할 수 있다.
 
pointer을 이용해 메모리를 매핑한 것이다.
이런 방식으로 프로세스마다 각각의 가상메모리를 할당받으면 다른 프로세스의 가상 메모리가 침범할 일이 없다.
OS에서 많은 프로그램이 동시에 실행된다. 이때 가상 메모리를 사용하므로 안전성을 보장할 수 있다.

 

🔎 가상 주소 공간에서 물리 주소를 번역하는 방법

전용 하드웨어는 가상주소를 운영체제가 제공하는 페이지 테이블을 사용해 번역!

하드웨어와 소프트웨어의 긴밀한 협력이 필요하다.


📌 Page Fault

mapping을 따라가 data search를 했지만 찾아 지는 정보가 없을 때 발생!
 

page fault

 

📌 Page Fault Handling

1. 페이지 폴트 발생 : 프로세스가 요청한 페이지가 물리 메모리에 없으면 페이지 폴트 발생
2. 인터럽트 발생 : CPU는 인터럽트를 발생시켜 운영체제에 알리고 운영체제는 페이지 폴트 핸들러를 실행
3. 페이지 테이블 접근 : 페이지 폴트 핸들러는 페이지 테이블을 검색하여 요청한 페이지가 어떤 가상 주소에 할당되어 있는지 확인
4. 페이지 할당 : 페이지 테이블에서 요청한 페이지가 할당되어 있지 않다면, 운영체제는 빈페이지 프레임을 찾아서 페이지를 할당
5. 디스트 읽기 : 요청한 페이지가 디스크에 있으면, 운영체제는 해당 페이지를 디스크에서 읽어와 빈 페이지 프레임에 적재
6. 페이지 테이블 갱신 : 페이지 할당이나 디스크에서 읽기가 완료되면, 운영체제는 페이지 테이블을 갱신
7. 다시 실행 : 페이지 폴트 핸들러가 종료되면, CPU는 인터럽트 이전의 프로세스를 다시 실행
 
페이지폴트 핸들러는 CPU 시간을 많이 소모하는 작업이므로 최적화된 알고리즘을 활용해 처리 속도를 빠르게 만드는 것이 중요!
 


알아두면 좋은 용어 정리

Memory

컴퓨터의 작업에 사용되는 데이터를 일시적 또는 영구적으로 저장하는 장치

 

Secondary Memory(보조 기억 장치)

데이터를 보관하는 부품. 하드디스크(HDD), SSD 등

 

RAM, Random Access Memory

메모리 어느 위치에 있는 데이터든지 같은 속도로 읽고 쓸 수 있다는 뜻. 메인 메모리와 같은 의미.

 

Volatile Memory 휘발성 메모리

전기가 끊겼을 때 데이터가 날라감. 동적메모리

빠른 속도와 저렴한 비용의 장점이 있어 사용. 임시적 데이터를 저장하는 용도로 사용하는 것이 효율적!

저장된 데이터가 삭제되기 때문에 보안상으로도 안전.

 

Non-volatile Memory 비휘발성 메모리

전기가 끊겨도 데이터가 유지됨. 정적메모리

데이터를 오랫동안 보관해야하는 경우 보조저장장치를 사용.

영구적인 보존이 필요한 서버, 데이터베이스, 운영체제 등의 시스템에서 사용

RAM보다 느리고 상대적으로 비쌈.

 

Process

프로그램이 메모리에 올려져 CPU에 의해 실행되는 상태.

 

I/O

컴퓨터에 신호와 정보를 보내는 입력 장치와 컴퓨터의 연산을 결과로 내보내는 출력 장치.

 

Parallel Processing (병렬처리)

실제로 여러 작업을 동시에 실행하는 방법

 

메모리 누수 (Memory Leak)

사용하지 않는 데이터가 비워지지 않고 메인 메모리 공간에 쌓여 있는 현상, 메모리 사용량이 증가하면서 시스템 부하 증가

 

Segmantation Fault

프로그램이 잘못된 메모리 주소를 참조하려고 할때 발생. 메모리 공간을 잘못 사용하고 있는 상황

 

Garbage Collection

메인 메모리 상에서 불필요한 데이터를 자동으로 치우는 기능

 

Runtime Environment

프로그램이 동작할 수 있도록 해주는 소프트웨어

 


 

공부 자료1 : 컴퓨터 시스템 Computer Systems: A Programmer's Perspective by Randal E. Bryant David R. O'Hallaron 9장 가상 메모리

 

공부 자료2 : 혼자 공부하는 얄팍한 코딩 지식 용어