본문 바로가기

페이징5

운영체제 21장 - 메모리 관리(8) : 가상 메모리 - 운영체제 21장- 가상 메모리 - 메인 메모리의 크기가 한정되어 있으므로 물리적인 메모리 크기보다 크기가 큰 프로세스를 실행시킬 수 없다. 예로 100MB 메인 메모리에서 200MB 크기의 프로세스를 실행할 수 없게 되는 것이다. 그렇다면 메인 메모리보다 크기가 큰 프로세스를 실행시키고 싶으면 어떻게 해야 할까? 단순히 메인 메모리가 더 큰 컴퓨터를 사용해야하는가? 이런 방법은 매우 비효율적일 것이다. 그래서 나온 방법이 바로 가상 메모리이다. 프로세스의 모든 코드는 항상 필요한 것이 아니다. 오류 처리하는 부분이나 필요 없는 배열 부분은 실제로 프로세스가 잘 동작한다면 필요 없는 부분이 된다. 따라서 프로세스는 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄인다. 프로세스.. 2017. 5. 7.
운영체제 20장 - 메모리 관리(7) : 세그멘테이션(Segmentation) - 운영체제 20장- 세그멘테이션(Segmentation) - 앞선 장들에서 페이징을 배우면서 프로세스를 일정 크기인 페이지 단위로 잘라서 메모리에 적재하는 방법을 알았다. 페이지는 정확하게 일정한 간격으로 자르는 단위였다. 하지만 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자를 수 있는 세그먼테이션 방법이 있다. 예를 들면 우리가 돼지를 잡아서 보관을 한다고 생각해보자. 페이징의 방법을 사용하면 돼지를 모두 같은 단위로 잘라서 보관을 하는 것이다. 반면에 세그먼테이션은 부위별로 다른 크기로 잘라서 보관하는 것이다. 세그멘테이션은 프로세스를 세그먼트의 집합으로 생각한다. 사실 하나의 프로세스가 동작하려면 기본적으로 코드, 데이터, 스택 세 가지의 세그먼트는 항상 가지고 있다. 그리.. 2017. 5. 5.
운영체제 19장 - 메모리 관리(6) : 페이징(3) - 운영체제 19장- 페이징(3) - 모든 프로그램들은 실행되기 전에 하드디스크에 보관된다. 그리고 사용을 하고자 하는 프로그램들이 메인 메모리에 적재되어서 CPU를 할당받아 기능을 수행하게 된다. 처음에 메인 메모리에 프로세스의 적재를 배울 때에는 프로세스들이 연속적으로 하나씩 메모리에 적재되는 것으로 알고 있었다. 하지만 이런 방법은 메모리의 공간을 매우 낭비시켜 효율을 떨어뜨린다는 것을 배웠다. 이를 해결하기 위해 프로세스를 페이지라는 단위로 나누어서 메모리에 적재하는 방법인 페이징 기법을 사용하였다. 재배치 레지스터를 사용하여 페이지 테이블에 맞는 주소로 논리 주소를 물리 주소로 변환시켜 프로세스의 메모리 주소 위치를 파악하는 방법이다. 운영체제는 프로세스 관리와 메모리 관리 외에도 다양한 일을 수행.. 2017. 5. 4.
운영체제 18장 - 메모리 관리(5) : 페이징(2) - 운영체제 18장- 페이징(2) - 다중 프로그래밍 환경으로 바뀌면서 다양한 프로그램들이 메인 메모리 공간에 올라가서 프로세스로 되어 동작하기 시작했다. 프로그램들은 필요할 때 메인 메모리로 적재되고 사용이 다 되면 다시 하드디스크로 돌아가게 된다. 이런 작동이 반복되면서 메모리 공간에는 hole이라고 하는 빈 공간이 만들어지게 된다. 이런 빈 공간이 흩어져 있게 되어 총 합으로는 충분한 공간의 빈 메모리 공간이 있을지라도 사용할 수 없는 공간이 되어버린다. 왜냐하면 프로세스는 연속된 공간에서 존재해야 동작했기 때문이다. 이러한 문제를 외부 단편화라고 했다. 그리고 외부 단편화를 해결하고자 노력을 많이 하였다. 연속 메모리 할당을 하는 방식에 차이를 두기도 하고 compaction 기법을 사용하기도 하였다.. 2017. 5. 3.
운영체제 17장 - 메모리 관리(4) : 페이징(1) - 운영체제 17장- 페이징(1) - 메모리의 낭비 공간인 hole을 최소한으로 만들기 위해 앞 장에서 많은 방법을 사용하였다. 최초 적합과 최적 적합을 통해 메모리의 공간에 적재하는 방식에 변화를 주었는데 이를 통해서도 메모리 공간의 1/3 정도가 낭비가 되었다. 이렇기 때문에 다른 방식인 Compaction이라는 방식을 사용하였으나 프로세스나 hole을 메모리 공간에서 이동시키기 위해서는 메모리 계산의 부담이 발생하기 때문에 힘들었다. 그래서 사용한 방식이 바로 페이징이다. 페이징은 프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식이다. 프로세스는 항상 연속해서 들어가야 한다는 생각을 통해 메모리 공간 활용에 있어서 앞장에서는 연속 메모리 할당에 초점을 맞추었다. 이런 생각부터 뒤집어서 프로.. 2017. 5. 2.