Open main menu

CDOT Wiki β

Changes

OPS201 - Introduction to Operating Systems

1,147 bytes added, 10:18, 18 October 2023
GUI vs CLI: Advantages and Disadvantages
It’s important to keep information private in some contexts, and to share information in other contexts. The operating system is responsible for enforcing security rules. For example, on a smartphone, a social media app shouldn’t be able to access data from a banking app, and on a cloud server, one customer shouldn’t be able to access another customer’s data. However, multiple smartphone apps might be permitted to access a photo album, and a company employee might need to view a report generated on a server from multiple customers’ data.
The operating system is responsible for enforcing the security policyrules but not for creating them -- the system administrators and/or users are responsible for creating and maintaining the security settings and policies which the operating system enforces.
=== Hardware Abstraction ===
There are many different types of devices that perform similar functions, and multiple ways that these devices can be connected. For example:
* A keyboard may be connected via a USB connection, or a wireless Bluetooth connection, or may be created as a virtual keyboard on a touchscreen.* A mouse may be connected via a wired USB, wireless USBdongle, or wireless Bluetooth connection. But there are also other types of devices which can provide the same capability of allowing the user to interact with the display, including trackpads, trackballs, and touchscreens.
* Sound may be played over built-in speakers, an external analog speaker, an analog headset, a digital speaker or headset with a USB connection, a Bluetooth speaker, earbuds, or headset, or played through a television connected via HDMI.
The operating system also abstracts away these hardware details. This means that programs can access devices in a general way without having to be programmed to individually deal with each type of device that may be used. This enables a program to request keyboard input or play sounds without regard to the details of the specific hardware available.
=== Maintaining the Programming Model ===
=== System Libraries ===
Many programs need to perform the same operations, such as accessing the network, playing sound, or drawing something on the screen. Libraries provide a common set of software routines (also known as functions, methods, procedures, or subroutines, or functions) which programs access to perform these common operations. This eliminates the need for each program to contain duplicate code for these common operations, which reduces software duplication and program size. Although additional libraries may be installed on the computer, the system libraries provided as part of the operating system provide the most broadly-used routines required by nearly every program.
=== Services ===
=== Utilities and Applications ===
Most operating systems provide a set of tools to enable users to perform setup, configuration, and maintenance tasks. For example, they may provide “utility” software to add/remove software, configure hardware, and manage files. This utility software may take the form of commands that are accessed through a CLI, or graphical utilities that are accessed through a GUI. Most operating systems also provide a set of basic starter applications, such as a text editor, clock, a few games, and sometimes a web browser; the quantity and complexity of the included applications vary considerably from one operating system to another
== GUI vs CLI: Advantages and Disadvantages ==
To compare the data demands of the two types of user interfaces:
* A GUI on a 1920x1080 ("full high definition") monitor displays about 6 megabytes of data (2 megapixels million pixels x 3 bytes per pixel)* A CUI TUI on an 80x25 character terminal displays about 2 kilobytes of data (0.002 megabytes) at one time
To cropAs an example of the strengths of each type of user interface, resizeconsider the task of croping, resizing, and change changing the format of photosphotographs:* A GUI immediately shows the effect of changes and allows the adjustments to be easily fine-tuned, producing an exact result results for a small number of photos. However, it may take many steps to perform the edits, so editing hundreds of photographs will take a very long time.
* A CLI is well-suited to automation. Edits could be applied to hundreds of pictures in a few seconds, if the edits can be adequately described on the command-line.
* Before the mid-1960s: A number of different manufacturers produced various computers for business. Since these machines were expensive, and because there were many different manufacturers, a relatively small number of machines of each model were produced. Very little was standardized, and data was rarely interchanged between computers. Consequently, there were many different operating systems, each with a fairly small market.
* 1964-1964 /1965 - MIT and partners begin the Multics Project. This project introduced many concepts that became common in later operating systems, including a heirarcical filesystem, multitasking, and interactive operation. This project continued through 2000. However, Multics was a fairly resource-intensive operating systemand ran only on very specific hardare.* 1969 - Bell Labs decided to end their participation in the Multics project. Dennis Ritchie and Ken Thompson, Bell Labs employees who were familiar with the Multics project, decided to implement some of its features in a much lighter-weight operating system, which they called Unix. Unix was soon rewritten in the C language, and could be fairly easily ported to other types of computers.
* 1970s - Unix continued to grow in popularity. Many computer vendors licensed it and adapted it to work with their computers; some of these variants included Xenix (Microsoft), AIX (IBM), Ultrix (Digital Equipment Corporation), HP/UX (HP), and many others.
* 1976 - Microcomputers, 8-bit computers inexpensive enough to be purchased by individuals or small businesses, became widelyavailablewidely available. Digital Research's CP/M operating system became popular on Intel- and Zilog-based microcomputers.
* 1981 - IBM decided to enter the microcomputer market with the IBM PC. Needing an operating system, IBM contacted Microsoft - but their only operating system at the time was Xenix, and the IBM PC was not powerful enough to run Xenix well, so Microsoft licensed (and later purchased) a CP/M clone named 86/DOS (aka QDOS) from a local computer company (Seattle Computer Products). This operating system was used as the basis for Microsoft's DOS (disk operating system) product, named PC/DOS when marketed by IBM or MS/DOS when marketed by Microsoft.
* 1983 - The IBM PC was successful in the market, due to both IBM's marketing and the fact that IBM published the technical specifications which enabled other companies to sell compatible accessories, so IBM produced more powerful models including the IBM PC/XT (1983) and PC/AT (1984). These models had much larger amounts of RAM as well as hard disks, so Microsoft needed to update DOS with new features; they did this by incorporating some features from Xenix (their Unix version), including a heirarchical filesystem.
* 1991 - Linux Torvalds, a computer science student in Finland, wrote and released the Linux kernel. The Linux kernel, combined with software from the GNU project and other free software projects such as the X Window System, made a useful operating system (often referred to as "GNU/Linux" or just "Linux").
* 1992 - IBM and Microsoft ended their collaboration on OS/2, an advanced operating system with a graphical user interface. IBM continued independent development of OS/2.
* 1993 - Microsoft introduced Windows/NT(for "New Technology"), incorporating some concepts from OS/2. Unlike previous versions of Windows which required DOS, Windows/NT provided a complete (and more advanced) operating system with a GUI and did not require DOS. All future versions of Windows were based on Windows/NT.* 2001 - Apple releases released MacOS, a Unix-like operating system based on the "Darwin" kernel* 2007 - A consortium of developers called the Open Handset Alliance, led by Google, releases released the Android operating system for mobile devices. The Android platform is based on the Linux kernel. == Anatomy of a Command Line Interface (CLI) == A CLI is provided by two programs:# A ''terminal'' program, which is responsible for collecting user input and displaying the output from the shell and commands.# A ''shell'', which interprets the user's written commands. These may be on the same machine, or they may be on different computers. For example, it is common to access both Linux and Windows systems over a remote connection, using a protocol such as SSH (secure shell). In that case, the terminal program runs on the computer in front of the user, and the shell runs on the remote computer system.