Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- userprog
- 나만무
- JavaScript
- TiL
- Java
- 핀토스
- 큐
- 자바스크립트
- CSS
- 오블완
- 사이드프로젝트
- 모션비트
- Vue.js
- 백준
- 크래프톤 정글
- pintos
- Flutter
- HTML
- 자바
- 코드트리
- 크래프톤정글
- defee
- 스택
- 리액트
- corou
- 소켓
- 4기
- 알고리즘
- 시스템콜
- 티스토리챌린지
Archives
- Today
- Total
미새문지
크래프톤 정글 week05, day42 - 메모리 관련 키워드 본문
728x90
가상 메모리
- 가상 메모리는 컴퓨터 시스템에서 물리적인 메모리 용량을 초과하여 프로그램을 실행할 수 있게 하는 기술이다.
- 이는 물리 메모리를 효율적으로 관리하고, 더 큰 프로그램을 실행하거나 더 많은 프로그램을 동시에 실행하는 데 도움을 준다.
- 운영체제는 하드 디스크의 일부를 RAM처럼 사용하여 메모리를 확장하고, 프로그램이 더 많은 메모리를 사용하는 것처럼 느끼게 한다.
- 작동 원리
- 가상 메모리 시스템은 페이징이라는 기술을 사용한다.
- 메모리는 고정 크기의 ‘페이지’로 나눠지며, 프로그램이 실행될 때 필요한 페이지만 실제 물리 메모리에 로드되고, 나머지 페이지는 하드 디스크의 페이징 파일에 저장된다.
물리 메모리
- 물리 메모리는 컴퓨터에서 직접 접근 및 조작이 가능한 메모리를 말한다.
- 주로 RAM으로 구현되며, 컴퓨터의 CPU가 직접 접근하여 데이터를 읽고 쓸 수 있는 공간이다.
- 물리 메모리는 실행 중인 프로그램의 코드와 데이터를 저장하는데 사용되며, 운영체제는 프로그램이 실행될 때 필요한 데이터와 명령어를 물리 메모리로 로드한다.
- CPU는 물리 메모리에 저장된 명령어를 가져와 실행하고, 필요한 데이터도 물리 메모리에서 읽고 쓴다.
- 물리 메모리는 크기가 한정되어 있기 때문에 운영체제는 이를 효과적으로 관리해야 한다.
- 이런 관리 방법 중 하나가 가상 메모리 시스템이다
- 물리 메모리의 주요 특성 중 하나는 속도이다.
- RAM은 디스크와 같은 보조 저장 장치에 비해 데이터 접근 속도가 월등히 빠르기 때문에 프로그램 실행 시 필요한 데이터는 가능한 한 물리 메모리에 저장되어야 한다.
- 그러나 물리 메모리의 용량은 한정적이므로, 모든 데이터를 물리 메모리에 올릴 순 없는데, 이 때 가상 메모리 시스템이 활용되며, 필요한 데이터만 물리 메모리에 로드하고, 나머지는 하드 디스크 등의 저장 장치에 보관한다.
- 이렇게 함으로써 물리 메모리의 효율적인 사용이 가능해진다.
페이징(Paging)
- 컴퓨터의 가상 메모리 시스템에서 메모리 관리를 위해 사용하는 기법 중 하나
- 이 기법은 물리적 메모리를 동일한 크기의 페이지라는 블록으로 나누고, 가상 메모리도 같은 크기의 페이지로 나눈다.
- 이렇게 하면 운영체제는 가상 메모리의 각 페이지를 물리 메모리의 어느 페이지든지 매핑할 수 있다.
- 프로그램이 실행되면, 프로그램의 일부가 필요한 만큼의 페이지들로 나누어져 메모리에 로드되는데, 모든 페이지가 연속적으로 배치될 필요는 없으며, 메모리의 어느 곳에나 위치할 수 있어 메모리를 훨씬 유연하게 관리할 수 있게 해준다.
- 만약 프로그램이 특정 페이지에 접근하려고 하면, 페이지 테이블이라는 데이터 구조를 통해 해당 페이지의 물리적 위치를 찾을 수 있다.
- 페이지 테이블은 가상 주소를 물리적 주소로 매핑해주는 역할
- 만약 필요한 페이지가 메모리에 없다면 페이지 폴트가 발생하는데, 이 경우 운영체제는 해당 페이지를 디스크에서 찾아 메모리로 로드해야 한다.
- 만약 메모리가 가득 차 있다면, 운영체제는 다른 페이지를 디스크로 내보내고, 필요한 페이지를 그 위치에 로드하는 과정을 페이지 교체라고 한다.
- 페이징 시스템은 메모리 관리를 효율적으로 하며, 프로그램이 물리 메모리의 연속적인 영역에 위치할 필요가 없기 때문에 메모리 단편화 문제를 줄여준다. 그러나 페이지 교체로 인한 오버헤드가 발생하고, 이로 인해 성능 저하가 발생할 수 있다.
페이지 폴트(Page Fault)
- 페이지 폴트는 컴퓨터 시스템에서 발생하는 특정 유형의 인터럽트로, 프로그램이 물리 메모리에 없는 페이지를 액세스하려고 할 때 발생한다.
- 이는 가상 메모리 시스템에서 일반적으로 발생하는 현상
- 가상 메모리 시스템에서는 프로그램이 실행될 때 해당 프로그램의 모든 데이터나 명령어를 필요한 부분만 물리 메모리에 로드해 사용하기 때문에 효율적이다.
- 그러나 프로그램이 실행되는 동안 CPU가 아직 메모리에 로드되지 않은 페이지에 접근하려고 하면, 시스템은 페이지 폴트를 발생시킨다.
- 페이지 폴트가 발생하면, 운영체제는 폴트가 발생한 페이지를 디스크에서 찾아 물리 메모리로 로드한다.
- 만약 물리 메모리가 가득 차있으면, 운영체제는 페이지 교체 알고리즘을 사용해 어떤 페이지를 디스크로 내보낼 지 결정하고, 그 공간에 필요한 페이지를 로드한다.
- 페이지 폴트는 메모리 관리의 중요한 부분이지만, 빈번하게 발생하면 시스템 성능에 안 좋은 영향을 미칠 수 있기 때문에 최소화하는 것이 좋다.
페이지 교체 알고리즘(Page Replacement Algorithm)
- 컴퓨터 시스템에서 메모리 관리를 위해 사용하는 전략 중 하나
- 물리 메모리가 가득 차 있고, 프로그램이 새 페이지에 접근해야 할 때 운영체제는 메모리 내의 페이지 중 어떤 것을 제거할지 결정해야 하는데, 이 결정을 돕는 것이 페이지 교체 알고리즘이다.
- 알고리즘 종류
- FIFO(First-In, First-OUT)
- 가장 먼저 메모리에 들어온 페이지를 가장 먼저 내보낸다.
- 이 방식은 단순하고 직관적이지만, 가장 오래된 페이지가 덜 사용되는 페이지라는 보장이 없기 때문에 비효율적일 수 있다.
- LRU(Least Recently Used)
- 가장 오랫동안 사용되지 않은 페이지를 내보낸다.
- 이 방식은 최근에 사용된 페이지가 미래에서 계속 사용될 가능성이 높다는 가정에 기반한다.
- LFU(Least Frequently Used)
- 가장 적게 사용된 페이지를 내보낸다.
- 이 방식은 페이지의 사용 빈도를 기록하고, 가장 적게 사용된 페이지를 선택한다.
- OPT(Optimal page Replacement)
- 미래에 가장 오랫동안 사용되지 않을 페이지를 내보낸다.
- 이 방식은 모든 가능한 정보를 알고 있을 때 가장 효율적인 알고리즘이지만, 실제 시스템에선 미래의 페이지 접근을 예측할 수 없기 때문에 잘 사용되진 않는다.
- FIFO(First-In, First-OUT)
스왑(Swap)
- 컴퓨터 시스템에서 메모리 관리를 위해 사용하는 기법 중 하나
- 프로세스의 메모리 이미지를 하드 디스크와 같은 보조 저장장치로 옮기는 것을 의미하는데, 이로 인해 메모리 공간이 확보되며 다른 프로세스가 이 공간을 사용할 수 있게 된다.
- 물리 메모리를 효율적으로 관리하기 위해 사용하는 방법 중 하나
- 물리 메모리가 부족하거나, 메모리에 있는 프로세스가 일시적으로 실행되지 않을 때, 해당 프로세스를 메모리에서 내보내 메모리를 확보한다.
- 내보내진 프로세스는 디스크 상의 스왑 공간에 저장된다.
- 발생하는 스왑 형태
- 스왑 아웃(Swap Out)
- 운영체제가 메모리에서 프로세스를 선택해 디스크의 스왑 공간으로 이동시키는 것을 말한다.
- 이는 메모리가 부족할 때, 또는 시스템이 메모리를 다른 용도로 활용하려고 할 때 발생한다.
- 스왑 인(Swap In)
- 디스크의 스왑 공간에 있던 프로세스가 다시 메모리로 로드되는 것을 말한다.
- 프로세스가 다시 실행되어야 할 때, 또는 메모리 공간이 충분해질 때 발생한다.
- 스왑 아웃(Swap Out)
- 스왑은 메모리 관리를 유연하게 하고 시스템의 전반적인 성능을 향상시키지만, CPU가 데이터에 접근하는 데 지연이 발생하기 때문에 최소화하는 것이 중요하다.
쓰레싱(Thrashing)
- 쓰레싱은 시스템이 과도하게 스왑 작업을 수행하게 되어 유용한 작업을 수행하는 데 필요한 CPU 시간이 크게 줄어드는 상황이다.
- 이런 현상은 메모리 자원이 과도하게 점유되어, 프로세스 간에 충분한 메모리 공간이 없어지는 상황에 발생한다.
- 쓰레싱이 발생하면 운영체제는 프로세스를 메모리와 디스크 사이에 계속해서 이동시키는데(스왑 인/아웃), 이로 인해 시스템 성능이 급격하게 저하된다.
- 이는 대부분의 시간이 데이터를 메모리와 디스크 사이에서 이동시키는 데 사용되기 때문
- 쓰레싱을 방지하거나 최소화하기 위해서는 운영체제가 메모리 관리를 효율적으로 수행해야 한다.
- 예를 들어, 메모리 자원을 공정하게 분배하거나, 프로세스의 우선순위를 조정하거나, 프로세스의 메모리 요구를 제한하는 등의 방법이 있다.
- 또한, 페이지 교체 알고리즘을 효과적으로 사용하여 적절한 페이지를 선택하는 것도 중요하다.
메모리 관리 단위(Memory Management Unit, MMU)
- MMU는 컴퓨터 하드웨어의 일부이며, 가상 메모리와 물리 메모리 간의 변환을 담당하는 중요한 역할을 한다.
- MMU는 CPU가 생성하는 가상 주소를 물리 메모리의 실제 주소로 변환하는 작업을 수행한다.
- MMU의 주요 기능
- 주소 변환
- CPU가 생성하는 가상 주소를 물리 주소로 변환한다.
- 이 변환은 페이지 테이블이라는 데이터 구조를 사용해 수행된다.
- 메모리 보호
- MMU는 메모리 보호 기능을 제공하여, 한 프로세스가 다른 프로세스의 메모리 영역을 침범하는 것을 방지한다.
- 이는 각 페이지 테이블 항목에 접근 권한 정보를 포함시킴으로써 이루어진다.
- 캐시 관리
- MMU는 메모리 접근의 속도를 높이기 위해 하드웨어 캐시를 관리하는 역할도 한다.
- 페이지 폴트 관리
- 프로세스가 접근하려는 페이지가 메모리에 없을 경우, MMU는 페이지 폴트를 발생시키고 이를 운영체제에 알린다.
- 주소 변환
학습 시간 : 13 ~ 26시
728x90
'크래프톤 정글 > TIL' 카테고리의 다른 글
크래프톤 정글 week05, day44 - 퀴즈, 메모리 관리 전략, 잔디심기 (2) | 2024.02.21 |
---|---|
크래프톤 정글 week05, day43 - 힙 정렬 (1) | 2024.02.21 |
크래프톤 정글 week05, day41 - 시스템 콜 함수, IPC (1) | 2024.02.21 |
크래프톤 정글 week05, day40 - 예외적인 제어 흐름 (1) | 2024.02.21 |
크래프톤 정글 week05, day39 - 이더넷 (1) | 2024.02.21 |