• Earlier computers performed simple operations/Processes (program in execution) • But the expectations from modern computers are much complex (both hardware and associated software) • System Programs were developed to make computers better adapted to user needs. • Various System programs: – Assemblers – Macro-processors – Loaders & Linkers – Compilers – Formal Systems… System & Application Programs • System Programs are used to develop Application programs. • Application programs are used to perform various specific tasks for the users. – Eg. Word processor, accounting application, web browser, media player, photo editor, etc. Machine Structure
• Basic Von-Neumann machine.
• Processing units process the data in Memory/Core or I/O according to the instructions also present in the memory. Components of Programming System • Assemblers: It’s a system program that converts the assembly (source code. Eg. Add, Sub) into machine language (object code. Eg. 01100001…). • Macro-processors: Macros are abbreviations for a part of a program, relieving programmers of the need to repeat identical portions of the program. They are analogous to functions in programming languages. Eg. Macro ----Start of Definition Incr ----Macro Name A 1, Data A 2, Data Mend ----Macro end Components of Programming System • Loaders & Linkers: A Loader places the object code into the memory of computer for execution. A Linker merges various object modules to form a single object code (by resolving symbolic references between object modules). A Loader performs: “Allocation of memory, Linking, Relocation of program and Loading”. • Compilers: It converts a high level language (eg. C, PL1, Java) to machine understandable low level language (101110…) which is also called the object code. Interpreter on the other hand executes the code step by step, helpful in debugging (eq. Python, Perl, Ruby) • Formal Systems: Made up of alphabets, words, set of inference relations, eg. Set theory, Boolean algebra, BNF (Backus Normal Form). They are used for specifying syntax & semantics of programming languages. Operating Systems • An Operating System is a flexible System program capable of performing complex tasks. • It is an interface or platform between the user (Applications) and the hardware. • Requires resources (memory, processor, I/O, etc.) to do its job. • Eg. Windows, Mac, Unix, etc. Functions of OS • Batch Processing: Processes are allocated to the memory in batches for execution. • Multi-Programming: Multiple programs residing in separate areas of memory. • Paging: It’s a memory management technique wherein the program is divided into equal size blocks (Pages) and loaded into equal memory frames. In Demand paging scheme, only those pages that are required are loaded into the main memory. Functions of OS • Segmentation: The program is divided into variable size segments and loaded into memory. • Scheduling: OS Schedules the processes using many scheduling schemes, viz. First come- First serve (FCFS), Shortest Job First (SJF), Round Robin (time based), etc. Scheduling involves Time-sharing of processors to a process. • Error Handling: Handles Errors in the system and debugs them.