메인메모리: cpu가 직접 접근할 수 있는 기억 장치
프로세스가 실행되려면 프로그램 코드를 메인 메모리에 적재해 두어야 함
BUT...
모든 프로그램 코드를 물리 메모리에 올릴 수가 없음. 그래서 가상 메모리 사용
운영 체제는 물리 메모리의 제약을 가지고 있는 메인 메모리를 보조하기 위해 디스크
를 보조 기억 장치(paging space)로 사용
즉, 메인 메모리와 디스크의 페이징 스페이스를 묶어 하나의 메모리처럼 동작하게 함 -> 가상 메모리
구현
다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 메인메모리를 동적 분할하는 메모리 작업이 필요함
즉, 하드 디스크에 있는 프로그램을 어떻게 메인 메모리에 적재할 건지 판단해야됨
연속 메모리 관리
를 하게되면 단편화가 발생
내부단편화(고정 분할 기법),외부단편화(동적 분할 기법) 발생
단편화 문제 해결하기 위해 불연속 메모리 관리 방법
이 나옴
프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법
외부 단편화를 해소하기 위한 페이징, 내부 단편화를 해소하기 위해 세그멘테이션 사용
가상 메모리란 무엇인가요?
가상 메모리는 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 전체가 메모리에 올라기지 않더라도 실행이 가능하는 점을 착안하여 고안되었다.
메인 메모리와 디스크의 페이징 스페이스를 묶어 하나의 메모리처럼 동작하게 하여 가상 메모리를 구현해냄
가상 메모리가 가능한 이유가 무엇인가요
프로세스가 실행될 때 전체가 메모리에 적재되지않아도 실행이 가능하기 때문이다.
내부 단편화와, 외부 단편화에 대해서 설명해주세요.
내부 단편화는 연속 메모리 관리에서 고정 분할 기법을 사용할 때 발생하는 문제점으로, 프로세스가 요청한 양보다 더 많은 메모리를 할당할 때 발생함. 세그멘테이션을 통해 내부 단편화를 해소함.
외부 단편화는 연속 메모리 관리에서 동적 분할 기법을 사용할 때 발생하는 문제점으로, 메모리 할당,해제 작업의 반복으로 작은 메모리가 중간 중간 존재하게 되고, 이렇게 사용하지 않는 메모리를 합하면 총 메모리 공간은 충분하지만 실제로는 할당하지 못하는 상황을 말함. 페이징을 통해 외부 단편화를 해소함.
메모리 연속할당 방식 세 가지에 대해 설명해보세요.
first-fit, best-fit, worst-fit 방식이 있음
first-fit은 가장 처음으로 요구하는 메모리에 맞는 공간에 할당하는 방식, best-fit은 남는 공간 중에 내부 단편화가 적은 메모리 공간에 할당하는 방식, worst-fit은 가용 공간 중에 가장 큰 공간에 할당하는 방식임.
속도는 first-fit이 제일 빠르고, 사용률은 best-fit이 제일 좋다.
프로세스를 일정한 크기의 페이지로 분할해서 메모리에 적재하는 방식
물리 메모리는 고정 크기의 프레임으로, 가상 메모리는 고정 크기의 페이지로 분리되어있음.
모든 프로세스는 하나의 페이징 테이블을 가지고 있고, 여기에는 메인 메모리에 적재되어 있는 페이지 번호와해당 페이지가 위치한 메인 메모리의 시작 주소가 있다.
페이지와 프레임의 차이에 대해 설명해주세요.
페이지는 고정 사이즈의 가상 메모리 내의 프로세스 조각이고, 프레임은 페이지와 크기가 같은 주 기억 장치의 메모리 조각임
페이지에서 실제 주소를 어떻게 가져올 수 있는지 설명해주세요.
모든 프로세스는 하나의 페이징 테이블을 가지고 있고 여기에는 메인 메모리에 적재되어 있는 페이지 번호와 해당 페이지가 위치한 메인 메모리의 시작 주소가 있음
가상 주소는 페이지 번호와 페이지 오프셋으로 되어있는데
페이지 번호를 통해 페이지 테이블에서 프레임의 베이스 주소를 알아낸다.
프레임의 베이스 주소와 오프셋을 더해 실제 주소를 가져온다.
MMU가 무엇인가요?
메모리 관리 장치 MMU는 가상 주소를 이용해 실제 데이터가 담겨 있는 주소로 변환해주는 역할을 함
가상 주소는 <page번호,offset> 형태로 되어있는데, 이를 이용해 물리 주소로 변환해줌
TLB는 무엇인가요?
가상 메모리 주소를 물리적 주소로 변환하는 속도를 높이기 위해 사용하는 캐시
CPU가 가상 주소로 메모리 접근하려할 때, 일단 TLB에 먼저 접근 후 없으면 테이블에서 찾음
TLB를 쓰면 왜 빨라질까요?
메모리에 접근하는 것이 아니라 MMU 내부에서 물리주소를 얻을 수 있기 때문이다. MMU는 CPU에 탑재되어있다.
페이지 크기에 대한 Trade-Off를 설명해주세요
페이지 개수와 페이지 크기는 trade-off 관계이다. 페이지 개수가 너무 많으면 페이지 테이블의 크기가 너무 커져 배보다 배꼽이 더 큰 상황이 발생함. 반대로 페이지 크기가 너무 크면 내부 단편화가 발생할 수 있다.
Page Fault가 발생했을 때, 어떻게 처리하는지 설명해보세요.
페이지 기반 가상 메모리 관리 시스템에서 프로세스가 실제 물리 메모리에 올라와 있지 않은 페이지에 접근하려고 할 때 발생하는 상황을 페이지 폴트라고 한다. 페이지 폴트가 발생하면 메모리에 비어있는 프레임이 있다면 해당 페이지를 메모리에 적재하고 만약 비어있는 프레임이 없다면 희생 프레임을 골라 스왑아웃하고 메모리에 적재함
페이지 크기가 커지면, Page Fault가 더 많이 발생한다고 할 수 있나요?
페이지 크기가 커질수록 각 페이지는 쓰이지 않는 코드를 더 많이 포함하게 되므로 페이지 폴트가 증가하게 된다. 하지만 페이지 사이즈가 어느지점에 도달하면 페이지 하나에 필요한 프로세스 내용이 다 들어가기 때문에 점차 줄어든다.
페이징의 장단점
장점
: 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에 외부 단편화가 생기지 않는다.
단점
: 내부 단편화 문제가 발생할 수 있다. 페이지 단위를 작게하면 해결할 수 있지만, 페이지 매핑 과정이 복잡해져 오히려 비효율적이다.
페이징의 특징은?
프로그램을 실행할때, 코드를 메모리에 적재하기 위해 사용하는 기법 중 불연속 메모리 관리 기법임.
메모리가 연속적으로 올라간게 아니라, 페이지라는 고정된 크기로 분할되어 올라가있음. 외부 단편화 문제를 해결할 수 있음
가상 메모리를 서로 크기가 다른 논리적 단위로 분할한 것을 의미
세그멘테이션은 프로세스를 물리적인 페이지가 아닌 논리적인 세그먼트로 분할해서 메모리에 적재하는 방식
분할방식을 제외하면 페이징과 동일
세그멘테이션의 장단점
장점
: 내부 단편화 문제가 해소됨. 보호와 공유 기능을 수행할 수 있음. 프로그램의 중요한 부분과 중요하지 않은 부분을 분리하여 저장할 수 있고, 같은 코드 영역은 한 번에 저장할 수 있음
단점
: 외부 단편화 문제 발생할 수 있음
페이징 또는 세그멘테이션을 사용하는 이유는?
여러 프로세스를 수용하기 위해서는 메인메모리를 동적 분할하는 메모리 작업이 필요하다. 그래서 하드 디스크에 있는 프로그램을 어떻게 메인 메모리에 적재할 건지 판단해야됨. 이과정에서 단편화가 생길 수 밖에 없음. 그런데 단편화가 많이 발생하면 사용하지 못하는 메모리 공간이 많아져 낭비가 되므로 최대한 피해야 한다. 단편화를 해결할 수 있는 다른 방식들이 있지만, 메모리 계산의 비용이 적은 페이징 또는 세그멘테이션을 주로 사용한다.
페이징과 세그멘테이션의 차이는?
프로그램의 분할 방식. 페이징의 경우 같은 크기의 페이지로 분할, 세그멘테이션은 논리적 의미를 기준으로 세그먼트로 분할
🫠
출처 :
https://steady-coding.tistory.com/524
https://velog.io/@dbghwns11/CS-정리-7