0% found this document useful (0 votes)
100 views61 pages

Operating Systems Unit-1: Tribhuvan Singh (GLA120252) Assistant Professor

This document provides an overview of operating systems concepts including: 1. It defines operating systems and their goals of executing user programs, making the system convenient to use, and efficiently using hardware. 2. It describes different types of operating systems like batch, interactive, multiprogramming, time-sharing, and real-time systems. 3. It explains operating system structures like layered structures and components like process control blocks that store information about processes.

Uploaded by

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

Operating Systems Unit-1: Tribhuvan Singh (GLA120252) Assistant Professor

This document provides an overview of operating systems concepts including: 1. It defines operating systems and their goals of executing user programs, making the system convenient to use, and efficiently using hardware. 2. It describes different types of operating systems like batch, interactive, multiprogramming, time-sharing, and real-time systems. 3. It explains operating system structures like layered structures and components like process control blocks that store information about processes.

Uploaded by

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

Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Operating Systems Unit-1

Tribhuvan Singh (GLA120252)


Assistant Professor

GLA University, Mathura, U.P. - 281406, India

1 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Table of Contents

1 Syllabus

2 Introduction

3 OS Classification

4 Operating Systems Structure

5 Process Concept

6 CPU Scheduling

7 Process Synchronization

2 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Syllabus Module-1

Introduction: Operating System and its Classification -


Batch, Interactive, Multiprogramming, Time sharing, Real
Time System, Multiprocessor Systems, Multithreaded
Systems, System Protection, System Calls, Reentrant Kernels,
Operating System Structure- Layered structure, Monolithic
and Microkernel Systems, Operating System Components,
Operating System Functions and Services.
Processes: Process Concept, Process States, Process State
Transition Diagram, Process Control Block (PCB), Process
Scheduling Concepts, Threads and their management.
CPU Scheduling: Scheduling Concepts, Performance
Criteria, Scheduling Algorithms, Multiprocessor Scheduling.

3 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Syllabus Module-1 Cont...

Process Synchronization: Principle of Concurrency,


Implementation of concurrency through fork/join and
parbegin/parend, Inter Process Communication models and
Schemes, Producer / Consumer Problem, Critical Section
Problem, Dekker’s solution, Peterson’s solution, Semaphores,
Synchronization Hardware.
Classical Problem in Concurrency: Dining Philosopher
Problem, Readers Writers Problem.

4 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Operating Systems (OS) Definitions and Goals

A program that acts as an intermediary between a user of a


computer and the computer hardware.
OS is a resource allocator.
OS is a control program.
OS goals:
Execute user programs and make solving user problems easier.
Make the computer system convenient to use.
Use the computer hardware in an efficient manner.

5 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Four Components of a Computer System

Figure is taken from [1].


6 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Batch Operating System

Firstly, user prepares his job.


Then, he submits the job to the computer operator.
Operator collects the jobs from different users and sort the
jobs into batches with similar needs.
Then, operator submits the batches to the processor one by
one.
All the jobs of one batch are executed together.

7 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Batch Operating System Advantages

Advantages:
It saves the time that was being wasted earlier for each
individual process in context switching from one environment
to another environment.
No manual intervention is needed.

8 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Batch Operating System Disadvantages

Disadvantages:
Priority can not be set for the jobs.
Batch operating system may lead to starvation.
CPU may remain idle for a long time.
There is a lack of interaction between a user and his job.

9 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Multiprogramming Operating System

Sharing the processor, when two or more programs reside in


memory at the same time, is referred as multiprogramming.
Multiprogramming increases CPU utilization by organizing
jobs so that the CPU always has one to execute.
Advantage:
Increased throughput.
Throughput: Number of jobs completed in unit of time.
Disadvantage:
CPU Scheduling is required.
To accommodate many jobs in memory, memory management
is required.

10 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Multitasking Operating System

Also know as Time-sharing operating system.


Each process is assigned some time to execute. example 2ns,
5ns, etc.
It avoids the problem of starvation.
Starvation: The indefinite waiting of a process is called
starvation.

11 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Real Time Operating System

In these operating systems, time requirements are very strict


like missile systems, air traffic control systems, robots etc.
It is of two types:
Hard Real-Time Systems: Time constraints are very strict
and even the shortest possible delay is not acceptable.
Soft Real-Time Systems: These OSs are for applications
where for time-constraint is less strict.

12 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Multiprocessor Operating System

These systems refer to the use of two or more central


processing units (CPU) within a single computer system.
Even if one CPU fails, the execution can be continued by
other CPU(s).

13 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Layered Structure

To provide proper H/W support, OS may be broken into


smaller, more appropriate piece than those allowed by the
original UNIX or MS-DOS.
The OS can then retain much greater control over the
computer and the applications that make use of the computer.
Implementations have more freedom to change the inner
working of the system.

14 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Layered Structure

Figure is taken from [1].


15 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Process Control Block (PCS)

A process control block (PCB) is a data structure used by


computer operating systems to store all the information about
a process.
It is also known as a process descriptor.
When a process is created (initialized or installed), the
operating system creates a corresponding process control
block.

16 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

PCB Cont...

Figure is taken from [1].


17 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Process Scheduling Concepts

The process scheduling is the activity of the process manager


that handles the removal of the running process from the CPU
and the selection of another process on the basis of a
particular strategy.
It is an essential part of a Multiprogramming operating
systems.

18 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Threads and their management

Threads: Light weight process is called thread. The process


is divided into multiple threads.
Advantages of Threads:
Improves the responsiveness.
Faster Context Switching.
The effective utilization of multiprocessor systems.
Resource sharing.
Economical.
Enhanced throughput of the system.

19 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Threads and their management

Thread is of two types: (1) - User level thread, (2) – Kernel


level thread.

20 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

CPU Scheduling

Who? - Short term schedular.


Where? - in the ready state.
When? -
when the process is moving from running to termination state.
when the process is moving from running to wait state.
when the process is moving from running to ready state.
when the process is moving from wait to ready state.
every time when the process is coming from new to ready state.

21 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Various times used in CPU Scheduling

Arrival Time (AT): The time when the process is arrived


into ready state is called arrival time of the process.
Burst Time (BT): The time required for the process for its
execution.
Completion Time (CT): The time when the process
completes its execution.
Turn Around Time (TAT): The time difference between the
completion time and arrival time is called TAT. Hence,
TAT=CT-AT.
Waiting Time (WT): The time difference between TAT and
BT is called WT. Hence, WT=TAT-BT.
Response Time (RT): The time difference between first
response and arrival time is called RT. RT=first response-AT.
22 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Functionality and goal of CPU Scheduling

Functionality: Allocating the CPU to the processes.


Goal: to minimize the average TAT, WT, RT.

23 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

CPU Scheduling Algorithms

Types of CPU Scheduling Algorithms:


First come first serve (FCFS).
Shortest job first:
Preemptive shortest job first. It is also called shortest
remaining time first (SRTF).
non-preemptive shortest job first.
Round Robin scheduling algorithm.
Priority scheduling algorithm:
Preemptive priority scheduling algorithm
non-preemptive priority scheduling algorithm.
Multilevel queue scheduling algorithm.
Multilevel feedback queue scheduling algorithm.

24 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

First come first serve (FCFS)

Criteria of algorithm: Arrival time.


Mode: non-prremptive.
Example-for FCFS algorithm, process number and their respective
arrival time and burst time are given in the following Table.
Calculate average TAT, average WT, and average RT.
Pr No AT BT
P1 0 4
P2 1 3
P3 2 1
P4 3 2
P5 4 5

25 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

FCFS Cont...

If the arrival time of the process are matching then scheduled the
process which has lowest process number (process ID).
use FCFS to calculate average TAT, average WT, average RT for
the following data.
Pr No. AT BT
P1 8 4
P2 3 2
P3 7 6
P4 10 3
P5 2 1
P6 3 1

26 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Shortest job first (non-preemptive)

Consider SJF-NP to calculate average TAT, average WT, average


RT.
Pr. No AT BT
P1 1 7
P2 2 5
P3 3 1
P4 4 2
P5 5 8

27 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Shortest job first (preemptive)

Consider SJF-Preemptive to calculate average TAT, average WT,


average RT.
Pr. No AT BT
P1 1 7
P2 2 5
P3 3 1
P4 4 2
P5 5 8

28 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Shortest job first (non-preemptive)

If the burst time of the processes are same then schedule the
process which has lowest arrival time.
Consider SJF-non-Preemptive to calculate average TAT, average
WT, average RT.
Pr. No. AT BT
P1 6 1
P2 3 3
P3 4 6
P4 1 5
P5 2 2
P6 5 1

29 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Shortest job first (preemptive)

Consider SJF-Preemptive to calculate average TAT, average WT,


average RT.
Pr. No. AT BT
P1 3 4
P2 4 2
P3 5 1
P4 2 6
P5 1 8
P6 2 4

30 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Round Robin (RR) Scheduling Algorithm

Consider Round Robin with time quantum=2 to calculate average


TAT, average WT, average RT.
Pr. No. AT BT
P1 0 4
P2 1 5
P3 2 2
P4 3 1
P5 4 6
P6 6 3

31 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Round Robin (RR) Scheduling Algorithm Cont...

Consider Round Robin with time quantum=3 to calculate average


TAT, average WT, average RT.
Pr. No. AT BT
P1 5 5
P2 4 6
P3 3 7
P4 1 9
P5 2 2
P6 6 3

32 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Priority Scheduling Algorithm

Criteria of the algorithm: Priority.


Mode of the algorithm: non-preemptive and preemptive.
Consider non-preemptive priority scheduling algorithm to calculate
average TAT, average WT, average RT. (NOTE: highest number
highest priority).

Pr. No. AT BT Priority


P1 0 4 4
P2 1 5 5
P3 2 1 7
P4 3 2 2
P5 4 3 1
P6 5 6 6

33 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Priority Scheduling Algorithm Cont...

If priority of the processes are same then schedule the process


which has lowest arrival time.
Consider preemptive priority scheduling algorithm to calculate
average TAT, average WT, average RT. (NOTE: highest number
highest priority).

Priority Pr. No. AT BT


4 P1 1 4
5 P2 2 2
7 P3 2 3
8 P4 3 5
5 P5 3 1
6 P6 4 2

34 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Process Synchronization

Processes with respect to synchronization are of two types: (1)


Co-operative process, (2) Independent process.
Race Condition: The final output of any variable depends on
execution sequence of the processes.

35 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Producer Consumer Problem

Producer:
while (true)
int item p;
while (counter == N) ; /* do nothing */
buffer[in] = item p;
in = (in + 1)mod N;
counter++;

in, out, N, counter.

36 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Producer Consumer Problem

Consumer:
while (true)
while (counter == 0); /* do nothing */
next consumed = buffer[out];
out = (out + 1)mod N;
counter–;

37 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Process Synchronization Cont...

Critical Section: The portion of program code where shared


variables or shared resources are placed. Example,
counter++, counter–.
Non-critical Section: The portion of the program code
where independent variables are placed. Example,
in=(in+1)mod N.

38 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Conditions to be followed to achieve synchronization

Mutual Exclusion: No two process should be present inside


the critical section at any point of time.
Progress: If no process is executing in the critical section and
other processes are waiting outside the critical section, then
only those processes that are not executing in their remainder
section can participate in deciding which will enter in the
critical section next, and the selection can not be postponed
indefinitely.
Bounded Waiting: No process should have to wait forever to
enter into critical section.

39 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Dekker’s Solution

turn is a shared Boolean variable.


Process P0 Code Process P1 Code
while (TRUE) while (TRUE)
non-critical section (); non-critical section ();
while (turn ! = 0); while (turn ! = 1);
critical section; critical section;
turn = 1; turn = 0;

(1) Mutual exclusion


(2) Progress
(3) Bounded waiting.

40 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Peterson’s Solution

turn is a shared Boolean variable. flag[F, F], is an array.

Process P0 Code Process P1 Code


while (TRUE) while (TRUE)
flag[0]=T; flag[1]=T;
turn=1; turn=0;
while(turn==1 && flag[1]==T); while(turn==0 && flag[0]==T);
critical section; critical section;
flag[0]=F; flag[1]=F;

(1) Mutual exclusion


(2) Progress
(3) Bounded waiting.

41 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Semaphore

Semaphore is an integer variable which is used by the various


processes in a mutual exclusive manner to achieve
synchronization.
The improper uses of semaphore will also results an improper
outcome.
Semaphores are integer variables that are used to solve the
critical section problem by using two atomic operations, wait
and signal that are used for process synchronization.

42 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Types of Semaphore

Counting Semaphore Takes the values from -∞ to +∞


Binary Semaphore Takes the values from 0 and 1.

43 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Operations in Semaphore

In Semaphores, two operations can be performed given below.


1: Down or wait or p operation. In this operation, the value
of semaphore is decreased by 1.
2: up or signal or release or v operation. In this operation, the
value of semaphore is increased by 1.

44 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Down operation in counting semaphore

Down (Semaphore S)
{
S.value = S.value - 1;
if (S.value <0 )
{
block the process and place its PCB in the suspended list ();
}
}

45 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Up operation in counting semaphore

Up (Semaphore S)
{
S.value = S.value + 1;
if (S.value ≤ 0 )
{
Select a process from suspended list () and wakup();
}
}

46 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Numerical based on semaphore

Problem: Consider a system where a counting semaphore value is


initialized to +17 ie S = +17. Then the various semaphore
operations such as 23P, 18V, 16P, 14V, 1P are performed. Then
what will be the final value of semaphore.
Solution: S = 17 + 23P + 18V + 16P + 14V + 1P
=17 - 23 + 18 - 16 + 14 - 1
= +9.

47 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Down operation in binary semaphore

Down (Semaphore S)
{
if (S.value = = 1 )
S.value = 0;
else
{
Block the process and place its PCB in the suspended list();
}
}

48 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Up operation in binary semaphore

Up (Semaphore S)
{
if (suspended list () is empty)
S.value = 1;
else
{
select a process from suspended list() and wakup();
}
}

49 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Problem based on binary semaphore

Three concurrent processes X, Y, and Z execute three different


code segments that access and update certain shared variables.
Process X executes the P operation (i.e., wait) on semaphores a, b
and c; process Y executes the P operation on semaphores b, c and
d; process Z executes the P operation on semaphores c, d, and a
before entering the respective code segments. After completing the
execution of its code segment, each process invokes the V
operation (i.e., signal) on its three semaphores. All semaphores are
binary semaphores initialized to one. Which one of the following
represents a deadlock free order of invoking the P operations by
the processes?

50 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Problem based on binary semaphore Cont...

A: X: P(a)P(b)P(c) Y:P(b)P(c)P(d) Z:P(c)P(d)P(a)


B: X: P(b)P(a)P(c) Y:P(b)P(c)P(d) Z:P(a)P(c)P(d)
C: X: P(b)P(a)P(c) Y:P(c)P(b)P(d) Z:P(a)P(c)P(d)
D: X: P(a)P(b)P(c) Y:P(c)P(b)P(d) Z:P(c)P(d)P(a)
Solution: A:

X Y Z
P(a) P(b) P(c)
P(b) P(c) P(d)
P(c) P(d) P(a)

51 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Solution contt...

B:

X Y Z
P(b) P(b) P(a)
P(a) P(c) P(c)
P(c) P(d) P(d)

C:

X Y Z
P(b) P(c) P(a)
P(a) P(b) P(c)
P(c) P(d) P(d)

52 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Solution contt...

D:

X Y Z
P(a) P(c) P(c)
P(b) P(b) P(d)
P(c) P(d) P(a)

53 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Reader-Writer Problem

semaphore wrt=1=mutex, variable readcount=0

Writer Reader
wait (wrt) wait (mutex)
write operation readcount++
signal (wrt) if (readcount==1)
wait (wrt)
signal(mutex)
read operation
wait(mutex)
readcount–
if (readcount==0)
signal(wrt)
signal(mutex)

54 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Dinning Philosopher Problem

Consider n philosophers who spend their lives thinking and


eating. The philosophers share a circular table surrounded by
n chairs, each belonging to one philosopher.
There is a bowl of rice in the center of the table and the table
is laid with n single chopsticks.

55 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Dinning Philosopher Problem-Solution

Void Philosopher (void)


while (TRUE)
Thinking ();
P(S);
wait (chopstick[i]);
wait (chopstick[i+1]%5);
V(S);
Eat();
signal (chopstick[i]);
signal (chopstick[i+1]%5);
semaphore S=1,

1 1 1 1 1

56 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Synchronization Hardware

It is called Test and Set Lock (TSL) instruction set.

1. TSL Ri , flag
2. CMP Ri , # 0
3. JNZ to step 1
4. Critical Section
5. Store flag, # 0

57 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Principle of Concurrency

It is regarded as the execution of multiple processes at the


same time.
Since it is practically not possible to have as many processors
as there are processes so the operating system switches
processor from one process to another, allowing processor to
execute a particular process for only given fixed amount of
time and then moving processor to next process and so on.
The multiple processes executing in the computer system
using principle of concurrency can be divided into two types:
Independent processes
Cooperating processes

58 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

Principle of Concurrency Contt...

The processes that neither affect working of other processes


nor affected by other processes are called independent
processes. These processes do not share any information or
data with other processes.
The processes that affect working of other processes and also
affected by other processes are called cooperating processes.
These processes share information and data with other
processes.
The cooperating processes have following benefits:
Information and data sharing
Efficient CPU utilization and better computation speed

59 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

60 / 60
Syllabus Introduction OS Classification Operating Systems Structure Process Concept CPU Scheduling Process Synchroniza

[1] Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne.


Operating system principles. John Wiley & Sons, 2006.

60 / 60

You might also like