Pickle risc will run a multitasking OS.
Microkernels are cool.
-
Scheduler
-
IPC
- Message passing
- Synchronous
- Blocking and non-blocking mode
- Small fixed payload
- Registers only?
- Synchronous
- Shared memory
sharemem
- "Share this page of my memory to that process"
- returns some sort of ID uniquely identifying the share
mmap
can take the ID from previous step to map the memory
- Message passing
-
Memory / paging
- UART driver
- Disk driver
- Filesystem
- Timer
- Networking
- Synchronization & locking
- Process can only block on message sending / receiving
- Mutex impl -- a little like futex in Linux
- Atomic variable
- 0: unlocked
- 1: locked, noone is waiting
-
=2 : locked, waiting processes
- Sends message to synchronization server
- Block on this
- How is the lock object identified?
- the sync server should not need (privileged) access to memory mappings
- Lock objects carries ID inside?
- How is the lock object identified?
- Block on this
- Atomic variable