Operating Systems have become quite complex and multifaceted with the advancement of time. However, that also means it is getting more and more difficult to design operating systems that satisfy all the specifications required these days. There are no complete solutions possible for design problems, but some approaches are more successful than others.
The design requirements are quite hard to specify in an operating system. They are basically divided into two parts: User design requirements and System design requirements. Details about these are given as follows −
The operating system should be convenient, easy to use, reliable, safe and fast according to the users. However, these specifications are not very useful as there is no set method to achieve these goals.
The operating system should be easy to design, implement and maintain. These are specifications required by those who create, maintain and operate the operating system. But there is no specific method to achieve these goals as well.
There are many design goals that modern operating systems have to fulfil to be considered successful. Some of these are −
Modern operating systems should be able to handle multiple users as well as multiple devices at the same time. This is necessary for the modern multi-core architectures. Because of these specifications, the operating system design can be quite complex and difficult to create.
Operating systems should be able to provide security and privacy for a system. This is very important as there are many malicious users who may want to hack into the computer system and steal user programs.
The operating system should make sure that resources are shared in a correct manner between multiple user processes. This can get quite complex when multiple users share the same device as well.
A major design consideration is that the operating system should be able to weather future hardware and software changes and not become obsolete. This is necessary as the operating system being changed again and again is quite a costly process.
The operating systems should be portable i.e. they should work with different hardware and machines. There may be some speciality operating system that only work on one kind of machine, however, most of them are portable.
The new operating systems created should be compatible with the previous models i.e. they should contain backward compatibility.
Operating systems should be developed keeping in mind a general user base so that many users can use them. Even specially developed operating systems that target a single user base contain generality.