I'm doing a BTEC course at the moment in computers. Not exactly advanced, I know, but I have to start somewhere.
I'm quite interested in operating systems, how their put together, etc. I would quite like to dabble with my own OS but I don't have enough coding knowledge at the moment. What I do wish to do now is read articles about how operating systems work which are written in a non-programmer related way. Any tips would be greatly apreciated.
Non programming related articles
Re:Non programming related articles
Hi,
In very general terms, a "computer system" consists of 4 layers. At the lowest layer there's the hardware, then the operating system, then code used by the user, with the user/s themselves at the top. To implement an operating system you need to know enough about the layer underneath it (the hardware) and the layer above it (the code used by the user/s). The idea is to provide a layer that allows the code used by the user/s to access the hardware without hassles.
This usually involves 2 things - providing abstractions so that the code used by the user/s doesn't need to care about hardware details, and sharing access to hardware (memory, CPU time, etc) while preventing problems/conflicts. For example, most applications read and write files because this is much easier than figuring out exactly where data is stored and how to use the hardware to access it, and the OS provides this abstraction while also making sure different applications don't try to modify the same file at the same time and mess each other up.
This actually makes it sound easy, considering that there's only around 5 types of hardware (RAM, CPUs, storage devices, networking devices, and "user related" devices). For each of these you need some sort of abstraction.
The most common set of abstractions are address spaces, "applications, processes and threads", file systems, network protocols and GUIs. These aren't the only abstractions possible though (for e.g. persistent object oriented operating systems would be an example of different abstractions)...
Cheers,
Brendan
I'd probably begin with the Wikipedia's entry for operating systems - it describes the most fundamental things an operating system does. Then you could look through the Wikipedia or use a web search engine for more detailed information on each topic.ahelg wrote:I'm quite interested in operating systems, how their put together, etc. I would quite like to dabble with my own OS but I don't have enough coding knowledge at the moment. What I do wish to do now is read articles about how operating systems work which are written in a non-programmer related way. Any tips would be greatly apreciated.
In very general terms, a "computer system" consists of 4 layers. At the lowest layer there's the hardware, then the operating system, then code used by the user, with the user/s themselves at the top. To implement an operating system you need to know enough about the layer underneath it (the hardware) and the layer above it (the code used by the user/s). The idea is to provide a layer that allows the code used by the user/s to access the hardware without hassles.
This usually involves 2 things - providing abstractions so that the code used by the user/s doesn't need to care about hardware details, and sharing access to hardware (memory, CPU time, etc) while preventing problems/conflicts. For example, most applications read and write files because this is much easier than figuring out exactly where data is stored and how to use the hardware to access it, and the OS provides this abstraction while also making sure different applications don't try to modify the same file at the same time and mess each other up.
This actually makes it sound easy, considering that there's only around 5 types of hardware (RAM, CPUs, storage devices, networking devices, and "user related" devices). For each of these you need some sort of abstraction.
The most common set of abstractions are address spaces, "applications, processes and threads", file systems, network protocols and GUIs. These aren't the only abstractions possible though (for e.g. persistent object oriented operating systems would be an example of different abstractions)...
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
Re:Non programming related articles
Looks like wikipedia has quite a few links to some good articles. Thanks, I'll check it out.