aboutsummaryrefslogtreecommitdiffstats
path: root/docs/research/071-logical-page-portability.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/research/071-logical-page-portability.md')
-rw-r--r--docs/research/071-logical-page-portability.md36
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)가 필요하다.