Лаборатория Tarantool

Системное программирование

Лекция 0:

О курсе СП. История Unix, Linux. Архитектуры. Стандарты.

Version: 2

The presentation is outdated and not maintained anymore. Please, refer to the English version for the most actual slides.

Владислав Шпилевой

v.shpilevoy@corp.mail.ru

@gerold103

  • 11 занятий
  • 2 часа лекция, 1 час прак
  • 5 праков, 1 экзамен
  • 1 дз - 15-25 баллов, экзамен - 25 баллов
  • вопросы на лекциях - 1-2 балла за штуку
  • < 50 - 2, < 70 - 3, < 90 - 4, <= 100 - 5

О курсе [1]

Книги:

  • "Linux Kernel Development" Third Edition, Robert Love
  • "Advanced Programming in the UNIX Environment" Second Edition, Richard Stevens

Обратная связь: goo.gl/forms/TAeraYrqJcil7GDt1

и на портале Техносферы

О курсе [2]

Что понадобится? [1]

Любой Linux или Mac

Что понадобится? [2]

Что делать, если Windows?

Делай раз

Делай два

Установить Virtualbox

Скачать ISO образ Ubuntu или другого Linux

Делай три

Установить ОС из образа, пользоваться

Uniplexed Information and Computing Service

Деннис
Ритчи

Кен
Томпсон

Bell Labs

Unix

В 1969 г. Bell Labs покидает проект  и создает Unix

Multics

Multiplexed Information and Computing Service

1 - Унифицированная память процесса

Write

Write

Process memory

Multics

void *
mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset);

2 - Динамическая линковка

Process memory

data[]

mov edx, [ebp+8]

Код

Данные

Multics

.so, .dll, .dylib

PIC - Position Independent Code

$> man gcc
-fpic
    ...
-fPIC
    ...

3 - Изменение аппаратной конфигурации

Multics

4 - Shell

Multics

v.shpilevoy$> echo 'hello world'

5 - Кольца безопасности

Multics

6 - Иерархическая файловая система

Multics

Unix

UNIX / eunuchs

Компьютер для работы в Multics

Unix

1969

Создание

1970

Имя

1971

man

Unix

1973

AT&T выпускает Unix System V

1977

Berkeley Software Distribution

1982

Переписана на С

Unix

Unix системы

Unix

AT&T продает UNIX

Unix

"Unix Wars"

Linux

Эндрю

Танненбаум

Линус

Торвальдс

Linux

Ядро

Окружение

Драйверы, файловая система, виртуальная память, ...

GUI, компилятор, консоль, библиотеки, текстовые редакторы

Linux

Linux

"GNU is Not Unix"

Ричард Столлман

Linux

Torvalds UniX

TUX

Оригинал

Linux Kernel Mailing List

 

http://vger.kernel.org

Linux

  • Linux - не Unix
  • *BSD - не Unix
  • MacOS, Solaris - Unix
  • Linux, MacOS, *BSD - 3 разных системы, ядра которых писались "нeзависимо", но по заветам Unix

"Tanenbaum–Torvalds debate"

Микро- и монолитное ядра

Микроядро

IPC

Virtual Memory

Scheduler

Адресное пространство ядра

Адресное пространство пользователя

Keyboard driver

Sound

driver

<mute sound>

Обмен сообщениями через ядро

Микроядро

Darwin

Mach

Unix

MacOS

iOS

watchOS

tvOS

#Mac
v.shpilevoy$ uname
Darwin

Монолитное ядро

IPC

Virtual Memory

Scheduler

Keyboard driver

Sound

driver

<mute sound>

Вызов функции в том же процессе

Адресное пространство ядра

Адресное пространство пользователя

Системные вызовы

Стандарты

Research Unix Release 7 50
4.4BSD 110
System V Release 4 120
Linux 3.2.0 380
FreeBSD 8.0 > 450
First Unix 6

Количество системных вызовов

Стандарты - для переносимости, совместимости

Стандарты

Uniform Draft Standard 1983

Berkeley Sockets

Заключение

Обратная связь: goo.gl/forms/TAeraYrqJcil7GDt1

и на портале Техносферы

В следующий раз:

Ядро. Устройство. Планировщики процессов.