Operating Systems

  1. Operating System Architecture
    1. Layered Architecture
      1. Concept and Definition
        1. Organized in hierarchical layers
          1. Each layer has a specific function
          2. Benefits
            1. Simplification of design and implementation
              1. Easier debugging and maintenance
                1. Separation of concerns
                2. Example Structures
                  1. Presentation, Application, and Hardware layers
                    1. Layer interaction and interface communication
                  2. Client-Server Model
                    1. Definition and Overview
                      1. Separation of client-side and server-side operations
                        1. Networked communication between service requesters and providers
                        2. Components
                          1. Client: User interface and application logic
                            1. Server: Back-end processing and data management
                            2. Advantages
                              1. Scalability
                                1. Centralized resources and management
                                  1. Flexibility in deployment and configuration
                                  2. Use Cases
                                    1. Web applications
                                      1. Distributed file systems
                                    2. Modular Architecture
                                      1. Definition
                                        1. Divides the OS into independent, interchangeable modules
                                          1. Emphasizes reusability and flexibility
                                          2. Characteristics
                                            1. Loose coupling between components
                                              1. Ability to replace or upgrade modules independently
                                              2. Implementation Strategies
                                                1. Use of common interfaces to ensure module compatibility
                                                  1. Management of module dependencies
                                                  2. Benefits
                                                    1. Easier system upgrades and maintenance
                                                      1. Enhanced system flexibility and adaptability
                                                      2. Example Operating Systems
                                                        1. Unix philosophy of discrete utilities
                                                          1. Modern Linux distributions with loadable kernel modules
                                                        2. Microkernel Architecture
                                                          1. Essential Characteristics
                                                            1. Minimalist kernel design
                                                              1. Critical services run in user space
                                                              2. Components
                                                                1. Core kernel functions: Inter-process communication, basic scheduling
                                                                  1. User-space services: Device drivers, file systems
                                                                  2. Advantages
                                                                    1. Increased stability and security
                                                                      1. Easier to port and maintain
                                                                      2. Challenges
                                                                        1. Potential performance overhead due to context switching
                                                                        2. Examples
                                                                          1. Mach
                                                                            1. QNX
                                                                          2. Monolithic Kernel
                                                                            1. Overview
                                                                              1. Integrated approach with most OS services in kernel space
                                                                                1. Single large process running in single address space
                                                                                2. Benefits
                                                                                  1. Faster performance due to reduced context switching
                                                                                    1. High efficiency in resource management
                                                                                    2. Drawbacks
                                                                                      1. Complexity of the kernel codebase
                                                                                        1. Difficult to update individual components
                                                                                        2. Examples
                                                                                          1. Traditional Unix systems
                                                                                            1. Early versions of Linux
                                                                                          2. Hybrid Kernel
                                                                                            1. Concept
                                                                                              1. Combines elements of monolithic and microkernel architectures
                                                                                              2. Attributes
                                                                                                1. Basic system components in kernel space
                                                                                                  1. Some services as user-space processes
                                                                                                  2. Advantages
                                                                                                    1. Balanced performance and modularity
                                                                                                      1. Stability and flexibility
                                                                                                      2. Examples
                                                                                                        1. Modern versions of Windows NT
                                                                                                          1. macOS
                                                                                                        2. Architectural Patterns in Operating Systems
                                                                                                          1. Multiserver Model
                                                                                                            1. Definition and usage in distributed systems
                                                                                                              1. Benefits of redundancy and resilience
                                                                                                              2. Exokernel
                                                                                                                1. Concept of application-level resource management
                                                                                                                  1. Efficient hardware abstraction
                                                                                                                2. Considerations in OS Architecture Design
                                                                                                                  1. Performance and Efficiency
                                                                                                                    1. Optimization strategies for speed and resource usage
                                                                                                                    2. Security
                                                                                                                      1. Design features enhancing protection against threats
                                                                                                                      2. Scalability
                                                                                                                        1. Ability to support growing workloads and additional users
                                                                                                                        2. Portability
                                                                                                                          1. Compatibility with different hardware platforms
                                                                                                                          2. Flexibility
                                                                                                                            1. Support for various features and functionalities through extensible designs