обрабатывать процессы процессора и памяти системными вызовами ядра?

Если я прав, обрабатывает устройства доступа по системным вызовам ядра.

Процессор и память также являются устройствами.

  1. когда процесс начинает работать, получает ли он CPU и память системными вызовами ядра?
  2. Когда процесс выполняется одновременно с другими процессами, ядро ​​планирует их запуск чередованием. Вызывает ли процесс также системные вызовы ядра, когда он отказывается от процессора и памяти для другого процесса и когда он возвращает их обратно?
  3. когда процесс завершается, он освобождает процессор и память также системными вызовами ядра?

  • Команда для отслеживания rsh-сервера для проверки поведения конкретного системного вызова
  • Некоторые основные вопросы о безопасности ядра Linux
  • Документация по устройству Mapper ioctls?
  • Какие Unixes поддерживают ссылки на файловую систему с несколькими устройствами (в частности, для переименования)?
  • Вычисление общего использования ЦП в C
  • Способы вызова системного вызова в новом ядре
  • API без системных вызовов
  • В чем разница между fork () и vfork ()?
  • 2 Solutions collect form web for “обрабатывать процессы процессора и памяти системными вызовами ядра?”

    Он не столько «получает» процессор, сколько работает на нем. Ядро решает, на каком ядре и когда и на какой срок выполняется процесс. Он расписывает задачи так, чтобы каждый процесс получал свои временные фрагменты в CPU: он выполняется некоторое время, затем либо после истечения времени ожидания, либо происходит системный вызов, контекст переключается на другой процесс. Состояние программы сохраняется перед коммутатором и восстанавливается, когда ядро ​​решает, что оно заслуживает другого кусочка времени, так что оно даже не замечает временной промежуток. Планирование может меняться – он может иметь фиксированный таймер (обычно миллисекунды), или он может быть без отметки … ядро ​​также управляет планированием в соответствии с приоритетом процесса ( nice ). Процесс может быть заблокирован на определенных ядрах ( taskset ). Для многопоточной программы потоки получают свои срезы независимо и могут выполняться одновременно. Ядро может полностью приостановить программу и возобновить ее позднее (с помощью SIGSTOP и SIGCONT).

    Память виртуализирована. Указатели, которые вы видите на ваших языках программирования, не являются физическими блоками памяти, а виртуальные адреса переназначены на физический уровень. Ядро обслуживает RAM на страницах (например, 4kB) и даже перемещает их по битам (страница может быть заменена на жесткий диск и восстанавливаться только в ОЗУ при ее доступе). mmap – это один из способов сопоставить новую страницу с каким-либо адресом (где страницы могут ссылаться на файл с жесткого диска, отображаемый в память). Однако, когда вы динамически выделяете память ( malloc и другие распределители), что делать с распределителем. Обычно он вызывает sbrk syscall, чтобы запросить больше места для своего пула памяти, или mmap для более крупных блоков – реализации могут различаться.

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

    ЦПУ

    Процесс может снизить приоритет процессора (но не уменьшить его, man 2 setpriority ). Кроме того, он может спать в течение определенного времени. Но он не может решить, как экономится время, которое он сохраняет, и другие процессы.

    Для ситуации с потоками см. Комментарий psusi.

    memory Новый процесс получает начальный объем оперативной памяти (я не знаю, хотя это значение ядра по умолчанию или задано в данных заголовка двоичного файла). Если требуется больше ОЗУ, процесс запрашивает ядро ​​для большего количества (см. man 2 mmap ).

    Как и при процессорном времени, процесс не может решить, какой процесс получит больше памяти, если он выпустит некоторые.

    выход из процесса

    Если процесс завершается (либо по собственному решению, либо путем его уничтожения), то ядро ​​автоматически освобождает его ресурсы. Процесс может высвободить «все» его ОЗУ до выхода, но для этого нет оснований. Вместо этого это просто вызовы _exit или exit_group .

    Linux и Unix - лучшая ОС в мире.