Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1018 сообщений
Cообщения с меткой

unix - Самое интересное в блогах

Следующие 30  »
rss_habr

[Перевод] Заметки о Unix: надёжная работа с API C-библиотеки Unix возможна только из программ, написанных на C

Пятница, 14 Мая 2021 г. 19:58 (ссылка)

Для того чтобы полностью реализовать требования системы верификации источника системных вызовов, разработчики OpenBSD хотят, чтобы Go выполнял бы системные вызовы через C-библиотеку, а не напрямую, из собственной среды выполнения (а у Go есть некоторые причины поступать именно так). На первый взгляд это кажется не особенно серьёзной проблемой. Это, конечно, немного неудобно, но у языка вроде Go должна быть возможность просто выполнять вызовы обычных функций из C-библиотеки, вроде open() (и использовать ABI вызова C-функций). К сожалению, не так всё просто, так как очень часто фрагменты обычного API C-библиотеки, на самом деле, реализованы в препроцессоре C. Из-за этого API C-библиотеки нельзя надёжно использовать для решения обычных задач без написания собственного связующего кода на C.




Читать дальше →

https://habr.com/ru/post/555658/?utm_source=habrahabr&utm_medium=rss&utm_campaign=555658

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Используем черную магию для создания быстрого кольцевого буфера

Четверг, 13 Мая 2021 г. 19:45 (ссылка)

Вчера я заглянул на страницу Википедии, посвященную кольцевому буферу (circular buffer), и был заинтригован предполагаемой техникой оптимизации, с которой до этого не был знаком:

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

В рамках реализации кольцевого буфера нам необходимо обработать случай, когда сообщение попадает на «разрыв» в очереди и должно быть перенесено (wrap around). Очевидная реализация записи в кольцевой буфер может полагаться на побайтовую запись и выглядеть примерно так:

Читать далее

https://habr.com/ru/post/557310/?utm_source=habrahabr&utm_medium=rss&utm_campaign=557310

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Заметки о Unix: сильные и слабые стороны errno в традиционных Unix-окружениях

Воскресенье, 09 Мая 2021 г. 18:02 (ссылка)

Недавно я мимоходом отметил, что errno был, в целом, хорошим интерфейсом в Unix-системах до появления в них многопоточности. Кого-то подобное высказывание может удивить, поэтому сегодня предлагаю поговорить о сильных и слабых сторонах errno в традиционных Unix-окружениях, таких, как V7 Unix.







Сильной стороной errno является тот факт, что этот интерфейс представляет собой простейший механизм, способный возвращать несколько значений из системных вызовов C, в которых нет непосредственной поддержки возврата нескольких значений (особенно — в ранних вариантах C). Использование глобальной переменной для «возврата» второго значения — это практически идеал того, что можно сделать в обычном C, если только не планировать передачу из C-библиотеки указателя на каждый системный вызов и функцию, которые собираются возвращать значение errno (при таком подходе придётся, например, интенсивно пользоваться stdio). Постоянная передача подобного указателя приводит не только к ухудшению внешнего вида кода. Такой подход увеличивает объём кода, и, из-за использования дополнительного параметра, приводит к повышению нагрузки на стек (или на регистры).
Читать дальше →

https://habr.com/ru/post/555660/?utm_source=habrahabr&utm_medium=rss&utm_campaign=555660

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Необычный способ использования встроенных команд оболочки для выяснения того, какие директории существуют в системе

Пятница, 07 Мая 2021 г. 16:01 (ссылка)

В давние времена многоархитектурных Unix-окружений разработчики дистрибутивов не могли прийти к единому мнению о том, что должно быть в $PATH. Базовые вещи, вроде /bin и /usr/bin, были везде одинаковыми, но у каждого дистрибутива был собственный набор дополнительных директорий (у Solaris их, например, было много). Кроме того — у разных локальных вычислительных групп было различное видение того, где должны размещаться локальные программы. Например — в /usr/local/bin, в /local/bin, в /opt//bin, в //bin и так далее. Всё это усложняло мне жизнь, так как я занимался поддержкой общего набора dot-файлов, используемых во всех Unix-системах, за которые я отвечал, и мне не хотелось бы, чтобы моя переменная $PATH представляла бы собой огромный список, содержащий пути ко всем необходимым директориям каждой из систем. Поэтому мне нужно было убирать всё лишнее из гигантского базового списка директорий, которые могли присутствовать в $PATH, оставляя там лишь те директории, которые существовали в текущей системе. А чтобы ещё сильнее усложнить эту задачу, мне хотелось использовать для этого только команды, встроенные в оболочку, и это — при работе с оболочкой, где test встроенной командой не является.




Читать дальше →

https://habr.com/ru/post/554298/?utm_source=habrahabr&utm_medium=rss&utm_campaign=554298

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Заметки о Unix: ограничения опции -exec команды find и стремление к удобству при реализации команд

Четверг, 06 Мая 2021 г. 15:59 (ссылка)

В материале о том, что в наши дни find, как правило, не нуждается в xargs, я отметил, что в конструкции '-exec ... {} +' скобки ('{}') (для имён файлов, генерируемых find) должны находиться в конце команды. В комментарии к той публикации анонимный читатель сказал, что это неприменимо к -exec-версии, которая запускает отдельную команду для каждого имени файла. В результате можно поместить заменяемое имя файла в любом месте команды. Это, как оказалось, относится не только к GNU Find, являясь стандартной возможностью, и я полагаю, что этого даже требует Single Unix Specification (SUS) для find.




Читать дальше →

https://habr.com/ru/post/554296/?utm_source=habrahabr&utm_medium=rss&utm_campaign=554296

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<unix - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda