본문 바로가기
Deep Learning/연구.개발 관련 지식들

운영체제 페이징 기법과 최적적합(Best-Fit) - 정보처리기사 문제은행

by Steve-Lee 2018. 10. 22.

Photo by Brian Kostiuk on Unsplash


안녕하세요 Hessey입니다. 

달콤한 주말이 어느덧 끝이났고 다시 새로운 한 주의 시작이네요ㅎㅎ

주말동안 아무것도 안한 것 같아서... 한번 돌아봤는데...

아무것도 안 하지는 않았네요 ^^;;

오늘은 OS(운영체제)에서 '페이징 기법'과 '최적적합(Best-Fit)'에 대한 간단한 문제를 풀이해 드리고자 합니다. 

마지막 학기인 지금에서야 OS수업을 듣고 있는데요. 같은 수업을 듣는 후배로 부터 질문을 받아 문제를 풀어봤습니다. (그런데 문제가 제가 아직 배운내용이 아니네요! 그래서 공부해 봤습니다!)


페이징 기법이란?


먼저 위키를 찾아봤습니다(인류 지식의 집합체)

페이징 기법(paging)은 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치[a]로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다.[1] 즉, 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지(page)라고 한다. 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.

흠... 다른건 몰라도 위키에서 '컴퓨터' 관련 자료를 검색할 때면 뭔가 마음이 불편한건 저만 그럴까요?! 그래서 저는 위키를 찾아보고 아니다 싶으면 '구글링'을 통한 웹서핑을 한답니다^^
모두가 알고 있는 사실이지만 저만의 꿀팁이죠 ㅎㅎ

하나 더 진짜 꿀팁은 바로 쉽게 생각해 보는 겁니다


페이징이 뭐지?
아 프로세서(프로그램)을 나누는거구나~

왜 나누지?!
아 프로세서가 메모리에 비해 커서 그렇구나~!

뭔가 조금 알것 같지 않나요?!

여기서 피니쉬를 하고 싶으면 실제 사례를 생각해보면 됩니다


"우리가 흔히 사용하는 프로그램들(카톡, 페이스북, 게임 등등...)이 메모리보다 크잖아?
이런 큰 프로세스들을 사용하기위해 나누는 기법이 페이징 기법인거 같어~"


조금 더 궁금한데?!

페이징 기법에서는 뭐가 중요할까?
단편화 현상이라고??!
단편화가 뭔데?

페이징 기법에서 나타나는 단편화(Fragmentation)문제 중 하나가 이제 내부 단편화인것 같어 프로세스를 페이징 기법을 통해서 나누고 이에 해당하는 메모리를 할당하는데 페이지가 크면 메모리를 많이 요구하게 되잖아? 이 때 메모리가 딱 맞아 떨어지지 않을 경우(완전히 차지 않을경우) 남는 메모리가 발생하게되. 

예를들어 페이지가 12비트고 메모리가 64비트면 메모리 프레임이 몇개 필요할까?
6(12비트*5개)개가 필요한데 메모리가 64비트니깐 4비트가 남게 되잖아? 이런식으로 프레임이 n+1개(6+1개) 할당되는데 이게 바로 '내부 단편화야'

즉 필요한 양보다 더 큰 메모리가 할당되어 사용하지 않는 메모리가 존재하게 되는거지

처음에는 어려워보이는 내용일지라도 한 번 물음을 해보고 답해보고 또 물음을 구하면서
조금씩 알아가는 것 같습니다. 질문 받았을 때는 흠... 배우지도 않은 내용인데... 어떡하지...했는데... 실제 사례를 들면서 이해해보니깐 못할건 아니더군요ㅎㅎ



최적 적합(Best-Fit)


최적 적합. 뭔가 용어가 멋있지 않나요?!(저만 그렇게 생각할 수도 있고요...ㅎㅎ)

그래서 용어를 자세히 살펴봤더니 용어에 모든 내용이 함축되어 있더군요

Point최적 적합이란 프로세스를 메모리에 할당할 때, 충분히 큰 사용 공간 중에서 들어갈 수 있는 가장 작은 공간에 할당하는 것이다. 다시, 충분히 큰!! 사용공간!

.
.
.


그럼 문제 한번 풀어보시겠어요?



문제가 이해 안가시면 언제든지 답변주세요 ㅎㅎ


.

.

.


요즘 운영체제를 배우는데 이론적인 부분만 다뤄서 조금 아쉬운 부분이 있습니다. 하지만 확실한건 운영체제를 배우기 전과는 확연한 차이가 존재하는 것 같은데요. 조금 더 컴퓨터를 잘 이해할 수 있게 되었다고 말하면 될까요?! 

운영체제의 CPU, Ram, Memory, Processor 등을 배우는데 뭔가 신기하면서도 재밌습니다. 마치 탐정놀이 같달까요?ㅎㅎ 이렇게 되면 어떻게 될까. 이런 상황에서는?! 특히 제가 쓰고있는 노트북과 스마트폰에 상황을 대입해보면 '아Ah~' 소리가 절로 나더군요 ㅎㅎ


컴퓨터 공학을 배우시는 분들이라면 한 번 제대로 배워놓으면 좋을 것 같습니다. 

이상 Hessey였습니다!







댓글