OPEN SOURCE OPERATING SYSTEM
Open source is a methodology or approach towards the design and development of software with the intention of giving the user to access the source. If we use open source software, not only we will be able to use it, but also will be able to see how it works, debug it, modify it and redistribute it. Open source software is licensed in a way that makes it legal to use as many copies of it as you want, and wherever you want. That software usually uses less resource than its commercial counterpart because they don’t have any code for licensing, authentication and promoting other products to attach an advertisement etc.
Source:blog.myyello.com Fig: open source
There is a core difference between open source and free software. Both represent the same core idea. Open source allows the commercial utilization of the code with the motive of profits. Many companies such as Red Hat gain significant revenue from sales, distribution, maintenance and consultancy services provided by open source software. However, free software cannot be used for commercial purpose.
Being an open source program, the program codes of an open source operating system are available. The user can modify those codes and develop new applications according to his/her requirements. Some common examples of open source (OS) are Linux, Minix, Free BSD, Open BDS, Open Solaris, FreeDOS, FreeRTOS, E/OS etc.
UNIX is a powerful, flexible and manageable OS with good utilities and communication abilities. It is multiuser, multitasking and multiprocessing operating system. It was used in bigger size machines like mainframe and minicomputers. It was developed in AT&T Bell labs around 1970. The development of UNIX has given birth to many operating systems that can work on different types of sizes of computers. For example, UNIX has developed in ‘C’ and assembly language. Many of the popular commercial operating system e.g. Linux, Xenix, HP UNIX, SUN OS etc. has inherited its main features.
Source:afraaltayer.wordpress.com Fig: Linux
Linux is an open source powerful UNIX-based OS. It's OS runs on a variety of platforms, including Intel, SPARCE, PowerPC and DEC Alpha processors as well as multiprocessing systems. It was developed by Linux Torvalds, at the University of Helsinki in Finland as a college project. He released the version of Linux, including all source code. With the help of literally thousands of volunteers all over the world, Linux grew dramatically. It is multi-user, multitasking, multiprogramming OS, mainly popular for server systems. It is distributed through different distributors such as Red Hat, Mandrake, OpenSUSE, Ubuntu, Slackware, Sabayon, Debian, Mandriva, PC-BSD, OpenSolaris, Gentoo, Fedora, Granular Linux etc.
Source:gizmodo.com Fig:Mac Os
Mac OS is a popular GUI based OS for Apple Inc. It is used in Apple’s Macintosh computer. It has very high-quality graphical user interface. Earlier versions of this OS were only compatible with Motorola 68000 series of processors, but now these are compatible with Intel processor also.
The term spooling is derived from the term SPOOL(Simulation peripheral operationOn-line). A spool is a buffer used in spooling. Spooling is a process used to balance the difference of high-speed of the CPU and slow speed of the input/output devices. It is primarily used for printing purpose. When we provide multiple files to print together to a printer, although the printer can print one file at a time. But, all files get lined up in a queue and get printed one-by-one. In this process, CPU remains free and the user can work on other applications. This technique of printing is possible through a capability of the operating system known as spooling. Actually, when a user provides many documents together for printing to a printer, then the CPU begin a high-speed component process for all the given document and provides these documents to a printer by the CPU. Here, the spooling technique is used which allows the processed jobs in the CPU and to be arranged in a separate area in the memory known as spooling area and the CPU remains free for other jobs.
Source:www.tutorialspoint.com Fig: Spooling
A process is basically a program in execution. The process doesn’t mean Program. The Program is static while a process is dynamic. For simplicity, we can define a program as a job that resides in the secondary storage. A process is a program, which is currently in a running/ ready state. A process in a computer system may be in one of a number of different possible states, such as
Logically, the first two states are similar. In both cases the process is willing to run only in the second one, there is temporarily no CPU available for it. The third state is different from two in that the process cannot run, even the CPU has nothing else to do unless some external events happen.
In multiprogramming, with time slicing mode, multiple processes are loaded into memory at once. When one process goes in blocked state or in a ready state, another process is chosen by the scheduler to be in the running state. During this phase, the current state of a previous running process must be stored somewhere so that it can resume from that state at the next time. This mechanism is called context switching. Context switching is a very costly operation and it reduces the efficiency if the process operates in I/O operations much frequently. A single process is divided into multiple sub-processes and even if one sub-process for I/O operation end then, another piece of same processes start executing, which minimizes the burden of context switching to some extent. There are two types of thread:
In the Kernal level thread, the operating system itself manages to create threads of a process. In User level thread, user itself determines how to create multiple threads insides a single process.
When more than one process is able to run, the operating system must decide which one to run first. This part of the operating system concerned with this process, so it is called scheduler and it uses the algorithm which is called scheduling algorithm. The next process to execute is chosen so as to achieve as much as possible of the following objectives.
Scheduling can be of various types which are mentioned below:
Priority scheduling: Each program is assigned a priority level. At any time, the highest priority is selected to run. The major drawback of this scheduling is that a small job has to wait for a long time if some large job is having higher priority.
Time sharing scheduling: Each program is given a fixed amount of time to execute. The operating system maintains a queue of an executable program resident in memory. In time-sharing scheduling, when the currently running program leaves the CPU, it joins at the end of the queue.
A buffer is a small, high-speed storage device, located in I/O units, used to hold data at the time of input/output operations. So it is divided into the input buffer and output buffer. Input buffer accepts data at low speed and release at high speed to CPU, output buffer works in reverse order, it accepts data at high speed from main memory and releases at low speed to output devices. Buffering is the process of using buffer during I/O operation. The term buffering is also used while accessing files like audio/video through the internet. Here, it is the process of holding downloaded data before it can be played. Buffering is used to :
In a multiprogramming system, when we use multiple programs at the same time, the space of primary memory (RAM) may not be enough to store all the programs. In this case, operating system uses free space of secondary memory to store these data. This free space in secondary memory, used to store the contents of primary memory temporarily is known as virtual memory. An operating system is responsible for creating, managing and operating virtual memory.
Source:denninginstitute.com Fig:Virtual Memory
It is not an actual memory but it is a technique used by operating system to execute large size programs with small size available primary memory. This is done by dividing the larger program into small size segments known as pages.
Shrestha, Prachandra Ram, et al. Computer Essentials. Kathmandu: Asmita's Publication, 2014
Dilli , S. P., Singh, k. E., Khadka , D., Bhatta, K. D., Baral, N., Saud, R. S., . . Dangi, R. (2015). Fundamental of Computer Science. Kathmandu: KEC publication and Distribution.