
Services that provide base BF functionality
(base bf functionality is: capabilities, communication, skb)
- bind
- capability management
- group_comm
- mem alloc
- routing
- skb

Services that provide general OS functionality
- devices
- environment
- VMem
- VMachine
- naming?
- network stack
- shell
- terminal
- processes
- threading?
- debugging
- power mgmt
- storage mgmt
- resource mgmt?
- tracing?

Base:
- capability management (at user space) (creation, deletion, bookkeeping)
- capability transfer
- memory allocation (manage physical memory page pool)
- basic communication (UMP, LMP mechanisms - not binding, waiting, etc.)

Virtual Mem Management:
- address space management (creation, deletion, extension)
- protection management (shmem)
- device memory access

skb:
- knowledge databse (store, query)
- constraint solving engine

Communication:
- basic communication (mechanisms for performing IDC - LMP, UMP)
- binding (binding, waitsets) (can this be separated from basic comm?)
- stubs
- group communication
- routing
- name service

Process management
- dispatchers (basic dispatcher functionality)
- scheduling dispatchers
- threading within a dispatcher (scheduling)
- thread management (pthreads-like functionality)
- process management (start, stop, create, spawn, span, list)
- process accounting
- process environment

Synchronisation
- kernel mechanisms?
- lock server - mutual exclusion
- signalling mechnisms
- thread mechanisms?

Devices
- interrupt handling
- device access framework (registers, memory)
- DMA management
- device driver framework (if any?)
- device drivers
- bus management (bus scanning, device enumeration, etc.)
- device database (tracking devices abvailable, tracking device details (addresses, IRQs, busses, etc. - also skb functionality)
- device management (starting device drivers, stopping device drivers, initialising device drivers with proper device data)
- pluggable device management
- timer services (time of day, start timer, stop timer, alarm)

Resource management and accounting
- monitor resource use
- database of historic resource use 
- resource accounting (who is using what resources, when)
- resource access management (give access to resources, remove access to resources) (who to give access to? processes, threads? drivers? users? apps? domains?)
- what are 'resources'? 
  + basic resources: CPU, memory, IRQs, device memory, registers?, coprocessors?
  + OS resources: devices, drivers, cpu time, files, network bandwidth
- scheduling?
- power management
  + monitor power usage
  + power management mechanisms
  + power management policies
- paging (virtual memory)
- hardware counters (cycle counters, etc.)

Protection and Security
- principals (users, processes, domains, dispatchers, applications, ...?)
- objects (endpoints, processes, dispatchers, domains, apps, files, devices, network, terminals, ...?) (basic resources, OS resources, higehr level concepts?)
- access control mechanisms
- access control policies

Interaction and IO
- storage management (eg filesystem)
- network stack
- terminal
- audio input framework
- audio output
- input framework
- GUI/window framework
- other IO frameworks
- other system-wide frameworks (eg pub/sub, system events, etc.)

Shell
- command interpreter

Applications
- various apps that are not considered part of the OS

Virtualisation
- VMM

Tracing and debugging
- trace collector
- trace database
- access to kernel internals
- access to communication internals
- access to dispatcher internals
- access to process internals
- access to thread internals
- access to memory
