Определение
Параллельные вычислительные системы — это физические компьютерные, а также программные системы, реализующие тем или иным способом параллельную обработку данных на многих вычислительных узлах.
Идея распараллеливания вычислений основана на том, что большинство задач может быть разделено на набор меньших задач, которые могут быть решены одновременно. Обычно параллельные вычисления требуют координации действий.
Параллельные вычисления существуют в нескольких формах:
параллелизм на уровне битов;
параллелизм на уровне инструкций;
параллелизм данных;
параллелизм задач.
Параллельные вычисления использовались много лет в основном в высокопроизводительных вычислениях, но в последнее время к ним возрос интерес вследствие существования физических ограничений на рост тактовой частоты процессоров. Параллельные вычисления стали доминирующей парадигмой в архитектуре компьютеров, в основном в форме многоядерных процессоров.
Параллелизм на уровне битов:
Эта форма параллелизма основана на увеличении размера машинного слова. Увеличение размера машинного слова уменьшает количество операций, необходимых процессору для выполнения действий над переменными, чей размер превышает размер машинного слова.
Параллелизм на уровне инструкций:
Компьютерная программа — это, по существу, поток инструкций, выполняемых процессором. Но можно изменить порядок этих инструкций, распределить их по группам, которые будут выполняться параллельно, без изменения результата работы всей программы.
Параллелизм данных:
Основная идея подхода, основанного на параллелизме данных, заключается в том, что одна операция выполняется сразу над всеми элементами массива данных. Различные фрагменты такого массива обрабатываются на векторном процессоре или на разных процессорах параллельной машины. Распределением данных между процессорами занимается программа. Векторизация или распараллеливание в этом случае чаще всего выполняется уже на этапе компиляции — перевода исходного текста программы в машинные команды. Роль программиста в этом случае обычно сводится к заданию настроек векторной или параллельной оптимизации компилятору, директив параллельной компиляции, использованию специализированных языков для параллельных вычислений.
Параллелизм задач (многопоточность):
Стиль программирования, основанный на параллелизме задач, подразумевает, что вычислительная задача разбивается на несколько относительно самостоятельных подзадач и каждый процессор загружается своей собственной подзадачей.
Классификация параллельных вычислительных систем
Общая классификация архитектур ЭВМ по признакам наличия параллелизма в потоках команд и данных. Была предложена в 70-е годы Майклом Флинном (Michael Flynn). Все разнообразие архитектур ЭВМ в этой таксономии Флинна сводится к четырем классам:
ОКОД — Вычислительная система с одиночным потоком команд и одиночным потоком данных (SISD, Single Instruction stream over a Single Data stream).
ОКМД — Вычислительная система с одиночным потоком команд и множественным потоком данных (SIMD, Single Instruction, Multiple Data) - векторные архитектуры.
МКОД — Вычислительная система со множественным потоком команд и одиночным потоком данных (MISD, Multiple Instruction Single Data).
МКМД — Вычислительная система со множественным потоком команд и множественным потоком данных (MIMD, Multiple Instruction Multiple Data) - включает в себя многопроцессорные системы, где процессоры обрабатывают множественные потоки данных.
Определение
Unix («UNIX» является зарегистрированной торговой маркой организации The Open Group) — семейство переносимых, многозадачных и многопользовательских операционных систем, которые основаны на идеях оригинального проекта AT&T Unix, разработанного в 1970-х годах в исследовательском центре Bell Labs Кеном Томпсоном, Деннисом Ритчи и другими.
ОС, прошедшие сертификацию на соответствие стандарту Single UNIX Specification, - имеют право называться «UNIX», остальные – UNIX-подобными ОС.
Особенности:
Модульный дизайн;
Использование текстовых файлов для настройки и управления системой;
Каждая задача выполняется отдельной утилитой;
Взаимодействие между утилитами через единую файловую систему;
Для работы с утилитами используется командная оболочка;
Многопользовательские системы;
Многозадачные системы;
Мультиплатформенность (ядро легко приспособить под людой процессор);
Представление физических и виртуальных устройств в виде файлов;
Использование конвейеров из нескольких программ, каждая из которых выполняет одну задачу.
Применение
Используются на суперкомпьютерах, серверах, часто встречаются и на рабочих станциях.
История
Unix была разработана в конце 1960-х годов сотрудниками Bell Labs, в первую очередь Кеном Томпсоном, Деннисом Ритчи и Дугласом Макилроем. Первые версии Unix были написаны на ассемблере и не имели встроенного компилятора с языком высокого уровня.
В 1972 году была выпущена вторая редакция Unix, переписанная на языке Би.
В 1973 году вышла третья редакция Unix со встроенным компилятором языка Си.
15 октября 1973 года появилась четвёртая редакция, с переписанным на Си системным ядром.
В 1975 — пятая редакция, полностью переписанная на Си.
С 1974 года Unix стал распространяться среди университетов и академических учреждений.
С 1975 года началось появление новых версий, разработанных за пределами Bell Labs, и рост популярности системы. Выход шестой версии.
В 1978 году появилась седьмая редакция была последней единой версией Unix. Именно в ней появился близкий к современному интерпретатор командной строки Bourne shell.
1982 год – появление коммерческой UNIX System III.
1978 год - BSD Unix, созданный в университете Беркли.
1983 Ричард Столлман объявил о создании проекта GNU — попытки создания свободной Unix-подобной операционной системы с нуля, без использования оригинального исходного кода.
1991 – Линус Торвальдс опубликовал ядро Linux.
1993 – появление дистрибутива FreeBSD.
Unix — семейство переносимых, многозадачных и многопользовательских операционных систем, которые основаны на идеях оригинального проекта AT&T Unix, разработанного в 1970-х годах в исследовательском центре Bell Labs Кеном Томпсоном, Деннисом Ритчи и другими.
Операционные системы семейства Unix характеризуются модульным дизайном, в котором каждая задача выполняется отдельной утилитой, взаимодействие осуществляется через единую файловую систему, а для работы с утилитами используется командная оболочка.
Особенности Unix-подобных систем от других операционных систем:
Это изначально многопользовательские многозадачные системы. В Unix может одновременно работать сразу много людей, каждый за своим терминалом, при этом каждый из них может выполнять множество различных вычислительных процессов, которые будут использовать ресурсы именно этого компьютера.
Вторая колоссальная заслуга Unix — в её мультиплатформенности. Ядро системы разработано таким образом, что его легко можно приспособить практически под любой микропроцессор.
использование простых текстовых файлов для настройки и управления системой;
широкое применение утилит, запускаемых из командной строки;
взаимодействие с пользователем посредством виртуального устройства — терминала;
представление физических и виртуальных устройств и некоторых средств межпроцессового взаимодействия в виде файлов;
использование конвейеров из нескольких программ, каждая из которых выполняет одну задачу.