Program fit Examples: Address Space
포스트 난이도: HOO_Middle
# Example 1
Question) A computer provides each process with 65,536 bytes (64 KiB) of address space divided into pages of 4,096 bytes (4 KiB). A particular program has a text size of 32,768 bytes, a data size of 16,386 bytes, and a stack size of 15,870 bytes. Will this program fit in the address space? If the page size were 512 bytes, would it fit? Each page must contain either text, data, or stack, not a mixture of two or three of them.
이 문제는 Address space size가 페이지에 맞는지 알아보는 문제이다.
우선 페이지 사이즈가 512 bytes와 4096 bytes가 있다.
Test size는 32768 bytes이고 Data size는 16386 bytes이다.
마지막으로 Stack size는 15870 bytes이다.
이때 모든 프로레스가 65536 bytes일 경우 Fit한지를 살펴보면 된다.
또한 텍스트, 데이터, 스택 사이즈가 각각 페이지에 포함되어야 한다는 조건이 있으니 유의하여 문제를 풀어주면 된다.
우선 텍스트 사이즈를 먼저 구해보면 32768/4096 을 해주면 대략 8페이지가 필요한 걸 알 수 있다.
여기서 한가지 유의할 점은 KiB 계산을 할 경우, 정확한 페이지 수가 산출되지 않을 수 있기 때문에 문제에서 주어진 최소 단위로 계산해주는 것이 정확하다.
데이터 사이즈의 경우에는 16386/4096이기 때문에 4페이지로 부족하고 5페이지가 있어야 한다.
마지막으로 스택 사이즈는 15870/4096이기 때문에 4페이지가 나온다.
결과적으로 8+5+4=17 페이지가 나오는데 Total pages의 경우에는 65536/4096=16 페이지가 된다.
따라서 각 페이지 사이즈가 4096일 때는 Fit하지 않는다.
반면에 페이지 사이즈가 512 bytes일 때는 다른 결과가 산출된다.
위의 방법과 똑같이 텍스트, 데이터, 스택 페이지를 구하고 전체 페이즈를 구해서 비교해주면 된다.
텍스트 페이지는 32768/512하면 64페이지가 나오고 데이터 페이지는 16386/512 하면 33 페이지가 된다.
스택 페이지는 15870/512하면 30.9...로 31 페이지가 된다.
마지막으로 전체 페이지는 65536/512하면 128페이지가 되고 64+33+31을 하면 128페이지가 됨으로 Address space에 Fit 하다는 걸 알 수 있다.
댓글