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

Friday, February 27, 2004

Welcome to the Pensieve! In here, you can find random thoughts that capture my interests. My interest, which happens to vary with time currently stands at architecting software systems, following news on open source front, Linux, UML, various modeling techniques, reading books and articles on management, software and science fiction and of course listening to music.