Разделение времени
Разделе́ние вре́мени (англ. time-sharing) — способ распределения вычислительных ресурсов между многими пользователями с помощью мультипрограммирования и многозадачности[1]. Появление данной концепции в начале 1960-х годов и активное развитие в 1970-е привело к значительному технологическому прорыву в истории вычислительной техники.
Позволяя многим пользователям одновременно взаимодействовать с одним компьютером, разделение времени значительно снизило цену предоставления вычислительных мощностей, сделав возможным использование компьютера организациями и индивидами без необходимости его покупки. Также разделение времени содействовало разработке новых интерактивных программ.
История
Пакетная обработка
Первые компьютеры были очень дорогими и медленными устройствами. Обычно они предназначались для выполнения конкретного набора задач и управлялись с панели оператора, который вручную вводил короткие программы посредством изменения позиции переключателей на панели. Эти программы могли выполняться в течение нескольких часов или даже недель. Но когда скорость компьютеров начала расти, простой машины в связи с вводом очередной программы стал неприемлем. Методология пакетной обработки появилась с целью уменьшить время простоя машины при вводе программы. В пакетной обработке как только одна программа завершала выполнение, компьютер загружал следующую.
Чтобы поддерживать процесс пакетной обработки, программисты использовали перфораторы перфокарт или перфолент. Это были недорогие устройства, позволившие создавать программы в режиме «офлайн». После набора программы её передавали операторам машины, которые занимались планированием времени её запуска. Важные программы запускались в первую очередь, менее важные — после выполнения всех остальных. Когда программа, наконец, выполнялась, результат её работы обычно в распечатанном виде возвращался программисту. Весь процесс мог занимать много времени, в течение которого программист вообще не видел компьютера.
Альтернатива позволить пользователю управлять компьютером напрямую была, как правило, слишком дорога, чтобы её вообще могли рассматривать. Эта ситуация ограничивала интерактивную разработку лишь теми организациями, которые могли позволить себе тратить вычислительные циклы: в основном это были крупные университеты.
Разделение времени
Концепция «разделения времени» появилась как результат понимания того, что хотя каждый отдельный пользователь использует компьютер неэффективно, группа пользователей вместе — гораздо эффективнее. Это связано с самой формой взаимодействия: пользователь вводит информацию посимвольно, между нажатиями клавиш следует пауза, за время которой компьютер может выполнить тысячи операций, но если одновременно работает группа пользователей, паузы одного пользователя могут заполняться активностью других. Если подобрать оптимальный размер группы, эффективность использования компьютера значительно повысится. Точно так же пользователям могут предоставляться интервалы времени, которые компьютер тратит на ожидание операций чтения диска, ленты или передачи по сети.
По сравнению с пакетной обработкой реализация системы, использующей преимущество разделения времени, сложна. Пакетная обработка являлась просто формой организации работы с ранними компьютерными системами. Компьютеры продолжали выполнять одну программу для одного пользователя зараз, а всем, что изменила пакетная обработка, было сокращение времени между запусками программ. Разработка системы, которая поддерживала бы одновременную работу многих пользователей, принципиально отличалась от этого. Контексты («состояния») каждого пользователя и его программ должны были храниться в машине и иметь возможность быстро заменяться другими. Переключение контекста требовало значительного количества процессорных тактов и было большой проблемой для медленных машин той эпохи. Тем не менее, так как компьютеры быстро увеличивали скорость, и, что ещё важнее, размер памяти, в которой могли храниться состояния пользователей, накладные расходы на разделение времени соответственно уменьшались.
Полагают, что эта концепция была впервые описана Джоном Бэкусом во время летней сессии 1954 года в Массачусетском технологическом институте[2], а затем Бобом Бемером в начале 1957 года в статье «How to consider a computer» для журнала Automatic Control Magazine. Первый проект реализации системы с разделением времени был начат Джоном Маккарти в конце 1957 года, на модификации IBM 704, и позже — на модифицированном IBM 7090. Хотя он и бросил работу ради проекта MAC и других, один из полученных результатов, известный как Compatible Time-Sharing System или CTSS, был продемонстрирован в ноябре 1961 года. Утверждается, что CTSS — первая система с разделением времени. Она использовалась до 1973 года. Другим претендентом на первую демонстрацию системы разделения времени была созданная Дональдом Блитцером PLATO II, публично демонстрировавшаяся в Роберт Аллертон Парк в Университете Иллинойса в начале 1961 года. Блитцер говорил, что проект PLATO получил бы патент на разделение времени, если бы только Университет Иллинойса знал, как обрабатывать заявки на патент быстрее. Первой коммерчески успешной системой разделения времени была Dartmouth Time Sharing System.
Развитие
В период с конца 1960-х до конца 1970-х годов компьютерные терминалы подключались к крупным мейнфреймам организаций (централизованным вычислительным системам), которые во многих реализациях последовательно опрашивали терминалы, чтобы увидеть, есть ли какие-либо дополнительные данные или действия, запрошенные пользователем компьютера. В дальнейшем вместо опроса терминалов стали использоваться прерывания, а для связи — применяться технологии параллельной передачи данных, такие как стандарт IEEE 488. Как правило, компьютерные терминалы размещались в высших учебных заведениях и использовались так же, как настольные (персональные) компьютеры сегодня. В самом начале эпохи персональных компьютеров многие из них фактически использовались как терминалы для систем с разделением времени.
С развитием микрокомпьютеров в начале 1980-х годов разделение времени отошло на второй план, поскольку отдельные микропроцессоры были достаточно дёшевы для того, чтобы один человек мог единолично распоряжаться всем процессорным временем, даже во время бездействия. Тем не менее интернет вернул популярность концепции разделения времени. Дорогие корпоративные серверные «фермы» стоимостью в миллионы долларов предоставляют тысячам пользователей доступ к одним и тем же общим ресурсам. Как и ранние последовательные терминалы, сайты имеют дело в основном с всплесками активности, за которыми следуют периоды простоя. Подобный «всплесковый» характер позволяет использовать сервис множеству посетителей сайта одновременно так, что ни один из них не замечает каких-либо задержек передачи данных, пока загрузка серверов не станет слишком велика.
Известные системы с разделением времени
- Allen-Babcock RUSH (Remote Users of Shared Hardware) Time-sharing System on IBM S/360 hardware[3] → Tymshare
- AT&T Bell Labs Unix → UC Berkeley BSD Unix
- BBN PDP-1 Time-sharing System → Massachusetts General Hospital PDP-1D → MUMPS
- BBN TENEX → DEC TOPS-20, Foonly FOONEX, MAXC OS at PARC, Stanford Low Overhead Timesharing System (LOTS)
- Berkeley Timesharing System at UC Berkeley Project Genie → Scientific Data Systems SDS 940 (Tymshare, BBN, SRI, Community Memory) → BCC 500 → MAXC at PARC
- Burroughs Time-sharing MCP → HP 3000 MPE
- Cambridge Multiple Access System was developed for the Titan, the prototype Atlas 2 computer built by Ferranti for the University of Cambridge.[4] This was the first time-sharing system developed outside the United States, and which influenced the later development of UNIX.
- CDC MACE, APEX → Kronos → NOS → NOS/VE
- CompuServe, also branded as Compu-Serv, CIS.
- Compu-Time, Inc.,[5] on Honeywell 400/4000, started in 1968 in Ft Lauderdale, Florida, moved to Daytona Beach in 1970.[источник не указан 3808 дней]
- Dartmouth Time Sharing System (DTSS) → GE Time-sharing → GEnie
- DEC PDP-6 Time-sharing Monitor → TOPS-10 → TSS-8, RSTS-11, RSX-11 → VAX/VMS
- HP 2000 Time-Shared BASIC
- IBM CALL/360, CALL/OS — using IBM 360/50
- IBM CP-40 → CP-67 → CP-370 → CP/CMS → VM/CMS
- IBM TSO for OS/MVT → for OS/VS2 → for MVS → for z/OS
- IBM TSS/360 → TSS/370
- International Timesharing Corporation on dual CDC 3300 systems.[5]
- MIT CTSS → MULTICS (MIT / GE / Bell Labs) → Unix
- MIT Time-sharing System for the DEC PDP-1 → ITS
- McGill University MUSIC → IBM MUSIC/SP
- Michigan Terminal System, on the IBM S/360-67, S/370, and successors.
- Michigan State University CDC SCOPE/HUSTLER System
- National CSS VP/CSS, на серии IBM 360; originally based on IBM’s CP/CMS.
- Oregon State University OS-3, on CDC 3000 series.
- Prime Computer PRIMOS
- RAND JOSS → JOSS-2 → JOSS-3
- RCA TSOS → Univac / Unisys VMOS → VS/9
- Service in Informatics and Analysis (SIA), on CDC 6600 Kronos.
- System Development Corporation Time-sharing System, on the AN/FSQ-32.
- Stanford ORVYL and WYLBUR, on IBM S/360-67.
- Stanford PDP-1 Time-sharing System → SAIL → WAITS
- Time Sharing Ltd. (TSL)[6] on DEC PDP-10 systems → Automatic Data Processing (ADP), первая коммерческая система распределения времени в Европе и первая двойная (fault tolerant) система распределения времени.
- Tymshare SDS-940 → Tymcom X → Tymcom XX
- UC Berkeley CAL-TSS, on CDC 6400.
- XDS UTS → CP-V → Honeywell CP-6
Примечания
- ↑ DEC TIMESHARING (1965), by Peter Clark, The DEC Professional, VOLUME 1, Number 1
- ↑ Backus, John, Computer Advanced Coding Techniques Архивная копия от 29 сентября 2018 на Wayback Machine, MIT 1954, page 16-2. The first known description of computer time-sharing.
- ↑ «A Brief Description of Privacy Measures in the RUSH Time-Sharing System» Архивная копия от 5 марта 2016 на Wayback Machine, J.D. Babcock, AFIPS Conference Proceedings, Spring Joint Computer Conference, Vol. 30, 1967, pp. 301—302.
- ↑ Hartley, D. F. (1968), The Cambridge multiple-access system: user's reference manual, Cambridge: Cambridge Univ. Press, ISBN 978-0901224002
- ↑ 1 2 Auerbach Guide to Time Sharing (неопр.). — Auerbach Publishers, Inc., 1973. Архивировано 4 марта 2016 года.
- ↑ «Time Sharing» Архивная копия от 5 марта 2016 на Wayback Machine, James Miller. Retrieved 30 November 2013.
Литература
- Ж. Бертэн, М. Риту, Ж. Ружие. Работа ЭВМ с разделением времени / под ред. С.С. Лаврова; пер. с фр. В.И. Рыбаченкова и В.И. Филиппова. — 2-е изд. — М.: Наука, 1972. — 207 с.
- Г.Н. Соловьев, В.Д. Никитин. Операционные системы ЭВМ. — М.: Высшая школа, 1989. — 255 с. — ISBN 5-06-000131-8.
Ссылки
- Nelson, Theodor (1974). Computer Lib: You Can and Must Understand Computers Now; Dream Machines: «New Freedoms Through Computer Screens— A Minority Report». Self-published. ISBN 0-89347-002-3. pp. 56-57.
- «Time Sharing Supervisor Programs», notes comparing the supervisor programs of CP-67, TSS/360, the Michigan Terminal System (MTS), and Multics by Michael T. Alexander, Advanced Topics in Systems Programming (1970, revised 1971), University of Michigan Engineering Summer Conference.
- «The Computer Utility As A Marketplace For Computer Services», Robert Frankston's MIT Master’s Thesis, 1973.
- Reminiscences on the Theory of Time-Sharing by John McCarthy, 1983.
- Origins of timesharing by Bob Bemer.
- «40 years of Multics, 1969—2009», an interview with Professor Fernando J. Corbató on the history of Multics and origins of time-sharing, 2009.
- «Mainframe Computers: The Virtues of Sharing», Revolution: The First 2000 Years of Computing, Computer History Museum Exhibition, January 2011.
- «Mainframe Computers: Timesharing as a Business», Revolution: The First 2000 Years of Computing, Computer History Museum Exhibition, January 2011.