코르시카 2021. 6. 28. 20:42

1. 주메모리장치란?

1-1) 정의

메인 메모리는 CPU가 직접 접근할 수 있는 접근장치

기본적으로 모든 부분에서 중간 결과 저장의 역할을 맡고 있음

 

참조 : 

https://korshika.tistory.com/120?category=970463 

 

(1) 컴퓨터의 구성

1. 컴퓨터 구성 1-1) 하드웨어 - 정의 : 컴퓨터를 구성하는 기계적 장치 중앙처리장치 CPU > 2)의 주기억장치에서 명령어 / 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어  - 산술논리연산장

korshika.tistory.com

https://korshika.tistory.com/124?category=970463 

 

(2) 캐시 메모리

1. 캐시 메모리란? 1-1) 정의 속도가 빠른 장치와 느린 장치 사이에서의 병목현상을 줄이기 위한 메모리(방식)를 지칭 ex1) CPU 코어와 메모리 사이의 병목현상 완화 ex2) 웹 브라우저 캐시파일 - 하드

korshika.tistory.com

 

1-2) 특징

  1. 프로세스가 실행되려면 프로그램이 메모리에 올라와야 함
    - 요즘에는 메모리에 모두 할당하지 않고 가상메모리 구조로 사용하는 부분만 올려놓고 사용
  2. 주메모리장치는 주소가 할당된 일련의 바이트들로 구성되어있다

 

1-3) 연산과정

참조 4-1)번 항목 : https://korshika.tistory.com/125?category=970463 

 

(3) 중앙처리장치 작동 원리

1. 중앙처리장치란? aka) CPU 컴퓨터 연산에서 가장 핵심적인 역할을 수행 > 다음의 구성으로 이루어짐 연산잔치 제어장치 레지스터 - 캐시 메모리랑은 다름 설명 링크 : link 2. 구성의 세부설명 2-1)

korshika.tistory.com

  1. 주기억 / 보조기억 장치에 있는 프로그램을 load하여 읽어옴 
  2. CPU 레지스터의 지시(적힌)대로 메모리에 접근하여 다음 명령어를 가져옴
  3. 명령어 가져온 후 수행 시, 필요 데이터가 없으면 해당 데이터를 MMU가 가져와 메모리에 적재
    > MMU
       - 가상 메모리 접근이 필요할 때 동작하는 하드웨어 장치
       - 메모리 관리장치, 논리주소를 물리주소(실제 RAM상의 주소) 
       - 메모리 보호, 캐시관리 등 CPU가 메모리에 접근하는 모든것을 총 관리
  4. 가상주소 / 논리주소에 데이터를 올려놓고, 연산을 하여 다시 주기억장치에 결과를 저장

    ※ 3 , 4번 거치면서 주기억장치 ↔ CPU 사이에 캐시, 레지스터를 거침
    ※ 가상주소는, 물리적으로는 모여있지 않아도, 프로그램의 관점에서 사용하는 주소이며
         OS가 제공하는 가상 공간에대한 주소값이다

  5. 1~4번 반복

 

 

2. 가상 메모리

참조 : https://probe29.tistory.com/25

 

05. 가상 메모리의 이해

#실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있음 리눅스는 하나의 프로세스가 4GB 인데 통상적으로 우리의 PC의 메모리는 8GB나 16GB 이기 때문에 하나, 두 개의 프

probe29.tistory.com

 

2-1) 정의

프로세스가 어느 시점에 사용하는 메모리/CPU자원은 제한적이기 때문에,

특정 시점에 CPU가 사용하는 공간만을 메모리에 적재하는 개념이 가상메모리

 

2-2) 필요 이유

다중 프로세스마다 충분한 메모리를 전부 확보하기에는 무리가 있기 때문에

폰노이만 구조에 의해 메모리에 적재된 코드형태와 함께 사용하기 위해 가상 메모리가 필요한 것

(코드는 반드시 메모리에 적재되어야 함)

→ 프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸때만 물리주소로 바꿔주면 됨

 

2-3) MMU ( Memory Management Unit )

CPU가 MMU를 거쳐 실제 주기억장치의 physical까지 이어지는 과정

(a) MMU 정의

   - 가상 메모리 접근이 필요할 때 동작하는 하드웨어 장치
   - 메모리 관리장치, 논리주소를 물리주소(실제 RAM상의 주소) 
   - 메모리 보호, 캐시관리 등 CPU가 메모리에 접근하는 모든것을 총 관리

※ 주소변환을 빠르게 하기 위해 실제 하드웨어로 MMU를 구성하여 속도를 높임

(b) MMU 메모리 보호

프로세스는 독립적인 메모리 공간을 가져야하므로

한 프로세스에 전용 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시키며 보호
- 메모리 보호 예시

  • 프로세스 접근가능 합법 메모리 영역은
    base <= x < base+limit​
  • 해당 영역 밖에서의 요구는 trap을 발생시켜 처리
  • base / limit 영역은 사용자 영역 말고 kernel mode에서만 처리 가능하도록 함

 

 

3. 메모리 과할당 ( over allocating )

3-1) 정의

실제 메모리 가능 사이즈 보다, 더 큰 메모리 사이즈를 가진 프로세스를 할당을 하는 상황

 

3-2) 과할당 방생 원인

페이징 기법과 같은 메모리 기법을 통해서 가능한 메모리 자원 보다 더 큰 메모리를 활용할 수 있도록 하는데,
이 때 사용자의 편의성을 확보하기 위해 속인것을 들킬만한 상황이 존재한다

 

※ 페이지 폴트 trap

프로그램이 자신의 가상메모리 공간, 주소에는 있는 메모리 주소이지만, 실제 RAM 주기억장치에는 올라오지 않았을 때

접근을 시도하였을 경우 발생하는 현상을 말한다

→ 해결 방법
- 요구 페이징 : 요구가 들어온 메모리에 대해 그 시점에 데이터를 메모리에 적재를 하는 것
https://korshika.tistory.com/155?category=970462 

 

(13) 페이지 교체 알고리즘

1. 페이지 교체 알고리즘 > 가상 메모리 기법을 사용하는 경우 1-1) 요구 페이징 기법 프로세스가 특정 페이지를 요구할 때, 메모리에 해당 페이지가 없으면 필요한 그 페이지만 backing store에서 메

korshika.tistory.com


- 페이지 교체 알고리즘 :
요구 페이징 알고리즘을 통해 메모리를 효율적으로 관리하는데, 만약 실제 메모리 주소가 가득찬 경우
페이지 swap을 해주어야 하며 교체를 하는 알고리즘을 돌려 요구된 데이터를 실제 메모리에 올린다.

 

3-3) 과할당 해결

  1. 프로세스 실행 도중 페이지 폴트 발생
    → 페이지 폴트 미발생시 바로 메모리에 적재, 끝
  2. 페이지 폴트를 발생시킨 페이지 위치를 디스크에서 찾음
  3. 메모리의 빈 프레임 / 연결된 빈 페이지에 데이터를 올려야 하는데,  모든 메모리가 사용중이라 빈 프레임이 존재하지 않음
  4. 페이지 교체 알고리즘에 따라 page-out을 하여 page-in을 할 수 있도록 swap을 해준다
  5. 프로세스 지속 수행

> 프로세스를 지속 수행할 때 over-head가 많이 줄어야 큰 문제없이 사용자가 컴퓨터를 사용할 수 있음

 

3-4) 페이징 교체 오버헤드 줄이기

참조 : https://korshika.tistory.com/155?category=970462 

 

(13) 페이지 교체 알고리즘

1. 페이지 교체 알고리즘 > 가상 메모리 기법을 사용하는 경우 1-1) 요구 페이징 기법 프로세스가 특정 페이지를 요구할 때, 메모리에 해당 페이지가 없으면 필요한 그 페이지만 backing store에서 메

korshika.tistory.com

페이징교체 알고리즘에 따라, 페이지 frame 수를 늘리거나, 효율적인 교체 알고리즘을 선택하여 빈번한 교체를 막아
over-head를 최대한 줄이도록 한다

  • FIFO
  • OPT
  • LRU

 

 

4. 캐시 메모리

참조 : https://korshika.tistory.com/124?category=970463 

 

(2) 캐시 메모리

1. 캐시 메모리란? 1-1) 정의 속도가 빠른 장치와 느린 장치 사이에서의 병목현상을 줄이기 위한 메모리(방식)를 지칭 ex1) CPU 코어와 메모리 사이의 병목현상 완화 ex2) 웹 브라우저 캐시파일 - 하드

korshika.tistory.com

4-1) 정의

주기억장치에 저장된 데이터의 일부를 임시로 저장해두는 기억장치

CPU와 주기억장치 사이 level에 위치하여 속도차이로 인한 성능저하를 막기위한 방법

자주 사용하는 데이터를 빠르게 접근하여 속도를 높일 수 있음

 

4-2) 캐시 동작방식

  1. ( CPU → 레지스터 ) 에서 데이터 주소를 전송
  2. 캐시 기억장치에 데이터가 존재하는지 확인
    > 존재 / hit
       - 해당 명령어를 CPU로 전송, 데이터 확인 완료
    > 비존재 / miss
       - 주기억장치로 접근

 

4-3) 캐시 hit을 높이기

캐시에 hit이 높을 수록, 효율이 좋으므로

보통 시간과 공간을 따져서 자주 쓰이는 데이터들을 집중적으로 캐시에 올려 hit을 높이는 방식

  • 시간지역성 : for loop안의 데이터와 같이 최근에 참조된 주소의 내용은 가까운 시점에 다시 참조되는 특성을 이용
  • 공간지역성 : 프로그램상에서 list / array등과 같이 인접하게 위치한 주소 영역이 다시 참조되는 특성을 이용

 

4-4) 캐싱 라인

(a) 정의

저장한 캐시 데이터들을 효율적으로 조회하기 위해서

( 효율적으로 조회할 수 없으면 캐시를 쓰는 의미가 없으므로 )

자료구조를 활용해서 캐시 데이터를 저장하도록 하는데 이를 "캐싱 라인" 이라고 함

(b) 방식

캐시에 저장하는 데이터에 데이터 메모리 주소를 함께 저장하여 빠르게 조회할 수 있도록 함

 

 


참조

https://slenderankle.tistory.com/189

 

가상 메모리 시스템과 페이지 폴트

가상 메모리 시스템(Virtual Memmory System)과 페이지 폴트(Page Fault) 가상메모리(Virtual Memory)란? 가상 메모리는 메모리를 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모

slenderankle.tistory.com

https://gyoogle.dev/blog/computer-science/operating-system/Memory.html

 

메모리(Memory) | 👨🏻‍💻 Tech Interview

메모리(Memory) 메인 메모리(main memory) 메인 메모리는 CPU가 직접 접근할 수 있는 접근 장치 프로세스가 실행되려면 프로그램이 메모리에 올라와야 함 메인 메모리는 주소가 할당된 일련의 바이트

gyoogle.dev

https://k39335.tistory.com/37

 

[OS] 가상 메모리와 페이지 교체

[OS] 가상 메모리와 페이지 교체 가상 메모리 다중 프로그래밍을 실현하기 위해서는 많은 프로세스들을 동시에 메모리에 올려두어야 한다. 가상메모리는 프로세스 전체가 메모리 내에 올라오지

k39335.tistory.com

 

반응형