마지막 주차!
14. 가상 메모리
14.1. 연속 메모리 할당
- 이전까지는 메모리 내에서 프로세스들이 서로의 크기가 겹치지 않도록 연속적으로 배치되는 상황을 가정함
→ 연속 메모리 할당 방식
✔ 프로세스들을 메모리에 연속적으로 할당할 때 무엇을 고려해야 하는지와 어떤 잠재적 문제가 있는지 확인
14.1.1. 스와핑
- 메모리에 적재된 프로세스들 중에 현재 실행되지 않는 프로세스가 있을 수 있음
- 미 실행 프로세스들을 임시로 보조기억장치 영역으로 이동 → 메모리상의 빈 공간에 또 다른 프로세스를 적재 후 실행을 스와핑 이라고함
- 이때 프로세스들이 임시로 보조기억장치로 이동되는 영역을 스왑영역 이라고 함
- 프로세스들이 스왑영역으로 이동되는 것을 스왑아웃, 스왑영역에서 다시 메모리로 옮겨지는 것을 스왑인이라고 함
- 스왑 아웃되었던 프로세스가 스왑 인 하였을 때, 이전 메모리상의 물리 주소와는 다른 주소에 적재될 수 있음
- 스와핑을 통해 프로세스들의 필요 메모리 주소 공간 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행 가능
14.1.2. 메모리 할당
- 프로세스는 메모리 내의 빈 공간에 적재되어야 함
- 비어 있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식에는 최초 적합, 최적 적합, 최악 적합 세 가지 방식이 있음
1) 최초 적합
- 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식임
→ 운영체제가 빈 공간 A 빈공간 B 빈공간 C 순으로 빈 공간을 검색했다면, 프로세스는 빈 공간 A에 적재됨
- 최초 적합 방식은 프로세스가 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식임
→ 검색을 최소화할 수 있고, 결과적으로 빠른 할당이 가능함
2) 최적 적합
- 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식
3) 최악 적합
- 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식임
14.1.2. 외부 단편화
- 프로세스를 메모리에 연속적으로 배치하는 연속 메모리 할당은 메모리를 효율적으로 사용하는 방법이 아님
→ 연속 메모리 활당은 외부 단편화라는 문제를 내표하고 있기 때문
- 프로세스들이 메모리에 연속적으로 할당되는 환경에서는 프로세스들이 실행되고 종료되기를 반복하며 빈 공간이 생김
- 프로세스 바깥에 생기는 빈 공간들은 빈 공간이지만 해당 공간보다 큰 프로세스를 적재하기 어려운 상황을 초래함
→ 메모리 낭비로 이어지는데, 이러한 현상을 외부 단편화 라고 함
- 외부 단편화는 반드시 해결해야 할 문제이며, 해결할 수 있는 대표적인 방안으로 메모리를 압축하는 방법이 있음
→ 메모리 압축을 메모리 조각모음이라고도 부름
- 압축은 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식임
- 메모리 내에 저장된 프로세스를 재배치시키는 것으로, 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법임
- 압축 방식의 단점
1) 작은 빈 공간을 하나로 모으는 동안 시스템은 하던 일을 중지해야 함
2) 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를야기
3) 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압축할 수 있는지에 대한 명확한 방법을 결정하기 어려움
→ 이러한 단점으로 외부 단편화를 없앨 수 있는 가상 메모리 기법 중 하나인 페이징 기법임
14.2. 페이징을 통한 가상 메모리 관리
- 프로세스를 메모리에 연속적으로 할당하는 방식은 2가지 단점이 있음
1) 외부 단편화 2)물리 메모리 이상의 큰 프로세스를 실행할 수 없음
- 가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여, 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 함
- 가상 메모리 관리 기법에는 크게 페이징과 세그멘테이션이 있지만, 현재 대부분 운영체제는 페이징 기법을 사용
- 페이징 기법을 통해 물리 메모리보다 큰 프로세스를 실행할 수 있으며, 추가적으로 외부 단편화 문제도 해결할 수 있음
14.2.1. 페이징이란
- 연속 메모리 할당 방식에서 외부 단편화가 생긴 근본적인 이유 : 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당
- 페이징 이란
1) 프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자름
2) 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 후,
3) 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법
- 페이징에서도 스와핑을 사용할 수 있으며, 프로세스 전체가 스왑 아웃/인 되는 것이 아닌 페이지 단위로 스왑 아웃/인이 됨
→ 메모리에 적재될 필요가 없는 페이지들은 보조기억장치로 스왑 아웃되고, 실행에 필요한 페이지들은 메모리로 스왑 인 됨
- 페이징 시스템에서는 스왑 아웃은 페이지 아웃, 스왑 인은 페이지 인 이라고 함
- 한 프로세스를 실행하기 위해 프로세스 전체가 메모리에 적재될 필요가 없음
- 프로세스를 이루는 페이지 중 실행에 필요한 일부 페이지만을 메모리에 적재, 당장 실행에 필요하지 않은 페이지들은 보조기억장치에 남김
→ 물리적 메모리보다 더 큰 프로세스를 실행할 수 있음
14.2.2. 페이지 테이블
- 프로세스가 메모리에 불연속적으로 배치되면 CPU 입장에서는 다음에 실행할 명령어 위치 찾기가 어려워짐
- 페이징 시스템에서는 물리 주소가 불연속적으로 배치되더라도 논리 주소에서 연속적으로 배치함 → 페이지 테이블 이용
- 페이지 테이블은 페이지 번호와 프레임 번호를 연결해주는 이정표 역할로, 현재 어떤 페이지가 어떤 프레임에 할당 되었는지 알려줌
- 프로세스마다 각자의 페이지 테이블을 가지고 있고 각 프로세스의 페이지 테이블들은 메모리에 적재되어 있음
- CPU 내의 페이지 테이블 베이스 레지스터는 각 프로세스의 페이지 테이블이 적재된 주소를 가리킴
- 페이지 테이블을 메모리에 두면 메모리 접근 시간이 두 배로 늘어나는 단점 발생
→ 메모리에 있는 페이지 테이블을 보기 위해 한 번, 프레임에 접근하기 위해 두 번
- 이러한 문제를 해결하기 위해 CPU 주변(MMU 내) TLB라는 페이지 테이블의 캐시 메모리를 둠
- TLB는 페이지 테이블의 캐시이기 때문에, 페이지 테이블의 일부 내용을 저장
→ 참조 지역성에 근거하여 최근에 사용된 페이지 위주 저장
- CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우 TLB 히트라고 함
- 페이지가 적재된 프레임을 알기 위해 메모리에 접근할 필요 없음 → 메모리 접근을 한 번만 하면 됨
- 페이지 번호가 TLB에 없을 경우 페이지가 적재된 프레임을 알기 위해 페이지 테이블에 접근하는데, 이를 TLB 미스 라고 함
14.2.3. 페이징에서의 주소 변환
- 하나의 페이지 혹은 프레임은 여러 주소를 포괄하고 있으며, 특정 주소에 접근하려면 2가지 정보가 필요
1) 어떤 페이지 혹은 프레임에 접근하고 싶은지, 2) 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지
- 페이징 시스템에서는 모든 논리 주소가 기본적으로 페이지 번호와 변위로 이루어짐
- 페이지 번호 : 접근하고자 하는 페이지 번호
- 변위 : 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보
- 페이지 테이블을 통해, 논리주소 (페이지 번호, 변위) → 물리주소 (프레임 번호, 변위) 변환
14.2.4. 페이지 테이블 엔트리
- 페이지 테이블의 각 엔트리(페이지 테이블의 각각의 행)는 페이지 테이블 엔트리라고 정의함
- 테이블 엔트리에 저장되는 정보는 페이지 번호, 프레임 번호 뿐만아니라 유효비트, 보호비트, 참조비트, 수정비트가 있음
1) 유효 비트
- 현재 해당 페이지에 접근 가능한지 여부를 알려주는 것으로, 메모리 적재유무 또는 보조기억장치 적재유무를 알려주는 비트임
- 일반적으로 프로세스를 이루는 모든 페이지가 메모리에 있지 않고, 일부 페이지는 보조기억장치에 있는 경우가 많음
- 메모리에 적재되었다면 1, 페이지 메모리에 적재되어 있지 않다면 0 임
- 만약 유효비트가 0인상태에서 페이지로 접근하면, 페이지 폴트 라는 예외가 발생함
- 페이지 폴트를 처리하는 과정은 하드웨어 인터럽트를 처리하는 과정과 유사함
CPU는 기존 작업 내역 백업 → 페이지 폴트 처리 루틴 실행 → 페이지 처리 루틴을 통해 메모리 적재 후 유효비트 1로 변경
→ 페이지 폴트 처리했다면, CPU가 해당 페이지에 접근 가능함
2) 보호 비트
- 페이지 보호 기능을 위해 존재하는 비트로, 해당 페이지가 읽고 쓰기가 모두 가능한 페이지인지, 읽기만 가능한 페이지인지 나타냄
- 비트가 0이면 읽기만 가능한 페이지, 1이면 읽고 쓰기가 가능한 페이지임
- 읽기 전용 페이지에 쓰기를 시도하면 운영체제가 막아줌
- 보호 비트는 세 개의 비트로 복잡하게 구현 가능하며, 읽기/쓰기/실행에 대하여 1,0,0 이면 읽기만 가능하도록 할 수 있음
3) 참조 비트
- CPU가 이 페이지에 접근한 적이 있는지 여부를 나타냄
- 적재 이후 CPU가 읽거나 쓴 페이지는 참조 비트가 1, 적재 이후 한 번도 읽거나 쓴 적이 없는 페이지는 0임
4) 수정 비트 (더티 비트)
- 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부를 알려줌
- 1이면 변경된 적이 있는 페이지, 0이면 변경된 적이 없는 페이지를 나타냄
- 수정 비트는 페이지가 메모리에서 사라질 때 보조기억장치에 쓰기 작업이 필요한지 유무를 판단하기 위해 존재함
- 한 번도 수정된 적이 없는 페이지가 스왑 아웃될 경우 아무런 추가 작업 없이 새로 적재된 페이지로 덮어쓰기만 하면 됨
→ 같은 페이지가 보조기억장치에 저장되어 있기 때문
- CPU가 쓰기 작업한 페이지(수정 비트=1)는 보조기억장치에 저장된 내용과 메모리에 저장된 페이지는 서로 다른 값을 가짐
→ 수정된 적이 있는 페이지가 스왑 아웃될 경우 변경된 값을 보조기억장치에 기록하는 작업이 추가되어야 함
14.3. 페이지 교체와 프레임 할당
14.3.1. 요구 페이징
- 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법
CPU가 특정 페이지에 접근하는 명령어 실행 → 해당 페이지의 유효비트가 1일 경우 CPU는 페이지가 적재된 프레임 접근
→ 해당 페이지의 유효비트가 0일 경우 페이지 폴트 발생 → 페이지 폴트 처리 루틴 실행, 유효비트 1로 설정 → 반복
- 순수 요구 페이징 기법은 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행부터 하는 방법
- 요구 페이징 시스템이 안정적으로 작동하려면 페이지 교체와 프레임 할당을 해결해야 함
- 요구 페이징 기법으로 페이지들ㅇ르 적재하다 보면 언젠가는 메모리가 가득차게 됨
→ 실행에 필요한 페이지를 적재하기 위해 메모리에 적재된 페이지를 보조기억장치로 보내야됨
- 어떤 페이지를 보낼지 결정하는 방법이 페이지 교체 알고리즘 임
14.3.2. 페이지 교체 알고리즘
- 일반적으로 페이지 폴트를 가장 적게 일으키는 알고리즘이 좋은 알고리즘임
→ 페이지 폴트가 일어나면 보조기억장치로부터 필요한 페이지를 가져와야되며, 메모리에 적재된 페이지를 가져오는데 느려짐
- 페이지 교체 알고리즘을 제대로 이해하려면 페이지 폴트 횟수를 알 수 있어야 하는데, 페이지 참조열을 통해 알 수 있음
- 페이지 참조열은 CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지 열임
- 연속된 페이지를 생략하는 이유는 중복된 페이지를 참조하는 행위가 페이지 폴트를 발생시키지 않기 때문
1) FIFO 페이지 교체 알고리즘
- 가장 먼저 올라온 페이지부터 내쫓는 방식으로, 적재된 페이지 순서대로 교체하는 알고리즘
- 실행 초기에 잠깐 실행되다가 이후에 사용되지 않을 페이지도 있지만, 실행 내내 사용될 내용을 포함할 수 있음
2) 최적 페이지 교체 알고리즘
- CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘
- 메모리에 오랫동안 남아야 할 페이지는 자주 사용될 페이지이고, 메모리에 없어도 될 페이지는 오랫동안 사용되지 않을 페이지임
→ 오랜 기간 메모리에 있었던 페이지라고 보조기억장치로 옮기는 것은 비합리적
- 사용 빈도가 가장 낮은 페이지를 교체하는 알고리즘을 최적 페이지 교체 알고리즘이라고 함
- 최적 페이지 교체 알고리즘은 가장 낮은 페이지 폴트율을 보장하는 알고리즘임
- 하지만 앞으로 오랫동안 사용되지 않을 페이지를 예측하기 어렵기에 실제로 구현하기 어려움
- 운영체제에서 사용하기보다는, 다른 페이지 교체 알고리즘의 이론상 성능을 평가하기 위한 목적으로 사용
3) LRU 페이지 교체 알고리즘
- 최적 페이지 교체 알고리즘은 '가장 오랫동안 사용되지 않을' 페이지 를 교체하는 알고리즘
- 조금 변형하여 '가장 오랫동안 사용하지 않은' 페이지를 교체하는 알고리즘이 LRU 페이지 교체 알고리즘임
- 페이지마다 마지막으로 사용한 시간을 토대로 최근에 가장 사용이 적었던 페이지를 교체함
14.3.3. 스래싱과 프레임 할당
- 페이지 폴트가 자주 발생하는 이유에는 나쁜 페이지 교체 알고리즘만 있는건 아님,
- 프로세스가 사용할 수 있는 프레임 수가 적어도 페이지 폴트는 자주 발생함 (더 근본적인 이유)
- 프로세스가 사용할 수 있는 프레임 수가 많으면 일반적으로 페이지 폴트 빈도는 감소함
- 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제를 스래싱이라고 함
- 메모리에서 동시 실행되는 프로세스의 수를 멀티프로그래밍의 정도라고 함
- 멀티프로그래밍의 정도가 높다면 현재 메모리에는 많은 프로세스가 동시에 실행 중임을 뜻함
- 동시에 실행되는 프로세스의 수를 늘린다고 해서 CPU 이용률이 비례해서 증가하는 것은 아님
- 필요 이상으로 늘리면 각 프로세스들이 사용할 수 있는 프레임 수가 적어지기 때문에 페이지 폴트가 지나치게 빈번히 발생
→ CPU 이용률이 떨어져 전체적인 성능이 저해됨
- 스래싱이 발생하는 근본적인 원인은 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문임
- 프레임 할당 방식에서는 모든 프로세스에 균등하게 프레임을 제공하는 방식인 균등 할당 방법이 있음
- 실행되는 프로세스의 크기가 천차만별이기 때문에 동일한 프레임 개수를 할당하는 것은 비합리적
- 프로세스의 크기에 따라 프레임을 할당하는 방법을 비례 할당이라고 함
- 프레임을 배분하는 방식에는 크게 작업 집합 모델과 페이지 폴트 빈도를 사용하는 방식이 있음
- 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합을 작업 집합이라고 함
- CPU가 과거에 주로 참조한 페이지를 작업 집합에 포함한다면 운영체제는 작업 집합의 크기만큼만 프레임을 할당해 주면 됨
- 페이지 폴트 빈도 기반의 프레임 할당은 2가지 가정에서 생견나 아이디어임
1) 페이지 폴트율이 너무 높으면 그 프로세스는 너무 적은 프레임을 갖고 있음
2) 페이지 폴트율이 너무 낮으면 그 프로세스가 너무 많은 프레임을 갖고 있음
- 페이지 폴트 빈도 기반 프레임 할당 방식은 페이지 폴트율에 상한선과 하한선을 정하고, 범위 안에서만 프레임을 할당하는 방식
15. 파일 시스템
15.1. 파일과 디렉터리
- 파일과 디렉터리는 모두 운영체제 내부 파일 시스템이 관리하는 존재임
15.1.1. 파일
- 파일이란 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합을 의미
- 파일은 의미 있고 관련 있는 정보를 모은 논리적 단위를 의미
- 모든 파일에는 이름과 파일을 실행하기 위한 정보와 파일 관련 정보가 있는데, 관련 정보를 속성 또는 메타데이터라고 함
1) 파일 속성과 유형
- 파일 시스템은 파일별로 다양한 속성을 유지하고 관리함
: 유형, 크기, 보호, 생성 날짜, 마지막 접근 날짜, 마지막 수정 날짜, 생성자, 소유자, 위치
- 파일 속성 중 파일 유형은 운영체제가 인식하는 파일 종류를 나타냄
- 파일 유형을 알리기 위해 흔히 사용되는 방식은 파일 이름 뒤에 확장자를 이용함
2) 파일 연산을 위한 시스템 호출
- 파일을 다루는 모든 작업은 운영체제에 의해 이루어짐
- 어떤 응용 프로그램도 임의로 파일을 조작 할 수 없으며, 파일을 다루려면 운영체제에 요청
- 운영체제는 파일 연산을 위한 시스템 호출을 제공함
: 파일 생성, 파일 삭제, 파일 열기, 파일 닫기, 파일 읽기, 파일 쓰기
15.1.2. 디렉터리
- 파일들을 관리하기 위해 디렉터리를 이용할 수 있으며, 윈도우 운영체제에서는 디렉터리를 폴더라고 부름
- 1단계 디렉터리는 모든 파일이 하나의 디렉터리 아래에 있는 구조임
- 1단계 디렉터리로는 많은 파일을 관리하기가 어려워, 여러 계층을 가진 트리 구조 디렉터리가 생김
- 트리구조 디렉터리에서, 최상위 디렉터리가 있고, 그 아래에 여러 서브 디렉터리(자식 디렉터리)가 있음
- 최상위 디렉터린를 보통 루트 디렉터리라고 부름
- 경로라는 개념은 디렉터리를 이용해 파일 위치, 파일 이름을 특정 짓는 정보임
1) 절대 경로와 상대 경로
- 모든 파일은 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로를 가지는데, 이를 절대 경로라고 함
- 절대 경로가 루트 디렉터리부터 시작한다면, 상대 경로는 현재 디렉터리부터 시작하는 경로임
2) 디렉터리 연산을 위한 시스템 호출
- 운영체제는 디렉터리 연산을 위한 시스템 호출도 제공함
: 디렉터리 생성, 삭제, 열기, 닫기, 읽기
3) 디렉터리 엔트리
- 파일이 내부에 해당 파일과 관련된 정보를 담는다면, 디렉터리는 내부에 해당 디렉터리에 담겨있는 대상과 관련된 정보를 가짐
- 해당 정보들은 보조기억장치에 테이블 형태의 정보로 저장됨
- 디렉터리 엔트리가 공통으로 포함하는 정보가 있다면, 그 이름과 대상이 보조기억 장치 내에 저장된 위치를 유추할 수 있음
- 디렉터리 엔트리만 보아도 해당 디렉터리에 무엇이 있는지, 보조기억장치 어디에 있는지 직간접적으로 알 수 있음
15.2. 파일 시스템
- 파일 시스템은 앞선 절에서 학습한 파일과 디렉터리를 보조기억장치에 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램임
15.2.1. 파티셔닝과 포매팅
- 보조깅거장치를 사용하려면, 파티션을 나누는 작업(파티셔닝)과 포맷 작업(포매팅)을 수행해야함
- 파팅셔닝은 저장 장치의 논리적 영역을 구획하는 작업을 의미하며, 나누어진 영역을 파티션이라고 함
-포매팅은 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고 새로운 데이터를 쓸 준비하는 작업
15.2.2. 파일 할당 방법
- 운영체제는 파일과 디렉터리를 블록 단위로 읽고 씀
- 하드디스크의 가장 작은 저장 단위는 섹터, 운영 체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 단위로 관리함
- 파일을 보조기억장치에 할당하는 방법에는 연속 할당과 불연속 할당이 있으며 불연속 할당에는 연결 할당, 색인 할당이 있음
1) 연속 할당
- 가장 단순한 방식으로, 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식임
- 구현이 단순하지만, 외부 단편화를 야기하는 단점이 있음
2) 연결 할당
- 연결 할당은 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 불록을 가리키는 형태로 할당하는 방식
- 파일을 이루는 데이터를 연결 리스트로 관리하며, 불연속 할당의 일종이기에 파일이 여러 블록에 흩어져 저장되어도 됨
- 외부 단편화 문제를 해결하지만 단점이 있음
(1) 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 함
- 중간 부분부터 접근하고 싶어도 반드시 파일의 첫 번째 블록부터 접근하여 하나씩 차례대로 읽어야 함
- 임의의 위치에 접근하는 속도, 임의 접근 속도가 매우 느림
(2) 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없음
- 블록 안에 파일 데이터와 다음 블록 주소가 모두 포함되어 있음
- 하드웨어 고장이나 오류로 인해 파일을 이루는 블록에 문제가 발생하면 이후 블록에 접근 할 수 없게 됨
→ 연결 할당을 변형한 FAT 파일 시스템을 사용함
3) 색인 할당
- 색인 할당은 파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식임
- 연결 할당과 달리 파일 내 임의의 위치에 접근하기 쉬움 → 색인 블록만 알면 해당 파일 데이터에 접근 가능
- 색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 함께 색인 블록 주소를 명시함
15.2.3. 파일 시스템 살펴보기
- 저용량 장치에서 사용되는 FAT 파일 시스템과 유닉스 계열 운영체제에서 사용되는 유닉스 파일 시스템이 있음
FAT 파일 시스템)
- 연결 할당의 단점을 보완한 파일 시스템이 FAT 파일 시스템임
- 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태로 관리하면 앞서 언급한 단점들을 상당 부분 해소할 수 있음
→ 파일 할당 테이블 (FAT)라고 하며, FAT를 이용하는 파일 시스템이 FAT 파일 시스템임
- FAT가 메모리에 적재된 채 실행되면 임의 접근의 성능이 개선됨
유닉스 파일 시스템)
- 유닉스에서는 색인 할당 파일 시스템을 사용하며, 색인 할당은 색인 블록을 기반으로 파일의 데이터 블록들을 찾는 방식임
- 유닉스 시스템에서는 색인 블록을 i-node라고 부름
- i-node에는 파일 속성 정보와 열다섯 개의 블록 주소가 저장될 수 있음
1) 블록 주소 중 열두 개에는 직접 블록 주소를 저장함
- i-node가 가리킬 수 있는 열다섯 개의 블록 주소 중 처음열두 개에는 파일 데이터가 저장된 블록 주소가 직접적으로 명시됨
- 파일 데이터가 저장된 블록을 직접 블록이라고 함
2) 첫째 내용으로 충분하지 않다면 열세 번째 주소에 단일 간접 블록 주소를 저장함
- 열세 번쨰 블록 주소는 단일 간접 블록의 주소를 저장함
- 단일 간접 블록은 파일 데이터가 저장된 블록이 아닌 파일 데이터를 저장한 블록 주소가 저장된 블록을 의미함
3) 둘째 내용으로도 충분하지 않으면 열네 번째 주소에 이중 간접 블록 주소를 저장함
- 열네 번째 블록 주소는 이중 간접 블록 주소를 저장함
- 이중 간접 블록이란 데이터 블록 주소를 저장하는 블록 주소가 저장된 블록을 의미함
→ 단일 간접 블록들의 주소를 저장하는 블록이 이중 간접 블록
4) 셋째 내용으로도 충분하지 않으면 열다섯 번째 주소에 삼중 간접 블록 주소를 저장함
- 열다섯 번째 블록 주소는 삼중 간접 블록 주소를 저장함
- 삼중 간접 블록은 이중 간접 블록 주소가 저장된 블록임
- i-node만 알면 파일 속성뿐만 아니라 파일 크기가 크더라도 파일 데이터를 모두 가르킬 수 있음
- i-node에 파일의 모든 것을 담고 있다고 할 수 있음
- 유닉스 파일 시스템의 디렉터리 엔트리는 파일 이름과 i-node 번호로 구성됨
6주차 (2/17 ~ 2/23) |
Chapter 14 ~ 15 | p. 400의 확인 문제 1번 풀고 인증하기 | Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기 |
1. 메모리 할당 방식에 대한 설명으로 올바른 것을 쓰시오
- 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식 : 최초 적합
- 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식 : 최악 적합
- 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식 : 최적 적합
2. 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는가?
2 → 3 → 1 → 3 → 5(* 폴트 발생, 보조기억장치 2저장) → 2(*폴트 발생, 보조기억장치 1저장) → 3 → 4(*폴트 발생, 보조기억 장치에 5 저장) → 2 → 3
총 3번의 페이지 폴트가 발생함
'개인공부 > 혼공학습단 13기 - 컴운' 카테고리의 다른 글
혼공학습단 13기 마무리 (1) | 2025.02.25 |
---|---|
혼공학습단 13기- 5주차 (0) | 2025.02.19 |
혼공학습단 13기- 4주차 (1) | 2025.02.11 |
혼공학습단 13기- 3주차 (0) | 2025.02.04 |
혼공학습단 13기- 2주차 (0) | 2025.02.04 |