Graphical User Interface (GUI) vs Command Line Interface (CLI)
The Graphical User Interface (GUI) indicates a major advance over the Command Line Interface (CLI) of the console. Using a GUI is fairly easy because it provides the users with a few basic operations that can be learned quickly.
In some operating system including Unix/Linux uses a standard, network-transparent X-windowing system with a “window manager” (typically KDE or GNOME). All of the source code for X-windowing system is licensed under the terms of the GNU General Public License, which means that anybody can access and modify the X-windowing system to suit specific purposes. Due to the open source of Unix/Linux, there is no standardization in the desktop layout. A user who is familiar with KDE environment might not familiar with GNOME window system. But there is one advantage that in Unix/Linux system the GUI is separate from the operating system itself. Users can uninstall the GUI and still have a completely working system; this enables users to get rid of such a cumbersome system.
The operating system such as Windows is the most familiar GUI in the personal computer world, as well as so-called “closed source” system. A rich set of software development tools has made it a presence in large and small businesses and homes. Windows is a general-purpose operating system designed to allow a wide range of application programs to operate, such as engineering tools, multimedia, games, desktop publishing, accounting programs, Internet surfing and more. This design paradigm provides users a comfortable working environment and a standardized desktop layout that makes users feel familiar with it. In addition, proponents of Windows GUI argue that the key strength of Windows operating system is that it provides novice users a very easy-to-use interface, while being proficient in the knowledge of Command Line Interface (CLI) is indispensable to the users of Unix/Linux. The disadvantage of Windows is the compulsion of GUI installation. In other words, Windows is not able to run as a perfect system without GUI installed. This causes Windows to be a heavy operating system.
Three-state process model
Three-state process model is constituted of READY, RUNNING & WAITING. Processes, also known as tasks entering the system must initially go into the READY state before they enter the RUNNING state. Processes normally leave the system from the RUNNING state. For each of the three states, the process occupies space in main memory.
In READY state, a process is loaded into main memory by the Job Scheduler which is also known as high-level scheduler, and is awaiting execution on a CPU (to be context switched onto the CPU by the dispatcher, or short-term scheduler). There may be many processes at any one point of the systems execution. For example, in a single processor system, only one process can be executing at any one time, and all other “concurrently executing” processes will be waiting for execution. In multiprogramming system, the processor must be allocated to each job or process in a fair and efficient manner.
After a process has been placed in the READY queue, the Process Scheduler takes over. The Process Scheduler is the low-level scheduler that assigns the CPU to execute the processes of those jobs. Modern computers are capable of running many different processes simultaneously. However, the CPU is only capable of handling one process at a time. Processes that are ready for the CPU are kept in a queue for “ready” processes.
Based on some predefined algorithm such as First-Come, First-Served (FCFS), Shortest Job Next (SJN), Priority Scheduling, Shortest Remaining Time (SRT) or Round Robin, the process moves from READY state to RUNNING state, in other words, the instruction of process is being executed in RUNNING state. A “running” process is a process which is currently executing on a CPU. From this state the process may exceed its allocated time slice and be context switched out and back to READY state by the system, it may indicate that it has finished and be terminated or it may be moved to WAITING state if some resource is needed, such as I/O request.
Basically three-state process model is to complement the deficiency of two-state process model, the simplest model is based on the fact that a process is either being executed by the CPU or it is not. Thus, a process may be considered to be in one of two states, RUNNING or NOT RUNNING. The absence of a WAITING state means that the processor lies idle when the active process changes from CPU cycles to I/O cycles. The three-state process model is designed to overcome this problem.
Below are some possible transitions between each of the state, and what causes a process (or thread) to undertake such a transition:
- READY to RUNNING - It is handled by the Process Scheduler using some predefined algorithm, such as FCFS, SJN, priority scheduling, SRT or round robin, to determine which process will get the CPU, when, and for how long.
- RUNNING back to READY – It is handled by the Process Scheduler according to some predefined time limit or other criterion, for example, priority interrupts or quantum expired.
- RUNNING to WAITING – It is handled by the Process Scheduler and is initiated by an instruction in the process such as a command to READ, WRITE or other I/O requests, or a page fetch is required.
- WAITING to READY – It is handled by the Process Scheduler and is initiated by signal from I/O device manager that I/O request has been satisfied and job can continue.



