본문 바로가기
studylog

[혼공컴운] 6주차_페이지 교체 알고리즘과 파일 시스템

by Nam Kyeongmin 2024. 8. 18.

마음에 쏙 든 8월 짤과 함께 시작해보는 6주차 기록

 

안녕하세요~! 오늘은 특별히 다른 혼공컴운 학습주차보다 더 밝고 홀가분한 마음이네요! 캬캬

네!!! 드디어 이번 여름 혼공학습단 12기 마지막 학습 주차를 맞이했어요, 와~!!

항상 안 올 것 같은 마지막을 맞이하는 마음은 꽤나 설레고, 시원섭섭하네요.

 

 이번 학습주간에는 운영체제의 페이지 교체 알고리즘과 파일 시스템에 대해 중점적으로 학습했는데요, 마지막 주차인 만큼 꽤나 양이 방대하고 중요하게 느껴졌지만 끝끝내 해낸 스스로에게 박수를 보내며 이번 6주차 학습 기록도 힘차게 남겨보아요~ 아좌좌~!!

 

이번 혼공컴운 6주차의 숙제는 뭐였을까요?

 

(기본숙제) p. 400의 확인 문제 1번 풀고 인증하기

 

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

 

 프로세스를 실행하기 위해 보조기억장치 -> 메모리로 프로세스가 이동될 때, 메모리(프레임)에 프로세스를 어떻게 할당할 것인가에 대한 학습을 진행했습니다.

 저번에 교착 상태를 방지하기 위한 알고리즘 학습법을 기록하면서도 언급했지만, 교착 상태 이후로 학습한 운영체제에 대한 내용이 막연히 어렵게만 느껴졌기 때문에 이번 학습을 진행하면서 내가 어려워했던 부분이었다는 것을 빠르게 떠올리고 학습에 더욱 집중하여 공부를 진행했던 기억이 떠오릅니다 ㅎㅎ


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

 

 사실 이 숙제를 접하고는 '엇, 이거 책에서 여러 번 풀어본 문제인데?' 라는 생각이 확 들었습니다. 그만큼 책에서 연습할 때  제가 집중해서 풀었다는 거겠죠? ㅎㅎㅎ 그래도 다시 한번 블로그에 글로 정리하면서 LRU 알고리즘 개념을 더 단단히 다져볼게요.

 

 1. 우선 문제에서 말하는 페이지 폴트의 기준은 초기 프레임 할당(여기 문제에서는 3회네요)에서 발생하는 페이지 폴트는 제외하고 이후에 발생하는 페이지 폴트를 기준으로 한다고 했습니다.

따라서 처음 2,3,1 할당은 기본 세팅으로 간주하여 프레임에 2,3,1이 할당된 상태로 시작합니다.

 

 2. 이때 LRU 알고리즘을 떠올려보면, 할당된 페이지가 마지막으로 실행된 시간을 비교하여 해당 시간이 가장 오래된 페이지를 스와핑하는 알고리즘이라는 것을 기억할 수 있습니다.

 처음에 이것만 보면 FIFO 알고리즘과 헷갈릴 수도 있는데(왜냐면 제가 그랬거든요), FIFO는 마지막 실행시간이 아닌, 페이지 첫 할당시간을 비교하여 가장 오래된 페이지를, LRU는 페이지 마지막 실행시간으로 스왑 아웃(페이지 아웃)한다는 점에서 차이를 가집니다.

 

 3. 계속 문제를 따라가서, 주어진 페이지 참조열은 '2313523423' 이기 때문에, 4번째 페이지 3은 페이지 히트, 5는 할당된 프레임이 없어 페이지 폴트(1회)가 되고 LRU 알고리즘 기준 페이지 2가 스왑 아웃됩니다.

현재 프레임은 5,3,1 페이지에 할당되고 있는 것이지요.

 

 4. 6번째 페이지 2는 페이지 폴트(2회)가 되고 LRU 알고리즘 기준 페이지 1이 스왑 아웃되어 프레임은 페이지 5,3,2에 할당됩니다.

 7번째 페이지 3은 페이지 히트, 8번째 페이지 4는 페이지 폴트(3회)로 LRU 알고리즘 기준 페이지 5와 스와핑되어 프레임은 페이지 4,3,2에 할당됩니다.

 

 5. 9번째 페이지 2와 마지막 10번째 페이지 3은 모두 페이지 히트하여 최종적으로 위 페이지 참조열은 총 3회의 페이지 폴트를 갖게 됩니다!!


 

 후 이렇게 글로 적어 설명하다 보니 확실히 이해도 더 잘 되고 알고리즘 푸는(?) 요령도 생기는 게 느껴지네요 ㅎㅎ

 이런 식으로 14장에서는 페이지 교체 알고리즘에 대해 중점적으로 학습했다면, 15장에서는 파일과 디렉터리를 관리하는 프로그램, '파일 시스템'에 대해 중점적으로 학습했는데요, 숙제에서 14장 위주로 학습 기록을 남겼으니 아래에서는 15장에 대한 이야기를 추가로 정리해 볼게요~!

 

15-1 파일과 디렉터리

 

 파일 시스템에 학습하기 앞서 파일과 디렉터리에 관한 개념을 잡았어요. 파일은 일련의 데이터 묶음이라면, 디렉터리는 파일의 묶음을 관리하는 단위라고 가볍게 이해할 수 있었습니다.

 이러한 파일과 디렉터리에 접근하거나 연산하기 위해서는 OS에 시스템 호출을 요청해야 하며, 파일 시스템을 통해 원하는 특정 파일에 접근할 수 있게 됩니다.

 

(드디어!!) 15-2 파일 시스템

 

 파일 시스템이 설정되기 전 파티셔닝(저장 장치 영역 구분)과 포매팅(나눈 파티션에 배정할 파일 시스템 결정)을 거쳐 최종적으로 파일 시스템을 사용할 수 있는 환경을 마련합니다.

 

 파일 시스템의 종류로는 크게 FAT, 유닉스 파일 시스템을 살펴보았는데요, 연속할당과 불연속할당(연결할당, 색인할당)을 기반으로 어떻게 시스템이 운영되는지, 파일 시스템의 구체적인 작동방식보다도 '아이디어'를 중점으로 학습을 진행했어요.

 할당 방식들과 파일 시스템에 대해 간단한 설명을 정리하며 이번 학습을 마무리해 보겠습니다:)


 

연속할당: 메모리에 블록(단위로 나누어진 프로세스)을 연속적으로 할당

불연속할당: 메모리에 블록을 불연속적으로 할당.

- 연결할당: 블록에 다음 블록의 주소를 작성. => 특정 번호의 블록을 찾는 효율이 낮음(무조건 순차탐색)

- 색인할당: '색인블록'에 파일에 해당하는 모든 블록 주소 정보 저장

 

FAT 파일 시스템: '연결할당' 기반의 파일 시스템. FAT(파일 할당 테이블)을 이용하여 프로세스 블록 접근

유닉스 파일 시스템: '색인할당' 기반의 파일 시스템. 'i-node'가 색인 블록의 역할을 수행함. 다만, i-node의 유한한 크기(15개 엔트리)로 저장하는 프로세스의 크기에 따라 n중 간접 블록 형태를 사용하기도 함.


드디어 혼공컴운 마무리~!

 

드디어 혼공컴운 6주차와 함께 이번 12기 혼공학습단 학습을 마무리하였습니다!! (짝짝)

보람차고도 섭섭+헛헛한 이 마음은 따로 회고록에서 더 작성해 보도록 하겠어요.

모두들 정말 수고하셨고,

남경민 아주아주 잘했다!! 😎