Что приложения хотят от ОС?Абстракцию оборудования Координацию совместной работы с устройствамиИзоляцию сбойных приложений Обмен между приложениями... Что плохо в этом примере?... Вызов:
Trang 1Операционные системы
В иктор Ашик
Куратор практик
Trang 2#yakit
Trang 4Какие ОС вы знаете?
Trang 5Сколько ОС у меня в телефоне?
Trang 61969 (AT&T/Bell Labs: Томпсон, Керниган, Ритчи)Распространялась свободно
Стандарт де-факто и де-юро (POSIX)
AIX, Solaris, Mac OS X/FreeBSD/NetBSD/OpenBSD —генетически UNIX®
Linux, Minix — реализации
Trang 8Что приложения хотят от ОС?
Абстракцию оборудования
Координацию совместной работы с устройствамиИзоляцию сбойных приложений
Обмен между приложениями
Trang 9Как устроена ОС?
Trang 11int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel
section data
msg db 'Hello, world!',0xa
len equ $ - msg
Trang 12Что плохо в этом примере?
Trang 14Как это записать на C?
ABI - syscalls
#include <unistd.h>
/* */
const char msg[] = "Hello world";
write( STDOUT_FILENO, msg, sizeof( msg ) - 1 );
Trang 15ltrace
strace
Trang 16Shell: /bin/*sh
Интерпретатор команд *nix
While (1) {
write (1, "$ ", 2);
readcmd (cmd, args); // parse user input
if ((pid = fork ()) == 0) { // child?
exec (cmd, args, 0);
} else if (pid > 0) { // parent?
wait (0); // wait for child to terminate } else {
perror ("fork");
}
Trang 18– PID
Trang 19Вызов: exec
Замещает содержимое памяти
вызвавшего процесса инструкциями и данными из файла на диске
То есть исполняет файл
Процесс остается тем же (сохраняет pid, uid, …)
Trang 23Зачем? Так проще писать приложения
*nix, Windows NT
Trang 24Пример: виртуализация ЦПУ
Цель: эмулировать отдельный ЦПУ для каждого процесса
Trang 25Пример: виртуализация ЦПУ
Как это достигается?
– ОС сохраняет и восстанавливает состояние (контекст) ЦПУ при каждом переключении
Что сохраняется?
– Регистры, флаги, указатели на таблицы виртуальной памяти
Где сохраняется?
– В таблице процессов
Trang 26vmstat
cat /proc/1/status
ps
Trang 27Сколько у процесса может быть
состояний?
man ps
/STATE
Trang 29– При обращении к такой странице возникает прерывание и страницу можно
Trang 30vmstat
cat /proc/swaps
swapon -s
Trang 33– Планировщик ЦПУ в ядре
Trang 36– Гарантировать исполнение запросов не позднее крайнего срока
Trang 39Main memory reference 100
Compress 1KB bytes with Zippy 3,000
Send 2K bytes over 1 Gbps network 20,000
Read 1MB sequentially from memory 250,000
Roundtrip within same datacenter 500,000
Disk seek 10,000,000
Trang 40Производительность в числах
Operation Time (nsec)
System call overhead 400
Context switch between processes 3000
fork() (statically-linked binary) 70,000
fork() (dynamically-linked binary) 160,000