Introduction: Difference between revisions

m
2 revisions imported: import new edits from osdev.org wiki
[unchecked revision][unchecked revision]
m (2 revisions imported: import new edits from osdev.org wiki)
 
(6 intermediate revisions by 6 users not shown)
Line 12:
== What is an Operating System? ==
 
An operating system is a software controlling the operation of a computer system and its resources. MajorAmong functionsother ofthings, operatingthere's systemsone mayvery includeimportant criteria common to all operating systems:
 
Capable of loading and executing user programs providing standardized (hardware-independent) input / output interface for them.
 
Major functions of operating systems may include:
 
* Managing memory and other system resources.
* Imposing security and access policies.
* Scheduling and multiplexing processes and threads.
* Launching and closing user programs, and providing basic system services for themdynamically.
* Providing a basic user interface and application programmer interface.
 
Not all operating systems provide all of these functions. Single-tasking systems like MS-DOS would not schedule processes, while embedded systems like eCOS may not have a user interface, or may work with a static set of user programs.
 
An operating system is '''not''':
Line 95 ⟶ 99:
* Research. Quite a few operating system projects are started as homework or research projects. While starting an operating system as a homework assignment in a pre-tertiary or first-year environment is generally considered a bad idea (due to short deadlines), a long-term project is quite fine. Research projects are usually undertaken to improve on existing operating systems. A common beginner mistake, however, is to underestimate the time needed to write an operating system from scratch.
 
* To replace the currently available operating systems. Maybe they don't have a particular feature that the developer wants. Maybe they just generally suck (Linux is bloated, Windows is unstable, etc.). This may be for profit; although any returns are likely to be a long time away.
 
* Because it's fun. Low level programming is a fun and exciting task, because you have to do everything. This may seem more difficult (it is, don't worry) but by the same reasons more fun. You know how everything works, how it all fits, and the inner-most workings of your program.