Системно повикване в ОС (Operating System): какво е, видове и примери

⚡ Умно обобщение

Системното повикване е контролираният интерфейс, който процесът използва, за да изисква услуги на ядрото, като достъп до файлове, управление на процеси и комуникация с устройства, като безопасно превключва процесора от потребителски режим в привилегирован режим на ядрото.

  • 🔑 Определение: Единствената входна точка, през която потребителските програми достигат до услугите на операционната система.
  • 🔄 Как работи: Процесът се задържа в ядрото, което изпълнява заявката и се връща в потребителски режим.
  • 🗂️ Видове: Контрол на процесите, файлове, устройства, поддръжка на информация и комуникация.
  • Примери: fork(), exec(), wait(), exit(), open(), read() и write().
  • 🤖 Ъгъл на изкуствен интелект: Машинно обучение сканира системни извиквания tracза откриване на прониквания; Copilot ускорява кодирането на системни повиквания.

Системно повикване в Operaтинг система

Какво е System Call in Operating система?

A системно обаждане е механизъм, който осигурява интерфейса между процес и операционната система. Това е програмен метод, при който компютърна програма изисква услуга от ядрото на операционната система.

System call предлага услугите на операционната система на потребителските програми чрез API (Интерфейс за програмиране на приложения). Системните повиквания са единствените входни точки за системата на ядрото.

Системни повиквания Operaтинг система

Системни повиквания Operaтинг система

Пример за системно повикване

Например, за да се напише програма, която чете данни от един файл и ги копира в друг, програмата първо се нуждае от имената на двата файла: входния и изходния файл.

В интерактивна система този тип изпълнение на програма изисква някои системни повиквания от операционната система.

  • Първото повикване е да напишете подканващо съобщение на екрана.
  • Второто е да се прочетат от клавиатурата символите, които определят двата файла.

Как работи системното обаждане?

Ето стъпките за системно повикване в операционната система:

Системното обаждане работи

Archiструктура на системното повикване

Archiструктура на системното повикване

Както можете да видите на диаграмата на системните повиквания по-горе:

Стъпка 1) Процесите се изпълняват в потребителски режим, докато системно извикване не ги прекъсне.

Стъпка 2) След това системното повикване се изпълнява в режим на ядрото на приоритетна база.

Стъпка 3) След като изпълнението на системното повикване приключи, контролът се връща в потребителски режим.

Стъпка 4) Изпълнението на потребителските процеси се възобновява, преминавайки между потребителски режим и режим на ядрото както се изисква.

Защо имате нужда от системни повиквания в OS?

Следните ситуации изискват системни повиквания в операционната система:

  • Четенето и писането от файлове изисква системни извиквания.
  • Ако дадена файлова система иска да създава или изтрива файлове, са необходими системни извиквания.
  • Системните повиквания се използват за създаване и управление на нови процеси.
  • Мрежовите връзки се нуждаят от системни повиквания за изпращане и получаване на пакети.
  • Достъпът до хардуерни устройства като скенер или принтер изисква системно повикване.

Видове системни повиквания

Ето петте вида системни повиквания в операционната система:

  • Контрол на процеса
  • Управление на файлове
  • Управление на устройствата
  • Информационна поддръжка
  • общуване

Видове системни повиквания

Видове системни повиквания в операционната система

Контрол на процеса

Тези системни извиквания изпълняват задачата за създаване на процеси, прекратяване на процеси и т.н.

Функции:

  • Край и прекратяване
  • Зареждане и изпълнение
  • Създаване на процес и прекратяване на процес
  • Изчакайте и Signal събитие
  • Разпределяне и освобождаване на памет

Управление на файлове

Извикванията на системата за управление на файлове обработват задачи за манипулиране на файлове като създаване на файл, четене и писане и т.н.

Функции:

  • Създайте файл
  • Изтрий файла
  • Отваряне и затваряне на файл
  • Четете, пишете и препозиционирайте
  • Вземете и задайте файлови атрибути

Управление на устройствата

Управлението на устройства върши работата по манипулиране на устройства като четене от буфери на устройства, запис в буфери на устройства и т.н.

Функции:

  • Поискайте и освободете устройството
  • Логично свързване или откачване на устройства
  • Получаване и задаване на атрибути на устройството

Информационна поддръжка

Той обработва информацията и нейния трансфер между операционната система и потребителската програма.

Функции:

  • Вземете или задайте час и дата
  • Вземете атрибути на процес и устройство

общуване

Тези видове системни повиквания се използват специално за комуникация между процесите.

Функции:

  • Създаване и изтриване на комуникационни връзки
  • Изпращане и получаване на съобщения
  • Помощ за информацията за състоянието на прехвърляне на операционната система
  • Прикрепете или откачете отдалечени устройства

Правила за предаване на параметри за системно извикване

Ето общите правила за предаване на параметри към системното извикване:

  • Параметрите трябва да бъдат добавяни или изваждани от стека от операционната система.
  • Параметрите могат да се предават в регистрите.
  • Когато има повече параметри, отколкото регистри, те трябва да се съхраняват в блок, а адресът на блока трябва да се предаде в регистър.

Важни системни извиквания, използвани в ОС

изчакайте()

В някои системи един процес трябва да изчака завършването на друг. Това се случва, когато родителски процес създава дъщерен процес, а родителят остава спрян, докато дъщерният процес не завърши.

Спирането на родителя се случва автоматично със системно извикване wait(). Когато детето приключи изпълнението, контролът се връща към родителя.

вилица ()

Процесите използват това системно извикване, за да създават процеси, които са копие на самите тях. С помощта на fork(), родителският процес създава дъщерен процес и родителят се преустановява, докато дъщерният процес не се изпълни.

exec()

Това системно извикване изпълнява изпълним файл в рамките на вече работещ процес, замествайки по-стария. Оригиналният идентификатор на процеса се запазва, тъй като не се изгражда нов процес, но стекът, данните, heap-ът и т.н. се заменят от новия процес.

убивам()

Системното извикване kill() се използва от операционната система, за да изпрати сигнал за прекратяване на процес, подтиквайки го да излезе. Системното извикване kill обаче не означава непременно прекратяване на процеса и може да има различни значения.

изход ()

Системното извикване exit() се използва за прекратяване на изпълнението на програма. Особено в многонишкова среда, това извикване определя, че изпълнението на нишката е завършено. ОС си възстановява ресурсите, използвани от процеса след извикването exit().

Въпроси и Отговори

API е набор от функции, които приложенията извикват. Системното извикване е заявка от ниско ниво, която влиза в ядрото.

Библиотечна функция се изпълнява в потребителското пространство; системно повикване влиза в ядрото. Извиквания като fopen() често извикват open() вътрешно.

Не. printf() е библиотечна функция на C, която форматира и буферира текст. Тя извиква write() само когато буферът се изпразни.

Потребителският режим ограничава достъпа до хардуер и памет; режимът на ядрото има пълни привилегии. Системно повикване превключва безопасно между тях.

Windows използва CreateProcess(), ReadFile() и WriteFile(). Linux използва fork(), read() и write(). И двата покриват процеси, файлове, устройства и комуникационни услуги.

Да. Системно повикване превключва в режим на ядрото, добавяйки режийни разходи. Обикновените извиквания на функции остават в потребителското пространство и се изпълняват по-бързо.

Инструментите за сигурност прилагат машинно обучение към системни повиквания traces, маркиране на зловреден софтуер и прониквания, които скенерите за сигнатури често пропускат.

Да. GitHub Copilot може да предложи синтаксис за извиквания като fork(), read() и write(). Разработчиците все още трябва да проверят обработката на грешки.

Обобщете тази публикация с: