[혼공학습단 9기] 혼공컴운: 6주차

오늘은·2023년 2월 19일
0

혼공학습단

목록 보기
13/14

기본 미션

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

선택 미션

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

Chapter 14 가상 메모리

14-1 연속 메모리 할당

스와핑

메모리에 적재되었으나 실행되지 않는 프로세스를 임시로 보조기억장치 일부 영역(스왑 영역)으로 이동.(스왑 아웃)
생겨난 빈 공간에 또 다른 프로세스를 이동시켜(스왑 인) 실행하는 것.
스왑 아웃된 프로세스가 다시 스왑 인 될 때는 물리 주소가 변경될 수 있다.

스와핑을 통해 프로세스들이 요구하는 공간의 크기가 실제 메모리 크기보다 큰 경우에도 동시 실행이 가능하다.

메모리 할당

프로세스는 메모리 내의 빈 공간에 적재되어야 한다. 그렇다면 빈 공간이 많아지면 어디에 할당해야 하는가

최초 적합

운영체제가 빈 공간을 순서대로 검색하여 적재가능한 공간 발생시 배치. (검색 최소화, 빠른 할당 가능)

최적 적합

빈 공간을 순회하여 적재 가능한 가장 작은 공간에 배치.

최악 적합

빈 공간을 순회하여 적재 가능한 가장 큰 공간에 배치.

외부 단편화

프로세스들이 메모리에 연속적으로 할당되는 환경 중 프로세스들이 실행/종료를 반복. 메모리 사이에 빈 공간이 생겨나지만 큰 프로세스는 적재할 수 없게된다. ➡ 메모리 낭비 발생
흩어진 빈 공간을 모아 메모리 내 프로세스를 재배치 하여 빈 공간을 하나의 큰 공간으로 만드는 압축 방식도 가능. 단, 재배치 실행 중 시스템 중단 문제 발생

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

페이징이란

메모리와 프로세스를 일정 단위로 잘라 불연속적으로 할당 가능하다면 외부 단편화를 방지할 수 있다.
프로세스의 논리 주소 공간을 페이지라는 단위로 자르고 물리 주소 공간을 프레임으로 자른다 (단, 페이지와 프레임은 같은 크기일 것) 이후 페이지를 프레임에 할당한다.

프로세스가 아닌 페이지 단위의 스왑 인/아웃 발생.
페이징 시스템에서는 페이지 인/아웃 이라 부르게 된다.

페이지 테이블

프로세스가 불연속적으로 배치될 경우 순차적으로 실행할 수 없는 것. 이를 해결하기 위해 논리 주소에서 연속적으로 배치되도록 페이지 테이블을 이용하게 된다.
페이지 번호와 프레임 번호를 짝지어 어디에 할당되었는지를 알 수 있게 한다.

내부 단편화
모든 프로세스가 페이지 크기에 맞게 잘리는 것이 아님. 페이지 크기의 공간이 남을 경우 내부 단편화 라고 부른다.
페이지 크기를 줄일 경우 ➡ 테이지 테이블 크기가 커짐

프로세스마다 프로세스 테이블을 갖고, 프로세스의 페이지 테이블은 메모리에 적재된다.
CPU내 페이지 테이블 베이스 레지스터 (PTBR)는 각 프로세스의 테이블이 적재된 주소를 가리킨다.

문제점: 페이지 테이블을 메모리에 둘 경우 페이지 테이블, 프레임 두 번의 접근이 발생한다.
➡ TLB라는 페이지 테이블의 캐시 메모리를 둔다.
논리 주소에 대한 페이지 번호가 있다면 TLB 히트. 없다면 TLB 미스 라고 한다. TLB 미스일 경우 메모리 내 페이지 테이블에 접근하게 된다.

페이징에서의 주소 변환

하나의 페이지 혹은 프레임은 여러 주소를 포괄한다. 접근하기 위해
1. 어떤 페이지/프레임에 접근할지
2.접근하려는 주소는 얼마나 떨어져있는지
2가지 정보가 필요하다.

모든 논리 주소는 기본적으로 페이지 정보(프레임 위치 할당을 알 수 있음)와 변위(프레임의 시작으로 부터 떨어진 거리를 알 수 있음)로 이뤄진다.
이를 통해 물리 주소를 변환한다. <프레임 번호, 변위>

페이지 테이블 엔트리

페이지 테이블의 각 행을 의미하며 페이지, 프레임번호 이외에도 여러 값을 갖는다.

유효비트

현재 해당 페이지에 접근가능한지 여부를 반환해줌. 페이징에도 스와핑이 가능하여 메모리에 적재되었는지 여부를 알려준다. (비트로 표시하여 0, 1을 반환)
접근 불가 페이지 접근시 페이지 폴트 라는 예외가 발생.

  • 페이지 폴트 처리 과정
  1. CPU는 기존의 작업 내역을 백업
  2. 페이지 폴트 처리 루틴을 실행
  3. 페이지 처리 루틴은 원하는 페이지를 메모리로 가져와 유효비트를 1로 변경
  4. 페이지 폴트 처리시 CPU는 해당 페이지에 접근 가능

보호 비트

페이지 보호 기능을 위해 존재하는 비트. 읽고 쓰기가 가능한지 파악. 0: 읽기전용 1: 읽고, 쓰기 가능.
r, w, x의 조합으로 사용할 수도 있다. (읽기, 쓰기, 실행)

참조 비트

CPU가 이 페이지에 접근한 적 있는지 여부를 나타냄.
CPU가 읽거나 쓴 페이지는 1. 적재 이후 한번도 읽거나 쓰지 않으면 0 유지

수정 비트

해당 페이지를 쓴적 있는지 수정여부를 알려줌. (더티 비트 라고도 불림)
1이라면 변경 이력이 있는 페이지. 0은 변경된 적 없는 페이지 (접근x. 읽기만 함)

사용 이유: 메모리에서 사라질 때, 보조기억장치에 쓰기 작업 수행여부 파악을 위함.
1일 경우 페이지의 내용과 메모리에 저장된 페이지의 내용은 다른 값을 가지며, 스왑 아웃될 경우 변경 값을 보조기억장치에 기록되는 작업이 수행된다.
➡ 수행 판단을 위해 페이지 테이블 엔트리에 수정 비트를 두는 것.

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

요구 페이징

처음부터 모든 페이지를 적재하지 않고 필요한 페이지만 메모리에 적재하는 기법.
1. CPU가 특정 페이지에 접근하는 명령어를 실행
2. 해당 페이지가 현재 메모리에 있을 경우 (유효비트 1) CPU는 페이지가 적재된 프레임에 접근
3. 유효비트가 0일 경우 페이지 폴트 발생.
4. 페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재. 유효비트를 1로 변경
(다시 1번을 수행)

모든 페이지를 메모리에 적재하지 않고 프로세스 첫 명령어 실행시첫 명령어 실행시부터 페이지 폴트 발생. 적재된 이후 페이지 폴트 발생 빈도가 낮아진다.
➡ 순수 요구 페이징

안정적으로 작동하기 위해 해결할 포인트
1. 페이지 교체
메모리가 가득 차 페이지를 내보낼 경우 어떤 페이지를 내보낼지 파악할 것 : 페이지 교체 알고리즘

페이지 폴트 횟수를 파악. (페이지 참조열 참고) 연속된 페이지를 생략하여 페이지 참조열을 파악한다. (중복 페이지는 페이지 폴트를 발생시키지 않음)

페이지 교체 알고리즘

  • FIFO 페이지 교체 알고리즘: 가장 오래된 페이지부터 내보낸다.
  • 최적 페이지 교체 알고리즘: CPU에 의해 참조되는 횟수를 고려하여 교체. (단 앞으로 사용 여부를 미리 알 수 없어 실제 구현은 어려움)
  • LRU 페이지 교체 알고리즘: 오랫동안 사용되지 않을 페이지 교체
  1. 프레임 할당
    프레임 부족시 페이지 폴트가 발생하기 때문. 프로세스에서 실제 실행 시간 > 페이징 일 경우 성능저하 발생으로 스레싱 이라고 말한다.
    프로세스가 필요로 하는 최소 프레임 수를 보장하지 않을 때 발생한다.

프레임 할당 방식

  • 균등 할당: 프로세스와 프레임을 같은 수로 할당하는 것. (프로세스마다 크기가 달라 비효율적)

  • 비례 할당: 프로세스의 크기에 따라 프레임 할당량을 차등분배하는 것.
    ➡ 이들은 실행과정을 고려하지 않고 크기만 고려한 정적 할당 방식이라 불린다.

  • 작업 집합 모델, 페이지 폴트 빈도
    ➡ 실행을 보며 할당 프레임 수를 결정하는 동적 할당 방식

실행 프로세스가 일정 시간동안 참조한 페이지의 집합을 작업 집합이라 부름.

Chapter 15 파일 시스템

15-1 파일과 디렉터리

파일

하드 디스크나 보조기억장치에 저장된 정보의 집합. 의미있고 관련된 정보를 모은 논리적 단위

속성(메타데이터): 이름, 실행정보, 파일 관련 부가정보
파일 속성: 형식, 위치, 크기 등 파일과 관련된 정보
파일 유형: 운영체제가 인식하는 파일 종류
확장자: 파일을 실행할 유형을 이름뒤에 붙여 파일 종류를 운영체제에가 알려줌

디렉터리

폴더 라고도 불리며 파일을 관리하기 위해 사용한다.
과거에는 하나의 디렉터리만 존재하여 모든 파일은 디렉터리 아래에 위치하였다. ➡ 1단계 디렉터리
현재에는 1단계 디렉터리로는 많은 파일이 졵하여 여러 계층으로 관리한다. ➡ 트리 구조 디렉터리
트리 구조 디렉터리는 최상위 디렉터리와 서브 디렉터리가 존재한다. 최상위 디렉터리는 루트 디렉터리로 표시 /로 표현한다.

경로: 디렉터리를 이용해 파일 위치, 파일 이름을 특정짓는다.

  • 절대 경로: 루트 디렉터리로부터 시작하는 경로 /로 구분하여 작성 가능
  • 상대 경로: 현재 디렉터리로부터 시작하는 경로

15-2 파일 시스템

파티셔닝과 포매팅

파티셔닝: 저장 장치의 논리적 영역을 구역을 나누는 작업
파티션: 파티셔닝 작업을 통해 나눠진 구역
포매팅: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 지 결정, 새로운 데이터를 쓸 준비를 하는 작업. ➡ 포매팅시 파일 시스템이 결정

파일 할당 방법

파일과 디렉터리를 블록 단위로 읽고 쓰며 하나의 파일을 보조기억장치에 저장될 때 하나 이상의 블록에 걸쳐 저장한다.

  • 연속 할당: 보조기억장치 내 연속적인 블록에 파일을 할당. (외부 단편화를 발생시킬 수 있음)
  • 연결 할당: 블록 일부에 다음 블록의 주소를 저장.

연결 할당 단점
1. 첫 블록부터 하나씩 차례로 읽어 속도가 느리며 비효율적이다.
2. 블록 내 데이터, 다음 블록 주소가 포함되어 고장이나 오류로 인해 하나라도 문제 발생시 이후 블록에 접근할 수 없다.

색인 할당: 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리. 파일 시스템에는 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시한다.

파일 시스템 알아보기

저용량 저장 장치에는 FAT 파일 시스템을 유닉스 계열 운영체제에서는 유닉스 파일 시스템을 사용한다. (윈도우 - NTFS, 리눅스 - ext 파일 시스템)
FAT 파일 시스템: 각 블록에 포함된 다음 블록 주소를 모아 테이블 형태로 관리.
유닉스 파일 시스템: 색인 블록(i-node)을 기반으로 데이터 블록을 찾는 방식.

  • 블록 주소 중 12개에는 직접 블록 주소를 저장.
  • 위 내용으로 충분하지 않다면 13번째 주소에 단일 간접 블록 주소를 저장
    (* 단일 간접 블록: 파일 데이터가 저장된 블록이 아닌 파일 데이터를 저장한 블록 주소가 저장된 블록)
  • 위 내용으로 충분하지 않다면 14번째 주소에 이중 간접 블록 주소를 저장
    (* 이중 간접 블록: 데이터 블록 주소를 저장하는 블록)
  • 위 내용으로 충분하지 않다면 15번째 주소에 삼중 간접 블록 주소를 저장
    (* 삼중 간접 블록: 이중 간접 블록 주소를 저장한 블록)
profile
게으르지만 기록은 하고싶어!

0개의 댓글