
- •Понятие операционной системы. Иерархическая и многослойная структуры операционной системы. Многослойная структура ядра операционной системы.
- •Страничное распределение памяти. Сегментное распределение памяти. Сегментно-страничное распределение памяти.
- •Иерархия запоминающих устройств. Кэш-память. Способы отображения основной памяти на кэш. Схемы выполнения запросов в системах с кэш-памятью.
- •Физическая организация файловой системы: диски, разделы, секторы, кластеры, адресация файла.
- •Логическая организация файловой системы: типы файлов, иерархическая структура файловой системы, имена файлов, адресация файлов.
- •Сокеты Беркли. Структуры и функции. Блокирующие и не блокирующие сокеты. Пример клиента и сервера, использующих tcp.
- •История развития операционной системы Windows. Введение в операционную систему Windows. Особенности и различия версий операционной системы Windows. Архитектура операционной системы Windows nt.
- •Создание и использование статических библиотек в операционной системе Windows. Создание и использование динамических библиотек в операционной системе Windows: раннее и позднее связывание.
Создание и использование статических библиотек в операционной системе Windows. Создание и использование динамических библиотек в операционной системе Windows: раннее и позднее связывание.
Статическая библиотека представляет собой хранилище функции(ий), которые необходимы вашему проекту только на стадии компилирования. Пример таких библиотек можно найти в папке lib компилятора. В основном статические библиотеки нужны для использования ранее созданных наработок, завернутых в удобные используемые функции, во избежание написания лишнего кода.
Динамическая библиотека представляет собой тоже хранилище функции(ий), но используется библиотека уже после компилирования вашего проекта. (она подключается дополнительно к вашему исполняемому модулю во время его работы). Пример динамических библиотек в системной папке windows/system32.
Любая из библиотек имеет хотя бы одну функцию и может иметь дополнительно вынесенные за тело функций объявления структур, переменных, массивов и своих типов данных.
В терминах ООП раннее связывание означает, что объект и вызов функции связываются между собой на этапе компиляции. Это означает, что вся необходимая информация для того, чтобы определить, какая именно функция будет вызвана, известна на этапе компиляции программы. В качестве примеров раннего связывания можно указать стандартные вызовы функций, вызовы перегруженных функций и перегруженных операторов. Принципиальным достоинством раннего связывания является его эффективность — оно более быстрое и обычно требует меньше памяти, чем позднее связывание. Его недостатком служит невысокая гибкость.
Позднее связывание означает, что объект связывается с вызовом функции только во время исполнения программы, а не раньше. Позднее связывание достигается в С++ с помощью использования виртуальных функций и производных классов. Его достоинством является высокая гибкость. Оно может использоваться для поддержки общего интерфейса, позволяя при этом различным объектам иметь свою собственную реализацию этого интерфейса. Более того, оно помогает создавать библиотеки классов, допускающие повторное использование и расширение.
Какое именно связывание должна использовать программа, зависит от предназначения программы. Фактически достаточно сложные программы используют оба вида связывания. Позднее связывание является одним из самых мощных добавлений языка С++ к возможностям языка С. Платой за такое увеличение мощи программы служит некоторое уменьшение ее скорости исполнения. Поэтому использование позднего связывания оправдано только тогда, когда оно улучшает структурированность и управляемость программы. Надо иметь в виду, что проигрыш в производительности невелик, поэтому когда ситуация требует позднего связывания, можно использовать его без всякого сомнения.