Tuesday, May 11, 2004

Architectural Patterns and kernels

Monolithic architecture - Exposes a high level interface where with core services closely coupled with each other. Linux and other monolithic kernels provide a high level system call API and internally, services like memory management, I/O etc are tightly coupled.

Pro: Performance
Con: Defect on one service may affect other services

Microkernel architecture - Services decoupled and run on own process. Use message passing mechanism to communicate with each other to reduce coupling.

Pro: Easy to extend or add new features. Malfunctioning service can be restarted without affecting others
Con: Slower

Hybrid kernels - Micro kernels that have non-essential code in kernel space for efficiency. Microsoft Windows NT and strains are an example

Exokernels - Provides a library for core OS features (in terms of the developer requesting particular pages of memory or blocks of diskspace). Application developer builds on top. Multiple libraries can co-exist allowing applications designed for different libraries to run side by side.

Thursday, May 06, 2004

Some Behavioral Patterns

Visitor: Abstracts operations on a data structure and to avoid making changes to existing data structures. Allows new operations to be added without changing data structures

Strategy: Abstracts similar algorithms so that it can be interchanged without affecting the data structure. Used to eliminate switch-case statements

Iterator: Provides a unified mechanism to traverse data structures without encapsulating the traversal logic