Operating System

[쉽게 배우는 운영체제] Chapter 07. 물리 메모리 관리

곽수진 2023. 6. 18. 02:25
반응형

01 논리 주소와 물리 주소

프로세스 입장에서 바라본 주소를 논리 주소라 하고, 물리 메모리 주소를 물리 주소, 혹은 실제 주소라고 한다. 논리 주소와 물리 주소의 변환은 메모리 관리 유닛이 담당한다.

 

 

02 메모리 오버레이

프로그램의 크기가 물리 메모리보다 클 때 전체 프로그램을 메모리와 가져오는 대신 적당한 크기로 잘라서 가져오는 기법을 메모리 오버레이라고 한다. 메모리 오버레이 방식에서는 프로그램 전체가 아닌 일부만 메모리에 올라와도 실행된다.

 

 

03 스왑

메모리가 모자라서 쫓겨난 프로세스를 저장장치의 특별한 공간에 모아두는데 이러한 영역을 스왑 영역이라고 부른다. 스왑 영역은 메모리에서 쫓겨났다가 다시 돌아가는 데이터가 머무는 곳이기 때문에 저장장치는 장소만 빌려주고 메모리 관리자가 관리한다.

 

 

04 메모리 가변 분할 방식

프로세스의 크기에 맞게 메모리를 분할하는 연속 메모리 할당 방식이며 세그먼테이션 메모리 관리 기법이라고 부른다. 프로세스를 하나의 연속된 주소로 다룬다는 장점이 있지만 작은 빈 공간이 생기는 외부 단편화가 발생한다. 외부 단편화 문제를 해결하기 위한 메모리 배치 방식은 다음과 같이 크게 세 가지로 나뉜다.

  • 최초 배치 : 단편화를 고려하지 않는 방식으로 프로세스를 메모리의 빈 공간에 배치할 때 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치한다.
  • 최적 배치 : 메모리의 빈 공간을 모두 확인한 후 크기가 가장 비슷한 곳에 프로세스를 배치한다.
  • 최악 배치 : 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 것으로 최적 배치와 정반대되는 방법이다.

 

 

05 메모리 고정 분할 방식

고정 분할 방식을 사용하여 물리 메모리를 나누는 방식을 페이징 메모리 관리 기법이라고 한다. 고정 분할 방식의 장점은 프로세스의 크기에 상관없이 메모리를 같은 크기로 나누기 때문에 관리하기가 편하다는 점이다. 그래서 현대의 메모리 관리는 페이징을 기본으로 한다. 단점은 각 메모리 조각에 프로세스를 배치하고 공간이 남는 내부 단편화가 발생한다는 점이다. 내부 단편화를 줄이기 위해서는 메모리를 어떤 크기로 나눌지 신중하게 결정해야 한다.

 

 


 

 

연습 문제 01. 컴파일러가 일차적으로 번역하여 만든 파일은?

① 연결 단계

② 목적 코드

③ 라이브러리

④ 동적 라이브러리

 

 

연습 문제 02. 컴파일에서 오류를 점검하였으나 라이브러리에 속한 파일은 비어 있는 상태로 만들어지는 것은?

① 연결 단계

② 목적 코드

③ 라이브러리

④ 동적 라이브러리

 

 

연습 문제 03. DLL(Dynamic Link Loader)과 가장 연관이 깊은 것은?

① 연결 단계

② 목적 코드

③ 라이브러리

④ 동적 라이브러리

 

 

연습 문제 04. 메모리 관리 유닛(MMU)이 물리 주소로 변환하는 것은?

① 간접 주소

② 상대 주소

③ 논리 주소

④ 직접 주소

 

 

연습 문제 05. 논리 주소 공간의 74번지에 접근하려고 한다. 해당 프로세스가 물리 주소 124번지에 올라와 있다면 물리 주소 몇 번지에 접근하면 되는가?

① 125

② 124

③ 75

④ 198

 

 

연습 문제 06. 논리 주소 공간은 몇 번지부터 시작하는가?

① 1

② 100

③ 0

④ 200

 

 

연습 문제 07. 물리 메모리의 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기법은?

① 메모리 오버레이

② 페이징

③ 세그먼테이션

④ 스왑

 

 

연습 문제 08. 메모리에서 쫓겨난 데이터들이 옮겨가는 곳은?

① 메모리 오버레이

② 페이징

③ 세그먼테이션

④ 스왑

 

 

연습 문제 09. 저장장치에 존재하지만 메모리 관리자가 관리하는 곳은?

① 메모리 오버레이

② 페이징

③ 세그먼테이션

④ 스왑

 

 

연습 문제 10. 가변 분할 방식과 가장 거리가 먼 것은?

① 조각 모음

② 외부 단편화

③ 내부 단편화

④ 연속 할당 방식

 

 

연습 문제 11. 가변 분할 방식에서 서로 떨어져 있는 빈 메모리 영역을 하나로 통합하는 작업은?

① 조각 모음

② 외부 단편화

③ 내부 단편화

④ 연속 할당 방식

 

 

연습 문제 12. 고정 분할 방식과 가장 거리가 먼 것은?

① 페이징

② 외부 단편화

③ 내부 단편화

④ 비연속 할당 방식

 

 

연습 문제 13. 가변 분할 방식에서 발생하는 것으로 작은 조각의 빈 메모리를 가리키는 것은?

① 페이징

② 외부 단편화

③ 내부 단편화

④ 비연속 할당 방식

 

 

연습 문제 14. 가변 분할 방식의 메모리 배치 방식 중 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치하는 것은?

① 최악 배치

② 최적 배치

③ 최초 배치

④ 연속 배치

 

 

연습 문제 15. 가변 분할 방식의 메모리 배치 방식 중 메모리의 빈 공간을 모두 확인한 후 크기가 가장 비슷한 곳에 프로세스를 배치하는 것은?

① 최악 배치

② 최적 배치

③ 최초 배치

④ 연속 배치

 

 

연습 문제 16. 가변 분할 방식의 메모리 배치 방식 중 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 것은?

① 최악 배치

② 최적 배치

③ 최초 배치

④ 연속 배치

 

 

연습 문제 17. 세그먼테이션의 특징과 가장 거리가 먼 것은?

① 조각 모음

② 외부 단편화

③ 내부 단편화

④ 연속 할당 방식

 

 

연습 문제 18. 페이징 메모리 관리 기법의 특징과 가장 거리가 먼 것은?

① 페이징

② 외부 단편화

③ 내부 단편화

④ 비연속 할당 방식

 

 

연습 문제 19. (캐시)는 미리 가져오기(prefetch)의 특징을 가진 저장장치다.

 

 

연습 문제 20. (캐시)는 CPU 안에 존재하는 것으로 메모리에 접근하기 전에 먼저 살펴보는 저장장치다.

 

 

연습 문제 21. (목적 코드)는 컴파일러가 일차적으로 번역하여 만든 파일이다.

 

 

연습 문제 22. (분할 컴파일)에서는 각자 만든 소스코드를 컴파일해서 만들어진 목적 코드를 주고받아서 다시 컴파일한다.

 

 

연습 문제 23. (동적 라이브러리)는 실행할 때 삽입되는 함수 코드를 가진 라이브러리다.

 

 

연습 문제 24. 메모리 관리 유닛은 (논리 주소)를 물리 주소로 변환한다.

 

 

연습 문제 25. 물리 메모리의 주소는 (0)번지부터 시작한다.

 

 

연습 문제 26. (메모리 오버레이)는 물리 메모리의 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기법이다.

 

 

연습 문제 27. (스왑 영역)은 메모리에서 쫓겨난 데이터들이 옮겨가는 곳이다.

 

 

연습 문제 28. (스왑 인)은 데이터가 스왑 영역에서 메모리로 올라오는 것을 말한다.

 

 

연습 문제 29. (스왑 아웃)은 데이터가 메모리에서 스왑 영역으로 옮겨 가는 것을 말한다.

 

 

연습 문제 30. (스왑)은 저장장치에 존재하지만 메모리 관리자가 관리한다.

 

 

연습 문제 31. (외부 단편화)는 가변 분할 방식에서 발생하는 단편화다.

 

 

연습 문제 32. (내부 단편화)는 고정 분할 방식에서 발생하는 단편화다.

 

 

연습 문제 33. 가변 분할 방식의 메모리 배치 방식 중 (최초 배치)는 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치하는 방법이다.

 

 

연습 문제 34. 가변 분할 방식의 메모리 배치 방식 중 (최적 배치)는 메모리의 빈 공간을 모두 확인한 후 크기가 가장 비슷한 곳에 프로세스를 배치하는 방법이다.

 

 

연습문제 35. 가변 분할 방식의 메모리 배치 방식 중 (최악 배치)는 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 방법이다.

 

 

연습문제 36. 세그먼테이션 메모리 관리 방식은 프로세스를 하나의 덩어리로 취급하기 때문에 (연속) 할당 방식이다.

 

 

연습문제 37. 컴파일 과정에 대하여 설명하시오.

컴파일러는 소스코드를 컴파일하여 오류가 있는지 점검하고 최적화를 통해 목적코드를 생성한다. 목적코드가 만들어지면 라이브러리에 있는 코드를 목적 코드에 삽입해 최종 실행 파일을 만든다. 

 

 

연습문제 38. 동적 라이브러리에 대하여 설명하시오.

동적 라이브러리는 실행할 때 삽입되는 함수를 가진 라이브러리를 의미하며, 동적 라이브러리 방식에서는 함수가 변경되어도 새로 컴파일 할 필요 없이 새로운 라이브러리만 사용하여 실행하면 된다.

 

 

연습문제 39. 메모리 오버레이에 대하여 설명하시오.

프로그램의 크기가 실제 메모리보다 클 때 전체 프로그램을 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법을 의미한다.

 

 

연습문제 40. 스왑에 대하여 설명하시오.

메모리가 모자라서 쫓겨난 프로세스를 모아두는 저장장치의 특별한 공간을 의미한다.

 

 

연습문제 41. 가변 분할 방식에 대하여 설명하시오.

가변 분할 방식은 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누어 한 프로세스가 메모리의 연속된 공간에 배치되는 것을 의미한다.

반응형