내가 실행하고자 하는 프로그램의 용량이 5GB인데, 메모리는 4GB이다. 어떻게 실행할까? 이 때, 사용하는 기술이 바로 가상 메모리
이다.
운영 체제는 물리 메모리의 제약을 갖고 있는 메인 메모리(주 기억 장치)를 보조하기 위해 디스크를 보조 기억 장치(Paging Space)로 사용한다.
즉, 메인 메모리 (주 기억 장치)와 디스크의 페이징 스페이스 (보조 기억 장치)를 묶어 하나의 메모리처럼 동작하게 하며, 이를 통해 메인 메모리의 한계를 넘는 메모리 사용을 가능하게 하는 가상 메모리를 구현한다.
CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억 장치로 내보내고 (swap-out) 다른 프로세스의 메모리를 불러오는 (swap-in) 작업을 Swap이라고 한다. 이러한 Swap 작업에는 디스크 전송 시간이 들기 때문에 메모리 공간이 부족할 때 Swapping이 이루어 진다.
다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주 기억 장치 (RAM)을 동적 분할하는 메모리 관리 작업이 필요하다. 즉, 하드 디스크에 있는 프로그램을 어떻게 메인 메모리에 적재할 것인지 판단해야 한다.
내부 단편화
발생외부 단편화
발생페이징
과 내부 단편화 해소를 위한 세그멘테이션
이 있다.기억 장치의 빈 공간 또는 자료가 여러 조각으로 나뉘는 현상으로 내부 단편화와 외부 단편화가 있다.
페이지: 고정 사이즈의 가상 메모리 내 프로세스 조각
프레임: 페이지 크기와 같은 주 기억 장치의 메모리 조각
물리 메모리는 고정 크기의 프레임으로, 가상 메모리는 고정 크기의 페이지로 분리되어 있다. 개별 페이지는 순서에 상관 없이 물리 메모리에 있는 프레임에 매핑되어 저장된다.
즉, 모든 프로세스는 하나의 페이징 테이블을 가지고 있으며, 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있다. 이를 통해 하나의 프로세스를 나눈 가상 메모리 페이지들이 각각 실제 메인 메모리의 어디 프레임에 적재되어 있는지 알아낼 수 있다.
세그먼트: 가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것
분할 방식을 제외하면, 페이징과 세그멘테이션이 동일하기 때문에 매핑 테이블의 동작 방식도 동일하다. 다만, 논리 주소의 앞 비트들은 페이징 번호가 아니라 세그먼트 번호이다. 세그먼트 번호를 통해 세그먼트의 기준 (세그먼트의 시작 물리 주소)와 한계 (세그먼트의 길이)를 파악할 수 있다.
세그멘테이션에서 보호와 공유
세그멘테이션에서의 보호와 공유는 페이징보다 더 효율적이다.
보호에서는 세그멘테이션 역시 r,w,x 비트를 테이블에 추가한다.
하지만 세그멘이션은 논리적으로 나누기 때문에 해당 비트를 설정하기 매우 간단하고 안전하다.
페이징은 code+data+stack 영역이 있을 때, 이를 일정한 크기로 나누므로 두 가지 영역이 섞일 수 있다.
그러면 비트를 설정하기가 매우 까다롭다.
공유도 마찬가지다.
페이징에서는 code 영역을 나눈다해도 다른 영역이 포함될 확률이 매우 높다.
하지만, 세그멘테이션은 정확히 code 영역만을 나눠 더 효율적으로 공유를 수행할 수 있다.
세그멘테이션은 페이징과 유사하고 보호와 공유 측면에서는 더 나은 성능을 보여주지만, 현재 대부분은 페이징 기법을 사용한다. 그 이유는 세그먼테이션에는 치명적인 단점
이 존재하기 때문이다.
메모리 할당을 처음 시작할 때, 다중 프로그래밍에서의 문제는 크기가 서로 다른 프로세스로 인해 여러 크기의 hole이 발생하고 외부 단편화로 인해 메모리 낭비가 크다는 것이다. 세그멘테이션의 세그먼트 역시 크기가 다양하고 똑같이 다양한 hole이 발생해 같은 문제가 발생한다.
결론적으로 세그멘테이션은 보호와 공유에서 효율적이고, 페이징은 외부 단편화 문제를 해결할 수 있다. 위 두 장점을 살리기 위해 두 가지 방식을 합쳐 세그먼트를 페이징 기법으로 나누는 Paged Segmentation 방식이 나왔다.
하지만, 이 역시 단점이 존재한다. 세그먼트와 페이지가 동시에 존재하기 때문에 주소 변환도 두번해야 한다. 즉, CPU에서 세그먼트 테이블에서 주소 변환을 하고, 그 다음 페이지 테이블에서 또 주소 변환을 해야 한다.
https://steady-coding.tistory.com/524
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Operating%20System/Paging_Segmentation.md
With PSG only finishing as runners-up in the group stage, Les Parisiens must first host Real Madrid at the Parc des Princes. Only then will the Parisian club's star squad handled by coach Mauricio Pochettino challenge Los Blancos at the sacred Santiago Bernabeu stadium.
https://velog.io/@kku64r/integritycodebeamer
https://velog.io/@kku64r/domainconnet
https://velog.io/@kku64r/encrypt
https://velog.io/@kku64r/serializable
https://velog.io/@kku64r/read
https://velog.io/@kku64r/nginx
https://velog.io/@kku64r/nplus1
https://velog.io/@kku64r/gitflow
https://velog.io/@kku64r/jenkins
https://velog.io/@kku64r/atlassian
The striking thing about the PSG vs Real Madrid duel is the figure of Sergio Ramos and Lionel Messi. Ramos, who was brought in by the Paris club as a free agent in the last summer transfer market, had defended Madrid for 16 years. The defender also led Los Blancos to win the UCL 3 times in a row.
https://velog.io/@kku64r/docker
https://velog.io/@kku64r/bojplatinum
https://velog.io/@kku64r/mapstruct
https://velog.io/@kku64r/gitcommand
https://velog.io/@kku64r/sort
https://velog.io/@kku64r/mybatisjpa
https://velog.io/@kku64r/deadlock
https://velog.io/@kku64r/dockerfile
https://velog.io/@kku64r/redis
https://velog.io/@kku64r/elasticsearch
"I would like another team to face us [PSG]. You know the love I have for Real Madrid. However, now it's my turn to defend PSG, I will do everything for this team to qualify. I will fight tooth and nail," Ramos was quoted as saying by MARCA .