:: wikimiki.org ::
| Time Sharing |
Time SharingTime-sharing is an approach to interactive computing in which a single computer is used to provide apparently simultaneous interactive general-purpose computing to multiple users by sharing processor time. Time sharing is what allows multiple users simultaneous access to a single computer system through remote terminals through which they give input and receive output to the computer. Yet we trace the origins of time sharing to the origins of the modern computer itself. The very first computers developed in the 1940s were so called batch processing computers, which were very different in terms of architecture than today’s modern computers. Batch processing computers felt more like huge calculators instead of interactive machines. There was no realtime input and output between a computer and user like we have today. Instead, one had to design their program (usually on punch cards), take it to the computer, wait for the program to run, and then go back to his desk to interpret the output from the system. Granted once you got everything working (which was no trivial task in itself) the computer performed the large amount of calculations much faster than any human could. But one can see a serious bottleneck in the efficiency of input and output into the computer. You can imagine how frustrating this could be, as lots of time and resources were wasted in this input and output process. Every time you wanted to use a computer it was “too big of a deal”.
But then came along time sharing. John McCarthy is traditionally given the credit for leading the development of the first time shared computing project, a computer named CTSS, or Compatible Time Sharing System, demonstrated in 1961. The demonstration shook the computing world, as it proved that time-sharing was not only possible but preferable over batch processing. The computer itself was not any new breakthrough – the speed and memory it offered had been developed before. The primary innovation was the actual interaction it offered with its users. For the first time, there was a community of users simultaneously logging into the system, and they could interact with each other and share files and code with each other. This online mini-community then gave rise to the first email, archiving and security applications which were all developed right on the time sharing CTSS. And along with this mini-community came the sort of addiction we are accustomed to as the hackers saw their social lives go downhill because of this machine.
What caused this addiction was true interactivity with the time shared machine. Instead of making your program, going to the computer, running it, waiting for it to finish, and getting the output, the user now sat down with the computer’s power at his fingertips. Multiple users could sit down at the terminal, and the computer would respond to each terminal as if he were the only one in the world using it.
The CTSS also solved the scarcity problem of computing. Remember that at this time, computers were only found at cutting edge technological centers and cost millions of dollars. And with batch processing, getting time on these systems was a task many were not willing to put up with. But now one could drive over to the university, log in and do what he or she wishes at one of the remote terminals, and the computer would automatically track your usage with your account. The system could be upgraded to handle hundreds of remote teletype terminals from which users could plug in, so now instead of one user working with a one million dollar piece of equipment, you have scores of users working from many locations.
But perhaps a very surprising and unforeseen consequence of the real time interactivity was how it changed creativity with computer programming. Users could understand and feel the computer at a level never before possible. Instead of knowing how the computer performed, one could feel the computer activity. Instead of reading manuals, they could tinker with programs and input ideas on the spot. So if someone wanted to see how a new program would work, he could type it and see the output almost instantly (the computer was very slow and response would be very laggy). One could say “oh I want to make this program,” or “this needs to be changed/added” and immediately do it, without even standing up and walking to the computer itself.
Another idea time-sharing built on was that computing would evolve into a utility, like electricity. J.C.R Licklider imagined a world where users could tap into centralized computer systems from their homes, use the computing they need, be charged for it and then simply log off. Such an idea seems very nice and efficient, and it may even be a better model for worldwide computing than what we have today, as people wouldn’t need to go through all of the problems of purchasing their own computer and setting up entire computer systems in their homes. But along with the growing popularity of computers comes the attention of companies eager to make money off of computers. Why sell remote terminals when you could sell entire systems and gain huge profits? IBM and Apple in particular were asking these questions, and before any such computing infrastructure was setup, they were marketing personal computers for people to buy and place in their own homes.
Today, time sharing is not a common occurrence because of these personal computers. Like time-sharing, they eliminated the scarcity of computing resources available and for most people access to a computer was all they thought they would need. But when used, time sharing today is implemented much differently than the original CTSS system. This can be seen by looking at supercomputers, which play a similar role in society today that any computer did in the 50s. We have a scarcity of supercomputers in the world, as these are multi million dollar machines capable of speeds over 50-60 terraflops per second (www.top500.org), over ten thousand times faster than a new personal computer. Supercomputers are used to break codes and run simulations so huge that it would take thousands of years to run the same simulations on typical PCs, and these jobs often require very clever programming in order to take advantage of the parallel computing. So when an institution owns one of these machines, they naturally ask how can we best use it? We obviously cannot treat it like a PC, as the down time between users would cost too much money. Instead, just let users login remotely from their own personal computers into the supercomputer so that they can run jobs on the main system (note this is essentially the same solution used to fix the scarcity of computing in the first place, although PCs replaced the remote terminals). Thus we eliminate undesired downtime and widen the access to the supercomputer.
Another modern idea relating to time sharing are distributed computing projects. These projects treat all of the computers in the world as a huge supercomputer, and then attempt to use their idle processing time in order to compute very large problems. Users download a common program, and when idle (usually during a computer’s screen saver) the user’s computer begins to spend time on the distributed processing problem. SETI@home, which processes radio waves in search for patterns and evidence of extraterrestrial intelligence claims to achieve some 72 terraflops per second. Folding@home, a project which studies protein folding, has reported 195 terraflops/second ( http://vspx27.stanford.edu/cgi-bin/main.py?qtype=cpustats). Such fantastic numbers are a testament to the advantages of pooling computing resources when it is possible. And remember all this is possible with “backwards” time sharing, as now there is one problem being run on many smaller computers instead of the traditional implementation of several problems simultaneously run on one central system.
Other early time-sharing systems — some still in widespread use — include:
- IBM CMS (part of VM/CMS)
- IBM TSS/360 (never finished; see OS/360)
- IBM Time Sharing Option (TSO)
- Michigan Terminal System
- Multics
- MUSIC/SP
- WYLBUR
- RSTS/E
External link
- [http://americanhistory.si.edu/csr/comphist/bell.htm#first%20commercial%20timesharing DEC's PDP-6 was the worlds first commercial time-sharing system ]
Category:Operating system technology
ja:タイムシェアリングシステム
Computer
A computer is a device capable of processing data according to a program — a list of instructions. The data to be processed may represent many types of information including numbers, text, pictures, or sound.
Computers can be extremely versatile. In fact, they are universal information processing machines. According to the Church-Turing thesis, a computer with a certain minimum threshold capability is in principle capable of performing the tasks of any other computer, from those of a personal digital assistant to a supercomputer. Therefore, the same computer designs have been adapted for tasks from processing company payrolls to controlling industrial robots. Modern electronic computers also have enormous speed and capacity for information processing compared to earlier designs, and they have become exponentially more powerful over the years (a phenomenon known as Moore's Law).
Computers are available in many physical forms. The original computers were the size of a large room, and such enormous computing facilities still exist for specialized scientific computation - supercomputers - and for the transaction processing requirements of large companies, generally called mainframes. Smaller computers for individual use, called personal computers, and their portable equivalent, the notebook computer, are ubiquitous information-processing and communication tools and are perhaps what most non-experts think of as "a computer". However, the most common form of computer in use today is the embedded computer, small computers used to control another device. Embedded computers control machines from fighter planes to digital cameras.
History of computing
Originally, a "computer" was a person who performed numerical calculations under the direction of a mathematician, often with the aid of a variety of mechanical calculating devices from the abacus onward. An example of an early computing device was the Antikythera mechanism, an ancient Greek device for calculating the movements of planets, dating from about 87 BCE. The technology responsible for this mysterious device seems to have been lost at some point.
The end of the Middle Ages saw a reinvigoration of European mathematics and engineering, and by the early 17th century a succession of mechanical calculating devices had been constructed using clockwork technology. A considerable number of technologies that would later prove vital for the digital computer were developed in the late 19th and early 20th centuries, such as the punched card and the vacuum tube ((or valve). Charles Babbage was the first to conceptualize and design a fully programmable computer as early as 1837, but due to a combination of the limits of the technology of the time, limited finance, and an inability to resist tinkering with his design (a trait that would in time doom thousands of computer-related engineering projects), the device was never actually constructed in his lifetime.
During the first half of the 20th century, many scientific computing needs were met by increasingly sophisticated, special-purpose analog computers, which used a direct physical or electrical model of the problem as a basis for computation. These became increasingly rare after the development of the digital computer.
A succession of steadily more powerful and flexible computing devices were constructed in the 1930s and 1940s, gradually adding the key features of modern computers, such as the use of digital electronics (invented by Claude Shannon in 1937) and more flexible programmability. Defining one point along this road as "the first computer" is exceedingly difficult. Notable achievements include the Atanasoff Berry Computer, a special-purpose machine that used valve-driven computation and binary numbers; Konrad Zuse's Z machines; the secret British Colossus computer, which had limited programmability but demonstrated that a device using thousands of valves could be made reliable and reprogrammed electronically; and the American ENIAC — the first general purpose machine, but with an inflexible architecture that meant reprogramming it essentially required it to be rewired.
The team who developed ENIAC, recognizing its flaws, came up with a far more flexible and elegant design, which has become known as the stored program architecture, which is the basis from which virtually all modern computers were derived. A number of projects to develop computers based on the stored program architecture commenced in the late 1940s; the first of these to be up and running was the Small-Scale Experimental Machine, but the EDSAC was perhaps the first practical version.
Valve-driven computer designs were in use throughout the 1950s, but were eventually replaced with transistor-based computers, which were smaller, faster, cheaper, and much more reliable, thus allowing them to be commercially produced, in the 1960s. By the 1970s, the adoption of integrated circuit technology had enabled computers to be produced at a low enough cost to allow individuals to own a personal computer of the type familiar today.
How computers work: the stored program architecture
While the technologies used in computers have changed dramatically since the first electronic, general-purpose, computers of the 1940s, most still use the stored program architecture (sometimes called the von Neumann architecture; as the article describes the primary inventors were probably ENIAC designers J. Presper Eckert and John William Mauchly). The design made the universal computer a practical reality.
The architecture describes a computer with four main sections: the arithmetic and logic unit (ALU), the control circuitry, the memory, and the input and output devices (collectively termed I/O). These parts are interconnected by a bundle of wires (a "bus") and are usually driven by a timer or clock (although other events could drive the control circuitry).
Conceptually, a computer's memory can be viewed as a list of cells. Each cell has a numbered "address" and can store a small, fixed amount of information. This information can either be an instruction, telling the computer what to do, or data, the information which the computer is to process using the instructions that have been placed in the memory. In principle, any cell can be used to store either instructions or data.
The ALU is in many senses the heart of the computer. It is capable of performing two classes of basic operations: arithmetic operations, the core of which is the ability to add or subtract two numbers but also encompasses operations like "multiply this number by 2" or "divide by 2" (for reasons which will become clear later), as well as some others. The second class of ALU operations involves comparison operations, which, given two numbers, can determine if they are equal, and if not, which is bigger.
The I/O systems are the means by which the computer receives information from the outside world, and reports its results back to that world. On a typical personal computer, input devices include objects like the keyboard and mouse, and output devices include computer monitors, printers and the like, but as will be discussed later a huge variety of devices can be connected to a computer and serve as I/O devices.
The control system ties this all together. Its job is to read instructions and data from memory or the I/O devices, decode the instructions, providing the ALU with the correct inputs according to the instructions, "tell" the ALU what operation to perform on those inputs, and send the results back to the memory or to the I/O devices. One key component of the control system is a counter that keeps track of what the address of the current instruction is; typically, this is incremented each time an instruction is executed, unless the instruction itself indicates that the next instruction should be at some other location (allowing the computer to repeatedly execute the same instructions). Physically, since the 1980s the ALU and control unit have been located on a single integrated circuit called a Central Processing Unit or CPU.
The functioning of such a computer is in principle quite straightforward. Typically, on each clock cycle, the computer fetches instructions and data from its memory. The instructions are executed, the results are stored, and the next instruction is fetched. This procedure repeats until a halt instruction is encountered.
Larger computers, such as some minicomputers, mainframe computers, servers, differ from the model above in one significant aspect; rather than one CPU they often have a number of them. Supercomputers often have highly unusual architectures significantly different from the basic stored-program architecture, sometimes featuring thousands of CPUs, but such designs tend to be useful only for specialized tasks.
Digital circuits
The conceptual design above could be implemented using a variety of different technologies. As previously mentioned, a stored program computer could be designed entirely of mechanical components like Babbage's. However, digital circuits allow Boolean logic and arithmetic using binary numerals to be implemented using relays - essentially, electrically controlled switches. Shannon's famous thesis showed how relays could be arranged to form units called logic gates, implementing simple Boolean operations. Others soon figured out that vacuum tubes - electronic devices, could be used instead. Vacuum tubes were originally used as a signal amplifier for radio and other applications, but were used in digital electronics as a very fast switch; when electricity is provided to one of the pins, current can flow through between the other two.
Through arrangements of logic gates, one can build digital circuits to do more complex tasks, for instance, an adder, which implements in electronics the same method - in computer terminology, an algorithm - to add two numbers together that children are taught - add one column at a time, and carry what's left over. Eventually, through combining circuits together, a complete ALU and control system can be built up. This does require a considerable number of components. CSIRAC, one of the earliest stored-program computers, is probably close to the smallest practically useful design. It had about 2,000 valves, some of which were "dual components", so this represented somewhere between 2 and 4,000 logic components.
Vacuum tubes had severe limitations for the construction of large numbers of gates. They were expensive, unreliable (particularly when used in such large quantities), took up a lot of space, and used a lot of electrical power, and, while incredibly fast compared to a mechanical switch, had limits to the speed at which they could operate. Therefore, by the 1960s they were replaced by the transistor, a new device which performed the same task as the tube but was much smaller, faster operating, reliable, used much less power, and was far cheaper.
transistor
In the 1960s and 1970s, the transistor itself was gradually replaced by the integrated circuit, which placed multiple transistors (and other components) and the wires connecting them on a single, solid piece of silicon. By the 1970s, the entire ALU and control unit, the combination becoming known as a CPU, were being placed on a single "chip" called a microprocessor. Over the history of the integrated circuit, the number of components that can be placed on one has grown enormously. The first IC's contained a few tens of components; as of 2005, modern microprocessors such from AMD and Intel contain over 100 million transistors.
Tubes, transistors, and transistors on integrated circuits can be and are used as the "storage" component of the stored-program architecture, using a circuit design known as a flip-flop, and indeed flip-flops are used for small amounts of very high-speed storage. However, few computer designs have used flip-flops for the bulk of their storage needs. Instead, earliest computers stored data in Williams tubes - essentially, projecting some dots on a TV screen and reading them again, or mercury delay lines where the data was stored as sound pulses traveling slowly (compared to the machine itself) along long tubes filled with mercury. These somewhat ungainly but effective methods were eventually replaced by magnetic memory devices, such as magnetic core memory, where electrical currents were used to introduce a permanent (but weak) magnetic field in some ferrous material, which could then be read to retrieve the data. Eventually, DRAM was introduced. A DRAM unit is a type of integrated circuit containing huge banks of an electronic component called a capacitor which can store an electrical charge for a period of time. The level of charge in a capacitor could be set to store information, and then measured to read the information when required.
I/O devices
I/O is a general term for devices that send computers information from the outside world and that return the results of computations. These results can either be viewed directly by a user, or they can be sent to another machine, whose control has been assigned the computer: In a robot, for instance, the controlling computer's major output device is the robot itself.
The first generation of computers were equipped with a fairly limited range of input devices. A punch card reader, or something similar, was used to enter instructions and data into the computer's memory, and some kind of printer, usually a modified teletype, was used to record the results. Over the years, a huge variety of other devices have been added. For the personal computer, for instance, keyboards and mice are the primary ways people directly enter information into the computer; and monitors are the primary way in which information from the computer is presented back to the user, though printers, speakers, and headphones are common, too. There is a huge variety of other devices for obtaining other types of input. One example is the digital camera, which can be used to input visual information. There are two prominent classes of I/O devices. The first class is that of secondary storage devices, such as hard disks, CD-ROMs, key drives and the like, which represent comparatively slow, but high-capacity devices, where information can be stored for later retrieval; the second class is that of devices used to access computer networks. The ability to transfer data between computers has opened up a huge range of capabilities for the computer. The global Internet allows millions of computers to transfer information of all types between each other.
Instructions
The instructions interpreted by the control unit, and executed by the ALU, are not nearly as rich as a human language. A computer responds only to a limited number of instructions, but they are well defined, simple, and unambiguous. Typical sorts of instructions supported by most computers are "copy the contents of memory cell 5 and place the copy in cell 10", "add the contents of cell 7 to the contents of cell 13 and place the result in cell 20", "if the contents of cell 999 are 0, the next instruction is at cell 30". All computer instructions fall into one of four categories: 1) moving data from one location to another; 2) executing arithmetic and logical processes on data; 3) testing the condition of data; and 4) altering the sequence of operations.
Instructions are represented within the computer as binary code - a base two system of counting. For example, the code for one kind of "copy" operation in the Intel line of microprocessors is 10110000. The particular instruction set that a specific computer supports is known as that computer's machine language.
To slightly oversimplify, if two computers have CPUs that respond to the same set of instructions identically, software from one can run on the other without modification. This easy portability of existing software creates a great incentive to stick with existing designs, only switching for the most compelling of reasons, and has gradually narrowed the number of distinct instruction set architectures in the marketplace.
Programs
Computer programs are simply lists of instructions for the computer to execute. These can range from just a few instructions which perform a simple task, to a much more complex instruction list which may also include tables of data. Many computer programs contain millions of instructions, and many of those instructions are executed repeatedly. A typical modern PC (in the year 2005) can execute around 3 billion instructions per second. Computers do not gain their extraordinary capabilities through the ability to execute complex instructions. Rather, they do millions of simple instructions arranged by people known as programmers.
In practice, people do not normally write the instructions for computers directly in machine language. Such programming is incredibly tedious and highly error-prone, making programmers very unproductive. Instead, programmers describe the desired actions in a "high level" programming language which is then translated into the machine language automatically by special computer programs (interpreters and compilers). Some programming languages map very closely to the machine language, such as Assembly Language (low level languages); at the other end, languages like Prolog are based on abstract principles far removed from the details of the machine's actual operation (high level languages). The language chosen for a particular task depends on the nature of the task, the skill set of the programmers, tool availability and, often, the requirements of the customers (for instance, projects for the US military were often required to be in the Ada programming language).
Computer software is an alternative term for computer programs; it is a more inclusive phrase and includes all the ancillary material accompanying the program needed to do useful tasks. For instance, a video game includes not only the program itself, but also data representing the pictures, sounds, and other material needed to create the virtual environment of the game. A computer application is a piece of computer software provided to many computer users, often in a retail environment. The stereotypical modern example of an application is perhaps the office suite, a set of interrelated programs for performing common office tasks.
Going from the extremely simple capabilities of a single machine language instruction to the myriad capabilities of application programs means that many computer programs are extremely large and complex. A typical example is the Firefox web browser, created from roughly 2 million lines of computer code in the C++ programming language; there are many projects of even bigger scope, built by large teams of programmers. The management of this enormous complexity is key to making such projects possible; programming languages, and programming practices, enable the task to be divided into smaller and smaller subtasks until they come within the capabilities of a single programmer in a reasonable period.
Nevertheless, the process of developing software remains slow, unpredictable, and error-prone; the discipline of software engineering has attempted, with some partial success, to make the process quicker and more productive and improve the quality of the end product.
Libraries and operating systems
Soon after the development of the computer, it was discovered that certain tasks were required in many different programs; an early example was computing some of the standard mathematical functions. For the purposes of efficiency, standard versions of these were collected in libraries and made available to all who required them. A particularly common task set related to handling the gritty details of "talking" to the various I/O devices, so libraries for these were quickly developed.
By the 1960s, with computers in wide industrial use for many purposes, it became common for them to be used for many different jobs within an organization. Soon, special software to automate the scheduling and execution of these many jobs became available. The combination of managing "hardware" and scheduling jobs became known as the "operating system"; the classic example of this type of early operating system was OS/360 by IBM.
The next major development in operating systems was timesharing - the idea that multiple users could use the machine "simultaneously" by keeping all of their programs in memory, executing each user's program for a short time so as to provide the illusion that each user had their own computer. Such a development required the operating system to provide each user's programs with a "virtual machine" such that one user's program could not interfere with another's (by accident or design). The range of devices that operating systems had to manage also expanded; a notable one was hard disks; the idea of individual "files" and a hierarchical structure of "directories" (now often called folders) greatly simplified the use of these devices for permanent storage. Security access controls, allowing computer users access only to files, directories and programs they had permissions to use, were also common.
Perhaps the last major addition to the operating system were tools to provide programs with a standardized graphical user interface. While there are few technical reasons why a GUI has to be tied to the rest of an operating system, it allows the operating system vendor to encourage all the software for their operating system to have a similar looking and acting interface.
Outside these "core" functions, operating systems are usually shipped with an array of other tools, some of which may have little connection with these original core functions but have been found useful by enough customers for a provider to include them. For instance, Apple's Mac OS X ships with a digital video editor application.
Not all operating systems provide all of the above functions; operating systems for smaller computers typically provide fewer, such as the highly minimal operating systems for early microcomputers. Embedded computers may have a specialized operating system, or sometimes none at all. Instead, the custom programs written for their task perform all necessary functions that would be performed by an operating system in less specialized roles.
Computer applications
Embedded computer
The first electronic digital computers, with their large size and cost, mainly performed scientific calculations, often to support military objectives. The ENIAC was originally designed to calculate ballistics-firing tables for artillery, but it was also used to calculate neutron cross-sectional densities to help in the design of the hydrogen bomb. This calculation, performed in December, 1945 through January, 1946 and involving over a million punch cards of data, showed the design then under consideration would fail. (Many of the most powerful supercomputers available today are also used for nuclear weapons simulations.) The CSIR Mk I, the first Australian stored-program computer, evaluated rainfall patterns for the catchment area of the Snowy Mountains Scheme, a large hydroelectric generation project. Others were used in cryptanalysis, for example the first programmable (though not general-purpose) digital electronic computer, Colossus, built in 1943 during World War II. Despite this early focus of scientific and military engineering applications, computers were quickly used in other areas.
From the beginning, stored program computers were applied to business problems. The LEO, a stored program-computer built by J. Lyons and Co. in the United Kingdom, was operational and being used for inventory management and other purposes 3 years before IBM built their first commercial stored-program computer.
Continual reductions in the cost and size of computers saw them adopted by ever-smaller organizations. Moreover, with the invention of the microprocessor in the 1970s, it became possible to produce inexpensive computers. In the 1980s, personal computers became popular for many tasks, including book-keeping, writing and printing documents, calculating forecasts and other repetitive mathematical tasks involving spreadsheets.
spreadsheet (1989) marked the acceptance of CGI in the visual effects industry.]]
As computers have become cheaper, they have been used extensively in the creative arts as well. Sound, still pictures, and video are now routinely created (through synthesizers, computer graphics and computer animation), and near-universally edited by computer. They have also been used for entertainment, with the video game becoming a huge industry.
Computers have been used to control mechanical devices since they became small and cheap enough to do so; indeed, a major spur for integrated circuit technology was building a computer small enough to guide the Apollo missions and the Minuteman missile, two of the first major applications for embedded computers. Today, it is almost rarer to find a powered mechanical device not controlled by a computer than to find one that is at least partly so. Perhaps the most famous computer-controlled mechanical devices are robots, machines with more-or-less human appearance and some subset of their capabilities. Industrial robots have become commonplace in mass production, but general-purpose human-like robots have not lived up to the promise of their fictional counterparts and remain either toys or research projects.
Robotics, indeed, is the physical expressions of the field of artificial intelligence, a discipline whose exact boundaries are fuzzy but to some degree involves attempting to give computers capabilities that they do not currently possess but humans do. Over the years, methods have been developed to allow computers to do things previously regarded as the exclusive domain of humans - for instance, "read" handwriting, play chess, or perform symbolic integration. However, progress on creating a computer that exhibits "general" intelligence comparable to a human has been extremely slow.
Networking and the Internet
In the 1970s, computer engineers at research institutions throughout the US began to link their computers together using telecommunications technology. This effort was funded by ARPA, and the computer network that it produced was called the ARPANET. The technologies that made the Arpanet possible spread and evolved. In time, the network spread beyond academic and military institutions and became known as the Internet. The emergence of networking involved a redefinition of the nature and boundaries of the computer. In the phrase of John Gage and Bill Joy (of Sun Microsystems), "the network is the computer". Computer operating systems and applications were modified to include the ability to define and access the resources of other computers on the network, such as peripheral devices, stored information, and the like, as extensions of the resources of an individual computer. Initially these facilities were available primarily to people working in high-tech environments, but in the 1990s the spread of applications like email and the World Wide Web, combined with the development of cheap, fast networking technologies like Ethernet and ADSL saw computer networking become ubiquitous almost everywhere. In fact, the number of computers that are networked is growing phenomenally. A very large proportion of personal computers regularly connect to the Internet to communicate and receive information.
Computing professions and disciplines
In the developed world, virtually every profession makes use of computers. However, certain professional and academic disciplines have evolved that specialize in techniques to construct, program, and use computers. Terminology for different professional disciplines is still somewhat fluid and new fields emerge from time to time: however, some of the major groupings are as follows:
- Computer engineering is that branch of electronic engineering devoted to the physical construction of computers and their attendant components.
- Computer science is an academic study of the processes related to computation, such as developing efficient algorithms to perform specific tasks. It has tackled questions as to whether problems can be solved at all using a computer, how efficiently they can be solved, and how to construct efficient programs to compute solutions. A huge array of specialties has developed within computer science to investigate different classes of problem.
- Software engineering concentrates on methodologies and practices to allow the development of reliable software systems while minimizing, and reliably estimating, costs and timelines.
- Information systems concentrates on the use and deployment of computer systems in a wider organizational (usually business) context.
- Many disciplines have developed at the intersection of computers with other professions; one of many examples is experts in geographical information systems who apply computer technology to problems of managing geographical information.
See also
- Computer hardware
- Computability theory
- Computer datasheet
- Computer expo
- Computer science
- Computer types: desktop, laptop, desknote, roll-away computer, embedded computer, cart computer
- Computing
- Computers in fiction
- Digital
- History of computing
- List of computing topics
- Personal computer
- Word processing
- Computer Programming
- Quantum Computer
References
- [http://www.andrew.mallett.net/tech Learn to configure your computer at Andy's Tech Page]
category: computer science
ja:コンピュータ
ko:컴퓨터
ms:Komputer
nb:Datamaskin
simple:Computer
th:คอมพิวเตอร์
OS/360
OS/360 was a batch processing operating system developed by IBM for their then-new System/360 mainframe computer, announced in 1964. OS/360 was amongst the earliest operating systems to make direct access storage devices a prerequisite for its operation.
Origins
OS/360 was developed as a family of three control programs, which increased in size as well as functionality. Initially, the single task PCP (Primary Control Program) processed jobs sequentially; the next, MFT (Multiprogramming with a Fixed number of Tasks) added multitasking, but only allowed a fixed number of concurrent tasks, each one having a preset memory allocation. Finally MVT (Multiprogramming with a Variable number of Tasks) allowed varying numbers of tasks whose memory size could change dynamically. OS/360 also introduced IBM's batch-scripting language JCL (Job Control Language).
OS/360 was late being delivered, due to a combination of organizational disarray inside IBM and lack of experience with the pitfalls of large software projects, as well as the significant technical challenges. Originally scheduled for delivery in 1965 (for the simplest versions) and 1966 (for the more complex ones), it ended up being a year late — it was not released in its first production versions until 1966 and 67 (PCP and MVT, respectively).
A family of simple alternative systems, BOS (Basic Operating System, for the smallest machines), TOS (Tape Operating System, for machines with only tape drives), and DOS (Disk Operating System), was therefore hurriedly put together to allow customers to use the new machines.
Later development
Although intended as a temporary interim tool, DOS survives today, having made the transition to virtual storage as DOS/VS, which later became DOS/VSE, then just VSE, and finally its current form, VSE/ESA.
When virtual addressing hardware was later developed for the System/370, the OS/360 systems were upgraded and renamed; MFT became OS/VS1 and MVT became OS/VS2. OS/VS2 was announced in two forms: OS/VS2 Release 1, aka SVS (Single Virtual Storage) and OS/VS2 Release 2, aka MVS (Multiple Virtual Storage). SVS was intended as a stepping stone from MVT to MVS, and is only of historical interest today. MVS is still used on the latest members of the IBM 360 Series and its successors, the System/370, System/390 and zSeries, although it has been known by several other names as time went by, most recently OS/390, now known as z/OS.
As of the turn of the millennium, the original OS/360 is in the public domain and can be downloaded freely. As well as being run on actual System/360 hardware, it can be executed on the free Hercules emulator which runs under GNU/Linux, Windows, and Mac OS X.
Lessons
After his experience running the System/360 project, and later specifically in charge of the (by then long overdue) OS/360, Frederick P. Brooks wrote his acclaimed and famous book, The Mythical Man-Month, based on the problems encountered (and lessons learned) during the project. He cited OS/360 as a very realistic and comprehensive example of the second-system effect.
Further reading
- Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). IBM's 360 and Early 370 Systems. MIT Press, Cambridge, MA. (pp. 291-345)
External links
- [http://mcraeclan.com/links/Computers/IBMMainframeHistory/mvshist1.htm MVS... a long history: OS/360]
- [http://ldworen.net/fun/os360obit.html Operating System/360 1965-1972]
Category:IBM software
Category:Mainframe computers
Category:Operating systems
Michigan Terminal SystemMTS is an operating system for IBM System/360 and its successors that was developed jointly by the following institutions:
- University of Michigan
- Wayne State University
- Simon Fraser University
- University of Alberta
- University of British Columbia
- Rensselaer Polytechnic Institute
- Durham University
- University of Newcastle upon Tyne
Popular programs developed for MTS include MAD, the FORMAT text formatting system and the CONFER conferencing system from Robert Parnes.
MTS doesn't implement directories, but there is a de facto two-tier grouping of files owing to the inclusion in a file's name of its owner's four-character MTS callsign.
See also
- IBM Time Sharing Option (TSO)
- Multics
- MUSIC/SP
- time-sharing
Category:Operating systems
MulticsMultics (Multiplexed Information and Computing Service) was an extraordinarily influential early time-sharing operating system.
Overview
Initial planning and development for Multics started in 1964. Originally it was a cooperative project led by MIT (with Fernando Corbató), along with General Electric and Bell Labs. Bell Labs dropped out in 1969, and in 1970 GE's computer business, including Multics, was taken over by Honeywell.
Multics was conceived as a commercial product for GE, and it did achieve that for Honeywell, although it was not a very successful one. However, it had a powerful impact in the computer field, due to its many novel and valuable ideas. Although it was much derided at the time by its critics [http://www.multicians.org/myths.html], history has shown these complaints to be canards.
It had numerous features intended to result in high availability, so that it would produce a computing utility, similar to the telephone and electricity services. To achieve this, in addition to being modular in software structure, the hardware was too, and the system could grow in size by simply adding more of the appropriate resource - computing power, main memory, disk storage, etc. Separate Access Control Lists on every file provided flexible information sharing, but also provided complete privacy when needed. It contained a number of standard mechanisms to allow engineers to analyze the performance of the system, as well as a number of adaptive performance optimization mechanisms.
Novel ideas
Multics was an early operating system that implemented a single level store for data access, discarding the clear distinction between files (called segments in Multics) and process memory.
The memory of a process consisted solely of segments which were mapped into its address space; to read or write to them, the process simply used normal CPU instructions, and the operating system took care of making sure that all the modifications were saved to disk.
In POSIX terminology, it was as if every file was mmap()ed; however, in Multics there was no concept of process memory, separate from the memory used to hold mapped in files, as Unix has. All memory in the system was part of some segment, which appeared in the file system; this included the temporary scratch memory of the process, its kernel stack, etc.
(One disadvantage of this in practice, due only to the particular hardware architecture of the particular machines it ran on, and not a result of the basic concept, was that the size of segments was limited to 256K 36-bit words, roughly equal to 1 megabyte by today's standards, and therefore extra code had to be used to work on files larger than this, called multi-segment files. In the days before large databases and, later, huge bitmap graphics, this limit was rarely encountered.)
This led to the second of Multics' major new ideas, dynamic linking, in which a running process could request that other segments be added to its address space, segments which could contain code that it could then execute.
With this facility available, applications automatically used the latest version of any external routine they called, since those routines were kept in other segments, which were dynamically linked in only when a process first tried to begin execution in them. Since different processes, belonging to different users, could use different search rules, different users could end up using different versions of external routines automatically.
Equally importantly, with the appropriate settings on the Multics security facilities, the code in the other segment could then gain access to data structures maintained in a different process.
Thus, to interact with an application running in part as a daemon (in another process), a user's process simply performed a normal procedure call instruction, to a code segment which it had dynamically linked to (a code segment which implemented some operation associated with the daemon). The code in that segment could then modify data maintained and used in the daemon. When the action necessary to commence the request was completed, a simple procedure return instruction returned control of the user's process to the user's code.
It is worth noting that these two ideas, in their full power, are even now still not available in other widely used operating systems, despite the rapid and otherwise enormous advance in the computer field since the 1960s; although in more limited forms they are now becoming more widely accepted and available, e.g. dynamic linking.
Multics also supported extremely aggressive on-line reconfiguration; CPUs, memory banks, disk drives, etc. could all be added and removed while the system continued operating; being added into service, or removed from it, as required.
(In fact, it was common practice at the MIT system, where most early software development was done, to split the system — which was a multi-processor system — into two separate systems during off-hours by incrementally removing enough components to form a second working system, leaving the rest still running the original logged-in users. System software development testing could be performed on the second machine; when testing was over, the components of the second system would be added back onto the main user system, without ever having shut it down.)
Since multiple CPUs were thus supported, it was thus one of the earliest multi-processor systems.
Multics was also notable for its early emphasis on computer security by design, and Multics was possibly the very first operating system to be designed as a secure system from the ground up. In spite of this, early versions of Multics were broken into, not once, but repeatedly.
This led to further work on improved security that both prefigured modern security engineering techniques, and made the system much more secure; once the second-generation hardware base was adopted, with hardware support for security rings (a multi-level refinement of the concept of master mode), break-ins became very rare.
In addition to having been the first operating system to provide a hierarchical file system, filenames could be of almost arbitrary length and syntax; a given file or directory could have multiple names (typically a long and short form); and symbolic links between directories were also supported.
It was the first to use the now-standard concept of having per-process stacks in the kernel, with a separate stack for each security ring. It was also one of the first written in a high level language; PL/I was used, though the Burroughs B5000 system, which used ALGOL, preceded Multics.
Project history
Multics was developed initially for the GE-645 mainframe, a 36-bit system; later, it was supported on the Honeywell 6180 series machines.
Bell Labs pulled out of the project in 1969; some of the people who had worked on it there went on to create the Unix system. Though superficially, UNIX shows the influence of Multics in many areas, down to the naming of commands. The design philosophy was quite different, however, focusing on keeping the system as small and as simplistic as possible, and thus correcting what was seen as the deficiencies of Multics. The name "Unix" (originally "Unics") is itself a hack on "Multics". The U in UNIX is rumoured to stand for "Uniplexed" as opposed to the "Multiplexed" of Multics, further underscoring the designers' rejections of Multics' complexity in favour of a more straightforward and workable approach.
Honeywell bought G.E.'s computer division, released a better hardware base, and continued system development until 1985. About 80 multi-million-dollar sites were installed, at universities, industry, and government sites. The French university system had quite a few in the early 1980s. After Honeywell stopped supporting Multics, users migrated to other systems including the Unix system.
The last Multics machine was shut down on October 31, 2000 at the Canadian Department of National Defence.
Retrospective observations
It is more than a little startling to realize that the permanently resident kernel of this powerful multi-processor mainframe computing utility, much derided in its day as being too large and too complex, was a mere 135 Kbytes of code. The first MIT GE-645 had 512K words of memory (2 Mbytes), so the kernel only used a moderate portion of Multics main memory.
Measured another way, the entire system, including not just the operating system, but also the complex PL/I compiler, user commands, and subroutine libraries, consisted of about 1500 total source modules. These averaged roughly 200 lines of source code each, and compiled to produce a total of roughly 4.5 Mbytes of procedure code, which though small today was fairly large by the standards of the day.
Multics compilers generally optimised more for code density than CPU performance, for example using small sub-routines called operators for short standard code-sequences, making direct comparison of object code size with more modern systems less useful. High code density was a good optimisation choice for a multi-user system with expensive main memory, such as Multics.
See also
- Fernando J. Corbató, leader of the project while M.I.T. was involved
- Jerome H. Saltzer
- Jack B. Dennis
- Peter J. Denning
- Robert M. Graham
- Victor A. Vyssotsky
Further reading
The literature contains a large number of papers about Multics, and various components of it; a fairly complete list is available [http://www.multicians.org/biblio.html here]. The most important and/or informative ones are listed below.
- F. J. Corbató, V. A. Vyssotsky, [http://www.multicians.org/fjcc1.html Introduction and Overview of the Multics System] (AFIPS 1965) is a good introduction to the system..
- F. J. Corbató, C. T. Clingen, J. H. Saltzer, [http://www.multicians.org/f7y.html Multics -- The First Seven Years] (AFIPS, 1972) is an excellent review, after a considerable period of use and improvement.
Further reading - technical details
- Jerome H. Saltzer, [http://ncstrl.mit.edu/Dienst/UI/2.0/Describe/ncstrl.mit_lcs%2fLCS-TR-123?abstract=saltzer Introduction to Multics] (MIT Project MAC, 1974) is a considerably longer introduction to the system, geared towards actual users.
- Elliott I. Organick, The Multics System: An Examination of Its Structure (MIT Press, 1972) is the standard work on the system, although it documents an early version, and some features described therein never appeared in the actual system.
- V. A. Vyssotsky, F. J. Corbató, R. M. Graham, [http://www.multicians.org/fjcc3.html Structure of the Multics Supervisor] (AFIPS 1965) describes the basic internal structure of the Multics kernel.
- Jerome H. Saltzer, [http://ncstrl.mit.edu/Dienst/UI/2.0/Describe/ncstrl.mit_lcs/LCS-TR-30?abstract=saltzer Traffic Control in a Multiplexed Computer System] (MIT Project MAC, June 1966) is the original description of the idea of switching kernel stacks; one of the classic papers of computer science.
- R. C. Daley, P. G. Neumann, [http://www.multicians.org/fjcc4.html A General Purpose File System for Secondary Storage] (AFIPS, 1965) describes the file system, including the access control and backup mechanisms.
- A. Bensoussan, C. T. Clingen, R. C. Daley, [http://www.multicians.org/multics-vm.html The Multics Virtual Memory: Concepts and Design], (ACM SOSP, 1969) describes the Multics memory system in some detail.
- Paul Green, [ftp://ftp.stratus.com/pub/vos/multics/pg/mvm.html Multics Virtual Memory - Tutorial and Reflections] is a good in-depth look at the Multics storage system.
- Roger R. Schell, Dynamic Reconfiguration in a Modular Computer System (MIT Project MAC, 1971) describes the reconfiguration mechanisms.
Further reading - security
- Paul A. Karger, Roger R. Schell, [http://csrc.nist.gov/publications/history/karg74.pdf Multics Security Evaluation: Vulnerability Analysis] (Air Force Electronic Systems Division, 1974) describes the classic attacks on Multics security by a "tiger team".
- Jerome H. Saltzer, Michael D. Schroeder, [http://cap-lore.com/CapTheory/ProtInf/ The Protection of Information in Computer Systems] (Proceedings of the IEEE, September 1975) describes the fundamentals behind the first round of security upgrades; another classic paper.
- M. D. Schroeder, D. D. Clark, J. H. Saltzer, D. H. Wells. [http://ncstrl.mit.edu/Dienst/UI/2.0/Describe/ncstrl.mit_lcs%2fLCS-TR-196?abstract=saltzer Final Report of the Multics Kernel Design Project] (MIT LCS, 1978) describes the security upgrades added to produce an even more improved version.
- Paul A. Karger, Roger R. Schell, [http://www.acsac.org/2002/papers/classic-multics.pdf Thirty Years Later: Lessons from the Multics Security Evaluation] (IBM, 2002) is an interesting retrospective which compares actual deployed security in today's hostile environment with what was demonstrated to be possible decades ago. It concludes that Multics offered considerably stronger security than most systems commercially available in 2002.
External links
- http://www.multicians.org/ is a great site with a lot of material
- [http://www.multicians.org/papers.html Multics papers online]
- [http://www.multicians.org/myths.html Myths] discusses numerous myths about Multics in some detail, including the myths that it failed, that it was big and slow, and numerous other canards, as well as a few understandable misapprehensions
- [http://www.multicians.org/security.html Multics security]
- [http://www.mit.edu:8001/afs/net/user/srz/www/multics.html Multics repository]
- [ftp://ftp.stratus.com/pub/vos/multics/multics.html Multics repository at Stratus Computer]
- [http://www.vaxman.de/historic_computers/multics/multics.html Multics at Universitaet Mainz]
Category:Operating systems
ja:Multics
Category:Operating system technologyThis category is for articles about the architecture, components, and technology of operating systems. For articles about particular operating systems, see the :Category:Operating systems and some of its subcategories.
Category:Operating systems
ja:Category:オペレーティングシステムの仕組み
Castellers de Vilafranca
Enllaços externs
- [http://www.castellersdevilafranca.com Castellers de Vilafranca]
Categoria:Colles castelleres
seo elitarne.info jastrzbia gra pensjonat gry sportowe Kabarety
|
|
|
| :: RELATED NEWS :: |
Al Bahr al Ahmar, Sudan
Al-Bahr-al-Ahmar (Rode zee) is een van de 26 wilayat (staten) van Soedan. Het ligt op het grondgebied van de voornamelijke politieke regio Ash Sharqlyah.
Het gebied beslaat 218.887 km² en heeft een bevolking van ongeveer 700.000 (2000).
De hoofdstad is Port Soedan. Het lag voor een gedeelte in Egyp
|
Plantengemeenschap
Een plantengemeenschap is een karakteristieke groep van planten en heeft een zich regelmatig herhalende structuur zowel in hoogte en breedte als in de tijd. Een dergelijke groep van planten heeft een bestendigheid en stabiliteit, die niet direct af te leiden is uit die van de afzonderlijke plantensoorten en kan zichzelf binnen bepaalde grenzen in stand houden.
Verschillende plantengemeenschappen kunnen elkaar opvolgen (successie) door verandering van het milieu. Pioniergemeenschappen ontwikkelen zich het eerst op kale grond, waarna
|
Kraak (schip)
De kraak is een historisch zeilschip, ontwikkeld in de tweede helft van de 15e eeuw. De kraak heeft veel gemeen met de karveel waaruit hij is ontwikkeld. Een groot karveel met meerdere masten vierkant getuigd werd door de Portugezen nao en in Spanje carraca genoemd, wat verbasterd werd tot kraak.
De kraak was een zeer zeewaardig schip, en was dan ook geschikt voor lange tochten en ontdekkingsre
|
|
Ichthus (studentenvereniging)
Ichthus is een christelijke studentenvereniging voor studenten in het hoger beroepsonderwijs en het wetenschappelijk onderwijs, verspreid over heel Nederland. Er zijn Ichthusverenigingen in Amsterdam, Eindhoven, Nederlands admiraal uit de zeventiende eeuw.
Van der Hulst werd op 11 april 1619 geboren in Amsterdam. In 1650 werd hij benoemd tot buitengewoon kapitein. Het volgend jaar werd hij vlagkapitein onder Read More... |
Wetenschappelijk onderwijs
Een universiteit is een instelling voor wetenschappelijk onderwijs, onderzoek en dienstverlening.
Geschiedenis
Al in de klassieke oudheid waren er na het elementaire onderwijs in rekenen en schrijven hogere opleidingen die je kon volgen als je er voor wilde betalen. Dat was overigens alleen weggelegd voor kinderen of gunstelingen van 16e eeuw en 17e eeuw. Het woord galjoen doet onmiddellijk denken aan de Spaanse galjoenen die vanuit de Nieuwe Wereld goud en zilver naar Spanje brachten.
Een galjoen is een verdere ontwikkeling van de kraak, en versc
|
|