SangKins

[혼공컴운] 6주차 Chapter 14 ~ 15 가상메모리,파일 시스템 혼공학습단 갈무리 본문

Dev/혼공단

[혼공컴운] 6주차 Chapter 14 ~ 15 가상메모리,파일 시스템 혼공학습단 갈무리

holdbird 2024. 2. 12. 17:23

 

500 페이지에 달하는 혼공컴운 책을 6주에 걸쳐서 마무리하게 되었습니다.

짧으면 짧고 길면 긴 시간인 6주동안 공부하게 된 건 혼공학습단의 도움이 컸던 것 같습니다

2024 나는리뷰어다 에서 아쉽게 선정되지 못했지만 25년에도 다시 한번 도전해 보려고 합니다.

한빛미디어에서 좋은 책과, 스터디로 좋은 영향을 받은 것 같습니다.

 

 

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

#혼공학습단 #혼공 #혼공컴운

# 진도 기본 미션 선택 미션
1주차
(1/2 ~ 1/7)
Chapter 01 ~ 03 p. 51의 확인 문제 3번, p. 65의 확인 문제 3번 풀고 인증하기 p. 100의 스택과 큐의 개념을 정리하기
2주차
(1/8 ~ 1/14)
Chapter 04 ~ 05 p. 125의 확인 문제 2번, p. 155의 확인 문제 4번 풀고 인증하기 Ch.05(05-1) 코어와 스레드, 멀티 코어와 멀티 스레드의 개념을 정리하기
3주차
(1/15 ~ 1/21)
Chapter 06 ~ 08 p. 185의 확인 문제 3번, p. 205의 확인 문제 1번 풀고 인증하기 Ch.07(07-1) RAID의 정의와 종류를 간단히 정리해 보기
4주차
(1/22 ~ 1/28)
Chapter 09 ~ 11 p. 304의 확인 문제 1번 풀고 인증하기 Ch.11(11-2) 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기
5주차
(1/29 ~ 2/4)
Chapter 12 ~ 13 p. 363의 확인 문제 1번 풀고 인증하기 Ch.12(12-1) 임계 구역, 상호 배제 개념을 정리하기
6주차
(2/5 ~ 2/12)
Chapter 14 ~ 15 p. 400의 확인 문제 1번 풀고 인증하기 Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

 

  • Chapter 14 가상 메모리
  •       14-1 연속 메모리 할당
  •       14-2 페이징을 통한 가상 메모리 관리
  •       14-3 페이지 교체와 프레임 할당
  • Chapter 15 파일 시스템
  •       15-1 파일과 디렉터리
  •       15-2 파일 시스템

 

14. 가상 메모리 

14 - 1 연속 메모리 할당

앞에서는 메모리를 연속적으로 배치하는 상황에 대해서 배웠습니다.

프로세스를 연속적인 메모리 공간을 할당하는 방법 (연속 메모리 할당), 고려해야 할 점, 잠재적인 문제를 알아보겠습니다.

 

스와핑

메모리에 적재된 프로세스들 중 현재 실행되지 않는 프로세스가 있을 수 있다. 이러한 프로세스들을 보조기억장치의 스왑영역으로 이동하고, 메모리의 빈 공간에 다른 프로세스를 적재하여 실행하는 방식. 메모리 최적화라고 생각할 수도 있을 것 같다

 

메모리 밖으로 나가는 것을 스왑 아웃, 메모리로 들어오는 것을 스왑 인 이라고 한다.

 

메모리 할당

프로세스는 메모리 내의 빈공간에 적절히 적재되어야 합니다. 프로세스를 연속적으로 할당하는 방식은

최초 적합, 최적 적합, 최악 적합의 세 가지 방식이 있습니다.

 

최초 적합 : 프로세스의 진입 순서대로 메모리에 적재

 

최적 적합 : 프로세스가 적재될 수 있는 공간중 가장 작은 공간에 적재

 

최악 적합 : 프로세스가 적재될 수 있는 공간중 가장 큰 공간에 적재

 

연속 메모리 할당은 적합한 방법이라고 생각할 수 있지만 모든 프로세스의 크기가 동일하지 않고 시간이 다르다는 것을 생각해 보면

문제점을 발견할 수 있습니다.

 

이러한 상황 속에서 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상을 외부 단편화라고 합니다.

 

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

앞서 프로세스를 메모리에 연속적으로 할당하는 방법은 외부 단편화를 일으킬 수 있고, 실제 메모리보다 더 큰 프로세스를 실행할 수 없다는 점이 있습니다.

 

예를 들어 LOL이라는 게임이 최소 8GB 메모리를 필요로 한다면 4GB 컴퓨터에서는 실행할 수 없는 것입니다.

이렇게 난 실제 메모리가 적은데 더 큰 프로세스를 실행할 수 있게 해주는 기술이 가상 메모리입니다.

 

가상 메모리 관리 기법에는 페이징, 세그멘테이션이 있습니다.

 

페이징이란

외부 단편화의 발생원인은 서로 다른 크기의 프로세스가 메모리에 연속적으로 할당되었기 때문에 발생했습니다.

메모리와 프로세스를 일정한 단위로 자르고, 불연속적으로 배치할 수 있다면 외부 단편화는 발생하지 않습니다.

일정한 단위로 나누고, 페이지를 프레임에 할당하는 가상 메모리 관리 기법이 바로 페이징입니다.

 

스와핑과 마찬가지로 보조기억장치와 메모리의 스왑을 페이징에서는 페이징 아웃, 페이징 인이라고 합니다.

 

페이지 테이블

페이징은 불연속적으로 배치한다고 했는데 CPU가 어떻게 위치를 찾을 수 있을까요?

프로세스의 주소를 저장하는 테이블을 페이지 테이블이라고 합니다. 

논리주소와 물리주소의 위치를 저장하는 테이블이라고 생각하면 됩니다.

 

일정한 크기로 메모리와 프로세스를 나눈다고 했는데 남을 수 도 있습니다. 페이지의 크기를 조절하는 것도 하나의 방법이 될 수 있습니다.

 

프로세스마다 각자의 프로세스 테이블을 가지고 있고 프로세스의 페이지 테이블들은 메모리에 적재되어 있습니다.

CPU 내의 PTBR 이 각 프로세스의 페이지 테이블이 적재된 주소를 가리키고 있습니다.

 

이렇게 PTBR을 통해 메모리에 접근하면 메모리에 있는 페이지 테이블 보기 위해 반번, 프레임에 접근하기 위해 한번 이렇게 접근하기 때문에 2번의 메모리 접근이 일어납니다.

 

그래서 사용하는 게 TLB(Translation Lookaside Buffer)라는 페이지 테이블 캐시 메모리를 사용합니다. TLB는 참조 지역성의 원리에 근거해 최근에 사용된 페이지 위주로 가져와 저장합니다.

 

-- 참조지역성의 원리 -- 

사용하던 것을 더 사용하게 되는 원리라고 알고 계시면 됩니다.. 입던 옷만 입는 그런 느낌?

 

CPU에서 논리 주소에 대한 페이지 번호가 TLB 위에 있으면  TLB 히트, 없으면 TLB 미스 라고 합니다.

 

페이징에서의 주소 변환

하나의 페이지 혹은 프레임은 여러 주소를 가지고 있습니다. 특정 주소에 접근하려면 페이지 주소, 얼마나 떨어져 있는지에 대한 정보가 필요합니다.

페이징에서 논리 주소는 페이지 번호 + 변위

 

페이지 테이블 엔트리 : 페이지 테이블의 각각의 행들을 지칭합니다.

 

유효비트

페이지폴트

보호비트

참조비트

수정비트 (더티비트)

 

 

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

요구 페이징의 개념과 페이징 교체 알고리즘, 프레임 할당

 

요구페이징

처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

순수 요구 페이징 기법 : 아무런 페이지도 적재하지 않고 무작정 실행함 (페이징 폴트가 점점 낮아짐)

 

페이지 교체, 프레임 할당

 

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

 

페이지 폴트 횟수는 페이지 참조열을 통해 알 수 있음

 

FIFO 페이지 교체 알고리즘

 

2차 기회 페이지 교체 알고리즘

 

최적 페이지 교체 알고리즘

 

LRU 

 

스래싱과 프레임 할당

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

 

이러한 프레임 할당 방식에는 균등할당과 비례 할당이 있습니다.

 

균등 할당 : 모든 프로세스에 균등하게 프레임을 제공하는 방식입니다. 얼핏 보면 공정한 방법이라고 생각할 수 있지만 프로세스마다 크기가 다르기 때문에 비합리적이라고 생각할 수 있습니다.

비례 할당 : 프로세스의 크기에 비례해서 프레임을 할당하는 방식입니다. 하지만 실행 전에 얼마나 많은 프레임을 할당할지는 알 수 없기 때문에 결국 실행해 보아야 합니다. 

 

프로세스의 실행을 보고 할당할 프레임 수를 결정하는 방법도 2가지 있습니다.

 

작업집합 모델 : 프로세스가 일정시간 동안 참조한 페이지의 크기만큼 프레임을 분배하는 방식 

페이지 폴트 빈도 : 페이지 폴트율에 상한선과 하한선을 부여, 범위 내에서 프레임을 배분하는 방식

 

 

15. 파일 시스템

15 - 1 파일과 디렉터리

파일과 디렉터리는 운영체제 내부 파일 시스템이 관리하는 것입니다.

파일이란 HDD나 SSD 같은 보조기억장치에 저장된 관련 정보의 집합입니다.

파일 속성과 유형 : 크기, 생성일자, 최종 접근일자, 수정일자, 소유자, 생성자, 위치, 유형은 운영체제가 인식하는 파일 종류를 나타냅니다. (JPG, exe, c, java 등)

 

파일들을 관리하기 위해 디렉터리를 이용할 수 있습니다. 디렉터리 자체도 파일이라고 할 수 있습니다.

15 - 2 파일 시스템

파일 시스템은 파일과 디렉터리를 보조기억장치에 저장하고 접근할 수 있게 해주는 운영체제 내부 프로그램.

파일 시스템에는 다양한 종류가 있고 하나의 컴퓨터에서 다양한 여러 파일 시스템을 사용할 수 있습니다. 

 

보조기억장치를 사용하려면 파티셔닝과 포맷팅을 거쳐야 합니다.

 

파티셔닝과 포매팅

파티셔닝(partitioning): 하드디스크 등 큰 저장장치를 여러 개의 논리적인 단위로 구획하는 작업

포매팅(formatting): 새로운 데이터를 쓸 수 있도록 파일의 저장 및 관리 방식을 설정하는 작업

파일 할당 방법

연속할당: 보조기억장치의 연속적인 블록에 순서대로 파일을 할당하는 방식

연결할당: 각 블록에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키게 한 방식

색인할당: 모든 블록 주소를 하나의 색인블록에 모아 관리하는 방식

 

다양한 파일시스템 중 FAT, 유닉스 파일시스템에 대해서 알아보았습니다.

FAT 파일시스템(file allocation table file system): 연결할당 기반의 파일시스템으로 각 블록에 포함된 
다음 블록주소들을 한데 모으는 파일할당테이블(FAT)을 이용하는 방식

유닉스 파일시스템(UNIX file system): 색인할당 기반의 파일시스템으로 모든 블록 주소를 한데 모으는
색인블록을 이용하는 방식





- 메모리 할당방식


최초적합: 최초 발견한 빈 공간에 프로세스를 배치하는 방식


최악적합: 프로세스가 적재될 수 있는 가장 큰 공간에 배치하는 방식


최적적합: 프로세스가 적재될 수 있는 가장 작은 공간에 배치하는 방식




프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 2414523423일 때 페이지 폴트 발생 횟수

 

1. FIFO : 4번(5, 2, 3, 4)

2. 최적 : 2번(5​, 2, 3), 3)

3. LRU : 4번(5, 2, 3, 4)


 

 

 

 

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

어려운 컴퓨터 구조와 운영체제의 원리를 누구나 쉽게 이해할 수 있도록 용어와 개념은 한 번 더 풀어쓰고, 적절한 예시와 이해하기 쉬운 그림으로 재미있게 구성했다. 또한 일상 소재를 활용한

www.hanbit.co.kr