In computer science, control flow is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an imperative programming language from a declarative programming language. Within an imperative programming language, a control flow statement is a statement, the execution of which results in a choice being made as to which of two or more paths to follow. For non-strict functional languages and language constructs exist to achieve the same result, but they are not termed control flow statements. A set of statements is in turn structured as a block, which in addition to grouping defines a lexical scope. Interrupts and signals are low-level mechanisms that can alter the flow of control in a way similar to a subroutine, but occur as a response to some external stimulus or event, rather than execution of an in-line control flow statement. At the level of machine language or assembly language, control flow instructions work by altering the program counter.
For some central processing units, the only control flow instructions available are conditional or unconditional branch instructions termed jumps. The kinds of control flow statements supported by different languages vary, but can be categorized by their effect: Continuation at a different statement Executing a set of statements only if some condition is met Executing a set of statements zero or more times, until some condition is met Executing a set of distant statements, after which the flow of control returns Stopping the program, preventing any further execution A label is an explicit name or number assigned to a fixed position within the source code, which may be referenced by control flow statements appearing elsewhere in the source code. A label marks a position within source code, has no other effect. Line numbers are an alternative to a named label, that are whole numbers placed at the start of each line of text in the source code. Languages which use these impose the constraint that the line numbers must increase in value in each following line, but may not require that they be consecutive.
For example, in BASIC: In other languages such as C and Ada, a label is an identifier appearing at the start of a line and followed by a colon. For example, in C: The language ALGOL 60 allowed both whole numbers and identifiers as labels, but few if any other ALGOL variants allowed whole numbers. Early Fortran compilers only allowed whole numbers as labels. Beginning with Fortran-90, alphanumeric labels have been allowed; the goto statement is the most basic form of unconditional transfer of control. Although the keyword may either be in upper or lower case depending on the language, it is written as: goto label The effect of a goto statement is to cause the next statement to be executed to be the statement appearing at the indicated label. Goto statements have been considered harmful by many computer scientists, notably Dijkstra; the terminology for subroutines varies. In the 1950s, computer memories were small by current standards so subroutines were used to reduce program size. A piece of code was written once and used many times from various other places in a program.
Today, subroutines are more used to help make a program more structured, e.g. by isolating some algorithm or hiding some data access method. If many programmers are working on one program, subroutines are one kind of modularity that can help divide the work. In structured programming, the ordered sequencing of successive commands is considered one of the basic control structures, used as a building block for programs alongside iteration and choice. In May 1966, Böhm and Jacopini published an article in Communications of the ACM which showed that any program with gotos could be transformed into a goto-free form involving only choice and loops with duplicated code and/or the addition of Boolean variables. Authors showed that choice can be replaced by loops; that such minimalism is possible does not mean that it is desirable. What Böhm and Jacopini's article showed was that all programs could be goto-free. Other research showed that control structures with one entry and one exit were much easier to understand than any other form because they could be used anywhere as a statement without disrupting the control flow.
In other words, they were composable. Some academics took a purist approach to the Böhm-Jacopini result and argued that instructions like break and return from the middle of loops are bad practice as they are not needed in the Böhm-Jacopini proof, th
MS-DOS is an operating system for x86-based personal computers developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, some operating systems attempting to be compatible with MS-DOS, are sometimes referred to as "DOS". MS-DOS was the main operating system for IBM PC compatible personal computers during the 1980s and the early 1990s, when it was superseded by operating systems offering a graphical user interface, in various generations of the graphical Microsoft Windows operating system. MS-DOS was the result of the language developed in the seventies, used by IBM for its mainframe operating system. Microsoft acquired the rights to meet IBM specifications. IBM re-released it on August 12, 1981 as PC DOS 1.0 for use in their PCs. Although MS-DOS and PC DOS were developed in parallel by Microsoft and IBM, the two products diverged after twelve years, in 1993, with recognizable differences in compatibility and capabilities. During its lifetime, several competing products were released for the x86 platform, MS-DOS went through eight versions, until development ceased in 2000.
MS-DOS was targeted at Intel 8086 processors running on computer hardware using floppy disks to store and access not only the operating system, but application software and user data as well. Progressive version releases delivered support for other mass storage media in greater sizes and formats, along with added feature support for newer processors and evolving computer architectures, it was the key product in Microsoft's growth from a programming language company to a diverse software development firm, providing the company with essential revenue and marketing resources. It was the underlying basic operating system on which early versions of Windows ran as a GUI, it is a flexible operating system, consumes negligible installation space. MS-DOS was a renamed form of 86-DOS – owned by Seattle Computer Products, written by Tim Paterson. Development of 86-DOS took only six weeks, as it was a clone of Digital Research's CP/M, ported to run on 8086 processors and with two notable differences compared to CP/M.
This first version was shipped in August 1980. Microsoft, which needed an operating system for the IBM Personal Computer hired Tim Paterson in May 1981 and bought 86-DOS 1.10 for $75,000 in July of the same year. Microsoft kept the version number, but renamed it MS-DOS, they licensed MS-DOS 1.10/1.14 to IBM, who, in August 1981, offered it as PC DOS 1.0 as one of three operating systems for the IBM 5150, or the IBM PC. Within a year Microsoft licensed MS-DOS to over 70 other companies, it was designed to be an OS. Each computer would have its own distinct hardware and its own version of MS-DOS, similar to the situation that existed for CP/M, with MS-DOS emulating the same solution as CP/M to adapt for different hardware platforms. To this end, MS-DOS was designed with a modular structure with internal device drivers, minimally for primary disk drives and the console, integrated with the kernel and loaded by the boot loader, installable device drivers for other devices loaded and integrated at boot time.
The OEM would use a development kit provided by Microsoft to build a version of MS-DOS with their basic I/O drivers and a standard Microsoft kernel, which they would supply on disk to end users along with the hardware. Thus, there were many different versions of "MS-DOS" for different hardware, there is a major distinction between an IBM-compatible machine and an MS-DOS machine; some machines, like the Tandy 2000, were MS-DOS compatible but not IBM-compatible, so they could run software written for MS-DOS without dependence on the peripheral hardware of the IBM PC architecture. This design would have worked well for compatibility, if application programs had only used MS-DOS services to perform device I/O, indeed the same design philosophy is embodied in Windows NT. However, in MS-DOS's early days, the greater speed attainable by programs through direct control of hardware was of particular importance for games, which pushed the limits of their contemporary hardware. Soon an IBM-compatible architecture became the goal, before long all 8086-family computers emulated IBM's hardware, only a single version of MS-DOS for a fixed hardware platform was needed for the market.
This version is the version of MS-DOS, discussed here, as the dozens of other OEM versions of "MS-DOS" were only relevant to the systems they were designed for, in any case were similar in function and capability to some standard version for the IBM PC—often the same-numbered version, but not always, since some OEMs used their own proprietary version numbering schemes —with a few notable exceptions. Microsoft omitted multi-user support from MS-DOS because Microsoft's Unix-based operating system, was multi-user; the company planned, over time, to improve MS-DOS so it would be indistinguishable from single-user Xenix, or XEDOS, which would run on the Motorola 68000, Zilog Z8000, the LSI-11. Microsoft advertised MS-DOS and Xenix together, listing the shared features of its "single-user OS" and "the multi-user, multi-tasking, UNIX-derived operating system", promising easy
In computing, floating-point arithmetic is arithmetic using formulaic representation of real numbers as an approximation so as to support a trade-off between range and precision. For this reason, floating-point computation is found in systems which include small and large real numbers, which require fast processing times. A number is, in general, represented to a fixed number of significant digits and scaled using an exponent in some fixed base. A number that can be represented is of the following form: significand × base exponent, where significand is an integer, base is an integer greater than or equal to two, exponent is an integer. For example: 1.2345 = 12345 ⏟ significand × 10 ⏟ base − 4 ⏞ exponent. The term floating point refers to the fact that a number's radix point can "float"; this position is indicated as the exponent component, thus the floating-point representation can be thought of as a kind of scientific notation. A floating-point system can be used to represent, with a fixed number of digits, numbers of different orders of magnitude: e.g. the distance between galaxies or the diameter of an atomic nucleus can be expressed with the same unit of length.
The result of this dynamic range is that the numbers that can be represented are not uniformly spaced. Over the years, a variety of floating-point representations have been used in computers. In 1985, the IEEE 754 Standard for Floating-Point Arithmetic was established, since the 1990s, the most encountered representations are those defined by the IEEE; the speed of floating-point operations measured in terms of FLOPS, is an important characteristic of a computer system for applications that involve intensive mathematical calculations. A floating-point unit is a part of a computer system specially designed to carry out operations on floating-point numbers. A number representation specifies some way of encoding a number as a string of digits. There are several mechanisms. In common mathematical notation, the digit string can be of any length, the location of the radix point is indicated by placing an explicit "point" character there. If the radix point is not specified the string implicitly represents an integer and the unstated radix point would be off the right-hand end of the string, next to the least significant digit.
In fixed-point systems, a position in the string is specified for the radix point. So a fixed-point scheme might be to use a string of 8 decimal digits with the decimal point in the middle, whereby "00012345" would represent 0001.2345. In scientific notation, the given number is scaled by a power of 10, so that it lies within a certain range—typically between 1 and 10, with the radix point appearing after the first digit; the scaling factor, as a power of ten, is indicated separately at the end of the number. For example, the orbital period of Jupiter's moon Io is 152,853.5047 seconds, a value that would be represented in standard-form scientific notation as 1.528535047×105 seconds. Floating-point representation is similar in concept to scientific notation. Logically, a floating-point number consists of: A signed digit string of a given length in a given base; this digit string is referred to mantissa, or coefficient. The length of the significand determines the precision; the radix point position is assumed always to be somewhere within the significand—often just after or just before the most significant digit, or to the right of the rightmost digit.
This article follows the convention that the radix point is set just after the most significant digit. A signed integer exponent. To derive the value of the floating-point number, the significand is multiplied by the base raised to the power of the exponent, equivalent to shifting the radix point from its implied position by a number of places equal to the value of the exponent—to the right if the exponent is positive or to the left if the exponent is negative. Using base-10 as an example, the number 152,853.5047, which has ten decimal digits of precision, is represented as the significand 1,528,535,047 together with 5 as the exponent. To determine the actual value, a decimal point is placed after the first digit of the significand and the result is multiplied by 105 to give 1.528535047×105, or 152,853.5047. In storing such a number, the base need not be stored, since it will be the same for the entire range of supported numbers, can thus be inferred. Symbolically, this final value is: s b p − 1 × b e, where s is the
RT-11 is a discontinued small, single-user real-time operating system for the Digital Equipment Corporation PDP-11 family of 16-bit computers. RT-11 was first implemented in 1970 and was used for real-time systems, process control, data acquisition across the full line of PDP-11 computers. RT-11 systems did not support preemptive multitasking, but most versions could run multiple simultaneous applications. All variants of the monitors provided a background job; the FB, XM and ZM monitors provided a foreground job, as well as six system jobs if selected via the SYSGEN system generation program. These tasks had fixed priorities, with the foreground job highest, it was possible to switch between jobs from the system console user interface, SYSGEN could generate a monitor that provided a single background job. RT-11 was written in assembly language. Heavy use of the conditional assembly and macro programming features of the MACRO-11 assembler allowed a significant degree of configurability and allowed programmers to specify high-level instructions otherwise unprovided for in machine code.
RT-11 distributions included the source code of the operating system and its device drivers with all the comments removed and a program named "SYSGEN" which would build the operating system and drivers according to a user-specified configuration. Developer's documentation included a kernel listing. In RT-11, device drivers were loadable, except that prior to V4.0 the device driver for the system device was built into the kernel at configuration time. Because RT-11 was used for device control and data acquisition, it was common for developers to write or enhance device drivers. DEC encouraged such driver development by making their hardware subsystems open, documenting the internals of the operating system, encouraging third-party hardware and software vendors, by fostering the development of the Digital Equipment Computer Users Society. Users operated RT-11 via a printing terminal or a video terminal via a strap-selectable current-loop or RS-232 interface on one of the CPU cards. A third-party favorite was the Tektronix 4010 family.
The Keyboard Monitor interpreted commands issued by the user and would invoke various utilities with Command String Interpreter forms of the commands. RT-11 command language had many features that can be found in DOS line of operating systems which borrowed from RT-11; the CSI form expected output filenames and options in a precise order and syntax. The command-line switches were separated by "/" sign rather than "-" used in Unix-like operating systems. All commands had a short one to which it could be contracted. For example, RENAME command could be contracted to REN. Batch files and the batch processor could be used to issue a series of commands with some rudimentary control flow. Batch files had the extension. BAT. In releases of RT-11, it was possible to invoke a series of commands using a. COM command file, it was possible to execute a series of commands with great control through use of the Indirect Command File Processor, which took. CMD control files as input. Files with the extension. SAV were a sort of executables.
They were known as "save files" because the RT-11 SAVE command could be used to save the contents of memory to a disk file which could be loaded and executed at a time, allowing any session to be saved. The SAVE command, along with GET, START, REENTER, EXAMINE and DEPOSIT are basic commands implemented in the KMON; some commands and utilities were borrowed in DOS-line of operating systems. These commands include others. FORMAT command was used for physical disk formatting, although it was not capable of creating file system, for which purpose INIT command was used. Most commands supported use of wildcards in file names. Physical device names were specified in the form'dd:' where'dd' was a two-character alphabetic device name and the optional'n' was the unit number; when the unit number is omitted, unit 0 is assumed. For example, TT: referred to the console terminal, LP: referred to the parallel line printer, DX0:, DY1:, DL4: referred to disk volumes. Logical device names consisted of 1–3 alphanumeric characters and were used in the place of a physical device name.
This was accomplished using the ASSIGN command. For example, one might issue ASSIGN DL0 ABC which would cause all future references to'ABC:' to map to'DL0:'. Reserved logical name DK: referred to the current default device. If a device was not included in a file specification, DK: was assumed. Reserved logical name SY: referred to the system device. Versions of RT-11 allowed specification of up to 64 units for certain devices, but the device name was still limited to three alphanumeric characters; this feature was enabled through a SYSGEN selection, only applied to the DU and LD device handlers. In these two cases, the device name form became'dnn:' where'd' was'D' for the DU device and'L' for the LD device, and'nn' was 00–77. RT-11 was distributed with utilities which allowed a user to perfo
The Hewlett-Packard Company or Hewlett-Packard was an American multinational information technology company headquartered in Palo Alto, California. It developed and provided a wide variety of hardware components as well as software and related services to consumers, small- and medium-sized businesses and large enterprises, including customers in the government and education sectors; the company was founded in a one-car garage in Palo Alto by Bill Hewlett and David Packard, produced a line of electronic test equipment. HP was the world's leading PC manufacturer from 2007 to Q2 2013, at which time Lenovo ranked ahead of HP. HP specialized in developing and manufacturing computing, data storage, networking hardware, designing software and delivering services. Major product lines included personal computing devices and industry standard servers, related storage devices, networking products, software and a diverse range of printers and other imaging products. HP directly marketed its products to households, small- to medium-sized businesses and enterprises as well as via online distribution, consumer-electronics and office-supply retailers, software partners and major technology vendors.
HP had services and consulting business around its products and partner products. Hewlett-Packard company events included the spin-off of its electronic and bio-analytical measurement instruments part of its business as Agilent Technologies in 1999, its merger with Compaq in 2002, the acquisition of EDS in 2008, which led to combined revenues of $118.4 billion in 2008 and a Fortune 500 ranking of 9 in 2009. In November 2009, HP announced the acquisition of 3Com, with the deal closing on April 12, 2010. On April 28, 2010, HP announced the buyout of Inc. for $1.2 billion. On September 2, 2010, HP won its bidding war for 3PAR with a $33 a share offer, which Dell declined to match. Hewlett-Packard spun off its enterprise products and services business as Hewlett Packard Enterprise on November 1, 2015. Hewlett-Packard held onto the PC and printer businesses, was renamed to HP Inc. Bill Hewlett and David Packard graduated with degrees in electrical engineering from Stanford University in 1935; the company originated in a garage in nearby Palo Alto during a fellowship they had with a past professor, Frederick Terman at Stanford during the Great Depression.
They considered Terman a mentor in forming Hewlett-Packard. In 1938, Packard and Hewlett begin part-time work in a rented garage with an initial capital investment of US$538. In 1939 Hewlett and Packard decided to formalize their partnership, they tossed a coin to decide whether the company they founded would be called Hewlett-Packard or Packard-Hewlett. HP incorporated on August 18, 1947, went public on November 6, 1957. Of the many projects they worked on, their first financially successful product, was a precision audio oscillator, the Model HP200A, their innovation was the use of a small incandescent light bulb as a temperature dependent resistor in a critical portion of the circuit, the negative feedback loop which stabilized the amplitude of the output sinusoidal waveform. This allowed them to sell the Model 200A for $89.40 when competitors were selling less stable oscillators for over $200. The Model 200 series of generators continued production until at least 1972 as the 200AB, still tube-based but improved in design through the years.
One of the company's earliest customers was Walt Disney Productions, which bought eight Model 200B oscillators for use in certifying the Fantasound surround sound systems installed in theaters for the movie Fantasia. They worked on counter-radar technology and artillery shell fuses during World War II, which allowed Packard to be exempt from the draft. HP is recognized as the symbolic founder of Silicon Valley, although it did not investigate semiconductor devices until a few years after the "traitorous eight" had abandoned William Shockley to create Fairchild Semiconductor in 1957. Hewlett-Packard's HP Associates division, established around 1960, developed semiconductor devices for internal use. Instruments and calculators were some of the products using these devices. During the 1960s, HP partnered with Sony and the Yokogawa Electric companies in Japan to develop several high-quality products; the products were not a huge success, as there were high costs in building HP-looking products in Japan.
HP and Yokogawa formed a joint venture in 1963 to market HP products in Japan. HP bought Yokogawa Electric's share of Hewlett-Packard Japan in 1999. HP spun off Dynac, to specialize in digital equipment; the name was picked so that the HP logo "hp" could be turned upside down to be a reverse reflect image of the logo "dy" of the new company. Dynac changed to Dymec, was folded back into HP in 1959. HP experimented with using Digital Equipment Corporation minicomputers with its instruments, but after deciding that it would be easier to build another small design team than deal with DEC, HP entered the computer market in 1966 with the HP 2100 / HP 1000 series of minicomputers; these had a simple accumulator-based design, with two accumulator registers and, in the HP 1000 models, two index registers. The series was produced for 20 years, in spite of several attempts to replace it, was a forerunner of the HP 9800 and HP 250 series of desktop and business computers; the HP 3000 was an advanced stack-based design for a business computing server redesigned with RISC technology.
The HP 2640 series of smart and intelligent terminals introduced forms-based interfaces to ASCII terminals, introduced screen labeled functio
DOS is a family of disk operating systems, hence the name. DOS consists of MS-DOS and a rebranded version under the name IBM PC DOS, both of which were introduced in 1981. Other compatible systems from other manufacturers include DR-DOS, ROM-DOS, PTS-DOS, FreeDOS. MS-DOS dominated the x86-based IBM PC compatible market between 1981 and 1995. Dozens of other operating systems use the acronym "DOS", including the mainframe DOS/360 from 1966. Others are Apple DOS, Apple ProDOS, Atari DOS, Commodore DOS, TRSDOS, AmigaDOS. Fictional operating systems have used this acronym as well, such as GLaDOS from the video game Portal. IBM PC DOS and its predecessor, 86-DOS, resembled Digital Research's CP/M—the dominant disk operating system for 8-bit Intel 8080 and Zilog Z80 microcomputers—but instead ran on Intel 8086 16-bit processors; when IBM introduced the IBM PC, built with the Intel 8088 microprocessor, they needed an operating system. Seeking an 8088-compatible build of CP/M, IBM approached Microsoft CEO Bill Gates.
IBM was sent to Digital Research, a meeting was set up. However, the initial negotiations for the use of CP/M broke down. Digital Research founder Gary Kildall refused, IBM withdrew. IBM again approached Bill Gates. Gates in turn approached Seattle Computer Products. There, programmer Tim Paterson had developed a variant of CP/M-80, intended as an internal product for testing SCP's new 16-bit Intel 8086 CPU card for the S-100 bus; the system was named QDOS, before being made commercially available as 86-DOS. Microsoft purchased 86-DOS for $50,000; this became Microsoft Disk Operating System, MS-DOS, introduced in 1981. Within a year Microsoft licensed MS-DOS to over 70 other companies, which supplied the operating system for their own hardware, sometimes under their own names. Microsoft required the use of the MS-DOS name, with the exception of the IBM variant. IBM continued to develop their version, PC DOS, for the IBM PC. Digital Research became aware that an operating system similar to CP/M was being sold by IBM, threatened legal action.
IBM responded by offering an agreement: they would give PC consumers a choice of PC DOS or CP/M-86, Kildall's 8086 version. Side-by-side, CP/M cost $200 more than PC DOS, sales were low. CP/M faded, with MS-DOS and PC DOS becoming the marketed operating system for PCs and PC compatibles. Microsoft sold MS-DOS only to original equipment manufacturers. One major reason for this was. DOS was structured such that there was a separation between the system specific device driver code and the DOS kernel. Microsoft provided an OEM Adaptation Kit which allowed OEMs to customize the device driver code to their particular system. By the early 1990s, most PCs adhered to IBM PC standards so Microsoft began selling MS-DOS in retail with MS-DOS 5.0. In the mid-1980s Microsoft developed a multitasking version of DOS; this version of DOS is referred to as "European MS-DOS 4" because it was developed for ICL and licensed to several European companies. This version of DOS supports preemptive multitasking, shared memory, device helper services and New Executable format executables.
None of these features were used in versions of DOS, but they were used to form the basis of the OS/2 1.0 kernel. This version of DOS is distinct from the released PC DOS 4.0, developed by IBM and based upon DOS 3.3. Digital Research attempted to regain the market lost from CP/M-86 with Concurrent DOS, FlexOS and DOS Plus with Multiuser DOS and DR DOS. Digital Research was bought by Novell, DR DOS became Novell DOS 7. Gordon Letwin wrote in 1995 that "DOS was, when we first wrote it, a one-time throw-away product intended to keep IBM happy so that they'd buy our languages". Microsoft expected; the company planned to over time improve MS-DOS so it would be indistinguishable from single-user Xenix, or XEDOS, which would run on the Motorola 68000, Zilog Z-8000, LSI-11. IBM, did not want to replace DOS. After AT&T began selling Unix, Microsoft and IBM began developing OS/2 as an alternative; the two companies had a series of disagreements over two successor operating systems to DOS, OS/2 and Windows.
They split development of their DOS systems as a result. The last retail version of MS-DOS was MS-DOS 6.22. The last retail version of PC DOS was PC DOS 2000, though IBM did develop PC DOS 7.10 for OEMs and internal use. The FreeDOS project began on 26 June 1994, when Microsoft announced it would no longer sell or support MS-DOS. Jim Hall posted a manifesto proposing the development of an open-source replacement. Within a few weeks, other programmers including Pat Villani and Tim Norman joined the project. A kernel, the COMMAND. COM command line interpreter, core utilities were created by pooling code they had wri
Unix is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, development starting in the 1970s at the Bell Labs research center by Ken Thompson, Dennis Ritchie, others. Intended for use inside the Bell System, AT&T licensed Unix to outside parties in the late 1970s, leading to a variety of both academic and commercial Unix variants from vendors including University of California, Microsoft, IBM, Sun Microsystems. In the early 1990s, AT&T sold its rights in Unix to Novell, which sold its Unix business to the Santa Cruz Operation in 1995; the UNIX trademark passed to The Open Group, a neutral industry consortium, which allows the use of the mark for certified operating systems that comply with the Single UNIX Specification. As of 2014, the Unix version with the largest installed base is Apple's macOS. Unix systems are characterized by a modular design, sometimes called the "Unix philosophy"; this concept entails that the operating system provides a set of simple tools that each performs a limited, well-defined function, with a unified filesystem as the main means of communication, a shell scripting and command language to combine the tools to perform complex workflows.
Unix distinguishes itself from its predecessors as the first portable operating system: the entire operating system is written in the C programming language, thus allowing Unix to reach numerous platforms. Unix was meant to be a convenient platform for programmers developing software to be run on it and on other systems, rather than for non-programmers; the system grew larger as the operating system started spreading in academic circles, as users added their own tools to the system and shared them with colleagues. At first, Unix was not designed to be multi-tasking. Unix gained portability, multi-tasking and multi-user capabilities in a time-sharing configuration. Unix systems are characterized by various concepts: the use of plain text for storing data; these concepts are collectively known as the "Unix philosophy". Brian Kernighan and Rob Pike summarize this in The Unix Programming Environment as "the idea that the power of a system comes more from the relationships among programs than from the programs themselves".
In an era when a standard computer consisted of a hard disk for storage and a data terminal for input and output, the Unix file model worked quite well, as I/O was linear. In the 1980s, non-blocking I/O and the set of inter-process communication mechanisms were augmented with Unix domain sockets, shared memory, message queues, semaphores, network sockets were added to support communication with other hosts; as graphical user interfaces developed, the file model proved inadequate to the task of handling asynchronous events such as those generated by a mouse. By the early 1980s, users began seeing Unix as a potential universal operating system, suitable for computers of all sizes; the Unix environment and the client–server program model were essential elements in the development of the Internet and the reshaping of computing as centered in networks rather than in individual computers. Both Unix and the C programming language were developed by AT&T and distributed to government and academic institutions, which led to both being ported to a wider variety of machine families than any other operating system.
Under Unix, the operating system consists of many libraries and utilities along with the master control program, the kernel. The kernel provides services to start and stop programs, handles the file system and other common "low-level" tasks that most programs share, schedules access to avoid conflicts when programs try to access the same resource or device simultaneously. To mediate such access, the kernel has special rights, reflected in the division between user space and kernel space - although in microkernel implementations, like MINIX or Redox, functions such as network protocols may run in user space; the origins of Unix date back to the mid-1960s when the Massachusetts Institute of Technology, Bell Labs, General Electric were developing Multics, a time-sharing operating system for the GE-645 mainframe computer. Multics featured several innovations, but presented severe problems. Frustrated by the size and complexity of Multics, but not by its goals, individual researchers at Bell Labs started withdrawing from the project.
The last to leave were Ken Thompson, Dennis Ritchie, Douglas McIlroy, Joe Ossanna, who decided to reimplement their experiences in a new project of smaller scale. This new operating system was without organizational backing, without a name; the new operating system was a single-tasking system. In 1970, the group coined the name Unics for Uniplexed Information and Computing Service, as a pun on Multics, which stood for Multiplexed Information and Computer Services. Brian Kernighan takes credit for the idea, but adds that "no one can remember" the origin of the final spelling Unix. Dennis Ritchie, Doug McIlroy, Peter G. Neumann credit Kernighan; the operating system was written in assembly language, but in 1973, Version 4 Unix was rewritten in C. Version 4 Unix, still had many PDP-11 dependent codes, is not suitable for porting; the first port to other platform was made five years f