운영체제 기본/Linux/ELF 로딩/ELF 세그먼트와 주소 공간: 두 판 사이의 차이

잔글 관리자님이 운영체제 기본/Linux의 ELF 로딩/ELF 세그먼트와 주소 공간 문서를 운영체제 기본/Linux/ELF 로딩/ELF 세그먼트와 주소 공간 문서로 이동했습니다: Linux 각론 제목을 계층형 경로로 통일
잔글 Linux 각론 경로 변경에 따른 본문·목차·틀 링크 갱신
 
1번째 줄: 1번째 줄:
{{이전 다음 문서
{{이전 다음 문서
|이전=← 이전 문서<br />[[운영체제 기본/Linux의 ELF 로딩/execve와 실행 이미지 교체|execve와 실행 이미지 교체]]
|이전=← 이전 문서<br />[[운영체제 기본/Linux/ELF 로딩/execve와 실행 이미지 교체|execve와 실행 이미지 교체]]
|목차=[[운영체제 기본/Linux의 ELF 로딩|ELF 로딩 목차]]
|목차=[[운영체제 기본/Linux/ELF 로딩|ELF 로딩 목차]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux의 ELF 로딩/초기 스택과 사용자 모드 진입|초기 스택과 사용자 모드 진입]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux/ELF 로딩/초기 스택과 사용자 모드 진입|초기 스택과 사용자 모드 진입]]
}}
}}


97번째 줄: 97번째 줄:
매핑을 만들었다는 것은 주소 구간과 그 의미를 정했다는 뜻이다. 모든 파일 페이지를 RAM에 읽어 왔다는 뜻은 아니다. 처음 명령어를 가져오거나 데이터를 읽을 때 아직 페이지가 연결되지 않았다면 페이지 폴트가 발생하고, 커널이 파일 페이지를 찾아 페이지 테이블을 채운 뒤 접근을 재개한다. 페이지 캐시에 내용이 있으면 저장 장치에서 다시 읽지 않아도 된다.
매핑을 만들었다는 것은 주소 구간과 그 의미를 정했다는 뜻이다. 모든 파일 페이지를 RAM에 읽어 왔다는 뜻은 아니다. 처음 명령어를 가져오거나 데이터를 읽을 때 아직 페이지가 연결되지 않았다면 페이지 폴트가 발생하고, 커널이 파일 페이지를 찾아 페이지 테이블을 채운 뒤 접근을 재개한다. 페이지 캐시에 내용이 있으면 저장 장치에서 다시 읽지 않아도 된다.


반대로 헤더 읽기나 마지막 페이지의 영 초기화처럼 로딩 중 실제 접근이 일어나는 부분도 있다. 따라서 “전부 미리 읽는다”와 “로딩 중에는 아무 페이지도 읽지 않는다”는 설명은 모두 부정확하다. 자세한 경로는 [[운영체제 기본/Linux의 메모리 매핑/파일 매핑과 COW#읽기 폴트와 페이지 캐시|파일 매핑의 읽기 폴트]]에서 다룬다.
반대로 헤더 읽기나 마지막 페이지의 영 초기화처럼 로딩 중 실제 접근이 일어나는 부분도 있다. 따라서 “전부 미리 읽는다”와 “로딩 중에는 아무 페이지도 읽지 않는다”는 설명은 모두 부정확하다. 자세한 경로는 [[운영체제 기본/Linux/메모리 매핑/파일 매핑과 COW#읽기 폴트와 페이지 캐시|파일 매핑의 읽기 폴트]]에서 다룬다.


이제 실행 파일의 코드와 데이터를 사용할 주소 공간이 준비되었다. 다음은 [[운영체제 기본/Linux의 ELF 로딩/초기 스택과 사용자 모드 진입|초기 스택과 사용자 모드 진입]]에서 인자와 스택을 만들고 CPU가 실행을 시작할 상태를 준비하는 과정이다.
이제 실행 파일의 코드와 데이터를 사용할 주소 공간이 준비되었다. 다음은 [[운영체제 기본/Linux/ELF 로딩/초기 스택과 사용자 모드 진입|초기 스택과 사용자 모드 진입]]에서 인자와 스택을 만들고 CPU가 실행을 시작할 상태를 준비하는 과정이다.


== load_bias와 적재 주소 ==
== load_bias와 적재 주소 ==
110번째 줄: 110번째 줄:


{{이전 다음 문서
{{이전 다음 문서
|이전=← 이전 문서<br />[[운영체제 기본/Linux의 ELF 로딩/execve와 실행 이미지 교체|execve와 실행 이미지 교체]]
|이전=← 이전 문서<br />[[운영체제 기본/Linux/ELF 로딩/execve와 실행 이미지 교체|execve와 실행 이미지 교체]]
|목차=[[운영체제 기본/Linux의 ELF 로딩|ELF 로딩 목차]]
|목차=[[운영체제 기본/Linux/ELF 로딩|ELF 로딩 목차]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux의 ELF 로딩/초기 스택과 사용자 모드 진입|초기 스택과 사용자 모드 진입]]
|다음=다음 문서 →<br />[[운영체제 기본/Linux/ELF 로딩/초기 스택과 사용자 모드 진입|초기 스택과 사용자 모드 진입]]
}}
}}


{{운영체제 기본 둘러보기}}
{{운영체제 기본 둘러보기}}