Operating System works


Software program that is needed to make addressing simpler, make input/output cleaner, simplify job, file, task management and manage the overall resources of a computer that’s called operating system.
Operating system added efficiency to computing. Many stages of computing cycles were still done manually such as mounting data media, scheduling jobs, monitoring time use, controlling access to the single computer and managing resources. This made job turnaround time long (often hours or days), inefficient and costly. Modern operating systems have reduced typical turnaround time to minutes and seconds, making computers more efficient and usable.


An operating system is the “orchestrator and conductor” of the hardware and software in a computer system. For example, the operating system controls the input and output peripherals and manages the loading of software programs into RAM. Because the operating system is responsible for the access to and transfer of applications data and system data among the components that make computer a working system, it is sometime called the system executive.
The operating system serves several purposes related to application programs. To begin with, it establishes a command-processor interface enabling the user to communicate with the computer. The interface varies from system to system.
On a multiuser system, once the user has communicated the intention of running a job, the operating system arranges for its execution through a scheduler. The scheduler ensures that the files needed by the jobs are accessible and that the resources such as memory and file needed by the computer are available. When the scheduler has finished its work, another software component of the operating system called the dispatcher gives the control of central processing unit (CPU) to the job. The operating system  also acts as a resource allocator for the both hardware and software by managing memory space, file storage space, use of the CPU and input/output devices and by making choices about which requests for resources are satisfied and in what order.


Batch processing collected and ran all the jobs together that needed the same resources such as FORTAN programs were batched so that the FORTAN compiler could be loaded once and used repeatedly.

The need to transfer the computer operator’s interactive role to the system itself led to more sophisticated operating systems and interactive processing. Next came multiuser systems and time sharing in which the CPU alternates between several jobs while appearing to process them at the same time.


A scheduling algorithms determines access to the CPU. One well-known scheduling algorithm is first-in-first-go (FIFO), also called first-come-first-served
(FCFS). Although such schemes seem fair they can also be inefficient. If a long job precedes shorter ones on a queue (waiting line), the shorter jobs must wait until the long job is finished.
Another scheduling algorithm uses the shortest-job-first(SJF) priority scheme in which the job with shortest time use of its current CPU burst time goes first on the next scheduled burst time.
Scheduling algorithms are classified as preemptive or non-preemptive. Non-preemptive algorithms do not allow a job to be stopped once its CPU burst starts.
Preemptive algorithms allow a job to be stopped either because it has used up an allocated amount of time or because a high-priority job has arrived.

With multiuser systems comes the necessity of protecting not only the integrity of the system but also each user’s information from infringement by other users. Protection of a computer system implies that the hardware and software that control access to internal-resources information is available only in designated users. Protection is the method or how the system is guarded. The measure of protection called security, describes who has the right of access to the protection.


Operating systems offers tools to develop applications. These tools include the use of text editor for writing software and the capability for loading machine into memory code.
Let’s look at these tools. Editors and debuggers make program development easier. Linkers and loaders allow machine language to execute in the hardware, enabling a program to run. Virtual memory combines the capacities of primary and secondary storage devices, enabling you to write program without concern for the limits of primary memory.


A text editor is a software utility program that allows you to create, add, delete and change textual documents. This tool is supplied by the operating system to add efficiency to the computer system. Text editors suited to programming have features such as auto intending for pretty printing.


Most operating system also support a debugger program to find logic errors in executable code. The debugger offers tools like breakpoint to predefine a series of temporary stop locations at chosen instructions. As each breakpoint is reached in a program, the debugger temporarily stops the action while the programmer queries the value of any variable being tracked. Debugger can also single-step through a program, temporarily stopping after each instruction has completely executed and displaying whatever  information you have requested. The way to avoid logical errors of course, is to not make them in the first place. Careful algorithm design and implementation are the best weapon for this.


Computer is an electronic device. The circuits inside any computer only works logically when current is either present (1) or not (0). In others words we can say that computer only understands language of zero’s and one’s (0,1) which is called machine language, sometimes it may be called binary language.
Human’s brain can understand decimal and characters whereas computers can only understand machine language (0,1). If one say to that there are thirty-four students in my class you quickly understand that there are 34 students in class but if you type 34 in the column of how many students  your class in computer then this process does not works because computer can’t understand decimal or any other data type it can only understand binary data type.
So, there’s a need of software was occurred to convert human understandable language into machine language and vice-versa. A translator is a computer program that translates a program written in a given programming language into a functionally equivalent program in a different language.
All computer programs run on machine code that is executed directly on computer architecture. Machine code is not easily read or programmed directly by humans. Essentially, machine code is a long series of bits (i.e. ones and zeroes). In order to program, humans write code in a language that is then translated in to machine code. There are three basic approaches to program translation.

* Assemblers
* Compilers
* Interpreters


Assembly languages are more easily translated in to machine code than high-level programs languages. Each assembly language statement directly corresponds to one or more machine instructions. Another way to think about this is that assembly language code is simply an abbreviated form of machine code. Thus, to transform a program from an assembly language to machine code all that must be done is that the instructions must be converted from their mnemonic abbreviations into their equivalent string of ones and zeroes. This transformation process is known as assembling and is accomplished by an assembler.


A compiler is a computer program that converts an entire program written in a high-level language (called source code) and translates it into an executable form (called object code).


An interpreter is a computer program that takes source code and converts each line in succession. At each step it executes the high-level statement. In other words, it doesn't have to examine the entire program before it can begin executing code. Thus, programs that are interpreted lend themselves to interactive programming. However, programs that are interpreted will generally run much slower than programs that are compiled.


When source code is translated into object code, it is probably not ready for immediate execution. It may need other machine code to execute properly. This code can be information from input and output routines, system library functions, external subprogram created by the user, and other system need. All the parts of a source program are assembled by a software utility program called linker. Linker organizes the various code modules and generated and integrated machine language object called a load module. The load module is what goes into the memory of the computer. The load module is put into memory by another software utility program called a loader. Loader ensures that the portion of the program that is put into memory fits into its allotted memory space.


You may think that the whole program must be in memory for it  to execute. However, object code may be too large for primary memory because it can include such thing as external subroutines and system library functions. In response this problem computer scientist have sought ways to execute programs without having the whole program in physical memory. One way is to detach logical memory, the memory space needed by the program, from physical memory, the actual memory space of the computer. This detachment called virtual memory, extends the apparent size of computer’s primary storage (RAM) by using part of the computer’s secondary storage(hard disk) as an extension of RAM..

No comments:

Post a Comment