Функции ОС
Современные ОС — широко распространенные системы — во многом похожи друг на друга. Прежде всего это определяется требованием переносимости программного обеспечения. Именно для обеспечения этой переносимости был принят POSIX (Portable OS Interface based on uniX) — стандарт, определяющий минимальные функции по управлению файлами, межпроцессному взаимодействию и т.д., которые должна уметь выполнять система.
Кроме того, за четыре с лишним десятилетия, прошедших с момента разработки первых ОС, сообщество программистов достигло определенного понимания того, что: — при разработке ОС возникает много стандартных проблем и вопросов; — для большинства из этих проблем и вопросов существует набор стандартных решений; — некоторые из этих решений намного лучше, чем все альтернативные.
По современным представлениям, ОС должна уметь делать следующее:
· Обеспечивать загрузку пользовательских программ в оперативную память и их исполнение.
· Обеспечивать работу с устройствами долговременной памяти, такими как магнитные диски, ленты, оптические диски и т.д. Как правило, ОС управляет свободным пространством на этих носителях и структурирует пользовательские данные.
· Предоставлять более или менее стандартный доступ к различным устройствам ввода/вывода, таким как терминалы, модемы, печатающие устройства.
· Предоставлять некоторый пользовательский интерфейс. Слово некоторый здесь сказано не случайно — часть систем ограничивается командной строкой, в то время как другие на 90% состоят из средств интерфейса пользователя.
Существуют ОС, функции которых этим и исчерпываются. Одна из хорошо известных систем такого типа — дисковая операционная система MS DOS.
Более развитые ОС предоставляют также следующие возможности:
· Параллельное (точнее, псевдопараллельное, если машина имеет только один процессор) исполнение нескольких задач.
· Распределение ресурсов компьютера между задачами.
· Организация взаимодействия задач друг с другом.
· Взаимодействие пользовательских программ с нестандартными внешними устройствами.
· Организация межмашинного взаимодействия и разделения ресурсов.
· Защита системных ресурсов, данных и программ пользователя, исполняющихся процессов и самой себя от ошибочных и зловредных действий пользователей и их программ.
Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой.
Транслятор — программа или техническое средство, выполняющее трансляцию программы. Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати тексты программы и т.д.
Язык, на котором представлена входная программа, называется исходным языком, а сама программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом.
Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.
Язык процессоров (машинный код) обычно является низкоуровневым. Существуют платформы, использующие в качестве машинного язык высокого уровня (например, iAPX-432[5]), но они являются исключением из правила в силу сложности и дороговизны.
Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется компилятором.
Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и семантического анализов, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами.
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.
В случае, если исходный язык является языком ассемблера (низкоуровневым языком, близким к машинному языку), то компилятор такого языка называется ассемблером.
Противоположный метод реализации — когда программа исполняется с помощью интерпретатора вообще без трансляции. Интерпретатор программно моделирует машину, цикл выборки-исполнения которой работает с командами на языках высокого уровня, а не с машинными командами. Такое программное моделирование создаёт виртуальную машину, реализующую язык. Этот подход называется чистой интерпретацией.
Достоинство чистого интерпретатора: отсутствие промежуточных действий для трансляции упрощает реализацию интерпретатора и делает его удобнее в использовании, в том числе в диалоговом режиме. Недостаток — интерпретатор должен быть в наличии на целевой машине, где должна исполняться программа. А свойство чистого интерпретатора, что ошибки в интерпретируемой программе обнаруживаются только при попытке выполнения команды (или строки) с ошибкой, можно признать как недостатком, так и достоинством.
Трансляция и интерпретация — разные процессы: трансляция занимается переводом программ с одного языка на другой, а интерпретация отвечает за исполнение программ. Однако, поскольку целью трансляции как правило является подготовка программы к интерпретации, то эти процессы обычно рассматриваются вместе. Например, языки программирования часто характеризуются как «компилируемые» или «интерпретируемые», в зависимости от того, преобладает при использовании языка компиляция или интерпретация. Причём практически все языки программирования низкого уровня и третьего поколения, вроде ассемблера, Си или Модулы-2, являются компилируемыми, а более высокоуровневые языки, вроде Python или SQL, — интерпретируемыми.
С другой стороны, существует взаимопроникновение процессов трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или для шаблонов в C++).
Более того, один и тот же язык программирования может и транслироваться, и интерпретироваться, и в обоих случаях должны присутствовать общие этапы анализа и распознавания конструкций и директив исходного языка. Это относится и к программным реализациям, и к аппаратным — так, процессоры семейства x86 перед исполнением инструкций машинного языка выполняют их декодирование, выделяя в опкодах поля операндов (регистров, адресов памяти, непосредственных значений), разрядности и т. п., а в процессорах Pentium с архитектурой NetBurst машинный код перед сохранением во внутреннем кэше вообще транслируется в последовательность микроопераций.
Читайте также: Ошибка при установке vmware workstation
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие программы для потоковой трансляции 2018 года: Что выбрать?
Популярность потокового вещания привела к появлению на рынке в 2018 году огромного количества программных средств для потоковой трансляции.
Независимо от того, являетесь ли вы новичком в создании контента для потокового вещания, или для вас это является основным источником дохода, вы можете быть уверены, что найдётся программное решение, подходящее для вас. Но что является лучшим потоковым программным обеспечением в 2018 году? Чтобы ответить на этот вопрос, давайте рассмотрим главных соперников: OBS, XSplit, Wirecast и vMix.
Каждая из этих программ обеспечивает функции потоковой трансляции и записи в реальном времени, такие как однонаправленная потоковая трансляция, использование нескольких источников видеосигнала, работу с зеленым экраном («хромакей»), видеомонтаж в реальном времени и переходы между планами. Однако все эти программы имеют как свои преимущества, так и недостатки, а также оптимальные варианты использования, которые необходимо учитывать перед тем, как сделать выбор.
Open Broadcaster Software (или OBS) является проектом с открытым исходным кодом, созданным сообществом специалистов и энтузиастов. Как и любое программное обеспечение с открытым исходным кодом, OBS распространяется бесплатно, что делает его популярным среди стримеров с ограниченным бюджетом. OBS предлагает всё необходимое для создания великолепных трансляций, но не обладает расширенными функциями платного программного обеспечения.
Поскольку OBS является свободным программным обеспечением, это также означает, что у программы нет централизованной группы поддержки пользователей, которая поможет вам, если возникнут проблемы. Вы должны уверенно разбираться в вопросе и рассчитывать лишь на помощь форума сообщества. Это, как правило, не проблема для относительно опытных пользователей, которые могут решать проблемы с настройками самостоятельно, однако новички могут столкнуться с трудностями.
Итог: отлично подходит для продвинутых пользователей, которым требуется бесплатное решение и не требуются дополнительные функции.
XSplit выпускается в двух версиях: XSplit Broadcaster и XSplit Gamecaster. Обе версии имеют интуитивно понятный интерфейс, содержащий все необходимые возможности потоковой передачи и записи в реальном времени. Версия Gamecaster имеет слегка урезанный функционал, достаточный для трансляции игрового процесса.
В отличие от OBS, XSplit предлагает техническую поддержку и выпускает периодические обновления программного обеспечения, предоставляя клиентам новые функции. Также имеется возможность добавления созданных сообществом плагинов, повышающих эффективность трансляции в реальном времени (например, возможность отслеживать комментарии YouTube).
В отличие от большинства других программ для трансляции, XSplit не содержит предустановок конфигурации для таких популярных приложений как YouTube и Twitch. Поэтому для настройки XSplit потребуются некоторые знания о кодировании видео, поэтому, если вы не знакомы с битрейтами, ключевыми кадрами и кодировкой звука, вам придется сначала изучить эти вопросы.
Продвинутые пользователи могут столкнуться с ограниченным количеством форматов записи XSplit (только MP4 и FLV), однако для основной массы стримеров это вряд ли критично. Также важно иметь в виду, что XSplit доступен только в Windows, поэтому пользователям Mac придется искать другое решение.
XSplit не является бесплатным, однако достаточно доступен по цене. Пользователи могут купить программу или оформить подписку на ежегодные платежи (что составит всего несколько долларов в месяц). Ознакомиться с ценами на программу можно здесь.
Итог: доступный и простой в использовании, XSplit — отличная базовая версия для стримеров, работающих под Windows, которые предпочитают техническую поддержку, обновления функций и простую настройку плагинов, а также не возражают против необходимости самостоятельно возиться с настройками кодирования.
Wirecast от компании Telestream поставляется в двух версиях: Studio и Pro и находятся уже в профессиональном ценовом уровне ($655 для версии Studio и $995 для версии Pro на момент написания этой статьи). За эти деньги вы получаете множество дополнительных функций, например, наличие гостевого потока в вашем, неограниченный захват и кодирование источников видео, а также возможность одновременного вещания на разные серверы и платформы.
Pro-версия добавляет ещё больше возможностей: запись с высоким разрешением стандарта ISO, живые табло, виртуальные 3D наборы, больше гостей, размещенных в вашем потоке, и многое другое. Вы можете опробовать все эти функции с помощью бесплатной пробной версии, однако в этом случае будет добавляться «водяной знак» Wirecast во всех потоках и записях, которые вы делаете (что может несколько напрягать).
Еще одним плюсом является то, что Telestream — известная крупная компания, поэтому у Wirecast постоянно добавляются новые функции, обновления и улучшения, а также обеспечивается всесторонняя техническая поддержка в случае возникновения каких-либо трудностей.
И хотя интерфейс Wirecast хорошо продуман, он может показаться достаточно сложным, если вы ещё не знакомы с продвинутым программным обеспечением для потокового вещания. Однако некоторые функции интуитивно понятны и просты в освоении сразу, например, создание нескольких потоков или использование панели предварительного просмотра для очереди источников перед коммутатором.
Мы также обнаружили, что версия Wirecast 8 является несколько ресурсоемкой, и это следует учитывать, если вы планируете использовать свой компьютер не только для потоковой передачи. При этом, несмотря на высокую ценовую планку и множество функций, потоковая передача 4K официально не поддерживается (пока) — так что если вам нужно потоковое вещание с разрешением 4K прямо сейчас, то решение следует искать в другом месте.
Итог: Wirecast — отличный выбор для трансляции в реальном времени на профессиональном уровне с разрешением до 1080p с использованием множества дополнительных функций.
vMix — это решение высшего уровня, разработанное с учетом требований профессиональных пользователей и содержащее все необходимые им функции, такие как виртуальные наборы, размещение гостевых потоков, живые видеоэффекты, мгновенное воспроизведение, полная поддержка NDI, кодировка 4K и многое другое.
Многоуровневая система ценообразования обеспечивает дополнительные функции на каждом уровне цен. Базовая версия поддерживает 1080p и стоит $60, но не предлагает ничего такого, чего бы не было в более дешевых программах, которые также обеспечивают трансляцию с разрешением 1080p (например, бесплатное OBS). Чтобы получить максимальную отдачу от vMix, мы рекомендуем изучить расширенные пакеты, начиная с $350 для профессиональной потоковой передачи HD, $700 для потоковой передачи в 4К и $1200 долларов за полный пакет, содержащий все функции.
Читайте также: Гугл карты с фото и панорамами
Интерфейс vMix поражает, он предназначен для эмуляции всего, что можно увидеть в профессиональной среде вещания. Но, как и в случае с Wirecast, начинающих пользователей этот интерфейс может поначалу подавлять. Тем не менее, vMix предлагает всестороннюю техническую поддержку (и богатый набор учебных материалов на YouTube), что позволяет относительно легко освоить даже самые сложные функции программы.
vMix предлагает бесплатную пробную версию для пользователей, которые хотят изучить и протестировать все функции перед покупкой (без водяного знака!). Обратите внимание, однако, что vMix предназначен только для Windows, так что пользователи Mac, которые ищут полноценное программное обеспечение для производства видеотрансляций на данном уровне, должны искать другое решение (например, Wirecast).
Итог: Идеально подходит для пользователей Windows, которым требуется обеспечить живое вещание и запись на максимально возможном профессиональном уровне. При этом программа откровенно избыточна для тех, кому требуются лишь базовые возможности, поскольку получить максимальную, на все деньги, отдачу от vMix можно лишь используя все его функции (например, виртуальный табло, функции мгновенного воспроизведения, управление дистанционно управляемыми поворотными камерами, несколько выходов монитора, контроль с помощью скриптов и т. д.).
Требования к системе:
Если вы планируете использовать программное обеспечение для живой трансляции на своем компьютере, то вам необходимо будет обязательно изучить системные требования каждой из программ. Минимальные требования — это самые низкие параметры, на которых платформа технически будет работать, но вам понадобятся дополнительные ресурсы, если на вашем компьютере есть другие приложения и процессы, работающие в фоновом режиме. Наша рекомендация — иметь компьютерные мощности как минимум несколько выше минимально требуемых.
Проще всего в таких случаях использовать специализированное аппаратное обеспечение, позволяющее разгрузить ваш компьютер. Для небольших живых трансляций с использованием программного обеспечения для потокового вещания вы можете использовать plug-and-play карту захвата AV.iO 4K или AV.iO HD, которые будет сама кодировать HD видеосигнал в реальном времени. А для трансляции одного источника HDMI видео на YouTube или Facebook вам идеально подойдёт специализированное устройство Webcaster X2.
Заключение
Так какая же программа для потокового вещания станет лучшим выбором в 2018 году? Ответ на этот вопрос в первую очередь зависит от ваших потребностей. Выбор зависит от таких факторов как возможности вашего бюджета, от вашей технической грамотности, наличия у вас предыдущего опыта живых трансляций, возможностей вашего компьютера, а также многого другого. То, что идеально подходит для одного человека, может быть не самым лучшим решением для другого. Поэтому мы рекомендуем детально проанализировать возможности и требования каждой из представленных выше программ, а затем самостоятельно решить, что вам больше подходит.
- Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени (англ.).
- Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
- Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
- Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
- Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
- Тестовый. Набор макрокомандязыка ассемблера, позволяющих задавать различные отладочныепроцедуры в программах, составленных на языке ассемблера.
- Обратный. Для программы в машинном коде выдаёт эквивалентную программу на каком-либо языке программирования (см.: дизассемблер, декомпилятор).
Реализации
Цель трансляции — преобразовать текст с одного языка на другой, который понятен адресату текста. В случае программ-трансляторов, адресатом является техническое устройство (процессор) или программа-интерпретатор.
Язык процессоров (машинный код) обычно является низкоуровневым. Существуют платформы, использующие в качестве машинного язык высокого уровня (например, iAPX-432 [5] ), но они являются исключением из правила в силу сложности и дороговизны. Транслятор, который преобразует программы в машинный язык, принимаемый и исполняемый непосредственно процессором, называется компилятором. [6]
Процесс компиляции как правило состоит из нескольких этапов: лексического, синтаксического и семантического анализов, генерации промежуточного кода, оптимизации и генерации результирующего машинного кода. Помимо этого, программа как правило зависит от сервисов, предоставляемых операционной системой и сторонними библиотеками (например, файловый ввод-вывод или графический интерфейс), и машинный код программы необходимо связать с этими сервисами. Связывание со статическими библиотеками выполняется редактором связей или компоновщиком (который может представлять собой отдельную программу или быть частью компилятора), а с операционной системой и динамическими библиотеками связывание выполняется при начале исполнения программы загрузчиком.
Достоинство компилятора: программа компилируется один раз и при каждом выполнении не требуется дополнительных преобразований. Соответственно, не требуется наличие компилятора на целевой машине, для которой компилируется программа. Недостаток: отдельный этап компиляции замедляет написание и отладку и затрудняет исполнение небольших, несложных или разовых программ.
В случае, если исходный язык является языком ассемблера (низкоуровневым языком, близким к машинному языку), то компилятор такого языка называется ассемблером.
Другой метод реализации — когда программа исполняется с помощью интерпретатора вообще без трансляции. Интерпретатор программно моделирует машину, цикл выборки-исполнения которой работает с командами на языках высокого уровня, а не с машинными командами. Такое программное моделирование создаёт виртуальную машину, реализующую язык. Этот подход называется чистой интерпретацией. [6] Чистая интерпретация применяется как правило для языков с простой структурой (например, АПЛ или Лисп). Интерпретаторы командной строки обрабатывают команды в скриптах в UNIX или в пакетных файлах (.bat) в MS-DOS также как правило в режиме чистой интерпретации.
Читайте также: Как подключить графический планшет genius
Достоинство чистого интерпретатора: отсутствие промежуточных действий для трансляции упрощает реализацию интерпретатора и делает его удобнее в использовании, в том числе в диалоговом режиме. Недостаток — интерпретатор должен быть в наличии на целевой машине, где должна исполняться программа. Также, как правило, имеется более или менее значительный проигрыш в скорости. А свойство чистого интерпретатора, что ошибки в интерпретируемой программе обнаруживаются только при попытке выполнения команды (или строки) с ошибкой, можно признать как недостатком, так и достоинством.
Существуют компромиссные между компиляцией и чистой интерпретацией варианты реализации языков программирования, когда интерпретатор перед исполнением программы транслирует её на промежуточный язык (например, в байт-код или p-код), более удобный для интерпретации (то есть речь идёт об интерпретаторе со встроенным транслятором). Такой метод называется смешанной реализацией. [6] Примером смешанной реализации языка может служить Perl. Этот подход сочетает как достоинства компилятора и интерпретатора (бо́льшая скорость исполнения и удобство использования), так и недостатки (для трансляции и хранения программы на промежуточном языке требуются дополнительные ресурсы; для исполнения программы на целевой машине должен быть представлен интерпретатор). Также, как и в случае компилятора, смешанная реализация требует, чтобы перед исполнением исходный код не содержал ошибок (лексических, синтаксических и семантических).
По мере увеличения ресурсов компьютеров и расширения гетерогенных сетей (в том числе Интернета), связывающих компьютеры разных типов и архитектур, выделился новый вид интерпретации, при котором исходный (или промежуточный) код компилируется в машинный код непосредственно во время исполнения, «на лету». Уже скомпилированные участки кода кэшируются, чтобы при повторном обращении к ним они сразу получали управление, без перекомпиляции. Этот подход получил название динамической компиляции.
Достоинством динамической компиляции является то, что скорость интерпретации программ становится сравнимой со скоростью исполнения программ в обычных компилируемых языках, при этом сама программа хранится и распространяется в единственном виде, независимом от целевых платформ. Недостатком является бо́льшая сложность реализации и бо́льшие требования к ресурсам, чем в случае простых компиляторов или чистых интерпретаторов.
Этот метод хорошо подходит для веб-приложений. Соответственно, динамическая компиляция появилась и поддерживается в той или иной мере в реализациях Java, .NET Framework, Perl, Python.
Смешение понятий трансляции и интерпретации
Трансляция и интерпретация — разные процессы: трансляция занимается переводом программ с одного языка на другой, а интерпретация отвечает за исполнение программ. Однако, поскольку целью трансляции как правило является подготовка программы к интерпретации, то эти процессы обычно рассматриваются вместе. Например, языки программирования часто характеризуются как «компилируемые» или «интерпретируемые», в зависимости от того, преобладает при использовании языка компиляция или интерпретация. Причём практически все языки программирования низкого уровня и третьего поколения, вроде ассемблера, Си или Модулы-2, являются компилируемыми, а более высокоуровневые языки, вроде Python или SQL, — интерпретируемыми.
С другой стороны, существует взаимопроникновение процессов трансляции и интерпретации: интерпретаторы могут быть компилирующими (в том числе с динамической компиляцией), а в трансляторах может требоваться интерпретация для конструкций метапрограммирования (например, для макросов в языке ассемблера, условной компиляции в Си или шаблонов в C++).
Более того, один и тот же язык программирования может и транслироваться, и интерпретироваться, и в обоих случаях должны присутствовать общие этапы анализа и распознавания конструкций и директив исходного языка. Это относится и к программным реализациям, и к аппаратным — так, процессоры семейства x86 перед исполнением инструкций машинного языка выполняют их декодирование, выделяя в опкодах поля операндов (регистров, адресов памяти, непосредственных значений), разрядности и т. п., а в процессорах Pentium с архитектурой NetBurst тот же самый машинный код перед сохранением во внутреннем кэше дополнительно транслируется в последовательность микроопераций.
Примечания
- ↑ 123 ГОСТ 19781-83 // Вычислительная техника. Терминология: Справочное пособие. Выпуск 1 / Рецензент канд. техн. наук Ю. П. Селиванов. — М .: Издательство стандартов, 1989. — 168 с. — 55 000 экз. — ISBN 5-7050-0155-X
- ↑ 12Першиков В. И., Савинков В. М. Толковый словарь по информатике / Рецензенты: канд. физ.-мат. наук А. С. Марков и д-р физ.-мат. наук И. В. Поттосин. — М .: Финансы и статистика, 1991. — 543 с. — 50 000 экз. — ISBN 5-279-00367-0
- ↑ СТ ИСО 2382/7-77 // Вычислительная техника. Терминология. Указ. соч.
- ↑ Толковый словарь по вычислительным системам = Dictionary of Computing / Под ред. В. Иллингуорта и др.: Пер. с англ. А. К. Белоцкого и др.; Под ред. Е. К. Масловского. — М .: Машиностроение, 1990. — 560 с. — 70 000 (доп,) экз. — ISBN 5-217-00617-X (СССР), ISBN 0-19-853913-4 (Великобритания)
- ↑Органик Э. Организация системы Интел 432 = A Programmer’s View of the Intel 432 System / Пер. с англ. — М .: Мир, 1987. — С. 20, 31. — 446 с. — 59 000 экз.
Можно привести ряд других примеров, в которых архитектура разработанных серий вычислительных машин базировалась или сильно зависела от некоторой модели структуры программы. Так, серия GE/Honeywell Multics основывалась на семантической модели выполнения программ, написанных на языке ПЛ/1. В Burroughs (англ.) B5500, B6700 … B7800 прототипом послужила модель программы этапа выполнения, написанной на расширенном языке Алгол. …
Процессор i432, подобно этим ранним архитектурам, также базируется на семантической модели структуры программы. Однако, в отличие от своих предшественников, i432 не основывается на модели некоторого конкретного языка программирования. Вместо этого, основной целью разработчиков было обеспечение непосредственной поддержки на этапе выполнения как для абстрактных данных (то есть программирование с абстрактными типами данных), так и для доменно-ориентированных операционных систем. …
Язык Ада поддерживает объектно-базированное программирование, что и послужило причиной выбора его в качестве основного языка программирования для i432.