Операционные системы для разработчиков программного обеспечения. (Лекция 3)

Содержание

Слайд 2

План курса

Введение
Что такое ОС? Зачем они нужны?
Основные идеи и принципы ОС
Ядро ОС,

План курса Введение Что такое ОС? Зачем они нужны? Основные идеи и
планировщик, прерывания, многозадачность
Процессы, потоки и таймеры
Многозадачность
Процессы, потоки, средства IPC в Windows и POSIX
Работа с таймерами и временем в Windows и POSIX
Средства разработки кроссплатформенных приложений
Сеть
Принцип построения сетей, стек протоколов TCP\IP
Интерфейсы создания сетевых приложений Windows и POSIX
Маршаллинг данных, средства RPC

Слайд 3

План лекции

Таймеры и время
Особенности таймеров ОС
Работа со временем и календарем в Windows

План лекции Таймеры и время Особенности таймеров ОС Работа со временем и
и POSIX
Разработка кроссплатформенных приложений на C/C++
Предопределенные макросы компиляторов
Средства автоматизации сборки
Функции библиотек Boost и QT для реализации IPC и работы со временем

Слайд 4

Принцип устройства таймера, работа с датой и временем

Таймеры

Принцип устройства таймера, работа с датой и временем Таймеры

Слайд 5

Таймеры ОС

Аппаратные таймеры
ограниченное число таймеров
всего два программируемых события (будильника) на один таймер
ограниченная

Таймеры ОС Аппаратные таймеры ограниченное число таймеров всего два программируемых события (будильника)
глубина счёта таймера
Таймер в ОС — это программный модуль
использует всего 1 аппаратный таймер (обычно, самый большой из доступных – 32 бита)
ведёт список всех запланированных задач
ставит будильник на ближайшую задачу
по срабатыванию – рассчитывает время до следующей задачи
переставляет будильник на следующую задачу
фиксирует моменты переполнения таймера и корректно их обрабатывает

Слайд 6

Работа со временем в ОС

Аппаратно время отсчитывается RTC (realtime clock)
В настольных компьютерах

Работа со временем в ОС Аппаратно время отсчитывается RTC (realtime clock) В
размещены на материнской плате
Микросхема счета
Кварцевый резонатор
Батарейка
Любая ОС предоставляет функции для работы с датой
Обычно дата представлена в UNIX-time
количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года («эпоха Unix»)
Любая ОС предоставляет функции для замораживания (ожидания таймера или события) потоков и процессов.
Исполнение замороженного процесса откладывается планировщиком до таймаута

Слайд 7

Время в POSIX

Ожидание (#include ):
unsigned sleep(unsigned seconds);
int usleep(useconds_t useconds);
#include :

Время в POSIX Ожидание (#include ): unsigned sleep(unsigned seconds); int usleep(useconds_t useconds);

int nanosleep(const struct timespec *req, struct timespec *rem);
Получить время:
#include : time_t time(time_t *tloc);
#include :
int gettimeofday(struct timeval *restrict tp, void *restrict tzp);
Работа с датой (#include ):
struct tm *localtime(const time_t *timer);
struct tm *gmtime(const time_t *timer);
size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr);
Огромное количество других функций, например clock_* для работы с конкретными часами

Слайд 8

Время в Windows

Ожидание:
VOID Sleep(DWORD dwMilliseconds);
DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable);
Получить время:
#include : time_t

Время в Windows Ожидание: VOID Sleep(DWORD dwMilliseconds); DWORD SleepEx(DWORD dwMilliseconds, BOOL bAlertable);
time(time_t *tloc);
GetSystemTimeAsFileTime:
Получить дату:
VOID GetSystemTime(LPSYSTEMTIME lpSystemTime);
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);

Слайд 9

Предопределенные макросы компиляторов,
средства автоматизации сборки,
функции библиотек Boost и QT для реализации IPC

Предопределенные макросы компиляторов, средства автоматизации сборки, функции библиотек Boost и QT для
и работы со временем

Кроссплатформенность в С/C++

Слайд 10

Макросы компиляторов

Кроссплатформенный код на C/C++ обычно пишется с использованием макросов, определяющих ОС,

Макросы компиляторов Кроссплатформенный код на C/C++ обычно пишется с использованием макросов, определяющих
компилятор, аппаратное обеспечение и т.п.
Список предопределенных макросов: https://sourceforge.net/projects/predef/

Слайд 11

Автоматизация сборки

Система автоматизации сборки решает множество задач разработки ПО:
Компиляция объектных модулей
Определение ОС

Автоматизация сборки Система автоматизации сборки решает множество задач разработки ПО: Компиляция объектных
или доступности тех или иных модулей
Линковка объектных модулей в исполняемые файлы
Поиск зависимостей
Выполнение тестов
Развертывание системы в целевой среде
Автоматическое создание документации программиста, описание изменений
Популярные системы автоматизации сборки:
Make (только POSIX системы)
SCons (https://scons.org/)
CMake (https://cmake.org/)
QMake (поставляется с QT)

Слайд 12

Boost и QT

Boost.Threads
Boost.Process
Boost.Interprocess
Boost.Filesystem
Boost.Date_Time

QThread
QProcess
QSharedMemory, QTcpSocket, QTcpServer,…
QFile
QDateTime

https://www.boost.org/doc/libs/1_78_0/?view=categorized
https://doc.qt.io/qt-5/index.html

Boost и QT Boost.Threads Boost.Process Boost.Interprocess Boost.Filesystem Boost.Date_Time QThread QProcess QSharedMemory, QTcpSocket,

Слайд 13

С++11 и С++17

С++11:
std::thread из
std::mutex, std::recursive_mutex, std::condition_variable
std::shared_ptr
std::atomic<>
С++17:
std::filesystem из boost::filesystem
Далее:
Возможно, появятся и

С++11 и С++17 С++11: std::thread из std::mutex, std::recursive_mutex, std::condition_variable std::shared_ptr std::atomic С++17:
сокеты ☺

Слайд 15

Компьютерная сеть

Компьютерная сеть — система, обеспечивающая обмен данными между вычислительными устройствами (компьютерами)

Компьютерная сеть Компьютерная сеть — система, обеспечивающая обмен данными между вычислительными устройствами
и другим оборудованием или программным обеспечением.
Классификации сетей:
По масштабу и территориальной распространенности
По типу коммутации:
Коммутация каналов
Коммутация пакетов
По архитектуре
Клиент-серверная
Одноранговая
Гибридная
По топологии:
Общая шина
Звезда
Кольцо
Полносвязные сети

Самая большая компьютерная сеть – Интернет. Это глобальная полносвязная гибридная сеть с коммутацией пакетов.

Слайд 16

Модели OSI и TCP\IP

Модели OSI и TCP\IP

Слайд 17

Физический уровень OSI

Физический уровень описывает способы передачи бит через физические среды линий

Физический уровень OSI Физический уровень описывает способы передачи бит через физические среды
связи, соединяющие сетевые устройства. На этом уровне описываются параметры сигналов, такие как: амплитуда, частота, фаза, используемая модуляция.
Задачи: синхронизация сигналов, избавление от помех, скорость передачи данных.
Технические средства: кабели, разъемы, повторители, концентраторы (хабы), медиаконверторы.
Тип данных: бит.
Примеры: витая пара, «коаксиал», «оптоволокно», радиоканал

Слайд 18

Канальный уровень OSI

Канальный уровень осуществляет доставку кадров (frame) между устройствами, подключенными к

Канальный уровень OSI Канальный уровень осуществляет доставку кадров (frame) между устройствами, подключенными
одному сетевому сегменту.
Задачи:
Обеспечение доступа к среде передачи
Выделение границ кадра (начала/конца сообщения в потоке бит)
Аппаратная адресация
Обеспечение достоверности принимаемых данных (алгоритмы контрольных сумм)
Технические средства: коммутаторы, точки доступа, сетевые мосты
Тип данных: кадр
Примеры: Ethernet, DSL

Слайд 19

MAC-адрес

Служит для идентификации сетевых интерфейсов узлов сетей
Ethernet (IEEE 802.3)
Wi-Fi (IEEE 802.11)
Регламентирован стандартом

MAC-адрес Служит для идентификации сетевых интерфейсов узлов сетей Ethernet (IEEE 802.3) Wi-Fi
IEEE-802
Длина 6 байт (48 бит)
Форма записи - шесть шестнадцатеричных чисел:
94-DE-80-B0-3B-DB
94:de:80:b0:3b:db
Типы:
Индивидуальный (unicast)
94-DE-80-B0-3B-DB
Групповой (multicast): первый (младший) бит старшего байта адреса равен 1
33-83-C4-11-B3-08 [33 == 0011 0011]
Широковещательный (broadcast): все биты равны 1
FF-FF-FF-FF-FF-FF

Слайд 20

Кадр Ethernet II (DIX)

6 байт: адрес
назначения

6 байт: адрес
источника

46-1500 байт:
данные

4

Кадр Ethernet II (DIX) 6 байт: адрес назначения 6 байт: адрес источника
байта: контрольная сумма

Тип пакета

0800 – IPv4
86DD – IPv6
0806 – ARP
В 802.3: размер payload

Преамбула: 1 байт
10101010;
10101011

Слайд 21

Сетевой уровень OSI

Сетевой уровень отвечает за трансляцию логических адресов и имён в

Сетевой уровень OSI Сетевой уровень отвечает за трансляцию логических адресов и имён
физические, определение кратчайших маршрутов, коммутацию и маршрутизацию, отслеживание неполадок и заторов в сети. Объединяет сети, построенные на основе разных технологий (Ethernet, Wi-Fi, 4G\3G\2G, Token Ring, FDDI, …)
Задачи:
Создание составной сети, согласование различий в сетях
Адресация (сетевые или глобальные адреса)
Определение маршрута пересылки пакетов в составной сети (маршрутизация)
Технические средства: маршрутизаторы
Тип данных: пакет
Примеры: IPv4, IPv6, ICMP

Слайд 22

IP-адреса

IP-адрес - глобальный адрес, используемый в стеке протоколов TCP/IP
Используется для уникальной идентификации

IP-адреса IP-адрес - глобальный адрес, используемый в стеке протоколов TCP/IP Используется для
компьютеров в составной сети, в частности в глобальной сети Интернет
Две версии протокола IP:
IPv4 - 4 байта, 32 бита
IPv6 - 16 байт, 128 бит
Сетевой уровень использует агрегацию адресов, т.е. работает не с отдельными адресами, а с группами адресов (подсетями)
Подсеть (subnet) – множество компьютеров сети, у которых старшая часть IP адреса одинаковая

Слайд 23

IPv4

IP-адрес версии 4 : 4 байта, 32 бита
Форма представления:
4 десятичных числа 0-255

IPv4 IP-адрес версии 4 : 4 байта, 32 бита Форма представления: 4
(октет, 8 бит) разделенных точками, например: 192.168.10.77
1100 0000 1010 1000 0000 1010 0100 1101

32 бита, 4 октета

192

168

10

77

Слайд 24

Маска IPv4

Маска подсети показывает, где в IP адресе номер сети, а где

Маска IPv4 Маска подсети показывает, где в IP адресе номер сети, а
хоста. Структура маски:
Длина: 32 бита
Единицы в позициях, задающих номер сети
Нули в позициях, задающих номер хоста
Пример:
IP (десятичный): 192.168.10.77
IP: 1100 0000 1010 1000 0000 1010 0100 1101
Маска: 1111 1111 1111 1111 1111 1111 0000 0000
Подсеть: 1100 0000 1010 1000 0000 1010 0000 0000
Подсеть (десятичный): 192.168.10.0
Представление маски:
Десятичное представление
IP-адрес: 192.168.10.77
Маска подсети: 255.255.255.0
Адрес подсети: 192.168.10.0
В виде префикса (указывает, сколько старших бит маски равны 1)
192.168.10.77/24
Адрес подсети 192.168.10.0

&

Слайд 25

Типы IP-адресов версии 4

Широковещательный адрес (пакеты передаются только внутри подсети):
В номере хоста

Типы IP-адресов версии 4 Широковещательный адрес (пакеты передаются только внутри подсети): В
все единицы:
IP-адрес: 192.168.10.77/24
Широковещательный адрес: 192.168.10.255
В адресе все единицы:
Широковещательный адрес: 255.255.255.255
Мультивещательный адрес (пакеты передаются маршрутизаторами по особым правилам):
Диапазон адресов: 224.0.0.0 – 239.255.255.255
Частный адрес (не маршрутизируются в Интернет):
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Особые адреса:
127.0.0.0/8 – обратная петля (loopback)
169.254.0.0/16 – Link-local адреса

Слайд 26

Исчерпание IP-адресов v4

Длина IPv4 адреса – 32 бита
Максимум 4294967296 (232) IP-адреса, минус

Исчерпание IP-адресов v4 Длина IPv4 адреса – 32 бита Максимум 4294967296 (232)
служебные
Февраль 2011 года IANA выделила региональным интернет-регистраторам последние пять оставшихся блоков /8 из своего адресного пространства
2017 год - все регистраторы заявили об исчерпании адресов
Пути решения
Переход к бекслассовой адресации (на основе маски)
Network Address Translation (NAT)
IPv6 – длина адреса 16 байт

Слайд 27

IP-адреса версии 6

Адрес IPv6 состоит из 128 бит (16 байт)
340282366920938463463374607431768211456
Адреса IPv6

IP-адреса версии 6 Адрес IPv6 состоит из 128 бит (16 байт) 340282366920938463463374607431768211456
отображаются как восемь четырёхзначных шестнадцатеричных чисел (то есть групп по четыре символа), разделённых двоеточием.
2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d
Если две и более групп подряд равны 0000, то они могут быть опущены и заменены на двойное двоеточие (::)
2001:0db8:0000:0000:0000:0000:ae21:ad12
2001:0db8::ae21:ad12
Для записи маски используется только префиксная форма:
2001:0db8:ae21::/64

Слайд 28

Формат IP-пакета (v4)

Общий размер пакета, включая заголовок и данные, в байтах.
Максимальное значение:

Формат IP-пакета (v4) Общий размер пакета, включая заголовок и данные, в байтах.
65535 байт
На практике длина выбирается с учетом размера кадра канального уровня, наиболее часто:
1500 байт (Ethernet)

Слайд 29

Формат IP-пакета (v6)

Класс трафика – DSCP + ECN
Метка потока (Flow Label) – используется

Формат IP-пакета (v6) Класс трафика – DSCP + ECN Метка потока (Flow
отправителем для обозначения последовательности пакетов мультимедиа.

Слайд 30

Транспортный уровень OSI

Транспортный уровень обеспечивает передачу данных между процессами на хостах, предоставляя

Транспортный уровень OSI Транспортный уровень обеспечивает передачу данных между процессами на хостах,
механизм передачи.
Управление надежностью:
Может предоставлять надежность выше, чем у сети
Может предоставлять защищенный от ошибок канал с гарантированным порядком следования сообщений
Сообщения доставляются от источника адресату (принцип точка-точка)
Технические средства: хосты
Тип данных: датаграммы и сегменты
Примеры: UDP, TCP

Слайд 31

Адресация

Для адресации на транспортном уровне используется понятие порта.
Порт – это 16-битный

Адресация Для адресации на транспортном уровне используется понятие порта. Порт – это
адрес, 1…65535, адрес 0 имеет специальное значение («любой» порт)
Каждое сетевое приложение на хосте должно иметь свой сетевой порт для получения данных. Но несколько приложений могут занимать один и тот же порт.
Форма записи адреса хоста: ip-адрес:номер_порта, пример: 192.168.0.77:80
Порты отдельно определены для разных протоколов транспортного уровня: TCP, UDP

Слайд 32

Протокол UDP

UDP - User Datagram Protocol - Протокол дейтаграмм пользователя
Сообщение UDP называется

Протокол UDP UDP - User Datagram Protocol - Протокол дейтаграмм пользователя Сообщение
"дейтаграмма", по аналогии с "телеграммой"
Особенности UDP:
Соединение не устанавливается
Нет гарантии доставки данных
Нет гарантии сохранения порядка следования сообщений
Надежность доставки UDP-сообщения равна надежности доставки IP-сообщения
Преимущества UDP:
Скорость и удобство работы
Нет накладных расходов на установку соединения
Работа с отдельными пакетами данных (дейтаграммами), а не с потоком байт
Надежность на уровне приложения
В некоторых задачах (чувствительные ко времени приложения) потеря отдельных пакетов не критична, намного более важным является сохранение постоянно высокой скорости работы
В современных сетях ошибки происходят редко
Ошибку может обработать приложение, причем более эффективно

Слайд 33

Протокол TCP

TCP – Transmission Control Protocol – протокол управления передачей
Сервис TCP:
Надежная передача

Протокол TCP TCP – Transmission Control Protocol – протокол управления передачей Сервис
потока байт (reliable byte stream)
TCP гарантирует:
Доставку данных
Сохранение порядка следования сообщений
Особенности TCP:
TCP обеспечивает сквозную передачу потока байт. Получатель и приемник должны сами выделять в ней отдельные сообщения, если это необходимо.
TCP сам разбивает посылку на нужное количество сегментов на стороне отправителя и сам собирает посылку из сегментов на стороне получателя.

Слайд 34

Прикладной уровень OSI

Прикладной уровень обеспечивает взаимодействие сети и пользователя. Уровень разрешает приложениям

Прикладной уровень OSI Прикладной уровень обеспечивает взаимодействие сети и пользователя. Уровень разрешает
пользователя иметь доступ к сетевым службам, таким, как обработчик запросов к базам данных, доступ к файлам, пересылке электронной почты. Также отвечает за передачу служебной информации, предоставляет приложениям информацию об ошибках и формирует запросы к уровню представления.
Технические средства: хосты
Тип данных: сообщение
Примеры: HTTP, FTP, POP3, IMAP, DNS…

Слайд 35

Принцип работы, UDP-сервер и клиент, TCP-сервер и клиент

Сокеты Беркли

Принцип работы, UDP-сервер и клиент, TCP-сервер и клиент Сокеты Беркли

Слайд 36

Сокеты Беркли

Сокеты впервые появились в ОС Berkeley UNIX 4.2 BSD (1983 г)
Сокет

Сокеты Беркли Сокеты впервые появились в ОС Berkeley UNIX 4.2 BSD (1983
в NIX-системе это «файл» специального вида
Все, что записывается в файл, передается по сети
Все, что получено из сети, можно прочитать из файла
Передача данных по сети скрыта от программиста
Сокеты - де-факто стандарт интерфейсов для транспортной подсистемы
Сокеты (разной реализации) поддерживаются практически во всех современных ОС и ЯП.

Слайд 37

Операции с сокетами

Операции с сокетами

Слайд 38

Сокеты для UDP

Используются только операции создания (socket), связывания (bind), закрытия (close), отправки

Сокеты для UDP Используются только операции создания (socket), связывания (bind), закрытия (close),
(send) и получения (receive)
Программа может использовать связывание (bind), чтобы закрепиться на конкретном порту и сетевом адресе (интерфейсе), а может указывать значения по-умолчанию (0) – дать системе выбрать автоматически
При отправке нужно указывать адрес и порт назначения
Можно использовать connect для назначения адреса и порта отправки по-умолчанию.

Слайд 39

Простейший сервер UDP на C

Простейший сервер UDP на C

Слайд 40

Простейший клиент UDP на C

l

Простейший клиент UDP на C l

Слайд 41

Принцип работы сервера TCP

Сервер создает сокет, «биндит» (bind) его на свой порт

Принцип работы сервера TCP Сервер создает сокет, «биндит» (bind) его на свой
и адрес и запускает на сокете прослушку (listen)
Если на слушающий сокет приходит запрос на соединение – сервер вызывает функцию accept, которая возвращает новый сокет для работы с конкретным клиентом
Сервер запоминает сокеты для каждого клиента и работает с ними
Для одновременного ожидания событий на множестве сокетов используются функции select или poll
При отключении клиента сервер получает событие от функции poll (select) или ошибку при попытке записи или чтения из связанного сокета – тогда он закрывает (close) сокет клиента и удаляет его данные из памяти.

Слайд 42

Принцип работы клиента TCP

Клиент создает сокет, «биндит» (bind) его на конкретный (или

Принцип работы клиента TCP Клиент создает сокет, «биндит» (bind) его на конкретный
стандартный) интерфейс и автоматически выбираемый системой порт (0)
Клиент вызывает функцию connect(). Если функция возвращает успех – клиент может работать с сервером посредством записи (send) или чтения (receive) данных с сокета.
Когда клиент заканчивает работу – он вызывает функцию close для закрытия соединения

Слайд 43

Порядок байт, XDR

Маршаллинг данных

Порядок байт, XDR Маршаллинг данных

Слайд 44

Передача бинарных данных

Передача бинарных данных

Слайд 45

Проблемы бинарных данных

Разные размерности типов на разных компьютерах и ОС
Разный порядок байтов

Проблемы бинарных данных Разные размерности типов на разных компьютерах и ОС Разный
на разных процессорах (иногда жестко установлен в архитектуре процессора, иногда может управляется джамперами материнской платы или ОС)
От старшего к младшему, big-endian, MSB, порядок байтов Motorolla
От младшего к старшему, little-endian, LSB, порядок байтов Intel

Слайд 46

Порядок байтов

Порядок байтов

Слайд 47

Термины «big/little-endian»

Термины big-endian («тупоконечники») и little-endian («остроконечники») первоначально использовались в сатирическом произведении

Термины «big/little-endian» Термины big-endian («тупоконечники») и little-endian («остроконечники») первоначально использовались в сатирическом
Джонатана Свифта «Путешествия Гулливера», в котором два государства много лет ведут войну из-за разногласия по поводу того, с какого конца следует разбивать варёные яйца.
Споры между сторонниками big-endian и little-endian архитектур раньше часто носили характер «религиозных войн» («holy wars»)
Термины big-endian и little-endian для обозначения порядка байт ввёл Дани Коэн (англ. Danny Cohen) в 1980 году в своей статье «On Holy Wars and a Plea for Peace» («О священных войнах и призыв к миру»).

Слайд 48

Способ исправить проблему

Игнорирование
В большинстве современных систем размеры базовых типов одинаковы (char –

Способ исправить проблему Игнорирование В большинстве современных систем размеры базовых типов одинаковы
1 байт, short – 2 байта, int – 4 байта, long long – 8 байт, float – 4 байта, double – 8 байт), порядок байт – little-endian
Использование stdint-типов и «сетевого порядка» байтов
Использование строк для передачи данных
Пример: NMEA-протоколы
$GPRMC,125504.049,A,5542.2389,N,03741.6063,E,0.06,25.82,200906,,,*17
Маршаллинг данных

Слайд 49

stdint-типы и сетевой порядок

stdint.h – файл стандартной библиотеки С, введенный стандартом С99
Описывает

stdint-типы и сетевой порядок stdint.h – файл стандартной библиотеки С, введенный стандартом
целочисленные типы, которые имеют строго заданный размер
Пример: int8_t, int16_t, uint32_t
Не поддерживается некоторыми старыми компиляторами и ОС, но существуют кроссплатформенные реализации, например pstdint.h (Portable stdint)
Не содержит описания чисел с плавающей точкой!
Сетевой порядок байтов: big-endian
Для конвертации целых типов в него и из него существуют функции: ntohl(), ntohs(), htonl(), htons() и т.п.
Нет функций для чисел с плавающей точкой!

Слайд 50

Маршаллинг данных

Маршалинг (от англ. marshal — упорядочивать) — процесс преобразования информации (данных,

Маршаллинг данных Маршалинг (от англ. marshal — упорядочивать) — процесс преобразования информации
двоичного представления объекта), хранящейся в оперативной памяти, в формат, пригодный для хранения или передачи на другие машины.
Маршалинг применяется при передаче данных между процессами и/или потоками на одной машине или разных машинах, по сети или иным способом
Термин сериализация означает примерно то же самое, но есть отличия, указанные в документе RFC 2713
Обратный процесс: демаршалинг (десериализация)

Слайд 51

XDR

XDR (External Data Representation - внешнее представление данных) — международный стандарт передачи

XDR XDR (External Data Representation - внешнее представление данных) — международный стандарт
данных в Интернете. XDR позволяет организовать не зависящую от платформы передачу данных между компьютерами в гетерогенных сетях.
XDR — стандарт IETF с 1995 года. Он позволяет данным быть упакованными не зависящим от архитектуры способом, таким образом, данные могут передаваться между гетерогенными компьютерными системами.
Преобразование из локального представления в XDR называется кодированием.
Преобразование из XDR в локальное представление называется декодированием.
XDR выполнен как портативная (переносная) библиотека функций между различными операционными системами и так же не зависит от транспортного уровня.

Слайд 52

XDR: пример

XDR: пример
Имя файла: Операционные-системы-для-разработчиков-программного-обеспечения.-(Лекция-3).pptx
Количество просмотров: 33
Количество скачиваний: 0