핵심 문제
- 그동안 각 앱마다 고유 메모리 공간을 부여했고, Stack pointer도 잘 활용했으며, 스케줄러에서도 첫 번째 스위칭까지는 잘됐다.
- 하지만 첫 번째 Context Switching 이후에 계속 하드폴트가 나고 있었다.
아!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
현재 코드에서 sched::start()를 호출한 후 PendSV가 발생하면, 커널의 실행 컨텍스트가 손실되어 문제가 발생하는 것 같다.
현재 구조의 문제점:
실제 OS 구조에서는:
커널 전용 스택 공간 할당
PSP는 태스크 전용으로만 사용
MSP는 커널(인터럽트, 스케줄러) 전용으로 유지
이렇게 수정하면 OS가 태스크들을 관리하면서도 자신만의 메모리 공간을 유지할 수 있을 것 같다.