0% found this document useful (0 votes)
9 views63 pages

MODULE-1 - Operating System Services

This document covers the essential services provided by operating systems, including user interfaces, system calls, and resource management. It outlines the objectives of understanding operating system design, implementation, and the various types of system calls categorized into process control, file management, device management, information maintenance, communication, and protection. Additionally, it discusses system programs and the design goals and implementation strategies for operating systems.

Uploaded by

Ambika Venkatesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views63 pages

MODULE-1 - Operating System Services

This document covers the essential services provided by operating systems, including user interfaces, system calls, and resource management. It outlines the objectives of understanding operating system design, implementation, and the various types of system calls categorized into process control, file management, device management, information maintenance, communication, and protection. Additionally, it discusses system programs and the design goals and implementation strategies for operating systems.

Uploaded by

Ambika Venkatesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 63

MODULE-1

Operating System Services

Department of CSE- Data Science


Contents
 User Operating System interface
 System calls
 Types of system calls
 System programs
 Operating system design and implementation
 Operating System structure
 Virtual machines
 Operating System debugging
 Operating System generation
 System boot.
Department of CSE- Data Science
Objectives

 To describe the services an operating system provides to users,


processes, and other systems
 To discuss the various ways of structuring an operating system
 To explain how operating systems are installed and customized and how
they boot

Department of CSE- Data Science


Operating System Services

 Operating systems provide an environment for execution of programs.


 It provides certain services to programs and to the users of those programs.
 These operating-system services are provided for the convenience of the
programmer, to make the programming task easier.

Department of CSE- Data Science


Fig. A view of operating system services

Department of CSE- Data Science


 One set of operating-system services provides functions that are helpful to the user:
• User interface - Almost all operating systems have a user interface (UI). Varies
between Command-Line (CLI), Graphics User Interface (GUI), Batch interface
(BI).
• Program execution - The system must be able to load a program into memory and
to run that program, end execution, either normally or abnormally (indicating
error).
• I/O operations - A running program may require I/O, which may involve a file or
an I/O device.
• File-system manipulation - The file system is of particular interest. Programs
need to read and write files and directories, create and delete them, search them,
list file Information, permission management.
Department of CSE- Data Science
• Communications – Processes may exchange information, on the same
computer or between computers over a network
‣ Communications may be via shared memory or through message passing
(packets moved by the OS)
• Error detection – OS needs to be constantly aware of possible errors
‣ May occur in the CPU and memory hardware, in I/O devices, in user
program
‣ For each type of error, OS should take the appropriate action to ensure
correct and consistent computing
‣ Debugging facilities can greatly enhance the user’s and programmer’s
abilities to efficiently use the system
Department of CSE- Data Science
 Another set of OS functions exists for ensuring the efficient operation of the
system itself via resource sharing
• Resource allocation - When multiple users or multiple jobs running
concurrently, resources must be allocated to each of them
‣ Many types of resources - Some (such as CPU cycles, main memory, and
file storage) may have special allocation code, others (such as I/O
devices) may have general request and release code
• Accounting - To keep track of which users use how much and what kinds of
computer resources

Department of CSE- Data Science


• Protection and security - The owners of information stored in a multiuser or
networked computer system may want to control use of that information,
concurrent processes should not interfere with each other
 Protection involves ensuring that all access to system resources is
controlled
 Security of the system from outsiders requires user authentication,
extends to defending external I/O devices from invalid access attempts
 If a system is to be protected and secure, precautions must be instituted
throughout it. A chain is only as strong as its weakest link

Department of CSE- Data Science


User Operating-System Interface

 There are several ways for users to interface with the operating system.
1. Command-line interface (CLI), or command interpreter, allows users to
directly enter commands to be performed by the operating system.
2. Graphical user interface (GUI), allows users to interface with the
operating system using pointer device and menu system.

Department of CSE- Data Science


Command-line interface (CLI)
 Command Interpreters are used to give commands to the OS. The main function of the

command interpreter is to get and execute the user-specified command. Many of the

commands manipulate files: create, delete, list, print, copy, execute, and so on.
 The commands can be implemented in two general ways-

1. The command interpreter itself contains the code to execute the command. For example,

a command to delete a file may cause the command interpreter to jump to a particular

section of its code that sets up the parameters and makes the appropriate system call.

2. The code to implement the command is in a function in a separate file. The interpreter

searches for the file and loads it into the memory and executes it by passing the

parameter. Thus by adding new functions new commands can be added easily to the

interpreter without disturbing it.

Department of CSE- Data Science


Department of CSE- Data Science
Graphical User Interfaces (GUI)

 GUI provides a mouse-based window-and-menu system as an interface.


 A GUI provides a desktop metaphor where the mouse is moved to position its
pointer on images, or icons, on the screen (the desktop) that represent programs,
files, directories, and system functions.
 Depending on the mouse pointer's location, clicking a button on the mouse can
invoke a program, select a file or directory—known as a folder— or pull down a
menu that contains commands.

Department of CSE- Data Science


 Many systems now include both CLI and GUI interfaces
‣ Microsoft Windows is GUI with CLI “command” shell
‣ Apple Mac OS X is “Aqua” GUI interface with UNIX kernel underneath
and shells available
‣ Unix and Linux have CLI with optional GUI interfaces (CDE, KDE,
GNOME)

Department of CSE- Data Science


System Calls
 System calls provides an interface to the services of the operating system.
 These are generally written in C or C++
 The figure illustrates the sequence of system calls required to copy a file content from
one file (input file) to another file (output file).

Department of CSE- Data Science


 An example to illustrate how system calls are used: writing a simple program to read data
from one file and copy them to another file
‣ 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 files 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).

Department of CSE- Data Science


 Most programmers do not use the low-level system calls directly, but instead

use an "Application Programming Interface", API.


 Instead of direct system calls, APIs provides for greater program portability

between different systems. The API then makes the appropriate system calls
through the system call interface, using a system call table to access specific
numbered system calls.
 Typically, a number associated with each system call. System-call interface

maintains a table indexed according to these numbers


 The system call interface invokes intended system call in OS kernel and

returns status of the system call and any return values


Department of CSE- Data Science
 The caller need know nothing about how the system call is implemented

Fig. The handling of a user application invoking the open() system call

Department of CSE- Data Science


 C program invoking printf() library call, which calls write() system call

Department of CSE- Data Science


System Calls - Parameter Passing
 Three general methods used to pass
parameters required for a system call
1. Pass the parameters in registers (this
may prove insufficient when there are
more parameters than registers).
2. Store the parameters in a block, or
table, in memory, and pass the address
of block as a parameter in a register.
This approach is used by Linux and
Solaris.
3. Push the parameters onto a stack; to be
popped off by the OS.
Department of CSE- Data Science
Types of System calls

 The system calls can be categorized into six major categories:

1. Process Control

2. File management

3. Device management

4. Information management

5. Communications

6. Protection

Department of CSE- Data Science


Process Control
 Process control system calls include end, abort, load, execute, create process, terminate

process, get/set process attributes, wait for time or event, signal event, and allocate and

free memory.
 Processes must be created, launched, monitored, paused, resumed, and eventually stopped.
 When one process pauses or stops, then another must be launched or resumed.
 Process attributes like process priority, max. allowable execution time etc. are set and

retrieved by OS.
 After creating the new process, the parent process may have to wait (wait time), or wait for

an event to occur (wait event). The process sends back a signal when the event has

occurred (signal event).

Department of CSE- Data Science


File Management

 File management system calls include create file, delete file, open,

close, read, write, reposition, get file attributes, and set file attributes.
 After creating a file, the file is opened. Data is read or written to a file.

 The file pointer may need to be repositioned to a point.

 The file attributes like filename, file type, permissions, etc. are set and

retrieved using system calls.


 These operations may also be supported for directories as well as

ordinary files.
Department of CSE- Data Science
Device Management
 Device management system calls include request device, release device, read,

write, reposition, get/set device attributes, and logically attach or detach devices.
 When a process needs a resource, a request for resource is done. Then the

control is granted to the process. If requested resource is already attached to

some other process, the requesting process has to wait.


 In multiprogramming systems, after a process uses the device, it has to be

returned to OS, so that another process can use the device.


 Devices may be physical (e.g. disk drives ), or virtual/abstract (e.g. files,

partitions, and RAM disks ).

Department of CSE- Data Science


Information Maintenance
 Information maintenance system calls include calls to get/set the time, date,
system data, and process, file, or device attributes.
 These system calls care used to transfer the information between user and the OS.
Information like current time & date, no. of current users, version no. of OS,
amount of free memory, disk space etc. are passed from OS to the user.

Department of CSE- Data Science


Communication
 Communication system calls create/delete communication connection, send/receive

messages, transfer status information, and attach/detach remote devices.


 The message passing model must support calls to:
‣ Identify a remote process and/or host with which to communicate.
‣ Establish a connection between the two processes.
‣ Open and close the connection as needed.
‣ Transmit messages along the connection.
‣ Wait for incoming messages, in either a blocking or non-blocking state.
‣ Delete the connection when no longer needed.

Department of CSE- Data Science


 The shared memory model must support calls to:
‣ Create and access memory that is shared amongst processes (and threads)
‣ Free up shared memory and/or dynamically allocate it as needed.
 Message passing is simpler and easier, (particularly for inter-computer
communications), and is generally appropriate for small amounts of data. It is easy
to implement, but there are system calls for each read and write process.
 Shared memory is faster, and is generally the better approach where large amounts
of data are to be shared. This model is difficult to implement, and it consists of
only few system calls.

Department of CSE- Data Science


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.

Department of CSE- Data Science


Examples of Windows and Unix System Calls

Department of CSE- Data Science


System programs

 A collection of programs that provide a convenient environment for program


development and execution
 Also called system utilities.
 They can be divided into:
1. File management
2. Status information
3. Programming-language support for make.
4. File modification
5. Program loading and execution
6. Communications

Department of CSE- Data Science


1. File management
‣ programs to create, delete, copy, rename, print, list, and generally manipulate
files and directories.
2. Status information
‣ Utilities to check on the date, time, number of users, processes running, data
logging, etc.
‣ System registries are used to store and recall configuration information for
particular applications.
3. Programming-language support
‣ E.g. Compilers, linkers, debuggers, profilers, assemblers, library archive
management, interpreters for common languages

Department of CSE- Data Science


4. File modification
‣ e.g. text editors and other tools which can change file contents.

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 browsers, remote logins, file transfers, and remote
command execution.

Department of CSE- Data Science


Operating-System Design and Implementation

Design Goals
 The first problem in designing a system is to define goals and specifications.
 At the highest level, the design of the system will be affected by the choice of

hardware and the type of system: batch, time shared, single user, multiuser, distributed,
real time, or general purpose.
 The requirements can be divided into two basic groups

1. User goals (User requirements)


2. System goals (System requirements)

Department of CSE- Data Science


1. User requirements
‣ are the features that user care about and understand like system should be
convenient to use, easy to learn, reliable, safe and fast.
2. 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.

Department of CSE- Data Science


Mechanisms and Policies
 Policies determine what is to be done.
 Mechanisms determine how it is to be implemented.
 For example, the timer construct is a mechanism for ensuring CPU protection, but
deciding how long the timer is to be set for a particular user is a policy decision.
 Policies change overtime. In the worst case, each change in policy would require a
change in the underlying mechanism.
 If properly separated and implemented, policy changes can be easily adjusted without
re- writing the code, just by adjusting parameters or possibly loading new data /
configuration files.

Department of CSE- Data Science


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, it 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.

Department of CSE- Data Science


Operating System structure
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
Fig. MS-DOS layer structure
system can crash down when user programs fail.

Department of CSE- Data Science


 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.
 Enormous amount of functionality
combined into one level
 Monolithic structure was difficult to
implement and maintain Fig :Traditional UNIX system structure.

Department of CSE- Data Science


Layered Approach
 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.

Fig. A layered Operating System

Department of CSE- Data Science


 Advantage of layered approach is simplicity of construction and debugging.
 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 are simplified.


 A layer need not know how its lower-level layers are implemented. Thus hides the operations

from higher layers.


 Disadvantages of layered approach:

‣ The various layers must be appropriately defined, as a layer can use only lower-level layers.

‣ Less efficient than other types, because any interaction with layer 0 required from top layer.

The system call should pass through all the layers and finally to layer 0. This is an overhead.

Department of CSE- Data Science


Microkernels
 This method structures the operating system by removing all nonessential
components from the kernel and implementing them as system and user-level
programs 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.
 The main function of the microkernel is to provide a communication facility
between the client program and the various services that are also running in user
space.

Department of CSE- Data Science


 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 -

‣ Performance overhead of user space to

kernel space communication.


Department of CSE- Data Science
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 Mac OSX.

Department of CSE- Data Science


 Resembles layered system, but a module can call any other module.
 Resembles microkernel, the primary module has only core functions and the knowledge of
how to load and communicate with other modules.
 Solaris operating system structure, is
organized around a core kernel with
seven types of loadable kernel
modules:
1.Scheduling classes
2.File systems
3.Loadable system calls
4.Executable formats
Fig. Solaris loadable modules
5.STREAMS modules
6.Miscellaneous
7.Device and bus drivers

Department of CSE- Data Science


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.

Department of CSE- Data Science


 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.

Fig: System modes. (a) Non-virtual machine (b) Virtual machine

Department of CSE- Data Science


Implementation
 The virtual-machine concept is useful, it is difficult to implement.
 Work is required to provide an exact duplicate of the underlying machine. Remember that the
underlying machine has two modes: user mode and kernel mode.
 The virtual-machine software can run in kernel mode, since it is the operating system. The
virtual machine itself can execute in only user mode.
• Those actions that cause a transfer from user mode to kernel mode on a real machine (such
as a system call or an attempt to execute a privileged instruction) must also cause a transfer
from virtual user mode to virtual kernel mode on a virtual machine. Without some level
of hardware support, virtualization would be impossible.
 The more hardware support available within a system, the more feature rich, stable, and well
performing the virtual machines can be.

Department of CSE- Data Science


Benefits
 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 software resource for communication are:
‣ To share a file system volume (part of memory).
‣ To develop a virtual communication network to communicate between the virtual
machines.

Department of CSE- Data Science


 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.

Department of CSE- Data Science


 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
‣ Rather than try to trick a guest operating system into believing it has a system to itself,
paravirtualization 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 paravirtualized hardware. The gain for this extra
work is more efficient use of resources and a smaller virtualization layer..
• Solaris 10 includes or that create a virtual layer between the operating system and the
applications.

Department of CSE- Data Science


• In this system, only one kernel is installed, and the hardware is not virtualized. Rather, the
operating system and its devices are virtualized, providing processes within a container with
the impression that they are the only processes on the system.
• One or more containers can be created, and each can have its own applications, network
stacks, network address and ports, user accounts, and so on. CPU resources can be divided
up among the containers and the system wide processes.

Fig: Solaris I0 with two containers.

Department of CSE- Data Science


Examples – 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.

Department of CSE- Data Science


 In the scenario, Linux is running as the host operating system; FreeBSD, Windows NT, and
Windows XP are running as guest operating systems.
 The virtualization layer is the heart of VMware, as it abstracts the physical hardware into
isolated virtual machines running as guest operating systems. Each virtual machine has its
own virtual CPU, memory, disk drives, network interfaces, and so forth.

Fig. VMware architecture

Department of CSE- Data Science


Examples – 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

Fig. The JVM

Department of CSE- Data Science


 Java source code is compiled into Java byte code in .class files. Java byte code is binary
instructions that will run on the JVM.
 The JVM implements memory management and garbage collection.
 JVM consists of class loader and Java Interpreter. Class loader loads compiled .class files
from both Java program and Java API for the execution of Java interpreter. Then it checks
the .class file for validity.

Department of CSE- Data Science


Operating System debugging

 Debugging is finding and fixing errors, or bugs in a system, both in hardware and in
software
Failure Analysis

 OS generate log files containing error information

 Failure of an application can generate core dump file capturing memory of the process

 Operating system failure can generate crash dump file containing kernel memory

 Beyond crashes, performance tuning can optimize system performance

‣ Sometimes using trace listings of activities, recorded for analysis

‣ Profiling is periodic sampling of instruction pointer to look for statistical trends

Department of CSE- Data Science


Performance Tuning

 Improve performance by removing bottlenecks


 OS must provide means of computing and displaying measures of system behavior
 For example, “top” program or Windows Task Manager
 Another approach to performance tuning uses single-purpose interactive tools that allow
users and administrators to question the state of various system components to look for
bottlenecks.
 The Windows Task Manager is a similar tool for Windows systems. The task manager
includes information for current applications as well as processes, CPU and memory
usage, and networking statistics.

Department of CSE- Data Science


Department of CSE- Data Science
DTrace
 DTrace tool in Solaris, FreeBSD, Mac OS X allows live instrumentation on production
systems
 Probes fire when code is executed within a provider, capturing state data and sending it
to consumers of those probes
 DTrace code to record amount of time each process with UserID 101 is in running mode
(on CPU) in nanoseconds

Department of CSE- Data Science


Operating System generation

 Operating systems are designed to run on any of a class of machines; the system must be
configured for each specific computer site.
 SYSGEN program obtains information concerning the specific configuration of the
hardware system.
‣ Booting – starting a computer by loading the kernel.
‣ Bootstrap program – code stored in ROM that is able to locate the kernel, load it
into memory, and start its execution.

Department of CSE- Data Science


System Boot
 When power initialized on system, execution starts at a fixed memory location
‣ Firmware ROM used to hold initial boot code
 Operating system must be made available to hardware so hardware can start it
‣ Small piece of code – bootstrap loader, stored in ROM or EEPROM locates the
kernel, loads it into memory, and starts it
‣ Sometimes two-step process where boot block at fixed location loaded by ROM code,
which loads bootstrap loader from disk
 Common bootstrap loader, GRUB, allows selection of kernel from multiple disks,
versions, kernel options
 Kernel loads and system is then running

Department of CSE- Data Science


Question Bank
From Model Question Paper
1 Explain the services of the operating system that are helpful for the user and the system. .
8 marks
2 What are system calls? Briefly point out its types with illustrations. 6 marks
3 Explain the layered approach of operating system structure with a supporting diagram.

6 marks
4 With a neat diagram, explain the concept of the virtual machine. 7 marks
From Previous year question papers
1 Explain the operating system services with respect to users and system.

Dec’23/Jan’24 ,5 marks
2 What are system calls? List and explain different types of system calls.
Dec’23/Jan’24, 10 marks
3 With a neat diagram explain the concept of VM-WARE architecture.
Dec’23/Jan’24, 5 marks
Department of CSE- Data Science
From Previous year question papers
4 Which calls provide an interface to the services made available by OS? Explain the same
with suitable example. June/July 2019 6
marks
5 Explain the method of OS design which involves using object-oriented programming
technique with a neat diagram. June/July 2019 8 marks
6 What are virtual machines? Explain VM-WARE architecture with a neat diagram.
Dec’18/Jan’19 8 marks
7 Explain the concept of virtual machines. Bring out its advantages.
Dec’17/Jan’18 7 marks
8 What are virtual machines? How are they implemented?
Dec’16/Jan’17 5 marks
9 Explain the advantages of layered approach with a neat diagram. Dec’13/Jan’14 6 marks

Department of CSE- Data Science

You might also like