2004. 11. 13. 14:33
     

음... Interrupt를 이용한 Context Switching을 고민하고 있는데...
User Level에서 Switching하는거 보다 약간 더 까다로운 문제가 있군.

첫째, Banked Register에 대한 처리 ( SP, LR )
둘째, Reenterance에 대한 처리

이 두가지가 문제가 되는거 같다.
머 사실 Baked Register는 CPSR을 조작하면 되는 문제인데, Reenterance는 쬐금
생각을 더 해봐야겠다.
지금까지의 생각은 Task끼리 Interrupt없이 Sleep() 같은걸 하기위해 Switching을
할때는 직접적으로 Switching 함수를 불러서 수행할 생각이었는데, 이것이 만약에
직접 Call한 Switching함수에서 Interrupt가 불려서 다시 스위칭이 될 경우...
현재 루틴에서는 문제가 발생할 소지가 있다. @0@/~~

간단히 하려고 생각하고 있는데, 자꾸 문제가 나오면서 점점 더 복잡한 로직으로
가는 듯도 하고.. ㅡ_ㅡ;;;
머 빵빵한 x86 같으면 Task 마다 IRQ, SVC Stack을 각각 할당하고
마구 Stack 전환을 난무(??) 하면서 할텐데... 이것도 사실 오바인거 같고.. Orz

흠.. 걍 Task끼리 Switching 할때도 SWI를 통한 Interrupt로 하도록 해서 단순화를
하는것도 생각해 볼만한거 같다.
일단 그람 그래해 볼까나??
훗.. @0@/~~

Android App

Posted by 호기심 많은 kkamagui(까마귀, 한승훈)

댓글을 달아 주세요