Operating Systems Notes
Operating Systems Notes
1. Resource Management: Operating systems manage the resources of a computer system, such as
memory, processors, disks, and other devices. They provide an interface between the hardware and the
software applications that run on the system. Operating systems also manage the allocation of
resources, such as memory, to applications.
2. Communication: Operating systems provide a means for applications to communicate with each
other and with the hardware. This includes the ability to send and receive messages, as well as to access
shared resources.
3. Concurrency: Operating systems enable multiple applications to run concurrently, or at the same
time. This allows applications to share resources and data, and to interact with each other.
4. Security: Operating systems provide security measures to protect the system from unauthorized
access and malicious software. This includes authentication, encryption, and access control.
5. Development: Operating systems provide an environment for developers to create applications. This
includes tools for debugging, testing, and optimizing applications.
6. System Administration: Operating systems provide tools for system administrators to manage the
system, such as monitoring performance, managing user accounts, and configuring hardware.
Introduction to Main Frames System: Mainframes are large, powerful computers used for mission-
critical applications such as large-scale data processing. They are typically used by large organizations
such as banks, airlines, and government agencies. Mainframes are designed to be highly reliable and
secure, and can process large amounts of data quickly and accurately.
Multi programmed System: A multi-programmed system is a computer system that can run multiple
programs at the same time. This type of system allows for multiple users to access the system
simultaneously, as well as for multiple programs to run concurrently.
Batch System: A batch system is a type of computer system that processes data in batches. In a batch
system, data is collected and stored in batches, and then processed in a single run. This type of system is
often used for large-scale data processing jobs, such as payroll processing or inventory management.
Time Sharing System: A time-sharing system is a type of computer system that allows multiple users to
access the system simultaneously. In a time-sharing system, each user is allocated a certain amount of
time to use the system, and the system switches between users as needed.
Desktop System: A desktop system is a type of computer system designed for use in a home or office
environment. Desktop systems are typically smaller and less powerful than mainframes, but are still
capable of running a variety of applications.
Multiprocessor System: A multiprocessor system is a type of computer system that uses multiple
processors to process data. This type of system is often used for large-scale data processing jobs, as it
can process data more quickly and efficiently than a single processor system.
Distributed System: A distributed system is a type of computer system that is spread across multiple
physical locations. This type of system allows for data to be shared and processed across multiple
computers, which can help to improve performance and reliability.
Client Server: A client-server system is a type of computer system that uses a client-server architecture.
In this type of system, the client is responsible for sending requests to the server, which then processes
the requests and sends back the results.
Real Time System: A real-time system is a type of computer system that must respond to external
events within a certain amount of time. This type of system is often used for mission-critical
applications, such as controlling industrial machinery or monitoring medical equipment.
Hand Held System: A hand-held system is a type of computer system that is designed to be portable and
easy to use. This type of system is often used for personal applications such as gaming, web browsing,
and email.
Computer System Structure: Computer system structure refers to the physical components of a
computer system, such as the processor, memory, and storage. It also includes the software
components, such as the operating system and applications.
Caching: Caching is a technique used to improve the performance of computer systems. In a caching
system, frequently used data is stored in a cache, which is a small, fast memory that is accessed more
quickly than main memory.
Coherency and Consistency: Coherency and consistency refer to the ability of a computer system to
maintain the same data across multiple locations. In order for a system to be considered coherent and
consistent, all copies of the data must be the same.
Operating System Structure: Operating system structure refers to the design of an operating system,
including the components, processes, and data structures used to manage the system.
Process Management: Process management is the process of managing the execution of processes in a
computer system. This includes managing the resources used by processes, scheduling processes, and
managing the communication between processes.
System Calls: System calls are special functions that are used to request services from the operating
system. These functions are typically used to access system resources, such as files or devices.
Process Control: Process control is the process of controlling the execution of processes in a computer
system. This includes controlling the resources used by processes, scheduling processes, and managing
the communication between processes.
Communication: Communication is the process of exchanging information between two or more
entities. In a computer system, communication is typically done through the use of messages or signals.
Micro-kernels: A micro-kernel is a type of operating system kernel that is designed to be small and
modular. This type of kernel is often used in embedded systems, as it is more efficient and can be
tailored to the specific needs of the system.
Threads: A thread is a lightweight process. It is a unit of execution within a process. It shares the same
address space as the process and can access the same data.
Multithreading Models: Multithreading models are used to manage the execution of multiple threads in
a process. They provide a way to control the scheduling and synchronization of threads.
CPU Scheduling: CPU scheduling is the process of determining which process should be executed by the
CPU at any given time. It is used to improve the performance of the system by ensuring that the most
important processes are executed first.
Process Synchronization: Process synchronization is the process of ensuring that multiple processes do
not access the same data at the same time. It is used to prevent race conditions and ensure that data is
not corrupted.
Critical Section Problem: The critical section problem is a problem in concurrent programming. It is the
problem of ensuring that only one process can access a shared resource at any given time.
Semaphores: Semaphores are a synchronization primitive used to control access to a shared resource.
They are used to ensure that only one process can access the resource at any given time.
Deadlock: Deadlock is a situation in which two or more processes are waiting for each other to finish
before they can continue. It is a situation in which the system is unable to make progress.
Memory Management: Memory management is the process of managing the allocation and
deallocation of memory. It is used to ensure that memory is used efficiently and that no memory is
wasted.
Memory Allocation: Memory allocation is the process of assigning memory to a process. It is used to
ensure that each process has enough memory to run properly.
Fragmentation: Fragmentation is the process of breaking a large block of memory into smaller blocks. It
is used to improve the efficiency of memory allocation.
Paging: Paging is a memory management technique in which memory is divided into fixed-size pages. It
is used to improve the efficiency of memory access.
Virtual Memory: Virtual memory is a memory management technique in which the physical memory is
divided into multiple virtual address spaces. It is used to improve the efficiency of memory access.
Demand Paging: Demand paging is a memory management technique in which pages are loaded into
memory only when they are needed. It is used to improve the efficiency of memory access.
Page Replacement: Page replacement is the process of replacing a page in memory with another page.
It is used to improve the efficiency of memory access.
Allocation of Frames: Allocation of frames is the process of assigning frames to processes. It is used to
ensure that each process has enough memory to run properly.
Thrashing: Thrashing is the process of swapping pages in and out of memory too often. It is a sign that
the system is running out of memory.
File System Interface: The file system interface is the interface between the operating system and the
file system. It is used to provide a consistent interface for accessing files.
Directory Structure: The directory structure is the hierarchy of directories and files in a file system. It is
used to organize files and make them easier to find.
File System Mounting: File system mounting is the process of making a file system available to the
operating system. It is used to make a file system accessible to the user.
File System Implementation: File system implementation is the process of implementing a file system. It
is used to create a file system that is optimized for the underlying hardware.
NFS: NFS is a network file system. It is used to provide a distributed file system across a network.
Protection: Protection is the process of controlling access to resources. It is used to ensure that only
authorized users can access resources.