Функции ядра. Системные вызовы Функции ядра. Системные вызовы ОС. Функции ядра Системные операции и разделяемые ресурсы Два адресных пространства: пользовательской программы и ядра Уровень пользовательской программы Прикладные задачи Вспомогательные и обслуживающие программы Оболочки Уровень ядра Организация планирования памяти Планирование процессов Планирование ввода-вывода Распределение ресурсов Обеспечение сохранности данных и безопасности Обслуживание системных запросов от пользовательских программ Распределение функций в модульном ядре Драйверы Подсистема ввода-вывода Файловые подсистемы Сетевые подсистемы Защищенные подсистемы (WinNT) Управление процессами Управление памятью Функции микроядра (QNX) межпроцессный обмен IPC (сообщения, прокси, сигналы) планирование процессов первичная обработка прерываний низкоуровневая сетевая коммуникация Функции нано-ядра Службы нитей через примитивы POSIX Служба сигналов через примитивы POSIX Служба сообщений –ядро поддерживает маршрутизацию всех сообщений между всеми нитями во всей системе Служба синхронизации с использованием примитивов синхронизации для нитей POSIX Служба расписаний – ядро переключает нити по расписанию, используя различные алгоритмы реального времени POSIX А также Служба таймеров – набор различных POSIX- таймеров Управление процессами – tядро и менеджер процессов образуют объединение, называемое «procnto». Часть менеджера процессов ответственна за управление процессами, памятью и пространством путевых имен. Функции ядра NT/XP/2k Обращение к ядру из шелла Команды операционных систем. Интерпретаторы командной строки. Расширение интерпретатора CSI, DCL. Системные вызовы Работа с файлами Работа с каталогами Работа с процессами Сигналы Семафоры Таймеры и время IPC Разделяемая память Работа с файлами creat(char *pathname, mode_t mode) open(char *pathname, int flags) close(int fd) lseek(int fd, off_t offset, int t whence) llseek(int fd, off_t offset, int whence) read(int fd, void *buf, int count) write(int fd, void *buf, int count) Работа с каталогами mkdir(char *pathname, mode_t mode) rmdir(char *pathname) unlink(char *pathname) Readdir(int fd,dirent *dirp,int count) Работа с процессами fork(void) exec{l lp le v ve vp}(….) exit(int) wait(int *status) waitpid (pid_t pid, int *status, int opt) Сигналы API сигналов kill (pid, sig) signal (signum, handler) sigaction (signum, new, old) sigprocmask (how, set, oldset) Семафоры semget (key, nsems, semflg) semop (semid, sembuf *sops, nsops) semctl (semid, semnum, cmd, …) Таймеры и время time() localtime() gmtime() strfime() Разделяемая память shmget (key_t key, int size, int flag) shmat (int shmid) shmdt (void *area) shmctl (int shmid, int cmd,struct *buffer) Локали locale –a (из шелла) setlocale ( category, char *loc) ru_RU.KOI8-R en_US en_GB de_DE etc.