이번에는 페이지 테이블 비트 값으로 메모리 상태를 점검해보자.
| A6F9C000[0D3F]=93F1140E
헥사값이 E로 끝나니 10으로 이진수가 끝남을 알 수 있다. 물론 섹션 엔트리겠지.
0x93F1140E를 이진수로 바꾸면 아래와 같다.
자릿수) 10987654321098765432109876543210 LSB
10010011111100010001010000001110 LSB
AP[11:10]이 01이네. 아래 테이블에서 첫번째에 해당하는 내용임을 알 수 있다.
AP[1:0] 권한 User
01 | Read/Write No access
10 | Read/Write Read only
11 | Read Write Read/Write
아래 페이지 테이블을 한번 보자.
A6F9C000[058E]=A6E9C831
0xA6E9C831
자릿수) 10987654321098765432109876543210 LSB
10100110111010011100100000110001 LSB
AP[11:10]이 10이네. User Read only이다.
이렇게 각각 페이지 별로 메모리 설정이 되어 있다.
만약에 유저 스페이스에서 AP[11:10]가 01인 페이지 테이블에 접근을 하면 페이지 폴트가 발생할 것이다.
'Core BSP 분석 > 리눅스 커널 핵심 분석' 카테고리의 다른 글
Crash 명령어 스택 심볼 보기 (0) | 2023.05.05 |
---|---|
MMU 페이지 테이블 확인 (0) | 2023.05.05 |
커널패닉 - ext4 파일 시스템 (0) | 2023.05.05 |
copy_mm()함수 (0) | 2023.05.05 |
커널 에러 로그(1) (0) | 2023.05.05 |