Kernel: Difference between revisions
mNo edit summary |
Pathetic start of documenting the kernel scheduler, but somebody's gotta do it. Feel free to confirm and improve! |
||
| (One intermediate revision by the same user not shown) | |||
| Line 4: | Line 4: | ||
The functionality provided by the kernel to userland applications is exposed via [[SVC|supervisor calls]]. Internally, the implementation of this ABI uses an object-oriented hierarchy of [[:Category:Kernel_objects|objects]]. | The functionality provided by the kernel to userland applications is exposed via [[SVC|supervisor calls]]. Internally, the implementation of this ABI uses an object-oriented hierarchy of [[:Category:Kernel_objects|objects]]. | ||
Low-level system information is exposed by the kernel via mapping the [[Configuration Memory]] page in all processes. | |||
= Scheduler = | |||
Little is known about the scheduler behavior of the 3DS kernel. | |||
Threads on the [[Glossary#appcore|ARM11 appcore]] seem to use cooperative multithreading, i.e. the only way for a CPU to be assigned to another thread is by invoking a system call. Most system calls trigger the scheduler, although some of them only conditionally do. | |||
Threads on the [[Glossary#syscore|ARM11 syscore]] have been hypothesized to use preemptive multithreading, but this is unconfirmed so far. | |||
It is unknown how the ARM9 CPU core and the two remaining New3DS ARM11 cores are scheduled. | |||