면접 준비 - (2) 운영체제

Chaeyun·2024년 4월 19일
0

CS

목록 보기
3/6

서론

앞서 시리즈에 이어 나머지 운영체제 영역에 대해 면접 예상 질문을 정리해보려고 한다.

메모리 구조

1. 운영체제는 메모리를 어떻게 관리하는가?

프로그램을 실행하는 경우 프로세스에 메모리를 할당해줘야 하는데 이 때 프로세스에 메모리를 할당하기 위해 메모리를 어떻게 나눌지를 정하는 방법이 여러가지가 있습니다.
먼저 고정 분할이라고 해서 동일한 크기로 메모리를 여러 부분으로 나눠서 사용하는 방법이 있고, 가변 분할이라고 해서 각 프로세스에 필요한 크기만큼 메모리를 나눠서 할당하는 방법이 있습니다.

현대 운영체제는 가상 메모리 구조를 채택하여 프로세스가 필요한 메모리가 현재 이용 가능한 메모리 크기보다 큰 경우에도 프로세스를 실행할 수 있도록 하고 있습니다.
그 방법은 필요한 부분은 메모리에 올려놓고 필요하지 않은 부분은 디스크의 스왑 영역에 두는 것입니다.
만약 스왑 영역에 있는 데이터가 필요하면 메모리에 올라와있던 영역을 디스크로 내려보내고 스왑 영역에 있는 데이터를 메모리로 올려옵니다. 이것을 스왑한다고 얘기합니다.

2. 페이징 vs 세그먼테이션

페이징과 세그먼테이션은 각각 고정 분할 방식과 가변 분할 방식입니다.
고정 분할 방식은 메모리를 동일한 크기로 분할하는 것이고, 가변 분할 방식은 실제 프로세스가 할당받는 크기로 메모리를 분할하는 것입니다.
고정 분할 방식의 경우 실제 프로세스가 사용하는 메모리 크기보다 분할된 크기가 더 큰 경우 내부 단편화가 생길 수 있습니다.
가변 분할 방식의 경우 산발적으로 서로 다른 크기의 메모리 공간으로 분할되므로 hole이라고 부르는 남은 메모리 공간이 산발적으로 생길 수 있습니다. 이를 외부 단편화라고 부릅니다.
페이징 기법의 경우 페이지 테이블을, 세그멘테이션 기법의 경우 세그멘테이션 테이블을 이용해서 메모리 주소 매핑을 하게 되는데
페이지 테이블은 페이지와 프레임의 크기가 같기 때문에 프레임 번호만 가지고 있습니다. 하지만 세그멘테이션 테이블은 세그멘테이션의 크기가 각각 다르기 때문에 시작 주소를 추측할 수 없어 base register로 세그멘테이션의 시작 물리 주소를 가지고 있습니다. 또한 세그멘테이션의 크기를 나타내는 limit register를 가지고 있습니다.

페이징 기법의 경우 페이지 테이블을 모든 페이지 테이블 엔트리에 대해 프로세스별로 유지해야 하며 이로 인한 메모리 낭비가 있을 수 있습니다. 하지만 일반적으로 페이징 기법으로 낭비되는 내부 단편화가 세그먼테이션에서 발생하는 외부 단편화보다 적기 때문에 페이징 기법을 많이 사용합니다. 현재 많이 사용하는 구조는 segmentation-paging 구조로 ~~~

가변 분할 방식의 경우 메모리를 할당하는 방식이 세가지가 있는데, 프로세스가 필요한 크기보다 큰 공간을 찾아 먼저 찾은 공간을 할당하는 first-fit, 프로세스가 필요한 크기보다 큰 공간 중 가장 작은 공간을 할당하는 best-fit, 그 중 가장 큰 공간을 할당하는 worst-fit이 있습니다. 또 메모리 컴팩션이라고 외부 단편화를 해결하기 위해 모든 배정된 메모리 공간을 한쪽으로 몰고 다른 쪽에 가용 가능한 메모리 공간만 모아놓는 기법이 있는데, 이 경우 성능이 많이 안좋아 실제로 잘 사용하지 않는 것으로 알고 있습니다.

공통점은 가상 주소를 사용하여 실제 메모리에 저장된 위치인 물리 주소와 매핑이 필요하다는 것입니다. 이때 MMU(memory management unit)가 가상 주소를 물리 주소로, 물리 주소를 가상 주소로 변환해주는 역할을 합니다.

3. MMU란?

가상 주소를 물리주소로, 물리 주소를 가상 주소로 변환해주는역할을 하는 하드웨어 디바이스 입니다.일반적으로 CPU 내에 있습니다. base register를 이용해서 가상 주소에 base regiseter를 더해서 물리 주소로 변환합니다. 동시에 메모리를 보호하기 위해 limit register를 이용해 이용 가능한 메모리 공간 범위를 넘어 참조하려는 경우 trap을 발생시킵니다.

3. 스왑 작동원리

스왑은 기본적으로 디스크에 있는 스왑 영역의 데이터를 가져오고 메모리 영역에 있는 데이터를 스왑 영역으로 보내는것을 말합니다.
이때, 페이징 기법 방식에서는 같은 프로세스의 메모리공간 중에서도 특정 페이지에 해당 하는 부분은 메모리에 있고 특정부분은 스왑 영역에 있을 수 있습니다. 갑자기 스왑 영역에 있는 페이지가 필요하면 이 페이지를 가져오고 메모리에 있는 페이지중 어떤 걸 스왑 영역으로 내려보낼지 정하게 되는데 이를 페이지 교체 알고리즘이라고 합니다.

페이지 교체 알고리즘에는 FIFO, LRU, LFU, NRU 알고리즘 등이 있습니다.

4. TLB란?

페이징 기법은 페이지 테이블을이용해 실제 물리 주소를 찾게됩니다.
이때 페이지 테이블은 메인 메모리에 상주하는데 이때문에 물리 메모리를 찾는 과정에서 메모리에 한번더 접근해야 합니다.
따라서 이문제를 해결하기 위해 자주 쓰이는 페이지 테이블의 일부분을 CPU에 올려놓은 것이 TLB입니다.
페이지 테이블과 TLB의 차이점은 페이지 테이블은 순서대로 모든 페이지가 있기 때문에 프레임 번호만 순서대로 가지고 있지만 TLB는 모든 페이지가 있는게 아니기 때문에 페이지 인덱스와 프레임 번호를 가지게 됩니다.

6. 메모리 계층 구조?

파일 시스템

1. 저널링이란?

리눅스와 윈도우 등에서 제공하는 파일 백업 및 복구 시스템

0개의 댓글