음... 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@/~~
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@/~~
'OS Kernel' 카테고리의 다른 글
[ARM] Memory Setting 전혀 모르겠음.. ㅡ_ㅡ;;; (0) | 2004.11.16 |
---|---|
[ARM] SWI Test (0) | 2004.11.16 |
[ARM] 크헉.. 사.. 삽질.. ㅡ0ㅠ (0) | 2004.11.10 |
[ARM] 윈도우용 툴킷 있는곳.. (0) | 2004.11.10 |
[ARM] 오우~ 허접한 Task Switching 코드 작성.. (2) | 2004.11.10 |