KEMBAR78
Operating Systems Assignment | PDF | Operating System | Thread (Computing)
0% found this document useful (0 votes)
18 views9 pages

Operating Systems Assignment

The document provides concise explanations of key concepts in operating systems, including threads, paging, fragmentation, and system calls. It also discusses Free and Open-Source Software (FOSS), its principles, advantages, and licensing, along with an implementation of the Round Robin scheduling algorithm in C++. The document concludes with references to sources used for the content.

Uploaded by

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

Operating Systems Assignment

The document provides concise explanations of key concepts in operating systems, including threads, paging, fragmentation, and system calls. It also discusses Free and Open-Source Software (FOSS), its principles, advantages, and licensing, along with an implementation of the Round Robin scheduling algorithm in C++. The document concludes with references to sources used for the content.

Uploaded by

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

ABUBAKAR TAFAWA BALEWA UNIVERSITY

BAUCHI,
FACULTY OF TECHNOLOGY EDUCATION
DEPARTMENT OF SCIENCE EDUCATION
COMPUTER SCIENCE EDUCATION

CS321

OPERATING SYSTEM II
REG. NO. 18/51843U/6
KIGBO VICTOR ANZAKU

27TH JUNE, 2023

[KIGBO VICTOR ANZAKU] | [18/51843U/6]


WRITE SHORT NOTE ON THE FOLLOWING
1. Thread

2. Paging

3. Fragmentation

4. System calls

Thread:
In computer science, a thread refers to the smallest unit of execution within a
process.

Threads allow multiple tasks to be performed concurrently within a single


process, sharing the same memory space.

They provide advantages such as improved responsiveness and increased


efficiency in utilizing system resources.

Threads can be managed either by the operating system (kernel threads) or by


the application itself (user threads).

Paging:
Paging is a memory management technique used by operating systems to
organize and allocate memory.

It divides the physical memory into fixed-sized blocks called pages and the
logical memory into blocks of the same size called page frames.

The process of mapping logical addresses to physical addresses is handled by a


data structure called the page table.

Paging allows for efficient memory allocation, as well as the ability to manage
virtual memory and provide memory protection.

Fragmentation:
Fragmentation refers to the phenomenon of unused memory or disk
space becoming scattered or divided into small, non-contiguous segments.

There are two types of fragmentation: external fragmentation and internal


fragmentation.

 External fragmentation occurs when free memory or disk space is


divided into small, non-contiguous blocks, making it challenging to
allocate large contiguous blocks of memory.

 Internal fragmentation occurs when memory or disk space is allocated in


fixed-sized blocks, resulting in small amounts of unused space within
allocated blocks.

Fragmentation can impact system performance and efficiency, and various


techniques such as compaction and paging are used to mitigate its effects.

System calls:
System calls are programming interfaces provided by the operating
system that allow user-level processes to request services from the kernel.

They provide an interface for higher-level applications to interact with


the lower-level functionality of the operating system.

Common system calls include functions for file management (open, read,
write, close), process management (fork, exec, exit), and communication
(socket, send, receive).

System calls provide a safe and controlled mechanism for accessing


system resources, and they typically involve a transition from user mode to
kernel mode.

These are brief explanations of each topic. Each of them can be explored
in more detail, as they encompass broader concepts and have more in-depth
implications in computer science and operating systems.

FREE AND OPEN-SOURCE SOFTWARE (FOSS)

Is a software development and distribution model that promotes the principles


of freedom, collaboration, and transparency. It refers to software that is both
free in terms of cost and provides users with the freedom to use, modify, and
distribute the software as per their needs. Let's explore the concept of FOSS in
more detail:

Freedom:
1. FOSS emphasizes user freedom and the ability to exercise control over
software.

Four essential freedoms associated with FOSS, as defined by the Free Software
Foundation (FSF), are:

Freedom 0: The freedom to run the software for any purpose.

Freedom 1: The freedom to study and modify the source code of the software.

Freedom 2: The freedom to redistribute copies of the software.

Freedom 3: The freedom to distribute modified versions of the software.

These freedoms enable users to adapt software to their specific needs,


contribute improvements to the software community, and share software with
others

2. Open Source:
Open-source software refers to software whose source code is made available
to the public, allowing anyone to view, modify, and distribute it.

The Open Source Initiative (OSI) provides a widely accepted definition of open
source based on ten criteria, including free redistribution, access to source
code, and absence of discrimination against persons or groups.

Open-source development encourages collaboration, peer review, and


collective innovation by allowing a community of developers to contribute to
the improvement and evolution of software.

3. Advantages of FOSS:

Cost: FOSS is typically free of charge, allowing users to use and distribute
software without financial barriers.

Customizability: Users have the freedom to modify and adapt FOSS to suit
their specific requirements, ensuring software meets their needs precisely.
Security and Transparency: With access to the source code, users can review
and verify the security and integrity of FOSS, reducing the risk of hidden
vulnerabilities or malicious code.

Community and Collaboration: FOSS projects often have vibrant communities


of developers and users who collaborate, share knowledge, and contribute to
the software's improvement.

Stability and Longevity: FOSS projects tend to have longer lifespans as they
rely on community support and contributions, ensuring ongoing maintenance
and updates.

Interoperability: FOSS promotes open standards and interoperability, enabling


seamless integration and compatibility with other software and systems

4. Licensing:

FOSS is typically distributed under licenses that uphold the principles of


freedom and openness.

The GNU General Public License (GPL) is one of the most well-known FOSS
licenses, ensuring that software and any modifications made to it remain free
and open-source.

Other popular FOSS licenses include the MIT License, Apache License, and
Creative Commons licenses, each with their own specific terms and
conditions.\ Examples of FOSS:

The FOSS ecosystem encompasses a vast range of software across various


domains, including operating systems (Linux), programming languages (Python,
PHP), web servers (Apache), databases (MySQL, PostgreSQL), content
management systems (WordPress, Drupal), and office suites (LibreOffice).
//Implement using C++ Round Robin algorithm

#include <iostream>

#include <queue>

using namespace std;

struct Process {

string name;

int burstTime;

int remainingTime;

};

void roundRobinScheduling(Process processes[], int n, int quantum) {

queue<Process> readyQueue;

for (int i = 0; i < n; ++i) {

processes[i].remainingTime = processes[i].burstTime;

readyQueue.push(processes[i]);

cout << "Round Robin Scheduling\n";

cout << "----------------------\n";

int time = 0;

while (!readyQueue.empty()) {

Process currentProcess = readyQueue.front();

readyQueue.pop();

int executionTime = min(quantum, currentProcess.remainingTime);

time += executionTime;

currentProcess.remainingTime -= executionTime;
cout << "Time: " << time << " | Executing Process: " <<
currentProcess.name << endl;

if (currentProcess.remainingTime > 0);

readyQueue.push(currentProcess);

cout << "\nAll processes executed.\n";

int main() {

// Example usage

const int n = 4; // Number of processes

Process processes[n] = {

{"P1", 10},

{"P2", 5},

{"P3", 8},

{"P4", 12}

};

int quantum = 4; // Time quantum for Round Robin

roundRobinScheduling(processes, n, quantum);

return 0;

}
CONCLUSION

In this implementation, the Process structure represents a process with its


name and burst time. The roundRobinScheduling function takes an array of
Process objects, the number of processes (n), and the time quantum
(quantum) as parameters.

The algorithm uses a queue called readyQueue to simulate the ready queue of
processes. The remaining time of each process is initialized with its burst time
and then pushed into the ready queue.

The main loop executes until the ready queue becomes empty. In each
iteration, a process is dequeued from the front of the ready queue. It is
executed for the given quantum or its remaining time, whichever is smaller.
The current time is incremented accordingly. The process's remaining time is
updated, and if it still has remaining burst time, it is pushed back to the ready
queue.

The execution of each process is printed with the current time. After all
processes are executed, a message is displayed indicating the completion of all
processes.

In the main function, an example scenario is created with four processes


and a time quantum of 4. You can modify this code to suit your specific
requirements by changing the number of processes, their burst times, and the
time quantum.

NB: Please note that this implementation assumes that the burst time of each
process is non-negative and the processes are already sorted based on arrival
time or priority.
References
1. OpenAI. (2023, June 22). Implement using C++ Round Robin algorithm
[Source code]. GitHub. https://github.com/username/repository

2. OpenAI. (2023, June 22). Write short note on thread. GitHub.


https://github.com/username/repository

3. OpenAI. (2023, June 22). Write short note on system calls. GitHub.
https://github.com/username/repository

4. OpenAI. (2023, June 22). Write short note on fragmentation. GitHub.


https://github.com/username/repository

5. OpenAI. (2023, June 22). Write short note on paging. GitHub.


https://github.com/username/repository

You might also like