In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Changes

Jump to navigation Jump to search
950 bytes added ,  00:18, 29 November 2015
→‎Architecture: Explain processes and RAMPIDs
Line 6: Line 6:     
The kernel runs in supervisor mode on the PowerPC, and performs the basic tasks of a microkernel. It is responsible for process isolation, memory management, and interrupt dispatching, as well as communication with [[IOSU]]. Cafe OS applications run as user mode processes, with separate address spaces and W^X memory protection. The kernel provides basic [[Cafe_OS_Syscalls|syscalls]] for running processes.
 
The kernel runs in supervisor mode on the PowerPC, and performs the basic tasks of a microkernel. It is responsible for process isolation, memory management, and interrupt dispatching, as well as communication with [[IOSU]]. Cafe OS applications run as user mode processes, with separate address spaces and W^X memory protection. The kernel provides basic [[Cafe_OS_Syscalls|syscalls]] for running processes.
 +
 +
===Processes===
 +
A process in Cafe OS represents a single running application, with its own code, memory, and permissions. Cafe OS only executes the code of a single process at a time, but it can hold the data of multiple processes in memory simultaneously, and switch between them. Rather than allowing arbitrary process creation, there is RAM reserved for a single foreground app, a single background app, and various other special processes. Each running process is assigned a unique identifier called a RAMPID:
 +
{| class="wikitable"
 +
|-
 +
! RAMPID
 +
! Description
 +
|-
 +
| 0
 +
| Cafe OS
 +
|-
 +
| 1
 +
| root.rpx
 +
|-
 +
| 2
 +
| ???
 +
|-
 +
| 3
 +
| ???
 +
|-
 +
| 4
 +
| Background app
 +
|-
 +
| 5
 +
| Home Menu
 +
|-
 +
| 6
 +
| Error display
 +
|-
 +
| 7
 +
| Foreground app
 +
|}
 +
 +
In addition to RAMPID, Cafe OS processes have another type of process ID called a fixed process ID (PFID). Rather than representing which part of memory a process occupies, PFID actually specifies which specific app/task is running.
    
===Loader===
 
===Loader===
203

edits

Navigation menu