머. 기본적으로 두가지가 하는 원래 하는 역할은 같죠..
단지 세그멘테이션은 메모리의 일정 부분을 나누어서 가상 주소를 계산하는데 사용하고,
페이징은 모든 작업을 페이지단위로 한다는 차이가 있죠.
i386계열 시피유에서는 이 두가지를 모두 지원하죠.
이 차이는 여러가지 기능적인 차이를 낳는데요,
일반적으로 페이징이 메모리 낭비를 줄일 수 있습니다.
그래도 권한 세팅하는 것은 세그멘테이션이 편하구요.
그래서 메모리 관리는 페이징 단위로 하고, 코드 세그먼트, 데이터 세그먼트 등으로
세그먼트를 나누어서 그걸로 사용 권한을 주는 방법으로 리눅스에서는 구현되어 있습니다.
세그멘테이션은 메모리 주소를 얻기 위한 방법으로는 사용되지 않는다..라고 볼수 있죠..
둘다 가상 메모리 관리기법입니다. 제가 설명해 드리는것 보다
전공서적을 찾아보시는게 좋을듯 합니다. 개념적인 부분이 많기떄문에
잘못된 지식전달은 나중에 문제가 되죠 ^^
간단하게 말씀 드리자면 페이지는 고정된 메모리 크기로 여러개의 메모리
블럭을 할당하여 프로세스에서 제공하는것이고 이 블럭들을 관리하는
테이블이 존재합니다. 세그멘테이션은 가변적 메모리 블럭을 할당하여
사용하는 것입니다. 더 자세한 부분은 전공서적을 참고하세요..
kang0203 wrote:
하는 일은 같은데 방식이 달라서 리눅스에서는 둘 중 하나만 사용하나여?
둘다 사용합니다.
좋은 답변입니다.
제 의견을 몇 자 더 쓰자면......
x86의 세그먼트 레지스터에 집착하시면, 큰 의미를 놓칠수 있습니다.
세그멘테이션은 x86나오기 한참전에도(8086보다도 오래전.) 존재한 개념입니다. 페이징도 마찬가지..
80386의 MMU는 아주 훌륭한 교재거리입니다. 인텔이 이를 구현하고, 엄청나게
자랑했고, 책들에도 단골로 실리게된 계기입니다. 하드웨어(프로세서) 내장시킨
가상메모리 기법입니다.
둘다 씁니다.
세그먼테이션은 서로 다른 프로그램이 메모리를 겹쳐 쓰지 않도록 하는 데
사용되고 (특정 주소 영역에만 접근할 수 있도록 제한을 겁니다.)
페이징은 가상메모리 구현에 사용됩니다.
리눅스는 둘 다 씁니다.
Written By the Black Knight of Destruction
머. 기본적으로 두가지가 하는 원래 하는 역할은 같죠..단지 세그멘테
머. 기본적으로 두가지가 하는 원래 하는 역할은 같죠..
단지 세그멘테이션은 메모리의 일정 부분을 나누어서 가상 주소를 계산하는데 사용하고,
페이징은 모든 작업을 페이지단위로 한다는 차이가 있죠.
i386계열 시피유에서는 이 두가지를 모두 지원하죠.
이 차이는 여러가지 기능적인 차이를 낳는데요,
일반적으로 페이징이 메모리 낭비를 줄일 수 있습니다.
그래도 권한 세팅하는 것은 세그멘테이션이 편하구요.
그래서 메모리 관리는 페이징 단위로 하고, 코드 세그먼트, 데이터 세그먼트 등으로
세그먼트를 나누어서 그걸로 사용 권한을 주는 방법으로 리눅스에서는 구현되어 있습니다.
세그멘테이션은 메모리 주소를 얻기 위한 방법으로는 사용되지 않는다..라고 볼수 있죠..
서명:
이것은 올리는 글에 첨부될 사인 문구입니다. 제한은 255 글자입니다
Re: 세그먼테이션과 페이징에 대해...
둘다 가상 메모리 관리기법입니다. 제가 설명해 드리는것 보다
전공서적을 찾아보시는게 좋을듯 합니다. 개념적인 부분이 많기떄문에
잘못된 지식전달은 나중에 문제가 되죠 ^^
간단하게 말씀 드리자면 페이지는 고정된 메모리 크기로 여러개의 메모리
블럭을 할당하여 프로세스에서 제공하는것이고 이 블럭들을 관리하는
테이블이 존재합니다. 세그멘테이션은 가변적 메모리 블럭을 할당하여
사용하는 것입니다. 더 자세한 부분은 전공서적을 참고하세요..
둘다 사용합니다.
제가 책을 유심히 봤는데여..혹시 세그먼테이션은 세그먼트의 접근을 위
제가 책을 유심히 봤는데여..
혹시 세그먼테이션은 세그먼트의 접근을 위한 기법이고...
페이징은 실제 물리메모리에 접근하기 위한 기법인것 같은데..
맞나여?
둘다 물리 메모리에 접근하기 위해 쓰입니다 :? 단지 사용하는 방식
둘다 물리 메모리에 접근하기 위해 쓰입니다 :?
단지 사용하는 방식이 다를뿐이죠. (그리고 리눅스에서 사용되는 방식도..)
좀더 잘 읽어보시면, 가상 메모리 주소를 실제 메모리 주소로 번역하기 위해
쓰인다는 걸 잘 아실 수 있을 것입니다.
머.. 하신 말씀이 리눅스에 대해서만 말씀하셨다면 옳다고도 할 수 있습니다.
하지만, 말이 너무 모호하네요..
원래 어떤 의미인지 잘 알고 싶으시다면,
OS나 컴퓨터 구조(i386 구조.. 같은)에 관련된 자료들을 읽어보시기 바랍니다.
서명:
이것은 올리는 글에 첨부될 사인 문구입니다. 제한은 255 글자입니다
페이징은 설정을 해 뒀다고 했는데, 그렇다면 가변의 메모리 블럭을 할
페이징은 설정을 해 뒀다고 했는데,
그렇다면 가변의 메모리 블럭을 할당받는다고 했는데,
이것은 그때 그때마다 크기가 다르게 할당받게 되는겁니까?
똑!똑!
[quote="taitai09"]페이징은 설정을 해 뒀다고 했는데,
페이징은 그 단위가 일정합니다. 4k 거나 4MB 거나 펜티엄에서도 PAE 옵션인가가 켜져 있으면 4MB로 아니면 4k로 합니다. 기본적으로는 4k로 보시면됩니다. 페이징 같은것의 경우, 동일 크기가 아니면 문제가 심각하겠죠. 고운 하루되세요.
Re: 세그먼테이션과 페이징에 대해...
좋은 답변입니다.
제 의견을 몇 자 더 쓰자면......
x86의 세그먼트 레지스터에 집착하시면, 큰 의미를 놓칠수 있습니다.
세그멘테이션은 x86나오기 한참전에도(8086보다도 오래전.) 존재한 개념입니다. 페이징도 마찬가지..
80386의 MMU는 아주 훌륭한 교재거리입니다. 인텔이 이를 구현하고, 엄청나게
자랑했고, 책들에도 단골로 실리게된 계기입니다. 하드웨어(프로세서) 내장시킨
가상메모리 기법입니다.
세그멘테이션 : 가변사이즈
페이징 : 고정사이즈
장단점은 잘~ 생각하시고, 전공서적을 참고하세요. 시험문제감이군요 :twisted:
댓글 달기