To meet the difficult requirements of multiprogramming and time sharing, there have been 5 major achievements by OS's:
- Processes management
- Memory management
- Information protection and security
- Scheduling and resource management
- System structure
1.Processes:
- A process is an entity that can be assigned to and executed on a processor.
- In the context of multiprogramming, timesharing and real-time transaction processing, process management is crucial.
- Coordinating multiple processes in a system requires handling the following situations:-
- Improper synchronization - waiting for a signal that may never occur or that multiple signals could be received
- Failed mutual exclusion - Mutex is used in controlling access to a shared variable
- Nondetermininant program operation - overwriting share memory may lead to this nondeterminism.
- Deadlocks - holding resources while waiting for others and two or more processes doing the same
A process has these components:
- the executable code
- the data space
- execution context: registers, PC, stack, etc
2.Memory Management:
- Process isolation - processes cannot interfere with other processes
- Automatic allocation and management - allocation is transparent, virtual
- Support of modular programming - modules can be of varying size
- Protection and access control - at times memory needs to be shared
- Long-term storage - a file system
3.Information Protection and Security:
Three categories:- Access control
- Information flow control
- Certification
4.Scheduling and Resource Management
Targets are:- Fairness - all processes proceed with their work at a reasonable rate
- Differential responsiveness - some processes are more important, others may be holding scarce resources
- Efficiency - maximize throughput, minimize response time, service many user
5. System structure:)
An operating system is a construct that allows the user application programs to interact with the system hardware. Since the operating system is such a complex structure, it should be created with the utmost care so it can be used and modified easily. An easy way to do this is to create the operating system in parts. Each of these parts should be well defined with clear inputs, outputs and functions.Characteristics of modern operating systems:-
1. Microkernel architecture - keep the kernel as small as possible and other OS functions handled by separate processes. The kernel handles scheduling, address space management and interprocess communication. This results in a simpler approach to the design of the system.2. Multithreading - break down processes into smaller units of work that can be run simultaneously.
3. Symmetrical Multiprocessing (SMP) - there are multiple, homogeneous processors, sharing memory and devices. Performance is the main benefit along with availability, incremental growth, and scaling
4. Distributed operating system - the appearance of a single system, memory and file space, but the functions and entities are split over a number of processors and network.
5. Object-oriented design - one more for the bandwagon.