Operating System Module 1 For 1st Year MCA
Operating System Module 1 For 1st Year MCA
Module 1
OVERVIEW: Introduction, System Structures
3. Job accounting – Operating system Keeps track of time and resources used
by various tasks and users, this information can be used to track resource usage
for a particular user or group of users.
4. Error detecting – The operating system constantly monitors the system to
detect errors and avoid the malfunctioning of a computer system.
The Operating System provides certain services to the users which can be listed
in the following manner:
1. Program Execution: The Operating System is responsible for the execution of
all types of programs whether it be user programs or system programs. The
Operating System utilizes various resources available for the efficient running of
all types of functionalities.
2. Handling Input/Output Operations: The Operating System is responsible
for handling all sorts of inputs, i.e, from the keyboard, mouse, desktop, etc. The
Operating System does all interfacing in the most appropriate manner regarding
all kinds of Inputs and Outputs.
3. For example, there is a difference in the nature of all types of peripheral devices
such as mice or keyboards, the Operating System is responsible for handling
data between them.
4. Manipulation of File System: The Operating System is responsible for
making decisions regarding the storage of all types of data or files, i.e, floppy
disk/hard disk/pen drive, etc. The Operating System decides how the data
should be manipulated and stored.
5. Error Detection and Handling: The Operating System is responsible for the
detection of any type of error or bugs that can occur while any task. The well-
secured OS sometimes also acts as a countermeasure for preventing any sort of
breach to the Computer System from any external source and probably handling
them.
6. Resource Allocation: The Operating System ensures the proper use of all the
resources available by deciding which resource to be used by whom for how
much time. All the decisions are taken by the Operating System.
7. Accounting: The Operating System tracks an account of all the functionalities
taking place in the computer system at a time. All the details such as the types of
errors that occurred are recorded by the Operating System.
8. Information and Resource Protection: The Operating System is
responsible for using all the information and resources available on the machine
in the most protected way. The Operating System must foil an attempt from any
external resource to hamper any sort of data or information.
All special-purpose processors run limited instructions and do not run user
processes. These are managed by the operating system, the operating system sends
them information about their next task and monitors their status.
For example, a disk-controller processor, implements its own disk queue and
scheduling algorithm, thus reducing the task of main CPU. Special processors in the
keyboard, converts the keystrokes into codes to be sent to the CPU.
The use of special-purpose microprocessors is common and does not turn a single-
processor system into a multiprocessor. If there is only one general-purpose CPU,
then the system is a single-processor system.
is economical. If several processes are working on the same data, the data can also be
shared among them.
Graceful degradation – As there are multiple processors when one processor fails
other process will take up its work and the system goes down slowly.
Fault tolerant – When one processor fails, its operations are stopped, the system
failure is then detected, diagnosed, and corrected.
The HP Nonstop system uses both hardware and software duplication to ensure
continued operation despite faults. The system consists of multiple pairs of CPUs.
Both processors in the pair execute same instruction and compare the results. If the
results differ, then one CPU of the pair is at fault, and both are halted.
The process that was being executed is then moved to another pair of CPUs, and the
instruction that failed is restarted. This solution is expensive, since it involves special
hardware and considerable hardware duplication.
There are two types of multiprocessor systems –
• • Asymmetric multiprocessing
• • Symmetric multiprocessing
The benefit of this model is that many processes can run simultaneously. N processes
can run if there are N CPUs—without causing a significant deterioration of
performance. Operating systems like Windows, Windows XP, Mac OS X, and Linux—
now provide support for S MP.
A recent trend in CPU design is to include multiple compute cores on a single chip.
The communication between processors within a chip is faster than communication
between two single processors.
Clustered Systems
Clustered systems are two or more individual systems connected together via
network and sharing software resources. Clustering provides high-availability of
resources and services. The service will continue even if one or more systems in the
cluster fail. High availability is generally obtained by storing a copy of files (s/w
resources) in the system.
In symmetric clustering – two or more systems are running applications, and are
monitoring each other. This mode is more efficient, as it uses all of the available
hardware. If any system fails, its job is taken up by the monitoring system.
Other forms of clusters include parallel clusters and clustering over a wide-area
network (WAN). Parallel clusters allow multiple hosts to access the same data on the
shared storage. Cluster technology is changing rapidly with the help of SAN
(storage-area networks). Using SAN resources can be shared with dozens of
systems in a cluster, that are separated by miles.
The Operating system must support the following tasks. The tasks are:
1. Provides the facilities to create and modify of programs and data files using an
editor.
2. Access to the compiler for translating the user program from high-level
language to machine language.
3. Provide a loader program to move the compiled program code to the computer’s
memory for execution.
4. Provide routines that handle the details of I/O programming.
I/O System Management – The module that keeps track of the status of devices
is called the I/O traffic controller. Each I/O device has a device handler that resides
in a separate process associated with that device.
The I/O subsystem consists of
Loader – A Loader is a routine that loads an object program and prepares it for
execution. There are various loading schemes: absolute, relocating, and direct-
linking. In general, the loader must load, relocate and link the object program. The
loader is a program that places programs into memory and prepares them for
execution. In a simple loading scheme, the assembler outputs the machine language
translation of a program on a secondary device and a loader places it in the core.
The loader places into memory the machine language version of the user’s program
and transfers control to it. Since the loader program is much smaller than the
assembler, those make more core available to the user’s program.
Operating-System Structure
One of the most important aspects of operating systems is the ability to
multiprogram. A single user cannot keep either the CPU or the I/O devices busy at all
times. Multiprogramming increases CPU utilization by organizing jobs, so that
the CPU always has one to execute.
Eventually, the first job finishes waiting and gets the CPU back. Thus the CPU is
never idle.
In Time sharing (or multitasking) systems, a single CPU executes multiple jobs
by switching among them, but the switches occur so frequently that the users can
interact with each program while it is running. The user feels that all the programs
are being executed at the same time. Time sharing requires an interactive (or
hands-on) computer system, which provides direct communication between the
user and the system.
The user gives instructions to the operating system or to a program directly, using a
input device such as a keyboard or a mouse, and waits for immediate results on an
output device. Accordingly, the response time should be short—typically less than
one second.
A time-shared operating system allows many users to share the computer
simultaneously. As the system switches rapidly from one user to the next, each user
is given the impression that the entire computer system is dedicated to his use only,
even though it is being shared among many users.
Distributed Systems
Individual systems that are connected and share the resource available in network is
called Distributed system. Access to a shared resource increases computation speed,
functionality, data availability, and reliability.
Networks are characterized based on the distances between their nodes. A local-
area network (LAN) connects computers within a room, a floor, or a building. A
wide-area network (WAN) usually links buildings, cities, or countries. A global
company may have a WAN to connect its offices worldwide. A metropolitan-area
network (MAN) links buildings within a city. A small-area network connects
systems within a several feet using wireless technology. Eg. BlueTooth and 802.11.
The media to carry networks also vary - copper wires, fiber strands, and wireless
transmissions between satellites, microwave dishes, and radios.
A network operating system is an operating system that provides features such
as file sharing across the network and that allows different processes on different
computers to exchange messages. A computer running a network operating system
acts autonomously from all other computers on the network, although it is aware of
the network and is able to communicate with other networked computers.
History of Operating system – The operating system has been evolving through
the years. The following table shows the history of OS.
Operating-System Operations
Modern operating systems are interrupt driven. If there are no processes to
execute, no I/O devices to service, and no users to whom to respond, an operating
system will sit quietly, waiting for something to happen.
Events are signaled by the occurrence of an interrupt or a trap. A trap (or an
exception) is a software-generated interrupt. For each type of interrupt, separate
segments of code in the operating system determine what action should be taken.
An interrupt service routine is provided that is responsible for dealing with the
interrupt.
a) Dual-Mode Operation
Since the operating system and the user programs share the hardware and software
resources of the computer system, it has to be made sure that an error in a user
program cannot cause problems to other programs and the Operating System
running in the system.
The approach taken is to use a hardware support that allows us to differentiate
among various modes of execution.
The system can be assumed to work in two separate modes of operation:
• user mode and
• kernel mode (supervisor mode, system mode, or privileged mode).
A hardware bit of the computer, called the mode bit, is used to indicate the current
mode: kernel (0) or user (1). With the mode bit, we are able to distinguish between a
task that is executed by the operating system and one that is executed by the user.
At system boot time, the hardware starts in kernel mode. The operating
system is then loaded and starts user applications in user mode. Whenever a
trap or interrupt occurs, the hardware switches from user mode to kernel
mode (that is, changes the mode bit from 1 to 0). Thus, whenever the
operating system gains control of the computer, it is in kernel mode.
The dual mode of operation provides us with the means for protecting the operating
system from errant users—and errant users from one another.
b) Timer
Operating system uses timer to control the CPU. A user program cannot hold CPU
for a long time, this is prevented with the help of timer.
A timer can be set to interrupt the computer after a specified period. The period may
be fixed (for example, 1/60 second) or variable (for example, from 1 millisecond to
1 second).
Fixed timer – After a fixed time, the process under execution is interrupted.
Variable timer – Interrupt occurs after varying interval. This is
implemented using a fixed-rate clock and a counter. The operating system sets
the counter. Every time the clock ticks, the counter is decremented. When the
counter reaches 0, an interrupt occurs.
Before changing to the user mode, the operating system ensures that the timer
is set to interrupt. If the timer interrupts, control transfers automatically to
the operating system, which may treat the interrupt as a fatal error or may
give the program more time.
There are various classes of computer systems based on their computational speed,
usage, and hardware. The following are some special-purpose systems according to
specific applications. They use:
1. Real-time embedded systems Multimedia systems
2. Multimedia systems
3. Handheld and portable systems
both audio and video. Multimedia is not limited to desktop operating systems or
computers but it is also becoming popular in handheld.
authenticated before they access the system. The different ways to make sure that
the users are authentic are:
Username/ Password
Each user has a distinct username and password combination and they need to
enter it correctly before they can access the system.
User Key/ User Card
The users need to punch a card into the card slot or use they individual key on
a keypad to access the system.
User Attribute Identification
Different user attribute identifications that can be used are fingerprint, eye
retina etc. These are unique for each user and are compared with the existing
samples in the database. The user can only access the system if there is a
match.
One Time Password
These passwords provide a lot of security for authentication purposes. A onetime
password can be generated exclusively for a login every time a user wants to enter
the system. It cannot be used more than once. The various ways a onetime password
can be implemented are −
Random Numbers
The system can ask for numbers that correspond to alphabets that are pre-
arranged. This combination can be changed each time a login is required.
Secret Key
A hardware device can create a secret key related to the user id for login. This
key can change each time.
Computing Environments
A computer system uses many devices, arranged in different ways to solve many
problems This constitutes a computing environment where many computers are
used to process and exchange information to handle multiple issues.
Types of Computing Environments: There are the various types of computing
environments. They are:
CHAPTER 2
Operating System Structure.
Operating System Services
An Operating System provides services to both the users and to the programs.
Program execution
I/O operations
File System manipulation
Communication
Error Detection
Resource Allocation
Protection
Program execution
Operating systems handle many kinds of activities from user programs to system
programs like printer spooler, name servers, file server, etc. Each of these activities is
encapsulated as a process.
A process includes the complete execution context (code to execute, data to
manipulate, registers, OS resources in use). Following are the major activities of an
operating system with respect to program management −
I/O operation means read or write operation with any file or any specific I/O
device.
Operating system provides the access to the required I/O device when
required.
File system manipulation
A file represents a collection of related information. Computers can store files on the
disk (secondary storage), for long-term storage purpose. Examples of storage media
include magnetic tape, magnetic disk and optical disk drives like CD, DVD. Each of
these media has its own properties like speed, capacity, data transfer rate and data
access methods.
A file system is normally organized into directories for easy navigation and usage.
These directories may contain files and other directions. Following are the major
activities of an operating system with respect to file management −
Both the processes can be on one computer or on different computers, but are
connected through a computer network.
Communication may be implemented by two methods, either by Shared
Memory or by Message Passing.
Error handling
Errors can occur anytime and anywhere. An error may occur in CPU, in I/O devices
or in the memory hardware. Following are the major activities of an operating system
with respect to error handling −
Some operating systems are graphical user interfaces (GUI), and some are
command-line interfaces (CLI).
The graphical user interface (GUI) allows users to interact with electronic devices
through graphical icons and audio indicators such as primary notation instead of
text-based user interfaces, typed command labels, or text navigation.
1. Microsoft Windows
Microsoft Windows is one of the most common GUI based operating systems. It is
developed and marketed by Microsoft. The current version of Microsoft Windows is
Windows 10. Moreover, it has several earlier versions like Windows XP, Windows 8,
Windows 7, etc. Besides, the most common editions for home computers are
Windows Home (Win Home) and Windows Professional (Win Pro or Windows Pro).
2. Linux
It already contains almost all the features of UNIX OS. Moreover, it also has some
additional features. It contains various user interfaces like GNOME, KDE, Mate,
Cinnamon, etc. And it has several versions of distributions as follows UBUNTU,
DEBIAN, SOLAS, LINUX MINT, etc.
3. Android
It is one of the most common versions of the operating system today. It is used on
mobile phones and tablets. Most versions of it are the open-source operating system.
4. Apple iOS
After android, it is one of the most popular OS. It is designed to run on Apple devices
such as iPhones, iPad tablets, etc.
5. MacOS
It is the operating system used in Apple laptops and Apple desktops. Moreover, Its
most popular features are Siri and FaceTime.
System calls
In computing, a system call is the programmatic way in which a computer
program requests a service from the kernel of the operating system it is executed
on. A system call is a way for programs to interact with the operating system.
A computer program makes a system call when it makes a request to the operating
system’s kernel.
System call provides the services of the operating system to the user programs via
Application Program Interface(API). It provides an interface between a process and
operating system to allow user-level processes to request services of the operating
system. System calls are the only entry points into the kernel system. All programs
needing resources must use system calls.
The interface between a process and an operating system is provided by system calls.
In general, system calls are available as assembly language instructions. They are
also included in the manuals used by the assembly level programmers. System calls
are usually made when a process in user mode requires access to a resource. Then it
requests the kernel to provide the resource via a system call.
There are number of system calls used to finish this task. The first system call is to
write a message on the screen (monitor). Then to accept the input filename. Then
another system call to write message on the screen, then to accept the output
filename. When the program tries to open the input file, it may find that there is no
file of that name or that the file is protected against access.
In these cases, the program should print a message on the console(another system
call) and then terminate abnormally (another system call) and create a new one
(another system call).
Now that both the fileas are opened, we enter a loop that reads from the input
file(another system call) and writes to output file (another system call).
Finally, after the entire file is copied, the program may close both files (another
system call), write a message to the console or window(system call), and finally
terminate normally (final system call).
Process Control
These system calls deal with processes such as process creation, process termination
etc.
File Management
These system calls are responsible for file manipulation such as creating a file,
reading a file, writing into a file etc.
Device Management
These system calls are responsible for device manipulation such as reading from
device buffers, writing into device buffers etc.
Information Maintenance
These system calls handle information and its transfer between the operating system
and the user program.
Communication
These system calls are useful for interprocess communication. They also deal with
creating and deleting a communication connection.
Protection
Protection provides mechanisms for controlling which users / processes have access
to which system resources.
System calls allow the access mechanisms to be adjusted as needed, and for non-
privileged users to be granted elevated access permissions under carefully controlled
temporary circumstances.
Some of the examples of all the above types of system calls in Windows and Unix are
given as follows −
open()
The open() system call allows you to access a file on a file system. It allocates
resources to the file and provides a handle that the process may refer to. Many
processes can open a file at once or by a single process only. It's all based on the file
system and structure.
read()
It is used to obtain data from a file on the file system. It accepts three arguments in
general:
o A file descriptor.
o A buffer to store read data.
o The number of bytes to read from the file.
The file descriptor of the file to be read could be used to identify it and open it
using open() before reading.
wait()
In some systems, a process may have to wait for another process to complete its
execution before proceeding. When a parent process makes a child process, the
parent process execution is suspended until the child process is finished.
The wait() system call is used to suspend the parent process. Once the child process
has completed its execution, control is returned to the parent process.
write()
It is used to write data from a user buffer to a device like a file. This system call is one
way for a program to generate data. It takes three arguments in general:
o A file descriptor.
o A pointer to the buffer in which data is saved.
o The number of bytes to be written from the buffer.
fork()
Processes generate clones of themselves using the fork() system call. It is one of the
most common ways to create processes in operating systems. When a parent process
spawns a child process, execution of the parent process is interrupted until the child
process completes. Once the child process has completed its execution, control is
returned to the parent process.
close()
It is used to end file system access. When this system call is invoked, it signifies that
the program no longer requires the file, and the buffers are flushed, the file
information is altered, and the file resources are de-allocated as a result.
exec()
exit()
The exit() is a system call that is used to end program execution. This call indicates
that the thread execution is complete, which is especially useful in multi-threaded
environments. The operating system reclaims resources spent by the process
following the use of the exit() system function.
System Programs
3. File modification - e.g. text editors and other tools which can change file
contents.
4. Programming-language support - E.g. Compilers, linkers, debuggers,
profilers, assemblers, library archive management, interpreters for common
languages, and support for make.
5. Program loading and execution - loaders, dynamic loaders, overlay
loaders, etc., as well as interactive debuggers.
6. Communications - Programs for providing connectivity between processes and
users, including mail, web.
1. Design Goals
Any system to be designed must have its own goals and specifications. Similarly the
OS to be built will have its own goals depending on the type of system in which it will
be used, the type of hardware used in the system etc.
Requirements define properties which the finished system must have, and
are a necessary steps in designing any large complex system. The
requirements may be of two basic groups:
User requirements are features that users care about and understand like
system should be convenient to use, easy to learn, reliable, safe and fast.
System requirements are written for the developers, i.e. People who design
the OS. Their requirements are like easy to design, implement and maintain,
flexible, reliable, error free and efficient.
3.Implementation
• Traditionally OS were written in assembly language.
• In recent years, Os are written in C, or C++. Critical sections of code are still written
in assembly language.
• The first OS that was not written in assembly language was the Master Control
Program (MCP).
• The advantages of using a higher-level language for implementing operating
systems are: The code can be written faster, more compact, easy to port to other
systems and is easier to understand and debug.
• The only disadvantages of implementing an operating system in a higher-level
language are reduced speed and increased storage requirements.
Operating-System Structure
1. Simple Structure
Many operating systems do not have well-defined structures. They started as small,
simple, and limited systems and then grew beyond their original scope. Eg: MS-DOS.
In MS-DOS, the interfaces and levels of functionality are not well separated.
Application programs can access basic I/O routines to write directly to the display
and disk drives. Such freedom leaves MS-DOS in bad state and the entire system can
crash down when user programs fail.
UNIX OS consists of two separable parts: the kernel and the system programs. The
kernel is further separated into a series of interfaces and device drivers. The kernel
provides the file system, CPU scheduling, memory management, and other
operating-system functions through system
calls.
The OS is broken into number of layers (levels). Each layer rests on the layer below
it, and relies on the services provided by the next lower layer.
Bottom layer(layer 0) is the hardware and the topmost layer is the user interface.
A typical layer, consists of data structure and routines that can be invoked by higher-
level layer.
The layers are selected so that each uses functions and services of only lower-level
layers. So simplifies debugging and system verification. The layers are debugged one
by one from the lowest and if any layer doesn’t work, then error is due to that layer
only, as the lower layers are already debugged. Thus the design and implementation
is simplified.
A layer need not know how its lower level layers are implemented. Thus hides the
operations from higher layers.
3. Microkernels
The basic idea behind micro kernels is to remove all non-essential services from
the kernel, thus making the kernel as small and efficient as possible.
The removed services are implemented as system applications.
Most microkernels provide basic process and memory management, and message
passing between other services.
Benefit of microkernel - System expansion can also be easier, because it only
involves adding more system applications, not rebuilding a new kernel.
Mach was the first and most widely known microkernel, and now forms a major
component of Mac OSX.
Disadvantage of Microkernel is, it suffers from reduction in performance due to
increases system function overhead.
4. Modules
Modern OS development is object-oriented, with a relatively small core kernel and a
set of modules which can be linked in dynamically.
Modules are similar to layers in that each subsystem has clearly defined tasks and
interfaces, but any module is free to contact any other module, eliminating the
problems of going through multiple intermediary layers.
The kernel is relatively small in this architecture, similar to microkernels, but the
kernel does not have to implement message passing since modules are free to contact
each other directly. Eg: Solaris, Linux and MacOSX
Virtual Machines
The fundamental idea behind a virtual machine is to abstract the hardware of a single
computer (the CPU, memory, disk drives, network interface cards, and so forth) into
several different execution environments, thereby creating the illusion that each
separate execution environment is running its own private computer.
Creates an illusion that a process has its own processor with its own memory. Host
OS is the main OS installed in system and the other OS installed in the system are
called guest OS.
Virtual machines first appeared as the VM Operating System for IBM mainframes in
1972.
Benifits
Able to share the same hardware and run several different execution
environments(OS).
Host system is protected from the virtual machines and the virtual machines
are protected from one another. A virus in guest OS, will corrupt that OS but
will not affect the other guest systems and host systems.
Even though the virtual machines are separated from one another, software
resources can be shared among them.
Two ways of sharing s/w resource for communication are:
a) To share a file system volume (part of memory).
b) To develop a virtual communication network to communicate
between the virtual machines.
The operating system runs on and controls the entire machine. Therefore, the
current system must be stopped and taken out of use while changes are made
and tested.
This period is commonly called system development time. In virtual machines
such problem is eliminated. User programs are executed in one virtual
machine and system development is done in another environment.
Multiple OS can be running on the developer’s system concurrently. This
helps in rapid porting and testing of programmer’s code in different
environments.
System consolidation – two or more systems are made to run in a single
system.
Simulation –
Here the host system has one system architecture and the guest system is compiled
in different architecture. The compiled guest system programs can be run in an
emulator that translates each instructions of guest program into native instructions
set of host system.
Para-Virtualization –
This presents the guest with a system that is similar but not identical to the guest’s
preferred system. The guest must be modified to run on the para-virtualized
hardware.
Examples :
1. VMware
VMware is a popular commercial application that abstracts Intel 80X86 hardware
into isolated virtual machines. The virtualization tool runs in the user-layer on top of
the host OS. The virtual machines running in this tool believe they are running on
bare hardware, but the fact is that it is running inside a user-level application.
VMware runs as an application on a host operating system such as Windows or Linux
and allows this host system to concurrently run several different guest operating
systems as independent virtual machines.
2. The Java Virtual Machine
Java was designed from the beginning to be platform independent, by running Java
only on a Java Virtual Machine, JVM, of which different implementations have been
developed for numerous different underlying HW platforms.
Java source code is compiled into Java byte code in .class files. Java byte code is
binary instructions that will run on the JVM.
Operating-System Generation
System Boot
The general approach when most computers boot up goes something like this:
• When the system powers up, an interrupt is generated which loads a memory
address into the program counter, and the system begins executing instructions
found at that address. This address points to the "bootstrap" program located in
ROM chips ( or EPROM chips ) on the motherboard.
• The ROM bootstrap program first runs hardware checks, determining what
physical resources are present and doing power-on self tests ( POST ) of all HW for
which this is applicable. Some devices, such as controller cards may have their own
on-board diagnostics, which are called by the ROM bootstrap program.
• The user generally has the option of pressing a special key during the POST
process, which will launch the ROM BIOS configuration utility if pressed. This utility
allows the user to specify and configure certain hardware parameters as where to
look for an OS and whether or not to restrict access to the utility with a password.
Some hardware may also provide access to additional configuration setup
programs, such as for a RAID disk controller or some special graphics or networking
cards.
• Assuming the utility has not been invoked, the bootstrap program then
looks for a non-volatile storage device containing an OS. Depending on
configuration, it may look for a floppy drive, CD ROM drive, or primary or secondary
hard drives, in the order specified by the HW configuration utility.
• Assuming it goes to a hard drive, it will find the first sector on the hard drive
and load up the fdisk table, which contains information about how the physical hard
drive is divided up into logical partitions, where each partition starts and ends, and
which partition is the "active" partition used for booting the system.
• There is also a very small amount of system code in the portion of the first
disk block not occupied by the fdisk table. This bootstrap code is the first step that is
not built into the hardware, i.e. the first part which might be in any way OS-specific.
Generally this code knows just enough to access the hard drive, and to load and
execute a ( slightly ) larger boot program.
• For a single-boot system, the boot program loaded off of the hard disk will
then proceed to locate the kernel on the hard drive, load the kernel into memory, and
then transfer control over to the kernel. There may be some opportunity to specify a
particular kernel to be loaded at this stage, which may be useful if a new kernel has
just been generated and doesn't work, or if the system has multiple kernels available
with different configurations for different purposes. (Some systems may boot
different configurations automatically, depending on what hardware has been found
in earlier steps.)
• For dual-boot or multiple-boot systems, the boot program will give the user
an opportunity to specify a particular OS to load, with a default choice if the user
does not pick a particular OS within a given time frame. The boot program then finds
the boot loader for the chosen single-boot OS, and runs that program as described in
the previous bullet point.
• Once the kernel is running, it may give the user the opportunity to enter into
single-user mode, also known as maintenance mode. This mode launches very few if
any system services, and does not enable any logins other than the primary log in on
the console. This mode is used primarily for system maintenance and diagnostics.