매핑(mapping)의 의미

홍문화 2011.05.03 11:22 조회 수 : 8502


지난 시간 매핑이라는 용어가 계속 나왔는데 정작 매핑의 정의가 나와 있지 않아 한번 찾아 봤습니다.



- 메모리 매핑


이미지를 실행하려면, 그 실행 이미지의 내용을 프로세스의 가상 주소공간으로 가져와야 한 다. 실행 이미지가 링크해서 사용하는 공유 라이브러리도 마찬가지다. 리눅스는 실행파일을 실제로 물리적 메모리에 가져오는 대신에, 단지 프로세스의 가상 메모리와 연결만 시킨다. 그리고 응용 프로그램이 실행되면서 프로그램의 일부가 참조됨에 따라, 실행 이미지로부터 해당하는 이미지 부분을 메모리로 가져온다. 이렇게 이미지를 프로세스의 가상 주소공간에 연결하는 것을 메모리 매핑이라고 한다.

모든 프로세스의 가상 메모리는 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장에 나옵니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2197
1605 현재 2명 출석... 김기태 2008.06.21 8968
1604 지금까지 공부한 boot 과정 순서도입니다. [5] file 김종화 2007.04.09 8944
1603 읔, 이번주 스터디 불참, [2] 강진성 2010.04.09 8924
1602 진행사항 및 다음주 일정 조사입니다~ [7] 남현우 2008.05.18 8912
1601 lilo 분석자료 [4] file 남현우 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 정리 자료입니다. file 선준규 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] file 백창우 2007.10.24 8480
1586 blkb 명령어에 대하여..... [1] 송원종 2008.11.07 8470
XE Login