Bit의 개발다이어리
article thumbnail

드디어 마지막 주차!!! 6주차까지 끝났다니 믿겨지지 않네요 ㅠ 6주차까지 달린 혼공족장님과 혼공단들 모두 수고하셨습니다!

Chapter 14 가상 메모리

메모리에서 사용하지 않는 프로세스(대기, 오랫동안 사용x)를 스왑 영역에 내보내는 것 -> 스와핑swapping

스왑아웃(스왑영역으로) <-> 스왑인(다시 메모리로. 이전과 다른 주소에 적재될 수 있습니다.)

 

* 연속 메모리 할당 방식 : 사용자 공간에 연속적으로 배치 -> 외부 단편화 external fragmentation 문제 내포!(그 공간보다 큰 프로세스를 적재하기 어려운 상황(낭비)) -> 압축 companction(빈 공간모으기. 하던 일을 중지하고 오버헤드 야기하고 명확하지 않습니다.) -> 가상 메모리 기법, 페이징 기법이 그 대안!

최초 적합first fit : 빈 공간 검색 중 발견 시 배치

최적 적합best fit : 가장 작은 공간에 배치

최악 적합worst fit : 가장 넓은 공간에 배치

가상 메모리virtual memory : 실행하고자 하는 프로그램 일부만 메모리에 적재

페이징 : 가상 메모리의 기법. 페이지를 프레임에 할당하는 기법.

페이지 : 프로세스 논리 주소 공간을 일정한 단위로 자른 것.

프레임 : 메모리 물리 주소 공간을 일정한 단위로 자른 것.(페이지와 동일 크기)

페이지 아웃(스왑 아웃)<->페이지 인(스왑 인)

불연속적이므로, 페이지 테이블로 어떤 페이지가 어떤 프레임에 할당되었는지 확인할 수 있습니다. 따라서, CPU가 논리 주소를 볼 때 연속적이게 되므로 순차적으로 실행하면 됩니다.

 

페이지 테이블 베이스 레지스터 Page Table Base Register : 각 프로세스의 페이지 테이블이 적재된 주소

1. 프로세스 실행 -> 2. PTBR이 페이지 테이블을 가리킴 -> 3. CPU가 적재되된 프레임을 알게 됨.

 

1)페이지 테이블을 보기, 2)프레임에 접근하기로 인해 두번 메모리 접근하는 문제를 해결하기 위해 TLB translation lookaside buffer 라는 페이지 테이블의 캐시 메모리가 있습니다. 페이지 테이블의 일부를 저장하며, 페이지 번호가 있으면 TLB 히트, 없으면 TLB 미스입니다.

 

* 페이징 시스템의 기본 논리 주소. 페이지 테이블로 변환하여 확인!

페이지 번호(접근 페이지 번호)   |   변위(얼만큼 떨어져 있는 지)

 

페이지 테이블 엔트리 PTE : 페이지 테이블의 각 행

* 접근 가능? 유효 비트 1 ( 접근 가능하지 않은 유효 비트 0에 접근하려고 할 때, 페이지 폴트라는 예외가 발생합니다.)

* 보호 비트

읽기 가능? r 1

쓰기 가능? w 1

실행 가능? x 1

* 접근(읽거나 쓴)한 적 있음? 참조 비트 1

* 변경한 적 있음? 수정 비트 1 (수정된 적이 있는 페이지가 스왑 아웃될 경우 변경값을 보조기억장치에 기록하는 작업 필요.)

 

요구 페이징 demand paging : 처음부터 모든 페이지 적재하지 않고 필요한 페이지만 메모리에 적재하는 것.

(+ 순수 요구 페이징은 적재하지 않은 채 무작정 실행하는 것)

 

페이지 참조열 page reference string : 연속된 페이지를 생략한 페이지열. 페이지 폴트 횟수를 알 수 있습니다.

FIFO 페이지 교체 알고리즘 : 메모리에 먼저 올라온 페이지부터 쫓아내는 알고리즘

2차 기회 페이지 교체 알고리즘 : FIFO에서 한 번 더 기회를 주는 방식

최적 페이지 교체 알고리즘 : 사용 빈도가 가장 낮을 페이지를 교체(예측이 어려우므로 구현이 어려워 성능평가로 사용됩니다.)

LRU 페이지 교체 알고리즘 Least Recently Used: 오랫동안 사용되지 않을x 않은o 페이지를 교체하는 알고리즘

 

스래싱 thrashing : 프로세스 실제 실행 시간 < 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제

스래싱을 그래프로 표현했을 때, 가로축이 멀티 프로그래밍의 정도(동시 실행 프로세스 수), 세로축이 CPU 이용률입니다.

동시 실행 프로세스 수가 늘어날 수록, CPU이용률도 점차 늘어나다가 필요 이상이 되면 사용할 수 있는 프레임 수가 적어 페이지 폴트의 발생률이 빈번해집니다. 그에 따라 CPU이용률도 낮아지고 성능이 저해됩니다. -> 따라서, 최소한의 프레임 수를 파악하고 적절하게 할당해야 합니다.

* 정적 할당 방식(단순 프로세스 크기와 물리 메모리 크기만 고려)

균등 할당 equal allocation : 균등하게 프레임 할당

비례 할당 proportional allocation : 프로세스 크기에 따라 프레임 할당

* 동적 할당 방식(다음 두 방식을 통해 결정하면, 프로세스 실행을 보고 할당할 프레임을 결정합니다.)

작업 집합 모델 working set model : 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 작업 집합을 해당 크기만큼만 프레임 할당

페이지 폴트 빈도PPF 기반 프레임 할당 방식 : 페이지 폴트율에 상한선과 하한선을 정하고 해당 범위에서만 프레임을 할당하는 것.

 

Chapter 15 파일 시스템

파일 : 보조기억장치에 저장된 관련 정보(이름, 실행 정보, 부가 정보(속성attribute 또는 메타데이터metadata))의 집합. 

확장자 extension : 파일유형을 알리기 위해 가장 많이 사용하며, 파일종류가 무엇인지 운영체제에게 알려주는 것입니다.

 

1단계 디렉터리 single-level directory : 모든 파일이 하나의 디렉터리 안에 있습니다.

트리 구조 디렉터리 tree-structured directory : 루트 디렉터리(/)와 그 아래의 여러 서브 디렉터리로 이루어진 구조. 경로가 있습니다.

디렉터리도 파일이므로 디렉터리 테이블로 보조기억 장치에 저장됩니다.

.. 상위

. 현재

 

파티셔닝partitioning : 저장 장치의 논리적인 영역을 구획하는 작업

파티션 : 나누어진 영역 하나하나

포매팅 formatting : 포맷하는 작업. 파일 시스템 설정방법 결정 및 새 데이터 쓸 준비 작업.

 

파일과 디렉터리를 블록 단위로 읽고 쓰며, 크기가 크면 여러 블록에 걸쳐서 저장됩니다.

연속 할당 : 가장 단순하지만 외부 단편화를 야기할 수 있습니다.

연결 할당 : 연결 리스트 형태로 블록의 일부에 다음 블록 주소를 저장하는 형태. 첫 번째부터 하나씩 읽어야 하며 오류가 발생하면 블록에 접근할 수 없다는 단점이 있습니다.

색인 할당 : 색인 블록이라는 하나의 블록에 모든 블록 주소를 저장하는 형태. ex) 유닉스 파일 시스템

 

* 파일 시스템

- FAT 파일 시스템 : 파일 할당 테이블을 통해 블록 주소들을 모아 테이블로 관리. ex) USB, SD 카드

- 유닉스 파일 시스템 : 색인 블록 i-node에 파일 속성 정보를 표현합니다. (12개는 직접 블록 주소 저장, 모자라면 13번째에 단일 간접 블록 주소 저장, 또 모자라면 14번째 주소에 이중 간접 블록 주소 저장, 또 모자라면 15번째 주소에 삼중 간접 블록 주소 저장)

 

이외에도 윈도우의 NTFS(NT 파일 시스템), 리눅스의 ext 파일 시스템 등이 있습니다.

숙제

 

profile

Bit의 개발다이어리

@bit비트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!