Рейтинг:-2

Почему операционная система должна быть POSIX-совместимой?

флаг de

Что такого особенного в POSIX и как он влияет на общее использование операционной системы?

joeqwerty avatar
флаг cv
Как именно мешает? Я не понимаю, о чем вы спрашиваете.
Ricardo Silva avatar
флаг de
@joeqwerty вопрос больше похож на то, если ОС не совместима с POSIX, каковы последствия, мешает ли это использованию ОС или вообще не вносит никаких изменений?
флаг jm
Если ваше приложение требует соответствия POSIX, оно будет затронуто. Если вы пишете конкретное приложение для конкретной ОС, сложность может различаться. Соответствие POSIX может сделать приложения более переносимыми.
Ricardo Silva avatar
флаг de
@doneal24 большое спасибо за ответ ... на самом деле важно то, что если вы пишете приложение для работы в ОС, совместимой с POSIX, вам может (или нет?) также написать совместимое приложение, иначе это повлияет на запуск этого приложения, верно?
флаг jm
Нет. Пока вы следуете API-интерфейсам, предоставляемым ОС, все в порядке. Существует множество стандартов, которым вы можете следовать.Например, библиотека GNU C совместима с ISO C11, POSIX.1-2008, BSD и несколькими специфичными для ОС API. Обязательная ссылка [xkcd](https://xkcd.com/927).
Рейтинг:1
флаг jo

Разумной аналогией было бы обучение вождению. Существуют правила, протоколы, которым необходимо следовать, и стандарты качества и надежности как для автомобиля, так и для водителя.

  • У машин есть руль.
  • У кого-то механическая коробка передач, у кого-то автомат.
  • Вы (в большинстве стран) едете по правой стороне дороги.
  • Знаки дают инструкции о том, как двигаться по той или иной дороге.
  • Единицы измерения (в основном) в км/ч.
  • Топливо, используемое в автомобиле, имеет определенную смесь и стандарт.
  • Водители проходят обучение и должны следовать определенному стандарту вождения.

Теперь вы можете предположить (хотя я не настолько культурен и позволяю себе поэтическую вольность), что европейские дороги «соответствуют стандартам» друг друга, так что если вы научитесь водить машину в Испании, вы потенциально сможете ездить где угодно в Европе, потенциально с той же машиной или, по крайней мере, с другой машиной, где все придатки и палки находятся в том месте, где вы могли бы их ожидать.

Вы могли бы, например, изобрести совершенно новый способ вождения, возможно, с совершенно другими знаками, когда вы едете по обеим сторонам дороги, используете джойстик для вождения и измеряете расстояние в локтях в час, однако, переходя на эту систему из тот, к которому вы привыкли, требует гораздо больше усилий.

POSIX как бы соответствует аналогичной модели, но вместо автомобилей, дорог, скоростей и пунктов назначения он относится к входам, обмену сообщениями, программам, выходам и функциям.

Как правило, лучше всего (как программисту и пользователю) иметь определенные правила, управляющие свойствами/функциями и входными/выходными данными, доступными для вас, чтобы вы, возможно, могли написать программу, которая соответствует этим стандартам, а затем без особых усилий перестроить ту же программу для работы на ней. другая система, которая также использует те же входы/выходы.

Например, системные вызовы Linux читать и записывать являются posix-совместимыми. Они принимают определенные входные данные в определенном порядке и возвращают определенные выходные данные с правилами, определяющими, какие выходные данные могут быть или представляться в определенных обстоятельствах.

Вы можете написать программу в Linux, которая открывает два файла, использует читать и записывать для передачи данных между ними и снова их закрывает. Затем, возможно, перестройте его для работы на Mac без необходимости переписывать базовый исходный код.

Однако вы также можете выполнить точно такую ​​же операцию — намного быстрее — открыв два файла с помощью послать файл системный вызов для перемещения данных между ними и повторного закрытия (если только вы не используете очень-очень старые ядра). Беда здесь в том, что послать файл системный вызов не является Совместимость с POSIX - вы не можете гарантировать, что такой системный вызов правильно существует в системе, чтобы делать то, что вы хотите.

На самом деле, если вы заглянете на справочную страницу Mac для послать файл call, хотя это и называется той же операцией, она принимает другой набор параметров и предлагает другие функции (также технически вы не можете использовать ее для копирования из одного файла на диске в другой на диске).

Следовательно, вы не сможете запустить программу с помощью Linux. послать файл предсказуемо в системе, по крайней мере, без изменения программы или использования какого-либо другого уровня совместимости.

Вот почему люди заботятся о POSIX. Это позволяет не изобретать велосипед и потенциально позволяет вам перейти на более совершенную, «совместимую с posix» операционную систему или, по крайней мере, сосредоточиться на доставке вашего продукта, а не беспокоиться о качестве материалов, используемых для создания фундамента.

Я пропустил большую часть вопросов о том, когда POSIX на самом деле не полностью и полностью соблюдается даже теми, кто утверждает, что их система совместима с POSIX, но это суть концепции.

И последний момент, который я хотел бы прояснить. Если вы кодируете в соответствии с наименьшим общим знаменателем стандарта (например, POSIX), вы упустите большой прирост производительности, который в противном случае вы могли бы использовать, используя нестандартные расширения в операционной системе, для которой вы кодируете.

Таким образом, это также выбор дизайна, если вы стремитесь к высокой производительности/высокой пропускной способности, чтобы добиться того, что вы не можете кодировать для соответствия POSIX.

Хотя, наняв программиста, который знает, как программировать «позиксально» (знает, как открытым, читать, записывать пнить и близко работает в POSIX) будет гораздо проще, чем нанять кого-то, кто программирует только по какому-то странному неиспользуемому стандарту.

Так что дело не только в производительности (автомобили), но и в адаптационном потенциале (их умение управлять автомобилем).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.