Книга: UNIX: разработка сетевых приложений
1.11. 64-разрядные архитектуры
1.11. 64-разрядные архитектуры
С середины до конца 90-х годов развивается тенденция к переходу на 64-разрядные архитектуры и 64-разрядное программное обеспечение. Одной из причин является более значительная по размеру адресация внутри процесса (например, 64-разрядные указатели), которая необходима в случае использования больших объемов памяти (более 232 байт). Обычная модель программирования для существующих 32-разрядных систем Unix называется ILP32. Ее название указывает на то, что целые числа (I), длинные целые числа (L) и указатели (P) занимают 32 бита. Модель, которая получает все большее распространение для 64-разрядных систем Unix, называется LP64. Ее название говорит о том, что 64 бита требуется только для длинных целых чисел (L) и указателей (P). В табл. 1.5 приводится сравнение этих двух моделей.
Таблица 1.5. Сравнение количества битов для хранения различных типов, данных в моделях ILP32 и LP64
Тип данных | Модель ILP32 | Модель LP64 |
---|---|---|
Char | 8 | 8 |
Short | 16 | 16 |
Int | 32 | 32 |
Long | 32 | 64 |
Указатель | 32 | 64 |
С точки зрения программирования модель LP64 означает, что мы не можем рассматривать указатель как целое число. Мы также должны учитывать влияние модели LP64 на существующие API.
В ANSI С введен тип данных size_t
, который используется, например в качестве аргумента функции malloc
(количество байтов, которое данная функция выделяет в памяти для размещения какого-либо объекта), а также как третий аргумент для функций read
и write
(число считываемых или записываемых байтов). В 32-разрядной системе значение типа size_t
является 32-разрядным, но в 64-разрядной системе оно должно быть 64-разрядным, чтобы использовать преимущество большей модели адресации. Это означает, что в 64-разрядной системе, возможно, size_t
будет иметь тип unsigned long
(целое число без знака, занимающее 32 разряда). Проблемой сетевого интерфейса API является то, что в некоторых проектах по POSIX.1g было определено, что аргументы функции, содержащие размер структур адресов сокета, должны иметь тип size_t
(например, третий аргумент в функциях bind
и connect
). Некоторые поля структуры XTI также имели тип данных long
(например, структуры t_info
и t_opthdr
). Если бы стандарты остались неизменными, в обоих случаях 32-разрядные значения должны были бы смениться 64-разрядными при переходе с модели ILP32 на LP64. В обоих случаях нет никакой необходимости в 64-разрядных типах данных: длина структуры адресов сокета занимает максимум несколько сотен байтов, а использование типа данных long
для полей структуры XTI было просто ошибкой.
Решение состоит в том, чтобы использовать типы данных, разработанные специально для борьбы с подобными проблемами. Интерфейс API сокетов использует тип данных socklen_t
для записи длины структур адресов сокетов, a XTI использует типы данных t_scalar_t
и t_uscalar_t
. Причина, по которой эти 32-разрядные значения не заменяются на 64-разрядные, заключается в том, что таким образом упрощается двоичная совместимость с новыми 64-разрядными системами для приложений, скомпилированных под 32-разрядные системы.
- 1.1. Введение
- 1.2. Простой клиент времени и даты
- 1.3. Независимость от протокола
- 1.4. Обработка ошибок: функции-обертки
- 1.5. Простой сервер времени и даты
- 1.6. Таблица соответствия примеров технологии клиент-сервер
- 1.7. Модель OSI
- 1.8. История сетевого обеспечения BSD
- 1.9. Сети и узлы, используемые в примерах
- 1.10. Стандарты Unix
- 1.11. 64-разрядные архитектуры
- 1.12. Резюме
- Упражнения
- Рекомендации по выбору архитектуры: Classic или SuperServer?
- Эффективное взаимодействие процессов архитектуры Classic Server
- Поразрядные операторы
- Архитектуры сетей
- Плюсы и минусы различных подходов к разработке бизнес-архитектуры
- Основные понятия архитектуры PKI
- 21.3.1. Команда arch — вывод архитектуры компьютера
- Контекст и основные элементы бизнес-архитектуры
- Лекция 10. Основные понятия и типы архитектуры PKI
- Обзор 64-разрядной архитектуры
- Глава 5 Организация проекта по моделированию бизнес-архитектуры организации: этапность, участники, роли, взаимодействия
- Глава 1 Зачем нужна модель бизнес-архитектуры: стандартные постановки задач по моделированию бизнес-процессов