오늘 스터디는 왠지 커널 메모리 스터디를 하는듯한 기분이었습니다... ㅡ.ㅡ;;;
논란이 있었던 부분중에서...
1. high_memory는 언제나 0xC0000000 + 896M 의 위치를 가리키는가?
high_memory 라벨은 실제 물리메모리 맵핑이 끝나는 부분을 가리키므로 최대값이
0xC0000000+896M 이며 실제 물리메모리의 양에 따라 달라질수 있다.
( 리눅스 커널 구조와 원리 책에서 참조 )
2. vm_area_struct구조체는 VMALLOC_START~ VMALLOC_END 부분을 나타내는구조체
인가?
이부분은 제가 희미한 기억으로 잠시 착각한 것 같습니다. vmalloc() 함수 수행시 할당되는
위의 불연속적인 공간을 나타내는 구조체는
vm_struct 이며 vm_area_struct는 각 프로세스의 메모리 공간을 나타내는 구조체네요..
vm_struct는 vmlist변수로 연결리스트 구현되어 있어 접근할수 있으며 커널이 직접관리
한다고 되어 있네요
3. fork 시에 부모 프로세스의 page table이 자식 프로세스에게 복사되는가?
fork 시에 자식 프로세스의 page table은 새로 할당이 되며 mm_struct, vm_area_struct
역시 새로 할당이 됩니다. 다만 메모리 자체는 공유합니다.
4. 프로세스 전환시 x86 머신의 경우 cr3 가 갱신이 되는가?
이부분이 가장 논란이 많았던 것 같은데... 책 몇권을 뒤져본 결과 스터디 때 내린 결론과
비슷하네요.
cr3 를 매번 로드하지만 cr3의 값 자체가 수정되지는 않는 것 같습니다.
cr3를 로드하는 자체가 부하가 많이 걸린다기 보다는 cr3의 값이 변경될때 tlb를 죄다
flush 시키고 새로 올리고 하는데에 훨씬 부하가 많이 걸릴꺼 같기도 하고
cr3 의 값이 수정되냐 안되냐 이렇게 따져 묻는 편이 맞는거 같기도 한데...
그래도 좀 애매하네요... 이부분 잘 아시는 분 리플을....
논란이 있었던 부분중에서...
1. high_memory는 언제나 0xC0000000 + 896M 의 위치를 가리키는가?
high_memory 라벨은 실제 물리메모리 맵핑이 끝나는 부분을 가리키므로 최대값이
0xC0000000+896M 이며 실제 물리메모리의 양에 따라 달라질수 있다.
( 리눅스 커널 구조와 원리 책에서 참조 )
2. vm_area_struct구조체는 VMALLOC_START~ VMALLOC_END 부분을 나타내는구조체
인가?
이부분은 제가 희미한 기억으로 잠시 착각한 것 같습니다. vmalloc() 함수 수행시 할당되는
위의 불연속적인 공간을 나타내는 구조체는
vm_struct 이며 vm_area_struct는 각 프로세스의 메모리 공간을 나타내는 구조체네요..
vm_struct는 vmlist변수로 연결리스트 구현되어 있어 접근할수 있으며 커널이 직접관리
한다고 되어 있네요
3. fork 시에 부모 프로세스의 page table이 자식 프로세스에게 복사되는가?
fork 시에 자식 프로세스의 page table은 새로 할당이 되며 mm_struct, vm_area_struct
역시 새로 할당이 됩니다. 다만 메모리 자체는 공유합니다.
4. 프로세스 전환시 x86 머신의 경우 cr3 가 갱신이 되는가?
이부분이 가장 논란이 많았던 것 같은데... 책 몇권을 뒤져본 결과 스터디 때 내린 결론과
비슷하네요.
cr3 를 매번 로드하지만 cr3의 값 자체가 수정되지는 않는 것 같습니다.
cr3를 로드하는 자체가 부하가 많이 걸린다기 보다는 cr3의 값이 변경될때 tlb를 죄다
flush 시키고 새로 올리고 하는데에 훨씬 부하가 많이 걸릴꺼 같기도 하고
cr3 의 값이 수정되냐 안되냐 이렇게 따져 묻는 편이 맞는거 같기도 한데...
그래도 좀 애매하네요... 이부분 잘 아시는 분 리플을....
댓글 2
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 파일시스템 스터디 관련 Q&A 게시판 입니다. [2] | woos | 2016.04.09 | 455 |
18 | 이번주 스터디 공지 [1] | 원민수 | 2008.05.02 | 10226 |
17 | 저기.. 저도 담주가 시험이라 불참할꺼같아요.. 죄송합니다.!(냉무) [4] | 정재우 | 2008.04.18 | 10168 |
16 | 다음주까지 알아와야 할 부분. [4] | 원민수 | 2008.04.13 | 13703 |
15 | 담주가 시험기간이라 낼 참석하기 힘들것 같습니다. [ 냉무] | 이수연 | 2008.04.12 | 8600 |
14 | " |
4번은 아마 제가 알기로 light weight 프로세스 즉 쓰레드일경우에 자신의 부모와 스케쥴시 cr3값이 바뀌지 않는걸로 알고 있고 다른 프로세스일 경우에만 cr3가 변경되는걸로 알고있네요....그리고 커널쓰레드로 진입할때도 cr3를 바꿀 필요가 없는걸로 알고 있습니다. 관련된 tlb lazy정책이 있는데 이는 리눅스커널의 이해(96~97페이지 참조.2장하드웨어캐쉬및tlb다루기)를 참조하세용