Info
Content

0. Введение

В центре архитектуры unix находится ядро, оно взаимодействует с аппаратной частью компьютера, изолируя прикладные программы от особенностей архитектуры
Ядро предоставляет прикладным программам услуги с помощью системных вызовов. Например работа с файлами, создание процессов и управление ими, межпроцессное взаимодействие итд

Вокруг ядра, используя его возможности, работают приложения


Процесс запрашивает услугу с помощью системного вызова (внешне похожего на обычный вызов библиотечной функции), ядро от имени процесса выполняет запрос и возвращает процессу результат

Вот тут видно как открывается файл, читается и закрывается:

root@mars:/var/tmp/test/test# cat test.c 
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
main() {
  int fd;
  char buf[80];
  fd = open("file", O_RDONLY);
  read(fd, buf, sizeof(buf));
  close(fd);
}

root@mars:/var/tmp/test/test# strace ./a.out |& tail -5
openat(AT_FDCWD, "file", O_RDONLY)      = 3
read(3, "Mar 19 17:05:24 mars sshd[29845]"..., 80) = 80
close(3)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++
root@mars:/var/tmp/test/test# 

Ядро состоит из трех основных систем:

  • Файловая подсистема
  • Подсистема управления процессами и памятью
  • Подсистема ввода-вывода

Файловая подсистема дает унифицированный доступ к данным и переферийным устройствам. Также она контролирует права, выполняет размещение/удаление/запись/чтение
Большая часть прикладных функций выполняется через интерфейс ФС (в том числе доступ к периферийным устройствам), поэтому права на файлы определяют привилегии пользователя в системе

Подсистема управления процессами. Запущенные программы порождают процессы, эта подсистема контролирует и управляет ими, а также распределяет ресурсы между ними

Специальная задача ядра - scheduler, разрешает конфликты процессов в конкуренции за системные ресурсы
Модуль управления памятью обеспечивает размещение памяти для прикладных задач
Модуль межпроцессного взаимодействия уведомляет процессы о каких-либо событиях в системе и позволяет передавать данные между разными процессами

Подсистема ввода-вывода выполняет запросы двух предыдущих подсистем к периферийным устройствам. Она обеспечивает буферизацию и взаимодействует с драйверами
Драйверы это модули ядра которые обслуживают внешние устройства

No Comments
Back to top