This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
Multiprogramming systems explicitly allow multiple processes to exist at any given time, where only one is using the CPU at any given moment, while the remaining processes are performing I/O or are waiting.
The process manager is of the four major parts of the operating system. It implements the process abstraction. It does this by creating a model for the way the process uses CPU and any system resources. Much of the complexity of the operating system stems from the need for multiple processes to share the hardware at the same time. As a consequence of this goal, the process manager implements CPU sharing (called scheduling), process synchronization mechanisms, and a deadlock strategy. In addition, the process manager implements part of the operating system's protection and security.
Process management is an integral part of any modern day operating system (OS). The OS must allocate resources to processes, enable processes to share and exchange information, protect the resources of each process from other processes and enable synchronization among processes. To meet these requirements, the OS must maintain a data structure for each process, which describes the state and resource ownership of that process, and which enables the OS to exert control over each process.
A process is usually defined as the instance of the running program. Process management describes how the operating systems manage the multiple processes running at a particular instance of time. Multitasking operating systems such as Windows and UNIX must manage and control many processes simultaneously. Both Windows and UNIX operating systems support processes and threads.
When you log on to a computer running UNIX, a shell process is started to service your commands. The UNIX operating system keeps track of the users and their processes and prevents processes from interfering with one another. The operating system does not come with any default interface for user interaction. However, the shell process on the computer running UNIX can connect to other computers to load third-party UIs.
When a user logs on interactively to a computer running Windows, the Win32 subsystem's Graphical Identification and Authentication dynamic-link library (GINA) creates the initial process for that user, which is known as the user desktop, where all user interaction or activity takes place. The desktop on the user's computer is loaded from the server. Only the user who is logged on has access to the desktop. Other users are not allowed to log on to that computer at the same time. However, if a user employs Terminal Services or Citrix, Windows can operate in a server-centric mode just as UNIX does.
The Windows operating system supports multiple users simultaneously through the command line and a GUI. The latter requires the use of Windows Terminal Services. The UNIX operating system supports multiple simultaneous users through the command line and through a GUI. The latter requires the use of X Windows. Windows comes with a default command shell (cmd.exe); UNIX typically includes several shells and encourages each user to choose a shell as the user's default shell. Both operating systems provide complete isolation between simultaneous users. There are some key differences between the two: Windows comes with a "single user" version that allows one user at a time (Windows XP) as well as a multiuser server version (Windows Server). It is rare for a Windows Server system to have multiple simultaneous command-line users.
Multithreading. Most new UNIX kernels are multithreaded to take advantage of symmetric multiprocessing (SMP) computers. Initially, UNIX did not expose threads to programmers. However, POSIX has user-programmable threads. There is a POSIX standard for threads (called Pthreads) that all current versions of UNIX support.
In Windows, creating a new thread is very efficient. Windows applications are capable of using threads to take advantage of SMP computers and to maintain interactive capabilities when some threads take a long time to execute.
Process hierarchy. When a UNIX-based application creates a new process, the new process becomes a child of the process that created it. This process hierarchy is often important, and there are system calls for manipulating child processes.
Unlike UNIX, Windows processes do not share a hierarchical relationship. The creating process receives the process handle and ID of the process it created, so a hierarchical relationship can be maintained or simulated if required by the application. However, the operating system treats all processes like they belong to the same generation. Windows provides a feature called Job Objects, which allows disparate processes to be grouped together and adhere to one set of rules.
Process Management In Unix
Each process runs a single program and initially has a single thread of control. In other words, it has one program counter, which keeps track of the next instruction to be executed. Most versions of UNIX allow a process to create additional threads once it starts executing.
UNIX is a multiprogramming system, so multiple, independent processes may be running at the same time. Each user may have several active processes at once, so on a large system, there may be hundreds or even thousands of processes running.
Unix has preemptive multitasking, in which time slices are allocated by a scheduler which routinely interrupts or pre-empts the running process in order to hand control to the next one. Almost all modern operating systems support preemption.
Multitasking. UNIX is a multiprocessing, multiuser system. At any given point, you can have many processes running on UNIX. Consequently, UNIX is very efficient at creating processes.
Process Management In Windows 7
Windows has evolved greatly from its predecessors, such as Digital Equipment Corporation's VAX/VMS. It is now a preemptive multitasking operating system. As a result, Windows relies more heavily on threads than processes. (A thread is a construct that enables parallel processing within a single process.) Creating a new process is a relatively expensive operation while creating a new thread is not as expensive in terms of system resources like memory and time. Hence, multiprocess-oriented applications on UNIX typically translate to multithreaded applications on the Windows platform, thus saving such system resources as memory and time.
Critical Comparison Of Process Management In UNIX And Windows 7
Both UNIX and Windows OS's are multitasking systems that support both processes and threads. They can be compared in several respects with regards to their process management features;
UNIX - Very efficient at creating processes
Windows - Relies more on threads as opposed to processes.
i. Creates a shell process to service user commands.
ii. Supports multiple simultaneous users through the command line and GUI.
iii. Provides complete isolation between user processes.
i. Creates an initial process for a user known as the desktop.
ii. Allows only one user to be logged in at a time.
iii. Provides complete isolation between user processes.
i. Most UNIX kernels are multithreaded to make use of symmetric multiprocessing (SMP) computers.
i. Windows applications are capable of using SMP computers.
i. When a UNIX application creates a new process, the new process becomes a child of the parent process.
i. Windows processes do not have a hierarchical relationship and all processes are treated equally
Multiple users. One key difference between UNIX and Windows is in the creation of multiple user accounts on a single computer.
As far as operating systems go, to some it would seem as if UNIX has a clear advantage over Windows. UNIX offers greater flexibility than Windows operating systems; furthermore, it is more stable and it does not crash as much as much as Windows. To some, UNIX is just as easy to use as Windows, offering a GUI interface as well as command line. But there are users out there that believe UNIX is for only for computer gurus only, claiming that the fragmentation of the UNIX GUI is its greatest competitive weakness.
One thing that has been established though, UNIX is quite a bit more reliable than Windows, and less administration and maintenance is needed in maintaining a UNIX system. This is a huge cost saver for any organization. Rather than employing many individuals to maintain a Windows based system, one part-time employee would be needed for the upkeep of a typical size UNIX system. One key difference between UNIX and Windows is the implementation of multiple users on one computer. When a user logs onto a UNIX system, a shell process is started to service their commands. Keeping track of users and their processes, a UNIX operating system is able to keep track of processes and prevent them from interfering with each other. This is extremely beneficial when all the processes run on the server, which demands a greater use of resources - especially with numerous users and sizeable applications.
Another main difference between UNIX and Windows is the process hierarchy which UNIX possesses. When a new process is created by a UNIX application, it becomes a child of the process that created it. This hierarchy is very important, so there are system calls for influencing child processes. Windows processes on the other hand do not share a hierarchical relationship. Receiving the process handle and ID of the process it created, the creating process of a Windows system can maintain or simulate a hierarchical relationship if it is needed. The Windows operating system ordinarily treats all processes as belonging to the same generation.
UNIX uses daemons, Windows has service processes. Daemons are processes that are started when UNIX boots up that provide services to other applications. Daemons typically do not interact with users. A Windows service is the equivalent to a UNIX daemon. When a Windows system is booted, a service may be started. This is a long running application that does not interact with users, so they do not have a user interface. Services continue running during a logon session and they are controlled by the Windows Service Control Manager.
UNIX has a novel approach to designing software. Since UNIX is open-sourced, it attracts some very intelligent programmers who develop many applications free of charge. With this in mind, many designers choose to resolve software problems by creating simpler tools that interconnect rather than creating large application programs. In contrast, Windows applications are all proprietary and costly. With UNIX, each generation extends, rather than replaces the previous like Windows it is rarely necessary to upgrade - old and new Unix are all compatible. The main reason for this is the way UNIX is built, which is on a solid theoretical foundation. There are many advantages to this, for instance, a book written 20 years ago that discusses programming UNIX can still be used today. Imagine trying to figure out how to run Windows XP with a Window 3.1 manual - it can't be done.
One argument to be made about UNIX is its lack of standardization. Some feel there are too many choices to be made regarding which GUI to use, or which combination of UNIX hardware and software to support. UNIX operating systems make great high-performance servers, but for end-users, every application on each arrangement of UNIX platform requires a different set, and each application has a different user interface. Microsoft has "the" Windows operating system; there simply isn't one standardized UNIX operating system, or for that matter, a single standardized UNIX GUI. One could argue and say this is a downfall for UNIX, but on the other hand, these variations add flavor and versatility to a solid, reliable operating system.
Simply stated, the main difference is Windows uses a GUI (Graphical User Interface) and UNIX does not. In Windows one uses the click of a mouse to execute a command where as in UNIX one must type in a command. There are GUIs that can be used in a UNIX environment though very few UNIX users will stoop that low to use one.) Before there was a Windows environment, DOS (Disk Operating System) was used on PCs. DOS was based on and was similar, but only a poor subset, to the UNIX system.
Differences between UNIX and WINDOWS: Unix is safe, preventing one program from accessing memory or storage space allocated to another, and enables protection, requiring users to have permission to perform certain functions, i.e. accessing a directory, file, or disk drive. Also, UNIX is more secure than Windows on a network because Windows is more vulnerable than UNIX. For example, if you leave a port open in Windows it can be easily used by a hacker to introduce a virus in your environment.
Unix is much better at handling multiple tasks for a single user or for multiple users than windows. For each user, Unix in general, and especially Sun's Solaris provides many more utilities for manipulating files and data than windows does. For a corporate environment, Unix ( especially Solaris ) provides much more control for the administrator than windows does. Solaris, for example, enables the administrator to mirror or stripe data across several disks to minimize risk or optimize performance without 3rd party products. In general, for a programmer or for an administrator, Unix provides more power and flexibility than windows. For the less sophisticated user, Windows can often more easily be installed and configured to run on cheaper hardware to run a desired 3rd party product. In short -- Unix is better, Windows is easier for less sophisticated users.
In summary, the best way to choose between UNIX and Windows is to determine organizational needs. If an organization uses mostly Microsoft products, such as Access, Front Page, or VBScripts, it's probably better to stick with Windows. But, if reliability, universal compatibility, and stability are a concern, UNIX would probably be the way to go.