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

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

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

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

  • Системное программирование: как собрать информацию?
  • Мнемоника для функций Unix?
  • Список системных вызовов, используемых в приложении
  • Является ли системный вызов единственным способом, который пользовательская программа может преднамеренно повлиять на состояние ядра Linux?
  • Команда для отслеживания rsh-сервера для проверки поведения конкретного системного вызова
  • Программа Strace Hello World
  • Что такое значение NR_Syscalls?
  • Как декодировать cmd = 3222823425 в ioctl в Linux 2.6.29
  • 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 .

    Interesting Posts

    Включение переадресации IP во время компиляции ядра

    Как я могу использовать свой Yubikey Standard для Linux Mint 18.1 Cinnamon?

    Как отключить звуковой сигнал только в вкладке bash-complete

    Как настроить мостовую сеть с виртуальной машиной и хостом с KVM (Virt-Manager)?

    В сценарии Bash в (set -x) не отображается команда «cat». (его содержание)

    Запускайте команду unix точно через очень короткие промежутки времени, не задерживая время задержки во времени

    Force Bash 4 'globstar' вариант игнорировать символические ссылки

    Объединение содержимого двух файлов со сравнением содержимого столбца

    Файл bad known_hosts при подключении к балансируемому домену

    Создание списка меню и выполнение задачи

    как использовать / log fS на двух удаленных серверах

    Как добавить заголовок лицензии рекурсивно для всех файлов .h и .cpp в каталоге

    UUOC с передачей файла ssh

    Установка Fresh Linux (Debian и CentOS) не будет загружаться

    Путаное использование && и || операторы

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