WinCNT

메모리와 운영체제 본문

게임 프로그래밍(학습 내용 정리)/컴퓨터 개론

메모리와 운영체제

WinCNT_SSS 2021. 11. 9. 11:23

운영체제 입장에서 메모리는 어떻게 관리되는가?

프로세스와 가상 주소 공간

가상 메모리, 그런데 가상 메모리에는 2가지 뜻이 있다

1. 가상 주소 공간

2. 하드디스크 등을 이용해서 메모리의 한계를 극복하기 위한 기술

 

이번에 설명할 것은 가상 주소 공간에 대해서이다

모든 프로세스는 자신만의 가상 주소 공간을 가진다

(커널조차도 자신만의 가상 주소 공간을 가진다)

이로 인해 개별 프로세스의 메모리에 대한 독립성을 제공한다

 

즉, 어떠한 프로세스가 다른 프로세스를 방해할 수 없으므로

OS 커널 메모리에도 침범(메모리 인젝션 등)을 방지할 수 있다

이를 메모리 보호라고 한다

프로세스 간의 통신
반대로 말하자면, 각각의 프로세스들은 다른 프로세스의 데이터들(자원)을 공유할 수 없다
따라서 다른 프로세스에서 데이터를 주고 받을 때에는 기본적으로 통신이 필요하다
그 방법은 여러가지 있는데 가장 간단한 방법으로는 FindWindow()를 통해서 찾는 방법이 있으며,
이를 극복하기 위해 스레드라는 개념이 생겨나기도 했다

 

프로세스의 메모리 공간이란 물리적인 주소(RAM의 주소)가 아니다!!!

각 프로세스는 가상의 주소 공간을 가지고 OS가 RAM의 주소와 매칭시켜준다

 

64비트 프로세스의 가상 주소 범위: 0x0000000000000000 ~ 0xFFFFFFFF'FFFFFFFF

(32비트의 경우는 당연히 절반)

여기서 중요한 것이, 가상 주소의 범위는 실제 RAM의 주소를 넘을 수 있다!!

 

그럼 특정 프로세스의 메모리가 실제 RAM 주소를 초과하면 어떻게 되는가?

그에 대한 해결책으로 나온 개념이 바로 페이징(Paging)이다

OS는 프로세스를 페이지 단위로 적재하고 해제하기 때문에

실제 메모리보다 더 큰 메모리의 프로세스를 실행할 수 있다

 

가상 메모리 주소와 물리 메모리 주소

메모리 관리 장치(MMU, Memory Managemanet Unit)

CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품

CPU가 OS로부터 받아온 가상 주소를 실제 주소로 변환해주는 역할을 한다.

 

 

CPU : Central Processing Unit

CPU는 기억해석연산제어라는 4대 주요 기능을 처리하는 장치를 말한다

[CPU의 구성 요소]
레지스터 : CPU 내부에 존재하며 데이터와 명령어를 저장하는 기억 장치              
연산장치 : ALU 연산을 수행하는 장치              
제어장치 : 명령어를 해독하고 해당하는 장치에게 제어 신호를 보내는 장치

 

[제어 장치의 구성 요소]
명령 해독기(Decoder) : 명령 레지스터에 있는 명령을 해독하는 회로
제어 주소 레지스터(Control Address Register, CAR) : 다음에 실행할 마이크로 명령어의 주소를 저장
제어 기억 장치(Control Memory) : 마이크로 프로그램을 저장, ROM으로 구성

제어 버퍼 레지스터(Control Buffer Register, CBR) : 마이크로 명령어를 일시적으로 저장
순서 제어 모듈(Sequency Module) : 마이크로 명령어의 실행 순서를 결정하는 회로들의 집합
부호기(Encoder) : 해독된 명령에 따라 각 장치로 보낼 제어 신호를 생성하는 회로

 

레지스터는?

CPU 내에 존재하는 아주 빠른 기억 보관 장소이다.
데이터와 명령을 저장하는 역할을 한다.

 

캐시(Cache)란?

캐시란 CPU 칩 안에 포함된 빠른 기억 보관 장소이다

메인 메모리와 CPU 간의 속도 차이를 극복하기 위해 기억 보관 장소라고 생각하면 된다.

 

CPU는 우선 Cache Controller에게 가상 주소를 넘겨주며,

Cache Controller는 Cache에 해당 데이터가 존재하는지 우선 검색한다

(Cache에도 Cache Page가 따로 존재한다)

 

만약 Cache에 해당 데이터가 있으면 가져오며,

없을 시에는 실제 메모리에서 데이터를 가져오도록 처리한다.

 

 

캐시 메모리

캐싱(Caching)이란?

오랜 시간이 걸리는 작업의 결과를 저장해서 시간과 비용을 회피 하는 것을 캐싱이라고 하며,

복사해 놓은 임시 장소캐시(메모리)라고 한다

사실, 캐싱이란 개념 자체는 캐시 메모리 이전에도 존재했으며,

이를 차용해서 만든 것이 캐시 메모리이다.

Virtual Memory

Key Word - 페이지 프레임, 블록, 세그먼트, 페이징 알고리즘

 

페이징은 가상 메모리를 고정 크기로 나누어 관리하는 기법

세그먼테이션은 가상 메모리를 가변 크기로 나누어 관리하는 기법

페이지와 블럭

정확한 개념은 다르지만 사이즈는 같다

페이지의 크기는 기본적으로 4KB이다

PAGE Frame Size = 4KB = Process BLOCK size

 

페이징은 메모리 단편화가 발생하는 디메리트가 있음

 

OS는 페이지 알고리즘을 통해 사용 안 하는(안 할 것이라 예상되는) 페이지를 해제한다.

 

대표적인 페이지 교체 알고리즘은 다음과 같다

First In First Out

Least Recently Used

Least Frequently Used

 

캐시(Cache)와 페이지(Page)

캐시가 도마라면 페이지는 도마에 올리는 요리라고 비유할 수 있다

 

캐시 알고리즘 == 페이지 교체 알고리즘

LRU는 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법

 

참고 사이트

https://ezbeat.tistory.com/455

 

CPU 캐시의 원리

'프로세서를 지탱하는 기술' 이라는 책 참고 : 이하 '참고책' 먼저 캐시는 프로세서 가까이 위치하면서 빈번하게 사용하는 데이터를 놔두는 장소입니다. 하지만 캐시가 아무리 가까이 있더라도

ezbeat.tistory.com

https://www.learncomputerscienceonline.com/virtual-memory/

 

Virtual Memory | What Is Virtual Memory And How It Is Managed By OS ?

Virtual Memory is a mechanism used by the operating system to run processes that exceeds the available RAM size. Operating System Memory Management.

www.learncomputerscienceonline.com

https://youtu.be/26QPDBe-NB8

 

SSS