현재 내 프로젝트는
'Tock-style, Rust based RTOS mini-kernel, static task structure' 형태이다.앞으로 optimization 방향성은
- Dynamic task generation adn allocation, scheduling structure
- Tiered trust system using MPU
이렇게 잡고 있다.
그 중 첫 번째인 '동적 태스크 할당 및 운영 구조' 형태로 최적화해보고자 한다.
init_kernel_and_tasks()에서 컴파일 시점에 고정된 엔트리 함수 주소(task0_entry, task1_entry, task2_entry)로 설정되어 있음.malloc이나 Box같은 힙 기반 구조가 없음.no_std 환경에서 기본 할당자가 없다고 한다.따라서, 현재 구조는 Static RTOS Simulation 모델이므로, 커널이 프로세스 로딩이나 태스크 스택 재활용을 전혀 수행하지 못한다.
linked_list_allocator를 통해 전역 힙 초기화.TaskList구조체에 VecDeque<Task> 또는 수동 linkedlist 사용.spawn(task_fn, stack_size) 같은 syscall 수준의 인터페이스 -> svc::abi::SPAWN_TASK 추가 및 커널에서 TCB 생성init_task_stack_and_tck() 재사용 가능.task_return_trap() 이후 자원 정리. ┌──────────────────────────────┐
│ Kernel (MSP) │
│ - Scheduler (Linked list) │
│ - Heap allocator │
│ - SVC handler (spawn, I/O)│
└──────────────┬───────────────┘
│
┌──────────────────────┴──────────────────────┐
│ Task N │
│ - Stack (heap allocated) │
│ - TCB { sp, regs, state, entry } │
│ - Runs on PSP │
└─────────────────────────────────────────────┘