활동 내용

Chapter 14 ~ 15, 메모리 할당부터 파일, 디렉터리까지

  • 기본 미션: p. 400의 확인 문제 1번 풀고 인증하기
  • 선택 미션: Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2414523423' 일 때 FIFO, 최적 페이지, LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

정리

스와핑

메모리에 적재된 프로세스 중에서 현재 실행되지 않는 프로세스를 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 하여 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식을 스와핑(swapping)이라고 한다.
이때 프로세스들이 쫓겨나는 보조기억장치의 일부 영역을 스왑 영역(swap space), 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것을 스왑 아웃(swap-out), 반대로 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것을 스왑 인(swap-in)이라고 한다.

메모리 할당

비어 있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식은 대표적으로 최초 적합, 최적 적합, 최악 적합이 있다.

  • 최초 적합(first fit): 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식이다.
  • 최적 적합(best fit): 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식이다.
  • 최악 적합(worst fit): 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식이다.

외부 단편화

프로세스에 연속적인 메모리 공간을 할당하는 방식을 연속 메모리 할당 방식이라고 한다. 이 방식에는 외부 단편화(external fragmentation)라는 문제를 내포하고 있다. 외부 단편화란 프로세스들이 메모리에 연속적으로 할당되는 환경에서 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간들이 생긴다. 이때, 그 공간은 분명 빈 공간이지만 그 공간보다 큰 프로세스를 적재하기 어려운 상황으로 인해 메모리가 낭비되는 현상을 말한다.
외부 단편화를 해결할 수 있는 대표적인 방안으로는 메모리를 압축(compaction)하는 방법이 있다. 압축은 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식으로 여기저기 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법이다. 그러나 압축에는 여러 단점이 있기에 외부 단편화를 없앨 수 있는 또 다른 해결 방안이 등장한다.

페이징

외부 단편화를 해결하기 위해 가상 메모리(virtual memory) 기술을 사용한다. 가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다. 이를 가능케 하는 가상 메모리 관리 기법에는 페이징(paging)이 있다. 페이징은 프로세스의 논리 주소 공간을 페이지(page)라는 일정한 단위로 자르고, 메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 각 페이지를 프레임에 할당하는 기법이다.
또한 페이징에서도 스와핑을 사용할 수 있다. 특히나 페이지 단위로 스왑 아웃/스왑 인되는 게 큰 특징인데, 페이징 시스템에서의 스왑 아웃은 페이지 아웃(page out), 스왑 인은 페이지 인(page in)이라고 부른다.

페이지 테이블

페이지 테이블(page table)은 프로세스가 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 하기 위해 있다. 즉, 페이지 테이블은 페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표인 셈이다. CPU 입장에서 연속적인 논리 주소를 그저 순차적으로 실행하면 되니 '다음에 실행할 명령어 위치'를 효과적으로 찾을 수 있게 된다.
프로세스마다 각자의 프로세스 테이블을 가지고 있고 각 프로세스의 페이지 테이블들은 메모리에 적재되어 있다. 그리고 CPU 내의 페이지 테이블 베이스 레지스터(PTBR, Page Table Base Register)는 각 프로세스의 페이지 테이블이 적재된 주소를 가리키고 있다.

요구 페이징

프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법을 요구 페이징(demand paging)이라고 한다. 요구 페이징의 기본적인 양상은 다음과 같다.

  • CPU가 특정 페이지에 접근하는 명령어를 실행한다.
  • 해당 페이지가 현재 메모리에 있을 경우 CPU는 페이지가 적재된 프레임에 접근한다.
  • 해당 페이지가 현재 메모리에 없을 경우 페이지 폴트가 발생한다.
  • 페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재한다.

파일

파일(file)이란 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합을 의미한다. 모든 파일에는 이름과 파일을 실행하기 위한 정보, 파일 관련 부가 정보가 있다. 이 정보를 속성(attribute) 또는 메타데이터(metadata)라고 부른다. 또 파일을 실행할 때, 파일을 실행할 방법이 속성마다 각기 다르기에 운영체제에 파일 유형을 알려주어야 한다. 파일 유형을 알리기 위한 대표적인 방식으로는 파일 이름 뒤에 확장자(extension)를 이용하는 방법이 있다.

디렉터리

파일을 관리하기 위해 디렉터리(directory)를 이용할 수 있다. 윈도우 운영체제에서는 디렉터리를 폴더(folder)라고 부른다. 그리고 옛날 운영체제에서는 하나의 디렉터리만 존재했다. 이와 같은 디렉터리 구조를 1단계 디렉터리(single-level directory)라고 부른다. 그러나 컴퓨터 용량이 커지다 보니 저장할 수 있는 파일도 많아지고, 1단계 디렉터리로는 많은 파일을 관리하기가 어렵기에 여러 계층을 가진 트리 구조 디렉터리(tree-structured directory)가 생겨나게 되었다.
트리 구조 디렉터리는 최상위 디렉터리가 있고 그 아래에 여러 서브 디렉터리가 있다. 최상위 디렉터리는 흔히 루트 디렉터리(root directory)라고 부르고 슬래시(/)로 표현한다. 윈도우 운영체제에서는 C:\로 표현한다. 또한 트리 구조 디렉터리가 생기면서 자연스레 경로(path)라는 개념이 생겼다. 경로는 디렉터리를 이용해 파일 위치, 나아가 파일 이름을 특정 짓는 정보이다.

파티셔닝과 포매팅

파티셔닝(partitioning)은 저장 장치의 논리적인 영역을 구획하는 작업을 의미한다. 비유를 하자면 서랍 안에 칸막이를 설치하여 영역을 나누고 물건들을 정리한다고 보면 된다. 이렇게 파티셔닝 작업을 통해 나누어진 영역 하나하나를 파티션(partition)이라고 한다.

포매팅(formatting)은 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업을 의미한다. 이때, 파일 시스템이란 파일과 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있게 하는 운영체제의 내부 프로그램이다. 파일 시스템에는 다양한 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수 있다.


기본 미션

p. 400의 확인 문제 1번 풀고 인증하기



선택 미션

프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2414523423' 일 때 FIFO, 최적 페이지, LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기


FIFO 페이지 교체 알고리즘: 4회
최적 페이지 교체 알고리즘: 2회
LRU 페이지 교체 알고리즘: 4회
profile
안녕하세요.

0개의 댓글