Что такое системный вызов в Linux и как он работает?

Введите в него код, показанный ниже Советы и хитрости

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

Ядро Linux — это проприетарное программное обеспечение, которое загружается и работает на устройстве на минимально возможной стадии. Его задача — организовать все, что происходит на машине, от клавиатуры, диска и сетевых событий до предоставления временных интервалов для одновременного выполнения различных программ. Разделение программного и аппаратного обеспечения создает безопасный пузырь, улучшающий защиту и надежность. Непривилегированные приложения не могут получить доступ к хранилищу других программ, и в случае сбоя одного из них ядро ​​приостанавливает процесс, чтобы он не повредил всю систему.

Wafer Thin Wrapper

Системные вызовы Linux не передаются явно ядру в некоторых программах. Почти все программы используют базовую библиотеку C и предлагают легкую, но важную оболочку для системных вызовов Linux. Затем репозиторий предоставляет сопровождающий машинный вызов Linux после того, как убедитесь, что параметры функции переведены в правильные регистры процессора. Всякий раз, когда оболочка получает данные от системного вызова, она анализирует их и четко передает в программу. Любая машинно-интерактивная операция в программе в конечном итоге преобразуется в системный вызов. Итак, давайте посмотрим на некоторые из них. Существует длинный список системных вызовов Linux, которые мы можем использовать в нашей системе Linux. Вот список некоторых распространенных и наиболее часто используемых системных вызовов Linux.

  • Open
  • Close
  • Exec
  • Write
  • Read
  • Lseek
  • Select

Давайте обсудим некоторые системные вызовы Linux с использованием языка C в нашей статье, чтобы познакомиться с ними на практике.

Открыть системный вызов

Мы можем использовать системный вызов «Open» в нашем дистрибутиве Linux, чтобы быстро открыть документ, который мы укажем в нашем коде языка C. Сначала запустите командный терминал. Вы можете использовать сочетание клавиш «Ctrl + Alt + T». Предположим, у вас есть текстовый файл «test.txt» в домашнем каталоге, и он содержит некоторое содержимое. Итак, вначале вы должны создать новое имя файла типа C «new.c» в терминале через редактор nano. Поэтому попробуйте простую нано-инструкцию ниже.

nano new.c

Итак, вначале вы должны создать новое имя файла типа

Теперь редактор Nano запущен. Введите в него код, показанный ниже. У нас в коде два файловых дескриптора. Оба файла можно открыть с помощью системного вызова open. Первый дескриптор содержит вызов чтения, а второй — функцию записи. Первый открытый вызов — это открытие текстового файла «test.txt» и сохранение его содержимого в файловый дескриптор «fd». Второй системный вызов open создает файл с именем «target». Документ «target» был возмещен файловому дескриптору «fd1». Инструкция записи используется для расшифровки байтов данных в буфере. Нажмите «Ctrl + S», чтобы сохранить код, и нажмите сочетание клавиш «Ctrl + X», чтобы закрыть файл.

Введите в него код, показанный ниже

Запустите инструкцию компиляции gcc, чтобы скомпилировать этот код C.

gcc new.c

Давайте выполним код, используя простой запрос «a.out» в оболочке следующим образом:

./a.out

Выходные данные переданы в файл «target». Давайте проверим «целевой» файл с помощью запроса «кошка». Экран вывода показывает 20-символьные данные в «целевом» файле.

cat target

Системный вызов Exec

Системный вызов exec отключается для запуска файла, который в данный момент обрабатывается. Заменяется прежний исполняемый файл, а текущий файл используется всякий раз, когда вызывается exec. Используя системный вызов exec, мы можем предположить, что это приведет к замене старого документа или приложения в цикле новым. Новое программное обеспечение используется для отмены всего материала процесса. Документ, заголовок которого указывается в операторе при каждом вызове exec (), заменяется разделом информации о пользователе, который запускает системный вызов exec () (). Итак, откройте командный терминал и, используя редактор nano, создайте новый файл типа C следующим образом:

nano exp.c

Редактор открыт. Напишите в нем весь приведенный ниже код языка C. В него включены три основные библиотеки. После этого была создана основная функция. Оператор печати показывает строковые данные и идентификатор процесса файла «exp.c». Для этого использовалась функция getpid (). Затем у нас есть массив символьных типов с некоторыми значениями в нем. Системный вызов exec использовался для принятия имени файла и однострочного массива выше в качестве аргумента. Теперь файл «hello.c» будет обработан. После этого идет еще один оператор печати, но он никогда не будет выполнен. Нажмите «Ctrl + S», чтобы сохранить этот файл. Нажмите «Ctrl + X», чтобы выйти.

Напишите в нем весь приведенный ниже код языка C

Теперь пришло время создать еще один файл c, «hello.c», с помощью редактора nano. Для этого воспользуйтесь приведенным ниже запросом в оболочке.

nano hello.c

Напишите в нем приведенный ниже код. Этот код содержит два оператора печати в основной функции. Первый только печатает строку, указанную в нем, а второй печатает строку, извлекая идентификатор процесса текущего используемого файла, то есть «hello.c».

Этот код содержит два оператора печати в основной функции

Скомпилируем оба файла один за другим с помощью gcc.

gcc –o exp exp.c

gcc –o hello hello.c

Когда мы выполняем файл exp.c, он выводит первый оператор печати из файла exp.c и обе строки печати из файла hello.c.

./exp

Когда мы выполняем файл exp

Заключение

Мы подробно рассмотрели всю концепцию системных вызовов Linux и то, как их можно использовать в вашей системе Linux. При реализации этой концепции мы использовали Ubuntu 20.04.

Оцените статью
ПОПУЛЯРНЫЕ ТЕХНОЛОГИИ
Добавить комментарий