diff options
| author | eunhhu <[email protected]> | 2026-09-24 17:33:55 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-09-24 17:33:55 +0100 |
| commit | 4525124c01cc4c4ee335b0a430354a235a6539e0 (patch) | |
| tree | 094372b8d78e05dca5d462aace4affd93450ff21 /docs | |
| parent | b1ce1927022d374198441afafeb27199fc8a052a (diff) | |
| download | pure-4525124c01cc4c4ee335b0a430354a235a6539e0.tar.gz pure-4525124c01cc4c4ee335b0a430354a235a6539e0.zip | |
Admit aligned OS pages in selected paged store
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/research/071-logical-page-portability.md | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/docs/research/071-logical-page-portability.md b/docs/research/071-logical-page-portability.md new file mode 100644 index 0000000..a664432 --- /dev/null +++ b/docs/research/071-logical-page-portability.md @@ -0,0 +1,36 @@ +# 071 — 논리 페이지와 OS 페이지의 경계 + +2026-09-24. 선택형 페이지 저장소는 16 KiB **논리** 페이지로 파일 참조를 +기록하지만, 초기화에서는 OS 페이지 크기도 정확히 16 KiB인지 요구했다. +메모리 매핑의 파일 오프셋과 `MAP_FIXED` 주소는 모두 논리 페이지의 배수다. +[Linux `mmap(2)`](https://man7.org/linux/man-pages/man2/mmap.2.html)과 +[Apple `mmap(2)`](https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/mmap.2.html)의 +페이지 정렬 계약에 따르면, OS 페이지가 16 KiB를 나누면 이 오프셋과 주소는 +OS 페이지에도 정렬된다. 이것은 문서에서 코드의 정렬 조건으로 도출한 +**추론**이며, 4 KiB 호스트에서의 실제 실행 결과를 대신하지 않는다. + +`pure_store_init`은 이제 양의 OS 페이지 크기가 16 KiB를 나누는지 확인한다. +4/8/16 KiB는 받아들이고 64 KiB나 조회 실패는 거절한다. 디스크 형식과 +16 KiB 논리 페이지, 기본 저장소, 실행 코어는 바뀌지 않았다. 같은 GCC 14.2, +Linux AArch64에서 선택형 고정 CLI/HTTP의 링크 `text`는 각각 +24,582→24,614 B, 31,864→31,896 B로 **32 B씩 증가**했다. 기본 코어는 +4,632 B 그대로다. 작은 문서·1 MiB 문서·충돌·복구·재구성·형식 내보내기 +검사와 실제 TUI 조작을 현재 16 KiB OS 페이지에서 통과했다. 지연이나 RSS의 +개선을 주장하지 않는다. + +[최신 소스 묶음](../../prototypes/connections/results/2026-09-24-logical-page/pure-source-preview.tar.gz)을 +다른 디렉터리에서 빌드한 [검사 결과](../../prototypes/connections/results/2026-09-24-logical-page/source-package-check.json)는 +기본 릴리스와 선택형 페이지 TUI를 포함한다. 선택형 소스 CLI+TUI의 +[이동 묶음](../../prototypes/connections/results/2026-09-24-logical-page/pure-document-hybrid-cli-tui-linux-aarch64.tar.gz)은 +압축 58,203 B이며 [다른 위치의 실제 문서 검사](../../prototypes/connections/results/2026-09-24-logical-page/hybrid-package-check.json)를 +통과했다. 이 묶음에는 작성 소스를 읽는 파서와 선택형 TUI도 포함되므로 +기본 코어의 크기가 아니다. + +새 `check-paged-portable`은 선택형 저장소의 C·TUI·고장 경로를 Linux 전용 +크기 검사 없이 실행한다. 기존 macOS arm64 CI의 잘못된 기본 실행물 이름도 +수정하고 이 저장소 검사를 추가했다. 별도 Linux x86_64 CI는 실제 OS 페이지가 +4 KiB임을 확인한 뒤 같은 검사를 실행하도록 작성했다. 현재 Git 원격은 +로컬 저장소이므로 **두 CI 모두 미실행**이다. 4 KiB Linux와 macOS에서 +빌드·매핑·실제 문서 수정이 통과하기 전에는 이 변경을 검증된 플랫폼 지원으로 +표기하지 않는다. 현재 저장소는 선택형이고, 큰 문서의 온디스크 형식은 +기본 저장소와 호환되지 않아 [오프라인 내보내기](062-paged-store-rollback.md)가 필요하다. |
