티스토리 뷰

학교/운영체제

[15] 운영체제 - Memory-4

군옥수수수 2017. 9. 22. 15:10

안녕하세요. 저번 포스팅에서는 비연속적인 할당 기법 중 하나인 페이징에 대해서 알아보았는데요!
오늘은 비슷한 듯 다른 기법인 세그멘테이션(Segmentation)에 대해 알아보도록 하겠습니다.
그럼 바로 시작하도록 하겠습니다.
Segmentation
Paging 기법은 Logical address를 Page 단위로, Physical address를 같은 크기인 Frame 단위로 나누어 올리고 접근하였습니다.
그리고 Page가 어떤 Frame에 해당하는지에 대한 정보를 담는 Page Table이 존재하였습니다.
Segmentation도 원리는 크게 다르지 않은데요!
차이점은 바로 Segmentation은 모두 고정된 크기가 아닌  일련의 논리적 구조 단위로 나누어진다는 뜻입니다.
이렇게 논리적인 단위로 나누어진다면 사용자는 메모리의 상태를 이해하는데 더욱 도움이 됩니다.
논리적 구조 단위라 하면 다음과 같습니다.
- Main Program
- Function
- Method
- Object
- Stack
- Symbol Table
- Local variables, Global variables
- etc ..
그림을 통해 보시면 더욱 이해가 잘 될 것입니다.


이렇게 모두 크기가 다른 단위로 나누어지기 때문에 Segmentation Table의 요소에도 차이점이 있는데요

Paging은 모두 같은 크기이기 때문에 따로 크기에 대한 정보를 갖고 있지 않았지만, Segmentation은 크기가 모두 다르므로 크기를 알려주기 위해 해당 Segmentation의 시작점을 알리는 Base 정보와 끝을 알리는 Limit을 갖고 있어야 합니다.


위의 그림을 보시면 먼저 Segmentation Table에 접근하는 S 값에 대해서 먼저 Limit를 초과하는지 검사를 통해 잘못된 주소 접근을 막는 것을 보실 수 있습니다.


이 그림도 역시 이해를 돕는데 도움이 되실 것입니다.

Segmentation은 이러한 고정된 크기로 나누어지지 않는다는 점만 제외하고는 Paging 기법과 상당히 유사한 점이 많습니다.


Segmentation 역시 Paging과 마찬가지로 공통된 부분은 한 번만 올리고 공유하는 Shared Code를 지원합니다. 이렇게 Segmentation은 Paging과 상당히 유사하며 Paging을 제대로 이해하셨다면 Segmentation을 공부하시는데 큰 어려움은 없으실 거라 생각됩니다. 
그리고 Paging과 유사하기 때문에 포스팅 또한 짧은 설명과 그림으로만 설명하게 되었습니다.
이점 착안하셔서 이전 Paging에 관한 포스팅을 꼼꼼히 공부해보시기 바라겠습니다.
오늘은 이렇게 간단히 Segmentation에 대해서 공부를 해보았는데요!
의도치 않게(?) 짧은 포스팅이 되어서 저도 상당히 놀라고 어색한데요..!!
다음 포스팅에서는 보다 복잡하고 어려운 Demand Paging에 대해서 공부해보도록 하겠습니다.
감사합니다!

'학교 > 운영체제' 카테고리의 다른 글

[17] 운영체제 - Virtual Memory-2  (2) 2017.09.26
[16] 운영체제 - Virtual Memory-1  (0) 2017.09.26
[14] 운영체제 - Memory-3  (3) 2017.09.22
[13] 운영체제 - Memory-2  (0) 2017.09.22
[12] 운영체제 - Memory-1  (1) 2017.09.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함