10. 파일 시스템
tar(ustar) 기반 파일 시스템 설계, fs_init/fs_flush 구현, readfile/writefile 시스템 콜 추가, SUM 비트 문제 해결까지 진행
tar(ustar) 기반 파일 시스템 설계, fs_init/fs_flush 구현, readfile/writefile 시스템 콜 추가, SUM 비트 문제 해결까지 진행
virtio 프로토콜과 virtqueue 구조 이해, MMIO 레지스터 접근, virtio-blk 드라이버 초기화, 디스크립터 체인을 통한 I/O 요청 구현까지 진행
syscall 함수 구현, ecall 트랩 처리와 SYS_PUTCHAR/SYS_GETCHAR/SYS_EXIT 핸들러,간단한 셸 구현까지 진행
user.ld 링커 스크립트 작성, objcopy 빌드로 바이너리 임베딩, create_process 수정으로 유저 페이지 매핑, sret으로 U-Mode 전환까지 진행
페이징의 개념부터 시작해, Sv32 가상 주소 구조, map_page 구현, 커널 identity mapping, 컨텍스트 스위칭 시 satp 전환까지 진행
Bump Allocator로 페이지 할당을 구현하고, 프로세스 제어 블록(PCB), switch_context, 스케줄러(yield), 예외 처리기 수정까지 진행
예외 발생 시 CPU가 커널로 제어를 넘기는 과정을 살펴보고, kernel_entry와 handle_trap을 구현
ecall로 SBI를 호출하여 Hello World를 출력하고, printf와 memset/memcpy/strcpy/strcmp과 커널 패닉 매크로를 직접 구현
OpenSBI로 QEMU를 부팅하고, 링커 스크립트로 메모리 배치를 정의한 뒤, 최소한의 커널을 작성하여 실행하는 과정
OS 개발을 위한 QEMU/OpenSBI 환경 설정, RISC-V의 CPU 모드(U/S/M), 트랩 흐름, 특권 명령, 인라인 어셈블리까지 정리한 글입니다.