지난 시간 매핑이라는 용어가 계속 나왔는데 정작 매핑의 정의가 나와 있지 않아 한번 찾아 봤습니다.
- 메모리 매핑
이미지를 실행하려면, 그 실행 이미지의 내용을 프로세스의 가상 주소공간으로 가져와야 한 다. 실행 이미지가 링크해서 사용하는 공유 라이브러리도 마찬가지다. 리눅스는 실행파일을 실제로 물리적 메모리에 가져오는 대신에, 단지 프로세스의 가상 메모리와 연결만 시킨다. 그리고 응용 프로그램이 실행되면서 프로그램의 일부가 참조됨에 따라, 실행 이미지로부터 해당하는 이미지 부분을 메모리로 가져온다. 이렇게 이미지를 프로세스의 가상 주소공간에 연결하는 것을 메모리 매핑이라고 한다.
모든 프로세스의 가상 메모리는 mm_struct 자료구조로 표현된다. 여기에는 현재 실행중인 이미지(예를 들어, bash의)에 대한 정보와, 여러개의 vm_area_struct 자료구조에 대한 포 인터가 들어 있다. 각각의 vm_area_struct 자료구조는 가상 메모리 영역의 시작과 끝, 프 로세스의 접근 권한, 메모리에 대한 연산들 등을 기술한다. 여기서 연산은 이 영역의 가상 메모리를 처리하기 위해 리눅스가 사용해야 하는 루틴들이다. 예를 들어, 가상 메모리 연산 중의 하나는, 프로세스가 가상 메모리를 접근하려다 (페이지 폴트를 통해) 그 메모리가 실제 로는 물리적 메모리에 없다는 것을 알았을 때, 이를 처리하는 올바른 작업을 수행한다. 이 연산이 nopage 연산이다. 리눅스는 실행 이미지의 페이지를 메모리로 옮길 것을 요구할 때 nopage 연산을 사용한다.
어떤 실행 이미지가 프로세스의 가상 주소에 매핑될 때, 한 세트의 vm_area_struct 자
료구조가 만들어진다. 각 vm_area_struct 자료구조는 실행 이미지의 한 부분을 나타낸다
- 실행 코드, 초기화된 데이터(변수), 초기화되지 않은 데이터(BSS) 등이다. 리눅스는 상당수
의 표준 가상 메모리 연산을 지원하며, vm_area_struct 자료구조가 만들어질 때, 그에 맞
는 일련의 가상 메모리 연산이 여기에 지정된다.
출처 : http://wiki.kldp.org/Translations/html/The_Linux_Kernel-KLDP/tlk3.html
참고로 mm_struct, vm_area_struct에 대한 내용은 우리 교재 14장에 나옵니다.
댓글 4
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] | woos | 2016.04.09 | 2197 |
1605 | 현재 2명 출석... | 김기태 | 2008.06.21 | 8968 |
1604 | 지금까지 공부한 boot 과정 순서도입니다. [5] | 김종화 | 2007.04.09 | 8944 |
1603 | 읔, 이번주 스터디 불참, [2] | 강진성 | 2010.04.09 | 8924 |
1602 | 진행사항 및 다음주 일정 조사입니다~ [7] | 남현우 | 2008.05.18 | 8912 |
1601 | lilo 분석자료 [4] | 남현우 | 2007.05.21 | 8851 |
1600 | 허허~ 이런이런~ [4] | 변유준 | 2007.06.13 | 8832 |
1599 | 7차 분들이 드디어 시작했네요. 한번 우리를 따라와보시라~! 하하 [5] | 윤석훈 | 2010.04.08 | 8790 |
1598 | [잡담] 가지고놀 괜찮은 Exynos 4412 보드하나~ [2] | 우상정 | 2012.07.11 | 8729 |
1597 | EMt-64 4기 팀에 참여 명단 알려주세요. | 백창우 | 2008.08.12 | 8709 |
1596 | 이번주 진행사항 | 남현우 | 2008.05.24 | 8706 |
1595 | 1월3일 모임 | 조용락 | 2009.01.02 | 8701 |
1594 | head.S 정리 자료입니다. | 선준규 | 2007.05.24 | 8697 |
1593 | Slab, Slub, Slob에 관해서... [2] | 조성진 | 2013.05.06 | 8648 |
1592 | procfs, sysfs | 홍문화 | 2011.04.12 | 8633 |
1591 | 만들면서 배우는 OS 커널의 구조와 원리 - 정리 되어있네요 | 박 경훈 | 2011.05.03 | 8542 |
» | 매핑(mapping)의 의미 [4] | 홍문화 | 2011.05.03 | 8502 |
1589 | 3기분들 5기 스터디 신청하시죠?? | 송형주 | 2008.08.11 | 8501 |
1588 | AAA ~ AND 까지 입니다. | 박경태 | 2007.03.10 | 8486 |
1587 | 리눅스 커널의 이해 [2] | 백창우 | 2007.10.24 | 8480 |
1586 | blkb 명령어에 대하여..... [1] | 송원종 | 2008.11.07 | 8470 |
.
저도 궁금했는데 깔끔하게 용어정리가 되네요 ^^ 감사합니다.