본문 바로가기
CS/혼공컴구운체

[혼공컴운] 혼공단 6주차: 14~15

by 동백05 2024. 2. 17.

14 가상 메모리

14-1 연속 메모리 할당

스와핑

- 프로세스들을 임시로 보조기억장치 일부 영역으로 쫓아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재해서 실행하는 방식

- 스왑영역: 쫓겨나는 보조기억장치의 일부 영역

- 스왑아웃: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것

- 스왑 인: 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것

- 스왑 아웃되었던 프로세스가 다시 스왑 인 될 때는 스왑 아웃 되기 전의 물리 주소와는 다른 주소에 적재될 수 있음

- 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시 진행할 수 있음

 

메모리할당

1) 최초 적합

- 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식

- 검색 최소화, 빠른 할당 가능

2) 최적 적합

- 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식

3) 최악 적합

- 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식

 

외부 단편화

- 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간들이 생김, 프로세스 바깥에 생기는 이러한 빈공간들은 빈 공간이지만 그 공간보다 큰 프로세스를 적재하기 어려운 상황을 초래하고, 결국 메모리 낭비로 이어짐

- 작은 빈 공간들을 하나로 모으는 동안 시스템은 하던 일을 중지해야 하고, 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기하며, 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압축할 수 있는지에 대한 명확한 방법을 결정하기 어려움

 

[ 기본 미션 ]
Q. 메모리 할당 방식에 대한 설명으로 올바른 것을 쓰시오
- [ 최초 적합 ]: 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식
- [ 최악 적합 ]: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
- [ 최적 적합 ]: 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

 

14-2 페이징을 통한 가상 메모리 관리

가상 메모리

- 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술

 

페이징

- 프로세스의 논리 주소 공간을 일정한 페이지라는 단위로 자르고, 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법

- 한 프로세스를 실행하기 위해 프로세스 전체가 메모리에 적재될 필요 없음

- 프로세스를 이루는 페이지 중 실행에 필요한 일부 페이지만을 메모리에 적재하고, 당장 실행에 필요하지 않은 페이지들은 보조기억장치에 남겨둠

- 물리 메모리보다 더 큰 프로세스를 실행할 수 있음

- 문제점: 프로세스가 메모리에 불연속적으로 배치되어 있다면 CPU 입장에서 이를 순차적으로 실행할 수 없음

-> 프로세스가 메모리에 불연속적으로 배치되면 CPU 입장에서 '다음에 실행할 명령어 위치'를 찾기가 어려워짐

- 페이지 테이블: 프로세스가 비록 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 이용 -> 현재 어떤 페이지가 어떤 프레임에 할당되었느지를 알려줌

- 페이지 테이블 단점: 메모리 접근 시간이 두 배로 늘어남

- TLB: 페이지 테이블의 캐시, 페이지 테이블의 일부 내용을 저장, 주로 최근에 사용된 페이지 위주로 가져와 저장

- TLB 히트: CPU에서 발생한 논리 주소에 대한 페이지 번호가 TLB에 있는 경우

- TLB 미스: CPU에서 발생한 논리 주소에 대한 페이지 번호가 TLB에 없는 경우

 

페이지 테이블 엔트리

- 유효비트: 현재 해당 페이지에 접근 가능한지 여부

- 페이지폴트: CPU가 유효 비트가 0인 메모리에 적재되어 있지 않은 페이지로 접근하는 것

- 보호비트: 페이지 보호 기능을 위해 존재하는 비트, 해당 페이지가 읽고 쓰기가 모두 가능한 페이지인지, 혹은 읽기만 가능한 페이지인지를 나타낼 수 있음

- 참조비트: CPU가 이 페이지에 접근한 적 있는지 여부

- 수정비트: 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부, 페이지가 메모리에서 사라질 때 보조기억장치에 쓰기 작업을 해야 하는지, 할 필요가 없는지를 판단하기 위해 존재

 

14-3 페이지 교체와 프레임 할당

요구 페이징

- 프로제스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

- 실행에 요구되느 페이지만 적재

- 순수 요구 페이징: 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행하는 것

 

페이지 교체 알고리즘

- 페이지 폴트를 가장 적게 일으키는 알고리즘을 좋은 알고리즘으로 평가

- 페이지 폴트가 일어나면 보조기억장치로부터 필요한 페이지를 가져와야 하기 때문에 메모리에 적재된 페이지를 가져오는 것보다 느려지기 때문

1) FIFO 페이지 교체 알고리즘

- 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식

2) 최적 페이지 교체 알고리즘

- CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘

- 보조기억장치로 내보내야 할 페이지는 앞으로 사용 빈도가 가장 낮은 페이지미으로, 앞으로의 사용 빈도가 가장 낮은 페이지를 교체하는 알고리즘

- 그러나 '앞으로 오랫동안 사용하지 않을 페이지'를 예측하기란 어려움

3) LRU 페이지 교체 알고리즘

- 가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘

 

스래싱

- 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제

 

멀티프로그래밍의 정도

- 메모리에서 동시 실행되는 프로세스의 수

- 멀티프로그래밍의 정도가 높다면 현재 메모리에서 많은 프로세스가 동시에 실행 중이고, 낮다면 현재 메모리에는 적은 프로세스가 동시에 실행 중

- 동시에 실행되는 프로세스의 수를 늘린다고 해서 CPU 이용률이 그에 비례해서 증가하지는 않음

-> 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않기 때문

 

프레임 할당 방식

1) 균등 할당

- 모든 프로세스에 균등하게 프레임을 제공하는 방식

2) 비례 할당

- 프로세스의 크기가 크다면 프레임을 많이 할당하고 프로세스의 크기가 작으면 프레임을 적게 나눠 주는 방식

 

15 파일 시스템

15-1 파일과 디렉터리

파일

- 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합

- 의미 있고 관련 있는 정보를 모은 논리적 단위

- 속성 또는 메타데이터: 파일 유형(확장자), 크기, 보호, 생성 날짜, 마지막 접근 날짜, 마지막 수정 날짜, 생성자, 소유자, 위치

- 연산을 위한 시스템 호출 제공 -> 생성, 삭제, 열기, 닫기, 읽기, 쓰기

 

디렉터리

- 폴더

- 1단계 디렉터리, 트리 구조 디렉터리, 루트 디렉터리

 

절대경로

- 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로

상대경로

- 현재 디렉터리부터 시작하는 경로

 

15-2 파일 시스템

파티셔닝

- 저장 장치의 논리적인 영역을 구획하는 작업

파티션

- 파티셔닝 작업을 통해 나누어진 영역 하나하나

포매팅

- 파일 시스템을 설정하며 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업

 

파일 할당 방법

- 블록: 파일과 디렉터리를 읽고 쓰는 단위

- 하나의 파일이 보조기억장치에 저장될 때는 하나 이상의 블록에 걸쳐 저장됨

1) 연속할당

- 가장 단순한 방식

- 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식

- 디렉터리 엔트리에 파일 이름과 더불어 첫 번째 블록 주소와 블록 단위의 길이를 명시

2) 연결할당

- 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식

- 연결 리스트로 관리

- 파일이 여러 블록에 흩어져 저장되어도 무방

- 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 함 -> 임의 접근 속도가 느림

- 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없음

3) 색인할당

- 파일의 모든 블록 주소를 색인블록이라는 하나의 블록에 모아 관리하는 방식

- 파일 내 임의의 위치에 접근하기 쉬움

 

FAT 파일 시스템

- USB 메모리, SD 카드와 같은 저용량 저장 장치용 파일 시스템으로 많이 이용되고 있음

- 연결 할당 기반의 파일 시스템

 

유닉스 파일 시스템

- i-node에 파일 속성 정보와 열 다섯개의 블록 주소가 저장됨

- 색인 할당 기반의 파일 시스템

 

댓글