I think of creating a thread to propose and discuss about some "design patterns" that can be used in OS developpement, this can make the developpement totally independent from code, and well give to everyone an idea of what he want to develop.
we can imagine for example some generic design patterns like kernel, VFS, ModuleManager ....etc
or more specific like : FIFO_scheduler, dlmalloc ....etc
what do you think ?
Design patterns in OS developpement
- Colonel Kernel
- Member
- Posts: 1437
- Joined: Tue Oct 17, 2006 6:06 pm
- Location: Vancouver, BC, Canada
- Contact:
Re:Design patterns in OS developpement
I thought of starting such a thread myself, but I've been busy in The Real World.
Patterns are great because they allow developers to discuss very complex concepts with a succinct vocabulary. I see many, many discussions of implementation details on these boards -- which is great, if that's what you're looking for -- but it would be nice to be able to talk about design at a bit more abstract level from time to time. The last time I tried, I think my fingers typed faster than my brain and I ended up looking like a lunatic. If we all had more or less the same pattern vocabulary, it would make such discussions a lot less confusing.
For people reading this who are wondering "what the heck are design patterns?", here is the book you need to read:
http://c2.com/cgi/wiki?DesignPatternsBook
It will make you a better developer, I promise.
Patterns are great because they allow developers to discuss very complex concepts with a succinct vocabulary. I see many, many discussions of implementation details on these boards -- which is great, if that's what you're looking for -- but it would be nice to be able to talk about design at a bit more abstract level from time to time. The last time I tried, I think my fingers typed faster than my brain and I ended up looking like a lunatic. If we all had more or less the same pattern vocabulary, it would make such discussions a lot less confusing.
For people reading this who are wondering "what the heck are design patterns?", here is the book you need to read:
http://c2.com/cgi/wiki?DesignPatternsBook
It will make you a better developer, I promise.
If you're proposing mining the OSdev problem space for new patterns, this is significantly harder than just using existing patterns in your OS design. It's a worthy goal, because it makes effective OS design techniques more accessible to beginners. It's just really difficult to do, because you have to identify enough instances of the pattern that work well in practice. But by all means, if anyone has any ideas they want to put out there as potential OS dev design patterns, post it. It would be a very interesting read.we can imagine for example some generic design patterns like kernel, VFS, ModuleManager ....etc
or more specific like : FIFO_scheduler, dlmalloc ....etc
Top three reasons why my OS project died:
- Too much overtime at work
- Got married
- My brain got stuck in an infinite loop while trying to design the memory manager
Re:Design patterns in OS developpement
Sure, it will be hard to do, but, if everyone give an idea, i belieave we can get greate things.
we can propose a problem, and each participant give its aproach, then we can compare, by this way we can collect some ideas, and build a more generic aproach to get a "design pattern"
In the future we can also start a common OS project based on these patterns .... ::)
hard to achieve but all gib project born from crazy ideas
By the way : sorry for my bad english :-[
we can propose a problem, and each participant give its aproach, then we can compare, by this way we can collect some ideas, and build a more generic aproach to get a "design pattern"
In the future we can also start a common OS project based on these patterns .... ::)
hard to achieve but all gib project born from crazy ideas
By the way : sorry for my bad english :-[
-
- Member
- Posts: 1600
- Joined: Wed Oct 18, 2006 11:59 am
- Location: Vienna/Austria
- Contact:
Re:Design patterns in OS developpement
design patterns ... Well, I *could* imagine having the term virtual file system at hands for the layer between the physical file system drivers and the rest of kernel world.
what about server sided graphical user interface - the client library knows nothing about drawing controls - it orders them from the server - and client sided graphical user interface - the server knows only about drawing pixels lines, rectangles and circles - and to blit images to screen, and the client library has all the drawing routines *intus*.
Well it is merely a proposal from the practical world. *g* I've never been good with theory alone.
@addoula: et que fais-tu si je n'excuse pas ton anglais tellement abysmale? (- well, according to your own words - i think you're pretty good with it.) *winkwink*grin*
what about server sided graphical user interface - the client library knows nothing about drawing controls - it orders them from the server - and client sided graphical user interface - the server knows only about drawing pixels lines, rectangles and circles - and to blit images to screen, and the client library has all the drawing routines *intus*.
Well it is merely a proposal from the practical world. *g* I've never been good with theory alone.
@addoula: et que fais-tu si je n'excuse pas ton anglais tellement abysmale? (- well, according to your own words - i think you're pretty good with it.) *winkwink*grin*
... the osdever formerly known as beyond infinity ...
BlueillusionOS iso image
BlueillusionOS iso image
- Pype.Clicker
- Member
- Posts: 5964
- Joined: Wed Oct 18, 2006 2:31 am
- Location: In a galaxy, far, far away
- Contact:
Re:Design patterns in OS developpement
hmm, just got a look at two patterns from the book (Adapter & Bridge). Patterns are sometimes rather confusing ...
If i say i'm writing a wrapper class, everyone around here knows what i'm doing, as well as if i say i'm writing an abstraction layer or a driver ...
Who exactly knows when i'm talking about an adapter ?
If i say i'm writing a wrapper class, everyone around here knows what i'm doing, as well as if i say i'm writing an abstraction layer or a driver ...
Who exactly knows when i'm talking about an adapter ?
- Colonel Kernel
- Member
- Posts: 1437
- Joined: Tue Oct 17, 2006 6:06 pm
- Location: Vancouver, BC, Canada
- Contact:
Re:Design patterns in OS developpement
"Wrapper" implies a certain structure, but not your precise intent.Pype.Clicker wrote: hmm, just got a look at two patterns from the book (Adapter & Bridge). Patterns are sometimes rather confusing ...
If i say i'm writing a wrapper class, everyone around here knows what i'm doing, as well as if i say i'm writing an abstraction layer or a driver ...
It helps if you call it "Adapter [GoF95]".Who exactly knows when i'm talking about an adapter ?
Top three reasons why my OS project died:
- Too much overtime at work
- Got married
- My brain got stuck in an infinite loop while trying to design the memory manager
- Colonel Kernel
- Member
- Posts: 1437
- Joined: Tue Oct 17, 2006 6:06 pm
- Location: Vancouver, BC, Canada
- Contact:
Re:Design patterns in OS developpement
I was in a rush to get out the door before... Here is a less glib reply to your question.
The answer is, anyone who knows design patterns will know what you mean by Adapter. That's the whole point of design patterns. If I say something like this:
"I created a set of wrapper classes that all extend my basic widget and can delegate to each other. Each wrapper class adds some new functionality to the entire chain of objects (wrappers + widgets)."
I could much more easily say this instead:
"I used the Decorator pattern to add new functionality to my widget class."
Anyone familiar with the GoF (Gang of Four) patterns knows what I'm talking about. Such people are not as rare as you think -- this is becoming quite common among C++, C#, and Java developers world-wide.
It's a lot like naming algorithms rather than describing them. Can you imagine having to describe "quicksort" every time you want to discuss it, instead of just saying "quicksort"? Same thing with design patterns.
The answer is, anyone who knows design patterns will know what you mean by Adapter. That's the whole point of design patterns. If I say something like this:
"I created a set of wrapper classes that all extend my basic widget and can delegate to each other. Each wrapper class adds some new functionality to the entire chain of objects (wrappers + widgets)."
I could much more easily say this instead:
"I used the Decorator pattern to add new functionality to my widget class."
Anyone familiar with the GoF (Gang of Four) patterns knows what I'm talking about. Such people are not as rare as you think -- this is becoming quite common among C++, C#, and Java developers world-wide.
It's a lot like naming algorithms rather than describing them. Can you imagine having to describe "quicksort" every time you want to discuss it, instead of just saying "quicksort"? Same thing with design patterns.
Top three reasons why my OS project died:
- Too much overtime at work
- Got married
- My brain got stuck in an infinite loop while trying to design the memory manager
Re:Design patterns in OS developpement
and here are some "design pattern" definitions :
1-a simple definition :
A description of a recurrent problem and of the core of possible solutions.
2-another simple definition :
A design pattern is a "solution to a problem in context"; that is, it represents a high-quality solution to a recurring problem in design.
3-and for a more complete def :
[GAM94] defines a design pattern as: ?A design pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes a commonly-recurring structure of communicating components that solves a general design problem within a particular context.? Design patterns are medium to small-scale patterns, smaller in scale than architectural patterns but typically independent of programming language. When a design pattern is bound, it will form a portion of a concrete design model (perhaps a portion of a design mechanism). Design patterns tend, because of their level, to be applicable across domains.
1-a simple definition :
A description of a recurrent problem and of the core of possible solutions.
2-another simple definition :
A design pattern is a "solution to a problem in context"; that is, it represents a high-quality solution to a recurring problem in design.
3-and for a more complete def :
[GAM94] defines a design pattern as: ?A design pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes a commonly-recurring structure of communicating components that solves a general design problem within a particular context.? Design patterns are medium to small-scale patterns, smaller in scale than architectural patterns but typically independent of programming language. When a design pattern is bound, it will form a portion of a concrete design model (perhaps a portion of a design mechanism). Design patterns tend, because of their level, to be applicable across domains.