Unit I: System Software and Operating System Concepts
1. Introduction to System Software:
- Definition: System software is a type of computer program that is designed to run a computer's
hardware and application programs.
- Examples: Operating systems, compilers, assemblers, and utility software.
- Differences: System software manages hardware resources, whereas application software
performs specific user-oriented tasks.
2. Types of System Software:
- System Control Software: Operating systems.
- System Support Software: Utility programs like disk management tools.
- System Development Software: Compilers, debuggers, and interpreters.
3. Operating System Concepts:
- Functions: Resource management, process scheduling, memory management, file systems,
security, and networking.
- User Interface: Command Line Interface (CLI) vs. Graphical User Interface (GUI).
4. Types of Operating Systems:
- Batch Operating System: Processes are executed in batches without user interaction.
- Time-Sharing Operating System: Allows multiple users to interact with the system
simultaneously.
- Distributed Operating System: Manages a group of independent computers.
- Real-Time Operating System: Provides immediate processing for real-time applications.
5. Multi-Programming and Multi-Processing Systems:
- Multi-Programming: Multiple programs are loaded into memory and executed simultaneously.
- Multi-Processing: Use of two or more CPUs for simultaneous processing.
6. Time-Sharing System:
- Concept: Divides CPU time among multiple users/processes.
- Benefits: Efficient CPU utilization, reduced response time.
7. Process Concepts:
- Process: A program in execution.
- Process Lifecycle: States include New, Ready, Running, Waiting, and Terminated.
8. Inter-Process Communication (IPC):
- Mechanisms: Pipes, message queues, shared memory, sockets.
- Importance: Synchronization, data exchange between processes.
9. Process Scheduling:
- Types: Preemptive (e.g., Round Robin) and Non-Preemptive (e.g., FCFS, SJF).
- Scheduling Algorithms: First-Come-First-Serve, Shortest Job First, Round Robin.
10. Context Switching:
- Definition: Switching the CPU from one process to another.
- Importance: Enables multitasking.
11. Dispatcher:
- Role: Assigns the CPU to processes ready to run.
Unit II: Language Processors
1. Introduction:
- Language processors convert high-level programming languages to machine code.
- Examples: Compilers, assemblers, interpreters.
2. Bootstrapping:
- Process of writing a self-compiling compiler.
3. Data Structures for Language Processing:
- Symbol Tables: Store identifiers and attributes.
- Syntax Trees: Hierarchical representation of code structure.
4. Scanning and Parsing:
- Lexical Analysis: Tokenization of input code.
- Parsing: Analyzing syntax according to grammar rules.
Unit III: Assemblers and Linkers
1. Elements of Assembly Language Programming:
- Low-level programming, close to machine code.
- Syntax involves mnemonics and operands.
2. Assemblers:
- Two-Pass Assembler: Processes source code twice to resolve symbols.
- Single-Pass Assembler: Resolves symbols in one pass.
3. Macros and Macro Processors:
- Macros: Reusable code blocks.
- Macro Processor: Handles macro definitions and expansions.
4. Linkers:
- Function: Combines object files into a single executable.
- Features: Relocation, linking overlays, loaders.
5. Software Tools:
- Examples: Debuggers, editors, and IDEs.
Unit IV: Compilers
1. Compilers:
- Function: Converts source code into executable code.
- Components: Lexical, syntactic, semantic analysis, optimization, and code generation.
2. Optimization:
- Machine-Dependent: Specific to hardware architecture.
- Machine-Independent: Applies to general code improvements.
3. Phases of a Compiler:
- Lexical Analysis: Tokenization.
- Syntax Analysis: Parsing structure.
- Semantic Analysis: Meaning of code.
- Code Generation: Produces machine code.
4. General Model:
- High-level structure of compilers.
Unit V: Data Structures and Interpreters
1. Data Structures:
- Examples: Stacks, queues, linked lists, trees, graphs.
- Applications: Memory management, recursion.
2. Storage Classes:
- Static, automatic, external, and based storage.
3. Interpreters:
- Function: Executes source code line-by-line.
- Comparison: Slower than compilers but easier for debugging.