안녕하세요..
지금 공룡책(운영체제) 보고 있는 1인입니다. ㅎㅎ
독학이라 제가 생각하는 개념이 맞는지 어디 물어볼 데가 없어서 질문드립니다..(비 공돌이입니다.)
페이지, 페이징 기법, 요구 페이지, 스와핑(스왑-인, 스왑-아웃) 이들 개념들에 대해 설명 부탁드려요..
제가 이해한 바를 기술할게요. 잘못된 부분 지적 부탁 드려요..
일단 사용자가 어떤 프로그램이나 파일등에 접근을 하려고 호출을 하면(시행 요청) 중앙처리장치에서 이들을 시행하기 위해서
논리주소를 만들고 이 논리 주소는 가상주소가 됩니다. 다시 말해 실제 작업이 진행되는 물리 메모리 와 사용자의 사이에서
가상의 층을 형성하는 것인데 이러한 논리 주소를 페이징 기법을 이용하여 동일한 크기의 페이지 들로 가상 메모리 공간을
나누어 차지하고 이를 p, offset(변위) 를 이용하여 실제의 물리 주소로 맵핑한다고 이해했습니다.
(만약 세그멘테이션 기법을 적용하면 논리 주소 -> 선형 배열 주소 -> 물리 주소 의 과정을 거치게 됨)
그리고 사상된 물리 주소 또한 프레임이라는 '페이지'와 동일한 크기를 갖는 단위로 나뉘게 되고 이런식으로
중간에 가상메모리의 개념을 선택하면 물리 메모리 상에서 굳지 연속된 공간을 사용하지 않고 필요한 페이지에 대응되는
불연속적인 공간을 '프레임' 단위로 점유하게 된다고 생각했습니다.
또한 이러한 페이징 기법을 적용하면 한 프로세스를 이루는
모든 페이지들을 한번에 주메모리에 적재하지 않더라도 처음의 요구 페이징 기법을 사용하여 프로세스의 진행중에
꼭 필요한 페이지들만을 주 메모리에 적재하여 주 메모리가 동시에 여러 프로세스를 진행시킬 수 있는 다중프로그래밍 정도를
향상 시킬 수 있다고 생각했습니다.
다중프로그래밍 정도 를 높여 작업처리효율을 증가시키는 것 뿐만아니라 프로세스나 데이터를 메모리상에 분산시킬 수 있게 되어
실제로 작업을 하는 주 메모리의 공간에 더하기로 처리되고 있지 않은(쉬고 있는) 다른 디스크 등(보조 메모리) 에 산재된 메모리를 총합하게 되어
실질적으로 사용하는 메모리의 크기를 더 크게 확장할 수 있다는 의미 또한 갖는다고 생각했습니다.
즉 페이징 기법을 사용하면 논리주소(가상 메모리 상) 를 실제 물리 주로와 분리 시킬 수 있어 불연속적인 공간에 효율적으로 메모리 공간을
활용할 수 있다는 점과 물리 메모리보다 더 큰 메모리 공간을 사용 할 수 있다는 장점이 있다고 생각했습니다.
정리하자면 페이지는 프로세스 등이 가상(논리) 메모리 상에 일정한 크기로 나뉜 것.
페이징 기법은 페이지라는 개념을 도입하여 프로세스 등을 나누는 기법.
요구 페이지는 프로세스를 실행할 때(특히 동적 적재) 프로세스를 전부 주메모리에 적재하지 않고
초반에 필요한 페이지 들만 보조 메모리에서 주 메모리로 옮기는 것.
스와핑은 페이지 교체와 유사한 것으로 프로세스가 진행됨에 따라 이미 사용이 끝난 상태에서 주 메모리가 공간 부족일 경우
주 메모리의 효율적인 동작을 위해 프로세스 일부가 스왑-아웃(불필요한), 스왑-인(필요한) 되는 과정을 말함.
페이지 교체는 메모리 부족 상태에서 가장 필요하지 않은 페이지가 교체되어 나가고 필요한 페이지가 교체되어 들어오는 것.
쓰레쉬는 페이지 부재의 연속으로 계속적으로 페이징이 일어나게 되어 작업의 큰 부분이 페이징에 쏠리게 되어
CPU 효율을 떨어뜨리는 상태를 의미함.
이렇게 생각했습니다.
이렇게 정리한 거는 어디 참고 문헌이나 책 등을 따다 붙인 건 아니구요 ㅠㅠ 제가 머리속에서 이해한 바를 그대로 참조 안하고 작성했습니다..
비 공돌이가 초보로 입문하려니 힘드네요 헥헥...
아무튼 잘못된 개념 부분 지적 부탁드립니다. 감사합니다.
댓글 0