- •Распределение памяти. Динамическое выделение памяти. Работа с динамической памятью с помощью операций new и delete
- •3 Динамически загружаемые библиотеки
- •4 Загрузка программ. Абсолютная загрузка.
- •5 Загрузка программ. Относительная загрузка.
- •7. Сборка программ. Объектный модуль
- •8. Сборка программ. Библиотеки объектных модулей.
- •9. Варианты построения загрузчиков
- •10. Управление памятью. Основные положения размещения процессов в памяти
- •12. Управление памятью. Логическое и физическое адресное пространство
- •11. Управление памятью. Многоэтапная обработка пользовательской программы
- •13. Управление памятью. Устройство управления памятью
- •14. Модели взаимодействия компонент распределенной системы.
- •15. Взаимодействия компонент распределенной системы. Обмен сообщениями
- •16. Взаимодействия компонент распределенной системы. Дальний вызов процедур
- •17. Взаимодействия компонент распределенной системы. Использование удаленных объектов
- •18. Взаимодействия компонент распределенной системы. Модель единственного вызова
- •19. Взаимодействия компонент распределенной системы. Модель единственного экземпляра
- •22. Взаимодействие компонент распределенной системы. Использование свойств удаленных объектов
- •23. Взаимодействие компонент распределенной системы. Распределенные события.
- •24. Взаимодействие компонент распределенной системы. Распределенные транзакции.
- •25. Взаимодействие компонент распределенной системы. Безопасность в распределенных системах.
- •26. Взаимодействие компонент распределенной системы. Промежуточные среды в Microsoft .Net Framework
- •27. Методы взаимодействия процессов. Независимые и взаимодействующие процессы. Виды организации взаимосвязи процессов.
- •28. Методы взаимодействия процессов. Парадигма (шаблон) взаимодействия процессов: производитель – потребитель.
- •29. Методы взаимодействия процессов. Коммуникация процессов.
- •30. Методы взаимодействия процессов. Непосредственная коммуникация процессов. Косвенная коммуникация процессов.
- •31. Методы взаимодействия процессов. Буферизация и очередь сообщений.
- •32. Методы взаимодействия процессов. Клиент-серверная взаимосвязь – один из наиболее распространенных видов коммуникации процессов.
- •33. Особенности ос для мобильных устройств
- •34. Рынок ос для мобильных устройств. Windows Mobile
- •35. Рынок ос для мобильных устройств. Symbian os
- •36. Рынок ос для мобильных устройств. Google Android
- •37. Рынок ос для мобильных устройств. BlackBerry os
- •38. Обзор инструментальных средств разработки приложений для мобильных устройств под управлением платформ Windows Mobile. Средства разработки приложений для мобильных устройств.
- •39. Обзор инструментальных средств разработки приложений для мобильных устройств под управлением платформ Windows Mobile. Базы данных.
- •40. Основы облачных вычислений. Виды облачных вычислений.
- •41. Основы облачных вычислений. Инфраструктура как сервис (IaaS).
- •42. Основы облачных вычислений. Платформа как сервис (PaaS).
- •43. Основы облачных вычислений. Программное обеспечение как сервис (SaaS).
- •44. Основы облачных вычислений. Варианты развёртывания облачных систем.
- •45. Основы облачных вычислений. Достоинства облачных вычислений.
- •46. Основы облачных вычислений. Недостатки и проблемы облачных вычислений.
- •47. Основы облачных вычислений. Распределенные вычисления (grid computing).
- •48. Особенности ос для персональных компьютеров.
- •49. Параллельные компьютерные системы и особенности их ос
- •50. Симметричные и асимметричные мультипроцессорные системы
- •51. Распределенные компьютерные системы и особенности их ос
- •52. Виды серверов в клиент-серверных компьютерных системах
- •53. Кластерные вычислительные системы и их ос
- •54. Системы и ос реального времени
- •55. Карманные компьютеры (handhelds) и их ос
- •56. Вычислительные среды
7. Сборка программ. Объектный модуль
Сборка программ
В предыдущем разделе шла речь о типах исполняемых модулей, но не говорилось ни слова о том, каким образом эти модули получаются. Вообще говоря, способ получения загружаемого модуля различен в различных ОС, но в настоящее время во всех широко распространенных системах этот процесс выглядит примерно одинаково. Это связано, прежде всего, с тем, что эти системы используют одни и те же языковые процессоры.
Объектный модуль
В большинстве современных языков программирования программа состоит из отдельных слабо связанных модулей. Как правило, каждому такому модулю соответствует отдельный файл исходного текста. Эти файлы независимо обрабатываются языковым процессором (компилятором), и для каждого из них генерируется отдельный файл, называемый объектным модулем. Затем запускается программа, называемая редактором связей, компоновщиком или линкером (linker - тот, кто связывает), которая формирует из заданных объектных модулей цельную программу (осуществляет процесс сборки или связывания программы).
Объектный модуль отчасти похож по структуре на перемещаемый загрузочный модуль. Действительно, мы, как правило, не знаем, в каком месте готовой программы окажутся объекты, определенные в нашем модуле. Объект в данном случае означает любую сущность, обладающую адресом. Поэтому объектный модуль должен содержать структуру данных, похожую на таблицу перемещений в загрузочном модуле.
Типичный объектный модуль содержит следующие структуры данных:
1)таблицу перемещений, т.е. таблицу ссылок на перемещаемые объекты внутри модуля
2)таблицу ссылок на внешние объекты. Иногда это называется таблицей или списком импорта
3)таблицу объектов, определенных здесь, на которые можно ссылаться из других модулей. Иногда ее называют списком экспорта. Иногда эту таблицу объединяют с предыдущей и называют все это таблицей глобальных символов. В этом случае для каждого символа приходится указывать, определен он в данном модуле или нет, а если определен, то как
4)различную служебную информацию, такую, как имя модуля, программу, которая его создала
5)отладочную информацию
6)собственно код и данные модуля.
8. Сборка программ. Библиотеки объектных модулей.
Сборка программ
В предыдущем разделе шла речь о типах исполняемых модулей, но не говорилось ни слова о том, каким образом эти модули получаются. Вообще говоря, способ получения загружаемого модуля различен в различных ОС, но в настоящее время во всех широко распространенных системах этот процесс выглядит примерно одинаково. Это связано, прежде всего, с тем, что эти системы используют одни и те же языковые процессоры.
Библиотеки объектных модулей
Крупные программы часто состоят из сотен и более отдельных модулей. Кроме того, существуют различные пакеты подпрограмм, также состоящие из большого количества модулей. Один из таких пакетов используется практически в любой программе на языке высокого уровня - это так называемая стандартная библиотека. Для решения проблем, возникающих при поддержании порядка в наборах из большого количества объектных модулей, еще на заре вычислительной техники были придуманы библиотеки объектных модулей.
Библиотека, как правило, представляет последовательный файл, состоящий из заголовка, за которым последовательно уложены объектные модули. В заголовке содержится следующая информация:
1)Список всех объектных модулей, со смещением каждого модуля от начала библиотеки. Это нужно для того, чтобы можно было легко найти требуемый модуль.
2)Список всех глобальных символов, определенных в каждом из модулей, с указанием, в каком именно модуле он был определен.
3)Линкер обычно собирает в программу все объектные модули, которые были ему заданы в командной строке, даже если на этот модуль не было ни одной ссылки. С библиотечными модулями он ведет себя несколько иначе.
Во многих современных системах с виртуальной памятью существует понятие разделяемой библиотеки. С точки зрения линкера она отличается от обычной тем, что он всегда обязан настраивать ее на одни и те же виртуальные адреса, и не имеет права производить перенастройку самого кода библиотеки. Кроме того, этот код хранится вовсе не в загружаемом модуле, а в отдельном файле. Часто этот файл представляет собой загружаемый модуль специальной структуры. Все программы, использующие такую библиотеку, в действительности работают с одной копией ее кода, но каждая из них создает свою копию ее данных. Это достаточно сильно экономит память и дисковое пространство, используемое для хpанения пpогpамм, особенно в случае больших библиотек.
