SlideShare a Scribd company logo
Операционные системы
Виктор Ашик
Куратор практик




Лекция КИТ, Москва, 16 февраля 2011 года
#yakit




2
Операционные системы
    План лекции

— UNIX и *nix
— системные вызовы
— strace и ltrace
— планировщики ЦПУ и ввода-вывода
— управление памятью




3
Какие ОС вы знаете?




4
Сколько ОС у меня в телефоне?




5
UNIX®
1969 (AT&T/Bell Labs: Томпсон, Керниган, Ритчи)
Распространялась свободно
Стандарт де-факто и де-юро (POSIX)
AIX, Solaris, Mac OS X/FreeBSD/NetBSD/OpenBSD —
  генетически UNIX®
Linux, Minix — реализации
Есть реализации POSIX для Windows
Далее — *nix
 6
*nix = переносимость
Стандарты
     – Portable Operating System Interface
       [for Unix]
     – ISO C/C++ (STL)
Runtime
     – Shell
     – Java
     – Perl/Python/PHP/...


 7
Что приложения хотят от ОС?
Абстракцию оборудования
Координацию совместной работы с устройствами
Изоляцию сбойных приложений
Обмен между приложениями




 9
Как устроена ОС?




10
Какие сервисы предлагает ОС?
Процессы
Память
Содержимое файлов
Каталоги и имена файлов
Безопасность
… (пользователи, IPC, сеть, терминалы)



 11
Как приложения обращаются к
                 системе?
                ABI - syscalls
mov edx,len
  mov   ecx,msg
  mov   ebx,1       ;file descriptor (stdout)
  mov   eax,4       ;system call number
  (sys_write)
  int       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


  12
Что плохо в этом примере?




13
Как приложения обращаются к
                   системе?
                  ABI - syscalls
int main() {
     __asm__(
           "movl $20, %eax n"
           "call *%gs:0x10 n"
           "movl %eax, pid n"
     );
     printf("pid is %dn", pid);
     return 0;

}
    14
Как это записать на C?
            ABI - syscalls
#include <unistd.h>
/* ... */
const char msg[] = "Hello world";
write( STDOUT_FILENO, msg, sizeof(
 msg ) - 1 );


/* Где вызов функции write
 превращается в syscall? */

 15
Демо
ltrace
strace




 16
Shell: /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");
      }
  }




 17
Что делает код:
Системные вызовы: read, write, fork,
 exec, wait
Соглашения:
  – при ошибке код возврата -1
  – Код ошибки заносится в errno
  – Функция perror выводит сообщение об
    ошибке errno



 18
Вызов: fork
Создает потомка, точную копию вызвавшего
  процесса и возвращает управление родителю и
  потомку
Совпадает:
  – память процесса (код, данные, стек)
  – Атрибуты процесса: владелец, права, контекст
Отличаются:
  – PID
  – Код возврата при успешном fork
      – У потомка 0
      – У родителя pid потомка
 19
Вызов: exec
Замещает содержимое памяти
 вызвавшего процесса инструкциями и
 данными из файла на диске
То есть исполняет файл
Процесс остается тем же (сохраняет
 pid, uid, …)




 20
Вызов: wait
Ожидает завершения одного из
 потомков
Зачем?
Что будет если потомок завершится
 раньше wait?




 21
Почему fork/exec
           разделены?
Как ls узнает текущий каталог,
 stdin, stdout?
  – Наследует cwd и открытые файлы от
    родителя
Copy-on-write делает fork очень
 быстрым




 22
Вызовы: read/write
Аргументы:
  – Номер файла
  – Указатель на буфер
  – Число байтов
Возвращает число байтов




 23
Организация ОС:
          Традиционный подход
Виртуализуется часть ресурсов
  – ЦПУ
  – память
Каждое приложение «монопольно» ими
  распоряжается
Зачем? Так проще писать приложения
*nix, Windows NT


 24
Пример: виртуализация ЦПУ
Цель: эмулировать отдельный ЦПУ для каждого
 процесса
  – Переключение ЦПУ прозрачно
  – Процессу не нужно беспокоиться о других процессах
ОС выполняет процессы по-очереди до
 прерывания по таймеру
Таймер позволяет процессу не беспокоиться о
  переключениях

 25
Пример: виртуализация ЦПУ
Как это достигается?
  – ОС сохраняет и восстанавливает состояние (контекст)
    ЦПУ при каждом переключении
Что сохраняется?
  – Регистры, флаги, указатели на таблицы виртуальной
    памяти
Где сохраняется?
  – В таблице процессов
Прерывание таймера приводит к переключению
26
   на другой процесс
Демо
vmstat
cat /proc/1/status
ps




  27
Сколько у процесса может быть
                состояний?
man ps
 /STATE




 28
Пример: виртуализация памяти
Идея: для процесса доступно:
  – все адресное пространство 2^32
  – оно ссылается на его «частную память»
Удобно, безопасно
Как достигается? Физическая память общая.




 29
Варианты виртуализации памяти
Вытеснение процесса на диск при переключении
   – медленно
   – имело смысл в 90-х
Использование сегментов x86
   – переключать сегменты CS, DS на разные адреса
   – фрагментация памяти
Применить страничный механизм ЦПУ
   – Таблица физических адресов каждого 4К блока — страницы памяти
   – Это таблица страниц
   – Страницы можно помечать недействительными и переносить в подкачку — на
     диск
   – При обращении к такой странице возникает прерывание и страницу можно
     загрузить обратно
   – copy-on-write — избавить fork от копирования памяти
  30
Демо
vmstat
cat /proc/swaps
swapon -s




  31
Подходы к построению систем
Монолитное ядро
Гибридное (модульное ядро)
Микроядро
Экзоядро




 32
Планирование процессорного
               времени
Многозадачность:
  – Кооперативная (Windows 3.1, Mac OS 9, WOW16)
  – Вытесняющая (preemptive)




 33
Планирование процессорного
               времени
Долгосрочное
  – batch
Среднесрочное
  – BSD: выгрузка в подкачку неактивных процессов
  – Android: завершение задач при нехватки памяти
Краткосрочное
  – Планировщик ЦПУ в ядре



 34
Алгоритмы планировщика ЦПУ
FIFO/FCFS
SJF (Shortest Job First)
Приоритетное планирование (ОСРВ)
Round-Robin
Многоуровневые очереди с обратной связью
  – CFQ




 35
Управление памятью
Распределение
Защита
Разделение (sharing)
Логическая организация (сегменты)
Физическая организация (подкачка)




 36
Планирование ввода-вывода
Цели:
  – Сократить время поиска диском
  – Приоритезировать ввод-вывод
  – Разделить полосу пропускания устройства между
    процессами
  – Гарантировать исполнение запросов не позднее
    крайнего срока




 37
Планирование ввода-вывода
Реализации:
     – Случайное планирование (RSS)
     – FIFO/FCFS
     – LIFO
     – CFQ
     – SCAN (лифт)
     – Noop (FIFO с объединением)
     – Anticipatory (упреждающий)
     – Deadline (
38   – ...
Управление памятью
Кеш-буфер
Промахи страниц
  – Жесткие
  – Мягкие
Алгоритмы виртуальной памяти
  – LRU
  – Опережающая подгрузка
  – ...

 39
Производительность в числах
     Operation    Time (nsec)
     L1 cache reference 0.5
     Branch mispredict   5
     L2 cache reference 7
     Mutex lock/unlock 25
     Main 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
     Read 1MB sequentially from disk 20,000,000

40   Send packet CA -> Netherlands -> CA      150,000,000
Производительность в числах
Operation     Time (nsec)
System call overhead 400
Context switch between processes           3000
fork() (statically-linked binary) 70,000
fork() (dynamically-linked binary) 160,000




  41
Виктор Ашик
Куратор практик

119021, Россия, Москва,
ул. Льва Толстого, д. 16.

+7 (495) 739-70-00
+7 (495) 739-70-70 — факс

vashik@yandex-team.ru

More Related Content

What's hot

Операционная система GNU/Linux: устройство и функционирование
Операционная система GNU/Linux: устройство и функционированиеОперационная система GNU/Linux: устройство и функционирование
Операционная система GNU/Linux: устройство и функционированиеyaevents
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_rumcroitor
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_rumcroitor
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesIosif Itkin
 
процессоры
процессорыпроцессоры
процессорыttku
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Mikhail Kurnosov
 
Работа высоконагруженного DNS-сервера
Работа высоконагруженного DNS-сервераРабота высоконагруженного DNS-сервера
Работа высоконагруженного DNS-сервераudmlug
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFSOSLL
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Mikhail Kurnosov
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ontico
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3Technopark
 
процессоры презентация
процессоры   презентацияпроцессоры   презентация
процессоры презентацияИван Иванов
 
kranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record Lockerkranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record LockerKrivoy Rog IT Community
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013ru-fedora-moscow-2013
 
Лекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и системЛекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и системpianist2317
 
присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1Liudmila Li
 

What's hot (20)

Операционная система GNU/Linux: устройство и функционирование
Операционная система GNU/Linux: устройство и функционированиеОперационная система GNU/Linux: устройство и функционирование
Операционная система GNU/Linux: устройство и функционирование
 
08 server mgmt_ru
08 server mgmt_ru08 server mgmt_ru
08 server mgmt_ru
 
09 server mgmt_ii_ru
09 server mgmt_ii_ru09 server mgmt_ii_ru
09 server mgmt_ii_ru
 
Prez osob mikroproc
Prez osob mikroprocPrez osob mikroproc
Prez osob mikroproc
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
процессоры
процессорыпроцессоры
процессоры
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Работа высоконагруженного DNS-сервера
Работа высоконагруженного DNS-сервераРабота высоконагруженного DNS-сервера
Работа высоконагруженного DNS-сервера
 
Обзор файловой системы GlusterFS
Обзор файловой системы GlusterFSОбзор файловой системы GlusterFS
Обзор файловой системы GlusterFS
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
 
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
Ликбез по Эльбрусу, Константин Трушкин (МЦСТ)
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3
 
процессоры презентация
процессоры   презентацияпроцессоры   презентация
процессоры презентация
 
kranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record Lockerkranonit S04E01 Антон: Защита от Master Boot Record Locker
kranonit S04E01 Антон: Защита от Master Boot Record Locker
 
Krizhanovsky Vm
Krizhanovsky VmKrizhanovsky Vm
Krizhanovsky Vm
 
7812 hid
7812 hid7812 hid
7812 hid
 
Процессор
ПроцессорПроцессор
Процессор
 
1. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 20131. Sartakov. Virtualization. June 01, 2013
1. Sartakov. Virtualization. June 01, 2013
 
Лекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и системЛекция №9 Организация ЭВМ и систем
Лекция №9 Организация ЭВМ и систем
 
присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1присяжный Root Conf2009 Beta 1
присяжный Root Conf2009 Beta 1
 

Viewers also liked

дм прз-гл-1-рр-26
дм прз-гл-1-рр-26дм прз-гл-1-рр-26
дм прз-гл-1-рр-26Gulnaz Shakirova
 
Операционные системы 2015, лекция № 2
Операционные системы 2015, лекция № 2Операционные системы 2015, лекция № 2
Операционные системы 2015, лекция № 2Aleksey Bragin
 
Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7Aleksey Bragin
 
през лекц 2-6_файлы_091214_v1
през лекц 2-6_файлы_091214_v1през лекц 2-6_файлы_091214_v1
през лекц 2-6_файлы_091214_v1Gulnaz Shakirova
 
Операционные системы 2015, лекция № 4
Операционные системы 2015, лекция № 4Операционные системы 2015, лекция № 4
Операционные системы 2015, лекция № 4Aleksey Bragin
 
Файловые системы
Файловые системыФайловые системы
Файловые системыEvgeniy Mironov
 
Файловые системы
Файловые системыФайловые системы
Файловые системыyaevents
 
Безопасность ОС
Безопасность ОСБезопасность ОС
Безопасность ОСEvgeniy Mironov
 
Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1Aleksey Bragin
 
Операционные системы 2015, лекция № 6
Операционные системы 2015, лекция № 6Операционные системы 2015, лекция № 6
Операционные системы 2015, лекция № 6Aleksey Bragin
 
Операционные системы 2015, лекция № 3
Операционные системы 2015, лекция № 3Операционные системы 2015, лекция № 3
Операционные системы 2015, лекция № 3Aleksey Bragin
 
Операционные системы 2015, лекция № 8
Операционные системы 2015, лекция № 8Операционные системы 2015, лекция № 8
Операционные системы 2015, лекция № 8Aleksey Bragin
 
Операционные системы 2015, лекция № 5
Операционные системы 2015, лекция № 5Операционные системы 2015, лекция № 5
Операционные системы 2015, лекция № 5Aleksey Bragin
 
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)Aleksey Bragin
 
Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"Yandex
 
Информационная безопасность в открытых проектах (РИФ 2015)
Информационная безопасность в открытых проектах (РИФ 2015) Информационная безопасность в открытых проектах (РИФ 2015)
Информационная безопасность в открытых проектах (РИФ 2015) Aleksey Bragin
 
Файловые системы
Файловые системыФайловые системы
Файловые системыkurbanovafaina
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 

Viewers also liked (18)

дм прз-гл-1-рр-26
дм прз-гл-1-рр-26дм прз-гл-1-рр-26
дм прз-гл-1-рр-26
 
Операционные системы 2015, лекция № 2
Операционные системы 2015, лекция № 2Операционные системы 2015, лекция № 2
Операционные системы 2015, лекция № 2
 
Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7Операционные системы 2015, лекция № 7
Операционные системы 2015, лекция № 7
 
през лекц 2-6_файлы_091214_v1
през лекц 2-6_файлы_091214_v1през лекц 2-6_файлы_091214_v1
през лекц 2-6_файлы_091214_v1
 
Операционные системы 2015, лекция № 4
Операционные системы 2015, лекция № 4Операционные системы 2015, лекция № 4
Операционные системы 2015, лекция № 4
 
Файловые системы
Файловые системыФайловые системы
Файловые системы
 
Файловые системы
Файловые системыФайловые системы
Файловые системы
 
Безопасность ОС
Безопасность ОСБезопасность ОС
Безопасность ОС
 
Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1Операционные системы 2015, лекция № 1
Операционные системы 2015, лекция № 1
 
Операционные системы 2015, лекция № 6
Операционные системы 2015, лекция № 6Операционные системы 2015, лекция № 6
Операционные системы 2015, лекция № 6
 
Операционные системы 2015, лекция № 3
Операционные системы 2015, лекция № 3Операционные системы 2015, лекция № 3
Операционные системы 2015, лекция № 3
 
Операционные системы 2015, лекция № 8
Операционные системы 2015, лекция № 8Операционные системы 2015, лекция № 8
Операционные системы 2015, лекция № 8
 
Операционные системы 2015, лекция № 5
Операционные системы 2015, лекция № 5Операционные системы 2015, лекция № 5
Операционные системы 2015, лекция № 5
 
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
ReactOS Tech Talk (ВМК МГУ, ИСП РАН)
 
Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"Сергей Бережной "Внедрение БЭМ в существующие системы"
Сергей Бережной "Внедрение БЭМ в существующие системы"
 
Информационная безопасность в открытых проектах (РИФ 2015)
Информационная безопасность в открытых проектах (РИФ 2015) Информационная безопасность в открытых проектах (РИФ 2015)
Информационная безопасность в открытых проектах (РИФ 2015)
 
Файловые системы
Файловые системыФайловые системы
Файловые системы
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 

Similar to Операционные системы

TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Mikhail Kurnosov
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Ontico
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)Mikhail Kurnosov
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015OSLL
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2Technopark
 
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...rit2011
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelMikhail Kurnosov
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPUMikhail Kurnosov
 
prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.pptssusere2bc36
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Антон Шумихин - Архитектура ОС
Антон Шумихин - Архитектура ОСАнтон Шумихин - Архитектура ОС
Антон Шумихин - Архитектура ОСGAiN@ESD
 
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...Mikhail Kurnosov
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Mikhail Kurnosov
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelMikhail Kurnosov
 
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 

Similar to Операционные системы (20)

TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...Современная операционная система: что надо знать разработчику / Александр Кри...
Современная операционная система: что надо знать разработчику / Александр Кри...
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015Linuxvirt seminar-csc-2015
Linuxvirt seminar-csc-2015
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
краткий, неполный и в основном неверный обзор сетевой подсистемы в Windows. а...
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPU
 
prezlec_Історія.ppt
prezlec_Історія.pptprezlec_Історія.ppt
prezlec_Історія.ppt
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Антон Шумихин - Архитектура ОС
Антон Шумихин - Архитектура ОСАнтон Шумихин - Архитектура ОС
Антон Шумихин - Архитектура ОС
 
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
 
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
Лекция 5: Многопоточное программирование: часть 1 (Multithreading programming...
 
Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
Язык параллельного программирования Cray Chapel
Язык параллельного программирования Cray ChapelЯзык параллельного программирования Cray Chapel
Язык параллельного программирования Cray Chapel
 
Презентация 5
Презентация 5Презентация 5
Презентация 5
 
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 3. Векторизация кода (Code vectorization: SSE, AVX)
 

More from yaevents

Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...yaevents
 
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, ЯндексТема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, Яндексyaevents
 
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...yaevents
 
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексi-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексyaevents
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...yaevents
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...yaevents
 
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...yaevents
 
Мониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, ЯндексМониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, Яндексyaevents
 
Истории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, ЯндексИстории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, Яндексyaevents
 
Разработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, ShturmannРазработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, Shturmannyaevents
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...yaevents
 
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...yaevents
 
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, ЯндексСканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндексyaevents
 
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, FacebookМасштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebookyaevents
 
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...yaevents
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...yaevents
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...yaevents
 
В поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, НигмаВ поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, Нигмаyaevents
 
Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...yaevents
 

More from yaevents (20)

Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Я...
 
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, ЯндексТема для WordPress в БЭМ. Владимир Гриненко, Яндекс
Тема для WordPress в БЭМ. Владимир Гриненко, Яндекс
 
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
Построение сложносоставных блоков в шаблонизаторе bemhtml. Сергей Бережной, Я...
 
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндексi-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
i-bem.js: JavaScript в БЭМ-терминах. Елена Глухова, Варвара Степанова, Яндекс
 
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
Дом из готовых кирпичей. Библиотека блоков, тюнинг, инструменты. Елена Глухов...
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
Администрирование небольших сервисов или один за всех и 100 на одного. Роман ...
 
Мониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, ЯндексМониторинг со всех сторон. Алексей Симаков, Яндекс
Мониторинг со всех сторон. Алексей Симаков, Яндекс
 
Истории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, ЯндексИстории про разработку сайтов. Сергей Бережной, Яндекс
Истории про разработку сайтов. Сергей Бережной, Яндекс
 
Разработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, ShturmannРазработка приложений для Android на С++. Юрий Береза, Shturmann
Разработка приложений для Android на С++. Юрий Береза, Shturmann
 
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
Кросс-платформенная разработка под мобильные устройства. Дмитрий Жестилевский...
 
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
Сложнейшие техники, применяемые буткитами и полиморфными вирусами. Вячеслав З...
 
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, ЯндексСканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
Сканирование уязвимостей со вкусом Яндекса. Тарас Иващенко, Яндекс
 
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, FacebookМасштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
Масштабируемость Hadoop в Facebook. Дмитрий Мольков, Facebook
 
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...Контроль зверей: инструменты для управления и мониторинга распределенных сист...
Контроль зверей: инструменты для управления и мониторинга распределенных сист...
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
C++11 (formerly known as C++0x) is the new C++ language standard. Dave Abraha...
 
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
Зачем обычному программисту знать языки, на которых почти никто не пишет. Але...
 
В поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, НигмаВ поисках математики. Михаил Денисенко, Нигма
В поисках математики. Михаил Денисенко, Нигма
 
Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...Using classifiers to compute similarities between face images. Prof. Lior Wol...
Using classifiers to compute similarities between face images. Prof. Lior Wol...
 

Операционные системы

  • 1. Операционные системы Виктор Ашик Куратор практик Лекция КИТ, Москва, 16 февраля 2011 года
  • 3. Операционные системы План лекции — UNIX и *nix — системные вызовы — strace и ltrace — планировщики ЦПУ и ввода-вывода — управление памятью 3
  • 4. Какие ОС вы знаете? 4
  • 5. Сколько ОС у меня в телефоне? 5
  • 6. UNIX® 1969 (AT&T/Bell Labs: Томпсон, Керниган, Ритчи) Распространялась свободно Стандарт де-факто и де-юро (POSIX) AIX, Solaris, Mac OS X/FreeBSD/NetBSD/OpenBSD — генетически UNIX® Linux, Minix — реализации Есть реализации POSIX для Windows Далее — *nix 6
  • 7. *nix = переносимость Стандарты – Portable Operating System Interface [for Unix] – ISO C/C++ (STL) Runtime – Shell – Java – Perl/Python/PHP/... 7
  • 8. Что приложения хотят от ОС? Абстракцию оборудования Координацию совместной работы с устройствами Изоляцию сбойных приложений Обмен между приложениями 9
  • 10. Какие сервисы предлагает ОС? Процессы Память Содержимое файлов Каталоги и имена файлов Безопасность … (пользователи, IPC, сеть, терминалы) 11
  • 11. Как приложения обращаются к системе? ABI - syscalls mov edx,len mov ecx,msg mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 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 12
  • 12. Что плохо в этом примере? 13
  • 13. Как приложения обращаются к системе? ABI - syscalls int main() { __asm__( "movl $20, %eax n" "call *%gs:0x10 n" "movl %eax, pid n" ); printf("pid is %dn", pid); return 0; } 14
  • 14. Как это записать на C? ABI - syscalls #include <unistd.h> /* ... */ const char msg[] = "Hello world"; write( STDOUT_FILENO, msg, sizeof( msg ) - 1 ); /* Где вызов функции write превращается в syscall? */ 15
  • 16. Shell: /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"); } } 17
  • 17. Что делает код: Системные вызовы: read, write, fork, exec, wait Соглашения: – при ошибке код возврата -1 – Код ошибки заносится в errno – Функция perror выводит сообщение об ошибке errno 18
  • 18. Вызов: fork Создает потомка, точную копию вызвавшего процесса и возвращает управление родителю и потомку Совпадает: – память процесса (код, данные, стек) – Атрибуты процесса: владелец, права, контекст Отличаются: – PID – Код возврата при успешном fork – У потомка 0 – У родителя pid потомка 19
  • 19. Вызов: exec Замещает содержимое памяти вызвавшего процесса инструкциями и данными из файла на диске То есть исполняет файл Процесс остается тем же (сохраняет pid, uid, …) 20
  • 20. Вызов: wait Ожидает завершения одного из потомков Зачем? Что будет если потомок завершится раньше wait? 21
  • 21. Почему fork/exec разделены? Как ls узнает текущий каталог, stdin, stdout? – Наследует cwd и открытые файлы от родителя Copy-on-write делает fork очень быстрым 22
  • 22. Вызовы: read/write Аргументы: – Номер файла – Указатель на буфер – Число байтов Возвращает число байтов 23
  • 23. Организация ОС: Традиционный подход Виртуализуется часть ресурсов – ЦПУ – память Каждое приложение «монопольно» ими распоряжается Зачем? Так проще писать приложения *nix, Windows NT 24
  • 24. Пример: виртуализация ЦПУ Цель: эмулировать отдельный ЦПУ для каждого процесса – Переключение ЦПУ прозрачно – Процессу не нужно беспокоиться о других процессах ОС выполняет процессы по-очереди до прерывания по таймеру Таймер позволяет процессу не беспокоиться о переключениях 25
  • 25. Пример: виртуализация ЦПУ Как это достигается? – ОС сохраняет и восстанавливает состояние (контекст) ЦПУ при каждом переключении Что сохраняется? – Регистры, флаги, указатели на таблицы виртуальной памяти Где сохраняется? – В таблице процессов Прерывание таймера приводит к переключению 26 на другой процесс
  • 27. Сколько у процесса может быть состояний? man ps /STATE 28
  • 28. Пример: виртуализация памяти Идея: для процесса доступно: – все адресное пространство 2^32 – оно ссылается на его «частную память» Удобно, безопасно Как достигается? Физическая память общая. 29
  • 29. Варианты виртуализации памяти Вытеснение процесса на диск при переключении – медленно – имело смысл в 90-х Использование сегментов x86 – переключать сегменты CS, DS на разные адреса – фрагментация памяти Применить страничный механизм ЦПУ – Таблица физических адресов каждого 4К блока — страницы памяти – Это таблица страниц – Страницы можно помечать недействительными и переносить в подкачку — на диск – При обращении к такой странице возникает прерывание и страницу можно загрузить обратно – copy-on-write — избавить fork от копирования памяти 30
  • 31. Подходы к построению систем Монолитное ядро Гибридное (модульное ядро) Микроядро Экзоядро 32
  • 32. Планирование процессорного времени Многозадачность: – Кооперативная (Windows 3.1, Mac OS 9, WOW16) – Вытесняющая (preemptive) 33
  • 33. Планирование процессорного времени Долгосрочное – batch Среднесрочное – BSD: выгрузка в подкачку неактивных процессов – Android: завершение задач при нехватки памяти Краткосрочное – Планировщик ЦПУ в ядре 34
  • 34. Алгоритмы планировщика ЦПУ FIFO/FCFS SJF (Shortest Job First) Приоритетное планирование (ОСРВ) Round-Robin Многоуровневые очереди с обратной связью – CFQ 35
  • 35. Управление памятью Распределение Защита Разделение (sharing) Логическая организация (сегменты) Физическая организация (подкачка) 36
  • 36. Планирование ввода-вывода Цели: – Сократить время поиска диском – Приоритезировать ввод-вывод – Разделить полосу пропускания устройства между процессами – Гарантировать исполнение запросов не позднее крайнего срока 37
  • 37. Планирование ввода-вывода Реализации: – Случайное планирование (RSS) – FIFO/FCFS – LIFO – CFQ – SCAN (лифт) – Noop (FIFO с объединением) – Anticipatory (упреждающий) – Deadline ( 38 – ...
  • 38. Управление памятью Кеш-буфер Промахи страниц – Жесткие – Мягкие Алгоритмы виртуальной памяти – LRU – Опережающая подгрузка – ... 39
  • 39. Производительность в числах Operation Time (nsec) L1 cache reference 0.5 Branch mispredict 5 L2 cache reference 7 Mutex lock/unlock 25 Main 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 Read 1MB sequentially from disk 20,000,000 40 Send packet CA -> Netherlands -> CA 150,000,000
  • 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 41
  • 41. Виктор Ашик Куратор практик 119021, Россия, Москва, ул. Льва Толстого, д. 16. +7 (495) 739-70-00 +7 (495) 739-70-70 — факс vashik@yandex-team.ru