Система с разделением времени¶
Система с разделением времени (англ. time-sharing system) — это метод организации вычислительного процесса, при котором ресурсы одного центрального процессора (или нескольких процессоров) поочерёдно предоставляются множеству пользователей или задач в течение коротких, фиксированных или переменных интервалов времени (квантов). Основная цель такой системы — создать иллюзию одновременной и непрерывной работы каждого пользователя с вычислительной машиной, обеспечивая интерактивное взаимодействие в режиме реального времени.
¶История
¶Предпосылки возникновения
В 1950-х годах компьютеры работали преимущественно в пакетном режиме (batch processing): пользователь передавал задание на перфокартах или магнитных лентах оператору, который запускал его на выполнение. Результат возвращался через несколько часов или дней. Такой подход был крайне неэффективен для задач, требующих оперативного вмешательства человека, и не позволял нескольким пользователям одновременно работать с машиной.
¶Разработка первых систем
Идея разделения времени впервые была предложена в конце 1950-х годов. В 1959 году Джон Маккарти, один из пионеров искусственного интеллекта, в Массачусетском технологическом институте (MIT) сформулировал концепцию «временного разделения» (time-sharing). В том же году Кристофер Стрейчи из Кембриджского университета опубликовал доклад «Time Sharing in Large Fast Computers», где описал принципы организации многопользовательского доступа.
Первой реализованной системой с разделением времени считается CTSS (Compatible Time-Sharing System), разработанная в MIT под руководством Фернандо Корбато. CTSS была запущена в 1961 году на компьютере IBM 709. Она позволяла одновременно работать до 30 пользователям через телетайпы, обеспечивая время отклика порядка нескольких секунд.
¶Развитие и коммерциализация
В 1960-х годах системы с разделением времени стали активно развиваться. В 1964 году Дартмутский колледж запустил DTSS (Dartmouth Time-Sharing System), на котором был создан язык BASIC. В 1965 году MIT совместно с Bell Labs и General Electric начали проект MULTICS (Multiplexed Information and Computing Service) — амбициозную систему, которая должна была поддерживать сотни пользователей. Хотя MULTICS не получил широкого распространения, его идеи легли в основу операционной системы UNIX, созданной Кеном Томпсоном и Деннисом Ритчи в 1969 году.
К началу 1970-х годов системы с разделением времени стали коммерчески доступны. Компании IBM, Digital Equipment Corporation (DEC), Burroughs и другие выпускали специализированные операционные системы (например, IBM TSO, DEC RSTS/E, Unix). В СССР аналогичные разработки велись в Институте точной механики и вычислительной техники (ИТМиВТ) и других организациях; в частности, в 1970-х годах была создана система «Диспак» для ЭВМ БЭСМ-6, поддерживавшая до 32 пользователей.
¶Упадок и трансформация
С распространением персональных компьютеров в 1980-х годах потребность в многопользовательских системах с разделением времени для массового пользователя снизилась. Однако принципы разделения времени остались фундаментом современных операционных систем (Windows, Linux, macOS) и серверных решений. Они также легли в основу облачных вычислений и виртуализации.
¶Принцип работы
¶Планирование задач
Центральным элементом системы с разделением времени является планировщик задач (scheduler). Он распределяет процессорное время между активными процессами (задачами) по определённому алгоритму. Наиболее распространённый алгоритм — круговое планирование (Round Robin): каждому процессу выделяется фиксированный квант времени (обычно от 10 до 100 миллисекунд), после чего управление передаётся следующему процессу в очереди. Если процесс не завершился за отведённый квант, он приостанавливается и помещается в конец очереди.
¶Переключение контекста
Для переключения между задачами система сохраняет состояние текущего процесса (регистры, счётчик команд, стек) в специальной области памяти — контексте. Затем загружается контекст следующего процесса, и выполнение продолжается с места остановки. Этот процесс называется переключением контекста (context switch) и занимает некоторое время (накладные расходы), которое должно быть минимизировано.
¶Управление памятью
Для изоляции процессов друг от друга и от ядра операционной системы используется механизм виртуальной памяти. Каждый процесс работает в собственном адресном пространстве, которое отображается на физическую память с помощью таблиц страниц. Это предотвращает случайное или злонамеренное вмешательство одного процесса в данные другого.
¶Ввод-вывод и прерывания
Система с разделением времени должна эффективно обрабатывать операции ввода-вывода (I/O). Когда процесс инициирует операцию чтения с диска или ожидает ввода с клавиатуры, он блокируется, и процессор переключается на другой процесс. После завершения I/O генерируется прерывание, которое возвращает процесс в очередь готовых к выполнению.
¶Классификация
¶По типу планирования
- С фиксированным квантом — каждому процессу выделяется строго определённый квант времени (например, 50 мс). Простота реализации, но может быть неэффективна при большом разбросе времени выполнения задач.
- С адаптивным квантом — квант может изменяться в зависимости от приоритета процесса, его загрузки или других факторов. Позволяет улучшить отзывчивость для интерактивных задач.
- С приоритетами — процессы с более высоким приоритетом получают процессор раньше или на более длительный срок. Используется в системах реального времени.
¶По масштабу
- Локальные — обслуживают пользователей, подключённых к одному компьютеру через терминалы (например, классические системы 1960-1970-х годов).
- Сетевые — работают на сервере, к которому пользователи подключаются через сеть (например, Unix-серверы с удалённым доступом по SSH).
- Облачные — предоставляют вычислительные ресурсы множеству клиентов через интернет с использованием виртуализации (например, Amazon Web Services, Google Cloud).
¶Преимущества и недостатки
¶Преимущества
- Интерактивность — пользователь получает быстрый отклик на свои действия, что позволяет эффективно отлаживать программы, редактировать тексты и работать с данными в реальном времени.
- Эффективное использование ресурсов — процессор не простаивает, пока один пользователь думает или вводит данные; в это время выполняются задачи других пользователей.
- Совместная работа — несколько пользователей могут одновременно работать с одними и теми же данными, базами данных или приложениями.
- Снижение стоимости — вместо покупки множества отдельных компьютеров можно использовать один мощный сервер, к которому подключаются дешёвые терминалы.
¶Недостатки
- Накладные расходы — переключение контекста и планирование требуют дополнительного времени и памяти, что снижает общую производительность системы.
- Зависимость от центрального сервера — при отказе сервера все пользователи теряют доступ к системе.
- Ограничения по масштабируемости — при большом количестве активных пользователей время отклика может существенно возрасти, особенно если система не спроектирована для высокой нагрузки.
- Безопасность — изоляция процессов не всегда идеальна; возможны утечки данных между пользователями или атаки на ядро системы.
¶Применение
¶Историческое
Системы с разделением времени активно использовались в университетах, научно-исследовательских институтах и крупных корпорациях в 1960-1980-х годах. Они позволяли студентам и сотрудникам одновременно работать с дорогостоящими мейнфреймами, не дожидаясь очереди. Например, в MIT система CTSS использовалась для обучения программированию, а в Дартмутском колледже — для массового внедрения языка BASIC.
¶Современное
В настоящее время принципы разделения времени реализованы в большинстве многозадачных операционных систем. Они используются:
- На серверах — для обслуживания множества пользователей, подключающихся по SSH, HTTP или другим протоколам.
- В облачных вычислениях — гипервизоры (например, VMware ESXi, KVM) распределяют процессорное время между виртуальными машинами, работающими на одном физическом сервере.
- В суперкомпьютерах — для параллельного выполнения множества задач, хотя там чаще применяется пакетный режим с планировщиками (например, SLURM).
- В операционных системах персональных компьютеров — Windows, Linux, macOS используют вытесняющую многозадачность, основанную на разделении времени, для одновременного запуска множества приложений.
¶Примеры известных систем
- CTSS (1961) — первая успешная система с разделением времени.
- MULTICS (1965) — проект, повлиявший на разработку UNIX.
- UNIX (1969) — операционная система, изначально спроектированная как многопользовательская с разделением времени.
- VMS (1977) — операционная система для компьютеров VAX от DEC, поддерживавшая разделение времени.
- Linux (1991) — современная Unix-подобная система, использует алгоритмы планирования CFS (Completely Fair Scheduler) и другие.
- Windows NT (1993) — ядро Windows, начиная с версии 3.1, использует вытесняющую многозадачность с разделением времени.
¶См. также
- Многозадачность
- Планировщик задач
- Операционная система
- Пакетный режим
- Виртуализация
¶Источники
- Корбато, Ф. Дж. (1962). The Compatible Time-Sharing System: A Programmer's Guide. MIT Press.
- Стрейчи, К. (1959). Time Sharing in Large Fast Computers. Proceedings of the International Conference on Information Processing.
- Таненбаум, Э. (2015). Современные операционные системы. 4-е изд. — СПб.: Питер.
- Керниган, Б., Ритчи, Д. (1978). The C Programming Language. Prentice Hall (глава об истории UNIX).
- Официальная документация Linux Kernel по планировщику CFS.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


