혼자 공부하는 컴퓨터 구조+운영체제 (6)

Erdos·2024년 8월 18일
1

감상

목록 보기
35/42
post-thumbnail

저자 github

6주차

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

14 가상메모리


14-1 연속 메모리 할당

  • 프로세스에 연속적인 메모리 공간을 할당하는 방식

스와핑(swapping)

  • 메모리에서 사용되지 않는 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리로 들여보내는 메모리 관리 기법
  • 스왑 영역(swap space): 프로세스들이 쫓겨나는 보조 기억장치의 일부 영역
  • swap-out: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
  • swap-in: 스왑 영역에 있던 프로세스가 다시 메모리에 옮겨오는 것. 스왑 아웃 되었던 프로세스가 다시 스왑 인 될 때, 전의 물리 주소와 다른 주소에 적재될 수 있다.
  • 스와핑을 이용해 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들 동시 실행 가능

스왑 영역 확인하기

# free -h

메모리 할당

  1. 최초 적합(first fit): 프로세스가 적재될 수 있는 공간을 발견하는 즉시 메모리를 할당하는 방식. 검색 최소화/ 빠른 할당
  2. 최적 적합(best fit): 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식
  3. 최악 접학(worst fit): 프로세스가 적재될 수 잇는 가장 큰 공간에 프로세스를 배치하는 방식

연속 메모리 할당의 문제 1. 외부 단편화

  • 연속 메모리 할당은 문제가 있다. 어떤? -> 외부 단편화(external fragmentation)
  • 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이에 빈 공간이 생긴다. 프로세스를 새로 할당하기 어려운 작은 메모리 공간들 때문에, 메모리 낭비 현상이 발생한다.
  • 해결방안
    • 압축(compaction): 메모 조각 모음. 흩어져 있는 빈 공간들을 하나로 모음. 하나의 큰 빈 공간으로 만든다. -> [문제점] 시스템이 하던 일을 중지해야 함. 메모리의 내용을 옮기는 과정 중에 오버 헤드 야기.### 페이징에서의 주소 변환

연속 메모리 할당의 문제 2.

물리 메모리보다 큰 프로세스를 실행할 수 없다.
(스와핑을 통해 실제 메모리보다 큰 여러 프로세스를 실행하는 것과 다른 부분)

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

  • 가상 메모리(virtual memory): 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술
  • 이걸 가능하게 하는 것이 페이징세그멘테이션이다.

페이징이란

  • paging
  • 프로세스의 논리 주소 공간을 페이지(page)라는 일정한 단위로 자르고,
    메모리 물리 주소 공간을 frame이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법
  • 페이지 아웃: 페이징 시스템에서의 스왑 아웃
  • 페이지 인: 페이징 시스템에서의 스왑 인
  • 장점:
    • 외부 단편화 문제 해결
    • 프로세스 간의 페이지 공유

페이지 테이블


출처: wiki

  • 페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표
  • 물리 주소상 프로세스들이 분산되어 있더라도, CPU 입장에서 논리 주소는 연속적으로 보일 수 있다.
  • PRBR(Page Table Base Register): 페이지 테이블 베이스 레지스터, 각 프로세스의 페이지 테이블이 적재된 주소를 가리키고 있는 레지스터
  • TLB(Translation Lookaside Buffer)
    • 페이지 테이블을 메모리에 두면, 보기 위해/ 알게 된 프레임 접근을 위한 접근 시간이 2배 이상 증가하는 문제점이 있다. 이를 해결하기 위해 TLB
    • 페이지 테이블의 캐시 메모리
    • TLB hit: cpu가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우
    • TLB miss: 페이지 번호가 TLB에 없어서 메모리 내 페이지 테이블에 접근하는 경우

페이징에서의 주소 변환

  • 논리 주소 그림
  • 페이지 번호: 접근하고자 하는 페이지 번호
  • 변위: 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지 알기 위한 정보

페이지 테이블 엔트리(PTE: Page Table Entry)

유효 비트(valid bit): 현재 해당 페이지에 접근 가능한 지 여부를 알려준다.

보호 비트(protection bit): 페이지 보호 기능을 위해 존재하는 비트

해당 페이지가 읽고 쓰기가 가능한 페이지인지 나타낼 수 있다.

  • 읽기만 가능 0, 읽고 쓰기 가능하면 1
  • 예컨대, 보호 비트가 100이면 읽기만 가능, 111이면 읽고 쓰고 실행 가능

참조 비트(reference bit): CPU가 이 페이지에 접근한 적이 있는 지 여부를 나타낸다.

  • 적재 이후 사용했으면 1, 한 번도 사용한 적 없으면 0

수정 비트(modified bit): 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부

  • dirty bit라고도 부름
  • 1이면 변경된 적 있음, 0이면 없음

😯 그림을 봐도 잘 모르겠어요 ㅋㅋ

계층적 페이징

  • 계층적 페이지(hierarchical paging): 페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식, 다단계 페이지 테이블(multilevel page table) 기법이라고도 부름
  • 계층적 페이지 논리 주소

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

요구 페이징(demand paging)

  • 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법
    1) cpu가 특정 페이지에 접근하는 명령어를 실행
    2) 해당 페이지가 현재 메모리에 있다면(유효 비트 1) cpu는 페이지가 적재된 프레임에 접근
    3) 해당 페이지가 현재 메모리에 없다면(유효 비트 0) 페이지 폴트 발생
    4) 페이지 폴트 처리 루틴은 해당 페이지를 메모리에 적재하고 유효 비트를 1로 설정
    5) 1번 수행

  • 페이지 교체

  • 프레임 할당

  • 페이지 교체 알고리즘: 쫓아낼 페이지를 결정하는 방법

페이지 교체 알고리즘

  • 페이지 폴트를 가장 적게 일으키는 알고리즘을 좋은 알고리즘으로 평가
  • 페이지 폴트 횟수
  • 페이지 참고열을 통해 알 수 있음

FIFO 페이지 교체 알고리즘(First-In-First-One Page Replacement Algorithm):

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

2차 기회 페이지 교체 알고리즘(second chance page replacement algorithm):

FIFO 페이지 교체 알고리즘의 변형. 기회를 한 번 더 줌.
참조 비트가 1인 경우 당장 내쫓지 않는다.

최적 페이지 교체 알고리즘(optimal page replacement algorithm)

  • CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘. 사용 빈도가 가장 낮은 페이지를 교체
  • 운영체제에 사용하기보다는(현실적으로 예측 불가) 다른 페이지 교체 알고리즘의 이론상 성능을 평가하기 위한 목적.

LRU 페이지 교체 알고리즘(LRU: Least Recently Used Page Replacement Algorithm)

  • 최근에 사용되지 않은 페이지는 앞으로도 사용되지 않을 것

🫡 외우려고 하지말고, 왜 사용하는지, 대표적인 건 무엇인지 아는 정도로 보기

스래싱과 프레임 할당

  • 페이지 폴트는 프로세스가 사용할 수 있는 프레임 수가 적어도 자주 발생한다.(더 근본적인 이유)

  • 스레싱(thrashing)

    • 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제
    • 근본적인 원인: 각 프로세스가 필요로 하는 최소한의 프레임의 수가 보장되지 않기 떄문에 발생.
  • 멀티프로그래밍의 정도(degree of multiprogramming): 메모리에서 동시 실행되는 프로세스의 수

1.프레임 할당 방식

  • 정적 할당 방식

    • 균등 할당(equal allocation)
    • 비례 할당(proportional allocation)
  • 동적 할당 방식(프로세스의 실행을 보고 할당하는 방식)

    • 작업 집합 모델(working set model)
    • 페이지 폴트 빈도(PFF: Page-Fault Frequency)

파일 시스템


파일과 디렉터리

파일

  • 파일 유형: 확장자(extension)을 이용해 운영체제에게 파일 유형을 알려준다.

디렉토리

  • 절대 경로: 루트부터 시작하는 경로
  • 상대 경로: 현재 디렉터리부터 시작하는 경로

파일 시스템

파티셔닝과 포매팅

  • partitioning : 저장 장치의 논리적인 영역을 구획하는 작업
  • formmatting: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고, 새로운 데이터를 쓸 준비를 하는 작업

파일 할당 방법

1.연속 할당(cotiguous allocation)

  • 구현이 단순하지만, 외부 단편화를 야기한다.
  • 연결 할당(linked allocation): 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식. 파일을 이루는 데이터를 연결 리스트로 관리. C언어의 포인터와 같은 개념
  • 단점:
    • 하나씩 차례대로 읽어야 한다.(임의 접근 속도가 느림)
    • 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없음.

2.불연속 할당

  • 연결 할당
  • 색인 할당(indexed allocation): 파일의 모든 주소를 색인 블록에 모아 관리하는 방식

파일 시스템 살펴보기

1.FAT 파일 시스템
에서의 디렉터리들은 다음 형식으로 블록에 저장된다고 한다.
업로드중..

2.유닉스 파일 시스템

  • 색인 할당, 유닉스 파일 시스템에서 색인 블록을 i-node라고 부른다.

참고

  • 저널링 파일 시스템: 시스템 크래시가 발생한 직후에 로그 영역을 읽어 크래시가 발생한 당시 어떤 작업을 실행 중이었는지 알아낸 다음 해당 작업을 완료. MS NT 파일 시스템, 리눅스의 ext3, ext4 파일 시스템을 포함해 대부분의 파일 시스템이 저널링 기능을 지원한다.
  • 마운트: 한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입시키는 작업

숙제


숙제 1: 400의 확인 문제 1번 풀고 인증하기

1) 최초 적합: 최초로 발견한 적제 가능한 빈 공간에 프로세스를 배치하는 방식
2) 최악 적합: 프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치하는 방식
3) 최적 적합: 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

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

3번
이해가 잘 안되서 추가적으로 본 블로그

🦖 어렵습니다.... 책 여러번 읽기...

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글