[혼공학습단 9기] 혼자 공부하는 컴퓨터 구조+운영체제 : 6주차

김세린·2023년 2월 19일
0
post-thumbnail

14. 가상 메모리

14-1. 연속 메모리 할당

스와핑

  • 스와핑
    • 메모리에 적재된 프로세스들 중 현재 실행되지 않는 프로세스를 임시로 보조 기억 장치 일부 영역으로 쫒아내고, 그렇게 해서 생긴 메모리 상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
    • 스왑 영역
      • 프로세스들이 쫒겨나는 보조기억장치의 일부 영역
    • 스왑아웃
      • 현재 실행되지 않는 프로세스가 메모리에서 스왑영역으로 옮겨지는 것
    • 스왑 인
      • 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것
    • 스왑 아웃된 프로세스가 다시 스왑 인 될때는 스왑 아웃 되기 전의 물리 주소와는 다른 주소에 적재될 수 있다.

메모리 할당

비어있는 메모리 공간에 프로세스를 연속적으로 할당하는 방식

  • 최초 적합
    • 운영 체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식
    • 프로세스가 적재될 수 있는 공간을 발겮나느 즉시 메모리를 할당하는 방식
    • 검색을 최소화 할 수 있고 결과적으로 빠른 할당이 가능하다.
  • 최적 적합
    • 운영 체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식
  • 최악 적합
    • 운영 체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식

외부 단편화

  • 프로세스를 할당하기 어려울 만큼 자긍ㄴ 메모리 공간들로 인해 메모리가 낭비되는 현상을 의미
  • 해결 방안
    • 압축(메모리 조각 모음)
      • 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 ㅎ방식
      • 메모리 내에 저장된 프로세스를 적당히 재배치시켜 여기저기 흩어져 있는 작은 빈 공간들을 하나의 큰 빈공간으로 만드는 것
      • 단점
        • 작은 빈 공간들을 하나로 모으는 동안 시스템은 하던 일을 중지해야 한다.
        • 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기한다.
        • 어떤 프로세스를 어떻게 움직여야 오버헤드를 최소화하며 압축할 수 있는지에 대한 명확한 방법을 경정하기 어렵다.
    • 페이징 기법
      • (14-2 참고)

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

페이징이란

  • 가상 메모리
    • 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술
    • 외부 단편화 문제 해결 가능
    • 가상 메모리 관리 기법
      • 페이징
        • 프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고, 메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
        • 페이지 아웃
          • 페이징 시스템에서의 스왑 아웃
        • 페이지 인
          • 페이징 시스템에서의 스왑 인
        • 한 프로세스를 실행하기 위해 프로세스 전체가 메모리에 적재될 필요가 없다, 프로세스를 이루는 페이지 중 실행에 필요한 일부 페이지만을 메모리에 적재하고, 당장 실행에 필요하지 않는 페이지들은 보조 기억 장체에 남겨둘 수 있다.
      • 세그멘테이션

페이지 테이블

  • 페이지 테이블
    • 프로세스가 메모리에 불연속적으로 배치되면 CPU입장에서 ‘다음에 실행할 명령어 위치’를 찾기 어렵다.
    • 이를 해결하기 위해 페이징 시스템은 프로세스가 비록 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 하는 것이 페이지 테이블이다.
    • CPU로 하여금 페이지 번호만 보고 해당 페이지가 적재된 프레임을 찾을 수 있게 한다.
    • 물리 주소 상에는 프로세스들이 분산되어 저장되어있더라도 CPU입장에서 바라본 논리 주소는 연속적으로 보일 수 있다.
    • 단점
      • 메모리 접근 시간이 2배로 늘어난다.
      • 해결 방법
        • TLB : 페이지 테이블의 캐시 메모리
          • TLB히트 : CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우
          • TLB미스 : 페이지 번호가 TLV에 없을 경우

페이징에서의 주소 변환

  • 특정 주소에 접근하기 위해 필요한 정보
    1. 어떤 페이지 혹은 프레임에 접근하고 싶은지
    2. 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지
  • 페이징 시스템에서는 모든 논리 주소가 기본적으로 페이지 번호와 변위로 이루어져 있다.

페이지 테이블 엔트리

  • 페이지 테이블 엔트리
    • 페이지 테이블의 각각의 행들
    • 페이지 테이블 엔트리에 포함되는 정보
      • 유효 비트
        • 현재 해당 페이지에 접근 가능한지 여부를 알려준다.
        • 페이지 테이블 엔트리에서 프레임 번호 다음으로 중요한 정보
        • CPU가 유효비트가 0인 메모리에 적재되엉 있지 않는 페이지로 접근하려고 하면 페이지 폴트라는 예외가 발생한다.
        • CPU가 페이지 폴트를 처리하는 과정을 하드웨어 인터럽트를 처리하는 과정과 유사하다.
          1. CPU는 기존의 작업 내역을 백업한다.
          2. 페이지 폴트 처리 루틴을 실행한다.
          3. 페이지 처리 루틴은 원하는 페이지를메모리로 가져온 뒤 유효 비트를 1로 변경해준다.
          4. 페이지 폴트를 처리했다면 이제 CPU는 해당 페이지에 접근할 수 있게된다.
      • 보호 비트
        • 페이지 보호 기능을 위해 존재한느 비트
        • 이를 통해 해당 페이지가 읽고 쓰기가 모두 가능한 페이지인지, 혹은 읽기만 가능한 페이지인지를 나타낼 수 있다.
          • 0일 경우 : 읽기만 가능한 페이지
          • 1일 경우 : 읽고 쓰기가 모두 가능한 페이지
      • 참조 비트
        • CPU가 이 페이지에 접근한 적이 있는지 여부를 나타낸다.
      • 수정 비트(더티비트)
        • 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부를 알려준다.

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

요구 페이지

  • 요구 페이지
    • 프로세스에 메모리를 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법
    • 기본적인 양상
      1. CPU가 특정 페이지에 접근하는 명령어를 실행한다.
      2. 해당 페이지가 현재 메모리에 있을 경우 CPU는 페이지가 적재된 프레임에 접근한다.
      3. 해당 페이지가 현재 메모리에 없을 경우 페이지 폴트가 발생한다.
      4. 페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재하고 유효 비트를 1로 설정한다.
      5. 다시 1번을 수행한다.
    • 요구 페이징 시스템이 안정적으로 작동하기 위해 해결되어야 하는 것
      1. 페이지 교체
        • 페이지 교체 알고리즘 : 쫒아낼 페이지를 경정하는 방법
      2. 프레임 할당
  • 순수 요구 페이징 기법
    • 아무런 페이지도 메모리에 적재하지 않은 채 무작정 실행부터 하는 것

페이지 교체 알고리즘

  • 좋은 페이지 교체 알고리즘 : 페이지 폴트를 가장 적게 일으키는 알고리즘
    • 페이지 참조열을 통해 페이지 폴트 횟수를 알 수 있다.
    • CPU가 참조한 페이지들 중 연속된 페이지를 생략한 페이지열
      • 연속된 페이지를 생략하는 이유는 중복된 페이지를 참조하는 행위는 페이지 폴트를 발생시키지 않기 때문이다.
  • 대표적인 페이지 교체 알고리즘
    • FIFO 페이지 교체 알고리즘
      • 가장 단순한 방법
      • 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식
      • 단점
        • 프로그램 실행 초기에 적재된 페이지 속에는 프로그램 실행 초기에 잠깐 실행되다가 이후에 사용되지 않을 페이지도 있겠지만, 프로그램 실행 내내 사용될 내용을 포함하고 있을 수도 있다.
    • 최적 페이지 교체 알고리즘
      • CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘
      • 사용빈도가 가장 낮은 페이지를 교체하는 알고리즘
      • 실제 구현이 어렵다.
    • LRU 페이지 교체 알고리즘
      • 가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘

스래싱과 프레임 할당

  • 페이지 폴트가 자주 발생하는 이유에 나쁜 페이지 교체 알고리즘만 있는 것은 아니다. 프로세스가 사용할 수 있는 프레임 수가 적어도 페이지 폴트는 자주 발생한다.
  • 스래싱
    • 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
    • 멀티 프로그래밍의 정도 : 메모리에서 동시에 실행되는 프로세스의 수
    • 발생 근본 원인 : 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되지 않았기 때문
    • 프레임 할당 방식
      • 균등 할당 : 모든 프로세스에 균등하게 프레임을 제공하는 방식
      • 비례 할당 : 프로세스의 크기가 크면 프레임을 많이 할당하고 프로세스 크기가 작으면 프레임을 적게 나눠 주는 방식
      • 프로세스를 실행하는 과정에서 배분할 프레임을 결정하는 방식
        • 작업 집합 모델
          • 작업 집합 : 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합
        • 페이지 폴트 빈도

15. 파일 시스템

15-1. 파일과 디렉터리

파일

  • 파일
    • 하드디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합
    • 의미있고 관련있는 정보를 모은 논리적 단위
    • 파일을 이루는 정보
      • 파일이름
      • 파일을 실행하기 위한 정보
      • 속성(메타데이터) : 파일 관련 부가 정보
    • 파일 속성과 유형
      속성 이름의미
      유형운영체제가 인지하는 파일의 종류(확장자)
      크기현재 크기와 허용 간으한 최대 크기
      보호사용자가 해당 파일을 읽고, 쓰고, 실행할 수 있는지
      생성 날짜파일이 생성된 날짜
      마지막 접근 날짜파일에 마지막으로 접근한 날짜
      마지막 수정 날짜파일이 마지막으로 수정된 날짜
      생성자파일을 생성한 사용자
      소유자파일을 소유한 사용자
      위치파일의 보조 기억 장치상의 현재 위치
    • 파일 유형에 따른 대표 확장자
      파일 유형대표적인 확장자
      실행 파일없는 경우, exe, com, bin
      목적 파일obj, o
      소스 코드 파일c, cpp, cc, java, asm, py
      워드 프로세서 파일xml, rtf, doc, docx
      라이브러리 파일lib, a, so, dll
      멀티 미디어 파일mped, mov, mp3, mp4, avi
      백업/보관 파일rar, zip, tar
    • 파일 연산을 위한 시스템 호출
      • 파일을 다루는 모든 작업은 운영체제에 의해 이뤄집니다. 어떤 응용 프로그램도 임의로 파일을 조작할 수 없으며 파일을 다루려면 운영체제에 부탁해야 합니다.
      • 파일 연산을 위한 시스템 호출
        1. 파일 생성
        2. 파일 삭제
        3. 파일 열기
        4. 파일 닫기
        5. 파일 읽기
        6. 파일 쓰기

디렉터리

  • 디렉터리
    • 파일을 일목요연하게 관리하기 위해 이용한다.
    • 윈도우 운영체제에서는 폴더라고 부른다.
    • 1단계 디렉터리
      • 하나의 디렉터리만 존재
      • 옛날 운영체제 방식
      • 모든 파일이 하나의 디렉터리 아래에 있는것
    • 트리구조 디렉터리
      • 여러 계층을 가진 디렉터리
      • 최상위 디렉터리가 있고 그 아래에 여러 서브 디렉터리가 있을 수 있다.
      • 루트 디렉터리 : 최상위 디렉터리
      • 경로 : 디렉터리를 이용해 파일 위치, 파일 이름을 특정짓는 정보
    • 절대경로와 상대 경로
      • 절대경로 : 루트 디렉터리에서 자기 자신까지 이르는 고유한 경로
      • 상대경로 : 현재 디렉터리부터 시작하는 경로
    • 디렉터리 연산을 위한 시스템 호출의 종류
      1. 디렉터리 생성
      2. 디렉터리 삭제
      3. 디렉터리 열기
      4. 디렉터리 닫기
      5. 디렉터리 읽기
    • 디렌터리 엔트리
      • 많은 운영체제에서는 디렉터리를 그저 특별한 형태의 파일로 간주하며, 디렉터리도 포함된 정보가 조금 특별한 파일이다.
      • 디렉터리는 내부에 해당 디렉터리에 담겨있는 대상과 관련된 정보를 담고 있으며 이 정보는 보통 테이블 형태로 구성된다.
      • 디렉터리 엔트리만 보아도 해당 디렉터리에 무엇이 담겨 있는지 그리고 그것들은 보조 기억장치의 어디에 있는지를 직간접적으로 알 수 있다.

15-2. 파일 시스템

  • 파일 시스템 : 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램

파티셔닝과 포매팅

  • 이제 막 공자에서 생산되어 한번도 사용된 적이 없는 새 하드 디스크 또는 SSD가 있다고 가정했을때 우리는 이 보조기억장치에 곧바로 파일을 생성하거나 저장할수 없다.
  • 왜냐하면 보조기억 장치를 사용하려면 파티션을 나누는 작업(파티셔닝)과 포맷작업(포매팅)을 거쳐야 하기 때문이다.
  • 파티셔닝
    • 저장 장치의 논리적인 영역을 구획하는 작업
    • 칸막이로 영역을 나누는 작업
    • 파티셔닝 작업을 통해 나눠진 영역 하나하나를 파티션이라고 한다.
  • 포매팅
    • 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고관리할것인지를 결정하고 새로운 데이터를 쓸 준비를 하는 작업
    • 어떤 종류의 파일 시스템을 사용할지는 바로 이때 결정된다.
  • 파일 시스템에는 여러 종류가 있고, 파티션마다 다른 파일 시스템을 설정할 수 있다.
  • 포매팅까지 완료하여 파일 시스템을 설정했다면 이제 파일과 디렉터리를 생성할 수 있다.

파일 할당 방법

  • 운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다.
  • 하나의 파일이 보조기억장치에 저장될때는 하나 이상의 블록에 걸쳐 저장된다.
  • 하드 디스크의 가장 작은 저장 단위는 섹터이지만 운영체제는 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 다누이로 파일과 디렉터리를 관리한다.
    • 파일시스템이 모든 섹터를관리하기에는 개수가 너무 많고 크기도 작기 때문이다.
  • 파일을 보조기억장치에 할당하는 방법
    1. 연속 할당
      • 보조기억장치 내 연속적인 블록에 파일을 할당
      • 외부단편화를 야기한다는 치명적인 문제가 있다.
    2. 불연속 할당
      1. 연결 할당
        • 연속 할당의 문제를 해결할 수 있는 방식
          • 각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다름 블록을 가리키는 형태로 할당한느 방식
          • 파일을 이루는 데이터를 연결 리스트로 관리
          • 단점
            1. 반드시 첫번째 블록부터 하나씩 차례대로 읽어야 한다.(임의 접근 속도가 매우 느리다.)
            2. 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근 불가능
      2. 색인 할당
        • 팡리의 모든 블록 주소를 색인 블록이라느 하나의 블록에 모아 관리하는 방힉
        • 색인 블록 안에 파일을 구성하는 데이터 블록 주소가 있으므로 색인 블록만 알면 해당 파일 데이터에 접근할 수 있다.
        • 색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리 파일 이름과 더불어 색인 블록 주소를 명시한다.

파일 시스템 살펴보기

  • FAT 파일 시스템
    • 연결 할당의 단점을 보완한 파일 시스템
    • 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태로 관리하는것
    • 파일 할당 테이블(FAT) : 블록주소들을 관리하는 테이블
  • 유닉스 파일 시스템
    • 색인 할당 기반(색인 블록을 기반으로 파일의 데이터 블록을 찾는 형식)
    • i-node : 유닉스 파일 시스템의 색인 블록
      • 파일 속성 정보와 15개의 블록 주소 저장
      • i-node의 크기는 유한하다.
        • 블록 주소 중 열두개에는 직접 블록 주소를 저장한다.
        • ‘첫째’내용으로 충분하지 않다면 열세번째 주소에 단일 간접블록주소를 저장한다.
          • 단일 간접 블록 : 파일 데이터가 저장된 블록이 아닌 파일 데이터를 저장한 블록 주소가 저장된 블록
        • ‘둘째’내용으로 충분하지 않다면 열네번째 주소에 이중 간접 블록 주소를 저장한다.
          • 이중 간접 블록 : 데이터 블록 주소를 저장하는 블록 주소가 저장된 블록
        • ‘셋째’ 내용으로 충분하지 않다면 열다섯번째 주소에 삼중 간접 주소를 저장한다.
          • 삼중 간접 블록 : 이중 간접 블록 주소가 저장된 블록

MISSION

p400. 확인 문제 1번

<답> 1 - 최초 적합 / 2 - 최악 적합 / 3 - 최적 적합


혼공컴운의 혼공학습이 6주차로 마무리되었습니다.
부족한 부분은 이후 추가적으로 보충할 예정이며, 6주간 좋은 커리큘럼으로 컴퓨터 구조와 운영체제를 공부할 수 있는 좋은 기회였다고 생각합니다.
다음에 또 새로운 주제로 공부하여 공유하도록 하겠습니다.
감사합니다😊

profile
성장하는 신입 개발자🌱

0개의 댓글