Открытый системный вызов - PullRequest
       6

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

1 голос
/ 16 февраля 2009

Я учусь на среднесрочных операционных системах, и мне было интересно, могу ли я получить какую-то помощь.

Может кто-нибудь объяснить проверки и что делает ядро ​​во время системного вызова open ()?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 16 февраля 2009

Очень грубо, вы можете подумать о следующих шагах:

  1. Преобразуйте имя файла в индекс, который является фактическим объектом файловой системы, описывающей содержимое файла, путем обхода структур данных файловой системы.
  2. Во время этого обхода ядро ​​проверит, что у вас есть достаточный доступ по пути к файлу каталога, и проверит доступ к самому файлу. Точные проверки зависят от того, какие режимы были переданы для открытия.
  3. Создайте в ядре то, что иногда называется дескриптором открытого файла . Существует один из этих объектов для каждого файла, открытого ядром от имени любого процесса.
  4. Выделите неиспользуемый индекс в таблице дескрипторов файлов для процесса и укажите его на дескриптор открытого файла.
  5. Возвращает этот индекс из системного вызова в качестве дескриптора файла.

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

0 голосов
/ 16 февраля 2009

Я бы вернулся к тому, что проф сказал вам - во время open () происходит много вещей, в зависимости от того, что вы открываете (например, устройство, файл, каталог), и если вы не напишите, что профессор ищет, вы потеряете очки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...