Operating systems critique: Performance & Programmability.
Most operating systems are designed to efficiently utilize computer hardware and software resources. However, issues such as usability, areas of application and the target market greatly influence performance, and at time tradeoffs have to be made to ensure user satisfaction as well as optimize performance i.e. effectiveness and efficiency in utilizing I/O, memory and processer. Programmability refers to the ability to change the state of hardware and software so that it accepts a new set of instructions. Operating system programmability involves the ability to develop applications for a particular operating system platform, ease of customization, compatibility with other systems, and performance tuning capabilities. The paper outlines the performance and programmability advantages and disadvantages of Microsoft Windows, Linux and UNIX operating systems.
Microsoft Windows Operating system:
Windows operating systems are the have various programmability advantages which enable developers to easily create application software for the platform. This is partially based on the popularity of Windows operating systems among both basic and advanced users, and extensive support by hardware manufacturers especially with respect to device drivers. Windows systems are programmed using standard facilities such as Component Object Model (COM), Windows Script Host (WSH), and the recently popularized .NET framework especially for recent Windows versions such as Windows 7 and 8. COM is a program interoperability binary standard that allows easy program communication using simple language independent rules and program constructs i.e. Java programs can call Visual Basic or C++ programs.
The .NET framework is a Windows operating system software component that includes pre-coded solution libraries for common program requirements and execution management for programs running on this framework. New Windows applications require this framework with an increasing number of developers writing Windows 8 applications. Software developed using this framework is lighter and performs better since most routines and libraries are inbuilt and do not have to be written by the developer.
The disadvantages of Windows in terms of programmability include exploitation of system level WSH script facilities and COM interfaces for security attacks. The windows system also has poor support for legacy hardware, poor technical support, instability leading to frequent patching, and finally since Windows is proprietary and closed source, it is difficult to modify kernel levels services to interact better with software.
The performance of Windows is a bit lower than Linux or UNIX on a desktop environment. This is evident due to the usually high hardware requirements demanded by Windows based systems compared to Linux and UNIX. However, in terms of graphics performance, Windows systems provide a better experience which obviously makes it a popular gaming platform. Network performance in Windows relies heavily on the chosen protocol and packet size which usually makes the platform highly unreliable for network management and remote access. The Windows family uses a dynamically allocated paging file for memory management. The paging file is allocated on the disk and is used for frequently accessed memory objects which leave more RAM for active objects. However, this paging system is subject to slow downs caused by disk fragmentation. In this case, Windows systems are best for client side processes due to user familiarity, and ease of use since performance benefits do not really measure up compared to Linux and UNIX.
Linux has superior performance advantages especially with respect to process scheduling and memory management. The Linux kernel 2.6, uses a process scheduling algorithm that favors interactive processes (processes that use short bursts of CPU time) thus reducing the risk CPU usage monopolization by one process with root privileges. In this case, the Linux kernel can easily change the priority level of a thread depending on its CPU, I/O usage and interactivity (response to input) by raising the priority of I/O processes while lowering that of CPU bound processes. This increases overall system responsiveness.
Memory management (paging) is another performance advantage of Linux as Linux uses an exclusive “swap” hard disk partition which is dedicated towards paging operations. This reduces the overhead caused by disk fragmentation caused by general use. Linux is also strong on network performance and is usually used for ERP systems, file servers, Web servers and other network based communication and storage systems.
The performance limitations in Linux are related to its open source nature with the most evident being the lack of driver support for some proprietary hardware. This is because some manufacturers are unwilling to publicize the hardware specifications for their devices thus preventing Linux community developers from creating device drivers. However, some of these companies such as NVidia ™ develop drivers for Linux systems.
Linux is a highly programmable and customizable platform with applications ranging from home application 3D gaming to server virtualization and network performance. The operating system can be modified to suit various requirements. In fact Linux has various distributions already optimized for desktop, multimedia or enterprise applications thus providing a wide development platform for developers. Linux software is also developed by the open source community which ensures that users and developers participate in improving the functionality, security and performance of Linux software. Due to the ability to view the source code, Linux malware is almost non-existent since most malware targets closed systems and in the case of open source software, malicious code can always be identified and removed during development.
The disadvantages in terms of programmability include the steep learning curve of Linux scripting, and the high level of configuration required. This is partly because Linux administration and most applications use shell scripts which require knowledge in command line interface unlike in Windows systems which have a Graphical User Interface for most functions (even advanced ones).
UNIX based systems:
The UNIX operating system was designed for personal computers but later scaled up to applications in powerful computing environments. In fact, the Linux operating system is based on UNIX while others like Macintosh’s OSX and Sun Solaris are direct UNIX implementations.
Performance wise, UNIX supports full multitasking with protected memory such that users can run multiple programs concurrently without interfering with each other. Virtual memory management is UNIX is more efficient thus UNIX based systems require modest amounts of RAM. The UNIX file system is highly unified such that all elements i.e. data, programs and devices appear as a single nested directory structure that is independent of the number of disks used.
The UNIX kernel is lean, performing basic operations and does not limit users from performing unusual computations. UNIX is multilingual and has rich set of connected tools which address specific problems and even if they do not, they can be composed conveniently to come up with a solution. This is mainly due to the command interpreter’s level of programmability. UNIX has few arbitrary assumptions and limitations on the problem domain and the user making it suitable for various commercial and research applications which are also portable. The main programmability disadvantage is the steep learning curve for UNIX administration and scripting, while lack of support for certain device drivers and components may impact negatively on performance.
Blog.bounceweb.com, (2014). The power of UNIX and Linux over other operating systems | Bounce Web Hosting Blog. Retrieved 6 May 2014, from http://blog.bounceweb.com/the-power-of-unix-and-linux-over-other-operating-system/
Cawley, C. (2014). Choosing an Operating System - Advantages of Windows OS. Bright Hub. Retrieved 6 May 2014, from http://www.brighthub.com/computing/windows-platform/articles/62925.aspx
Martinovic, G., Balen, J., & Cukic, B. (2012). Performance Evaluation of Recent Windows Operating Systems. J. UCS, 18(2), 218--263.
Msdn.microsoft.com,. (2014). .NET Framework. Retrieved 6 May 2014, from http://msdn.microsoft.com/en-gb/vstudio/aa496123
Normand, E. (2014). The Heart of Unix | LispCast. Lispcast.com. Retrieved 6 May 2014, from http://www.lispcast.com/the-heart-of-unix
Pangea.stanford.edu,. (2004). Overview of Unix. Retrieved 6 May 2014, from https://pangea.stanford.edu/computing/unix/overview/advantages.php
Satten, C. (2014). A Brief Introduction to Unix. Staff.washington.edu. Retrieved 6 May 2014, from http://staff.washington.edu/corey/unix-intro+man.html
Seltzer, L. (2000). The most programmable operating system ever | ZDNet. ZDNet. Retrieved 6 May 2014, from http://www.zdnet.com/news/the-most-programmable-operating-system-ever/298313
Tetrahedron, L. (2014). Benefits of Ubuntu by Lime Red Tetrahedron | Inside Technology 360. Insidetechnology360.com. Retrieved 6 May 2014, from http://www.insidetechnology360.com/index.php/benefits-of-ubuntu-2-26955/
Winius, J. (2014). Windows pros and cons. Rjsystems.nl. Retrieved 6 May 2014, from http://www.rjsystems.nl/en/3200.php