운영체제 기본/Linux/메모리 매핑/mmap과 주소 공간: 두 판 사이의 차이
잔글 관리자님이 운영체제 기본/Linux의 메모리 매핑/mmap과 주소 공간 문서를 운영체제 기본/Linux/메모리 매핑/mmap과 주소 공간 문서로 이동했습니다: Linux 각론 제목을 계층형 경로로 통일 |
잔글 Linux 각론 경로 변경에 따른 본문·목차·틀 링크 갱신 |
||
| 1번째 줄: | 1번째 줄: | ||
{{이전 다음 문서 | {{이전 다음 문서 | ||
|이전=처음 문서 | |이전=처음 문서 | ||
|목차=[[운영체제 기본/ | |목차=[[운영체제 기본/Linux/메모리 매핑|메모리 매핑 목차]] | ||
|다음=다음 문서 →<br>[[운영체제 기본/ | |다음=다음 문서 →<br>[[운영체제 기본/Linux/메모리 매핑/페이지 폴트 처리|페이지 폴트 처리]] | ||
}} | }} | ||
| 44번째 줄: | 44번째 줄: | ||
=== x86-64: syscall과 x86 mmap 진입점 === | === x86-64: syscall과 x86 mmap 진입점 === | ||
네이티브 x86-64 ABI는 <code>syscall</code> 명령을 사용한다. 시스템 콜 번호는 <code>rax</code>에, 여섯 인자 <code>addr, len, prot, flags, fd, offset</code>은 순서대로 <code>rdi, rsi, rdx, r10, r8, r9</code>에 놓인다. <code>mmap</code> 번호는 9다. 이 진입은 [[운영체제 기본/ | 네이티브 x86-64 ABI는 <code>syscall</code> 명령을 사용한다. 시스템 콜 번호는 <code>rax</code>에, 여섯 인자 <code>addr, len, prot, flags, fd, offset</code>은 순서대로 <code>rdi, rsi, rdx, r10, r8, r9</code>에 놓인다. <code>mmap</code> 번호는 9다. 이 진입은 [[운영체제 기본/Linux/메모리 매핑/페이지 폴트 처리|페이지 폴트]]처럼 IDT를 통하는 경로가 아니다.<ref name="mmap-x86-entry">[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/entry/entry_64.S?h=v6.12 Linux v6.12, arch/x86/entry/entry_64.S: entry_SYSCALL_64와 ABI 주석].</ref><ref name="mmap-x86-table">[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/entry/syscalls/syscall_64.tbl?h=v6.12 Linux v6.12, arch/x86/entry/syscalls/syscall_64.tbl: mmap].</ref> | ||
시스템 콜 디스패치를 거쳐 <code>arch/x86/kernel/sys_x86_64.c</code>의 <code>SYSCALL_DEFINE6(mmap, ...)</code> 본문에 도달한다. 이 코드는 바이트 단위 오프셋의 페이지 정렬을 검사하고, <code>off >> PAGE_SHIFT</code>로 페이지 단위 오프셋을 만들어 <code>ksys_mmap_pgoff()</code>를 호출한다.<ref name="mmap-x86">[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/kernel/sys_x86_64.c?h=v6.12 Linux v6.12, arch/x86/kernel/sys_x86_64.c: SYSCALL_DEFINE6(mmap)].</ref> | 시스템 콜 디스패치를 거쳐 <code>arch/x86/kernel/sys_x86_64.c</code>의 <code>SYSCALL_DEFINE6(mmap, ...)</code> 본문에 도달한다. 이 코드는 바이트 단위 오프셋의 페이지 정렬을 검사하고, <code>off >> PAGE_SHIFT</code>로 페이지 단위 오프셋을 만들어 <code>ksys_mmap_pgoff()</code>를 호출한다.<ref name="mmap-x86">[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/kernel/sys_x86_64.c?h=v6.12 Linux v6.12, arch/x86/kernel/sys_x86_64.c: SYSCALL_DEFINE6(mmap)].</ref> | ||
| 91번째 줄: | 91번째 줄: | ||
{{이전 다음 문서 | {{이전 다음 문서 | ||
|이전=처음 문서 | |이전=처음 문서 | ||
|목차=[[운영체제 기본/ | |목차=[[운영체제 기본/Linux/메모리 매핑|메모리 매핑 목차]] | ||
|다음=다음 문서 →<br>[[운영체제 기본/ | |다음=다음 문서 →<br>[[운영체제 기본/Linux/메모리 매핑/페이지 폴트 처리|페이지 폴트 처리]] | ||
}} | }} | ||
{{운영체제 기본 둘러보기}} | {{운영체제 기본 둘러보기}} | ||