Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  09:20[Войти] | [Зарегистрироваться]
Обсуждение темы:
Component Pascal и среда разработки BlackBox

Здравствуйте!
Начал изучать новый язык программирования Component Pascal
http://www.oberon.ch/
http://www.inr.ac.ru/~info21/
http://www.uni-vologda.ac.ru/oberon/
Но нигде не нашел рускоязычного сайта, на котором был бы форум посвященный этому языку.
Наверняка среди посетителей этого сайта есть специалисты по языку Component Pascal и среде BlackBox.
А посему, перейду сразу к делу. У меня есть вопрос про сборщик мусора в BlackBox. Может быть кто-нибудь сможет объяснить что нужно сделать чтобы он заработал?
Я имею в виду следующую простейшую тестовую програмку:

MODULE  sgTest003;
IMPORT  StdLog;

PROCEDURE   Проверка*;
  TYPE A = POINTER TO ARRAY 10000000 OF INTEGER;
  VAR a: A;
BEGIN
  StdLog.String(" Создаю "); StdLog.Ln();
  NEW(a);    (* В этом месте я вижу через Windows Task Manager  как BlackBox забрал
память*)
  StdLog.String(" Выхожу из области видимости "); StdLog.Ln();
  a := NIL; (* Я думаю, что сборщик мусора должен активизироваться в этом месте *)
END Do;
(* В этом месте я ожидаю, что BlackBox отдаст память обратно в распоряжение Windows
XP*)

BEGIN
END  sgTest003.
Вызываю процедуру Проверка посредством кликания мышью на
(Коммандер)sgTest003.Проверка
и наблюдаю через Task Manager за памятью. BlackBox ее только забирает и назад не отдает.
Даже если я выгружу модуль Dev ---> Unload, все равно BlackBox не вернет память обратно в распоряжение Windows XP. Память возвращается только когда я выключаю сам BlackBox 1.4 Shareware Edition.
Кто-нибудь понимает в чем дело?

С уважением,

 Сергей Губанов

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 117 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 107—98 | 97—88 | 87—78 | ...>>>
Всего сообщений в теме: 117; страниц: 12; текущая страница: 3


№ 97   09-06-2006 02:36 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 95« (Илья Ермаков)
___________________________
А что мы будем делать со ссылками на выгружаемые объекты?


№ 96   09-06-2006 00:29 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 95« (Илья Ермаков)
___________________________

В принципе, с механизмом Internalize/Externalize можно проделывать интересные вещи.

Ничего удивительного -- ведь это и есть средство сохранения связей и внутренних состояний программных сущностей (не только объектов) с целью их последующего восстановления. Вы точно уловили идею "приморозки" модулей, когда нужна их подмена. Задача упирается в относительно несложную вещь -- регламентирование контрактов/протоколов межмодульных связей.

Экспорт-импорт -- это межмодульные связи языковых модулей. Остальные упомянутые здесь вещи (ссылки, то бишь память; разные ресурсы) -- это межмодульные связи операционных модулей в дополнение к экспорту-импорту.


№ 95   08-06-2006 10:37 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 92« (AVC)
___________________________

Ответ на »сообщение 85« (Илья Ермаков)
___________________________
Интересная мысль.
ИМХО, как раз в правильном направлении.
Это стоит хорошо обдумать.

Немного отходя в сторону от конкретного вопроса: имеет ли смысл приспособить механизм Externalize/Internalize для организации обмена данными (хотя бы через виндовые сообщения) между параллельно работающими Черными Ящиками?

В принципе, с механизмом Internalize/Externalize можно проделывать интересные вещи. Развивая мысль про подмену модулей... Представим себе, что в адаптивных (назовем так) модулях мы экспортируем только динамические типы, которые умеют выгружаться/загружаться в потоки (чтобы не наследовать их от одного типа, можно применить ООП в стиле Оберона-1 - поля Externalize/Internalize процедурного типа, и доступ к ним идет символически). Кроме того - обязательное условие - формат загрузки/выгрузки для экспортированных типов модуля описан. Тогда можно создать другую версию этого модуля, которая умеет загружаться (и загружать каждый свой экспортированный тип) из потока такого стандартного формата. Тогда подмена модуля на лету становится не сложнее обычной сборки мусора. Выполнение замораживается. Ищутся все экземпляры типов модуля. Их состояние выгружается в поток. Выгружается в поток состояние модуля в целом. Затем модуль выгружается. Загружается новая версия, загружается состояние из потока. Создаются новые экземпляры типов, загружается их состояние их потока. Затем указатели на эти экземпляры подменяются во всех местах. Выполнение возобновляется.
То есть, получается надежный механизм "изъятия из оборота" старых объектов и "эмиссии" новых.


№ 94   08-06-2006 09:52 Ответить на это сообщение Ответить на это сообщение с цитированием
сообщение от модератора

Уважаемые господа!
Открыт новый раздел, посвященный тематике Виртовских языков.
www.delphikingdom.com/oberon
Сейчас раздел содержит подборку ссылок и ветки обсуждений.

Приглашаем к работе над новым разделом всех, кто в нем заинтересован.
www.delphikingdom.com/oberon/about.asp


№ 93   08-06-2006 08:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 91« (info21)
___________________________

Ответ на »сообщение 77« (Trurl)
___________________________

Адреса процедур также хранятся в местах, доступных сборщику мусора.

Да, но <...>


Что-то я перестал понимать...
(Правда, может, заклинило. :) )
А вы оба, похоже, хорошо поняли друг друга. :)
Что значит "адреса процедур также хранятся в местах, доступных сборщику мусора"?
Если я не ошибаюсь, сборщик мусора не знает о процедурных переменных, а знает только о методах.
Может быть, поясните?
 AVC


№ 92   08-06-2006 08:25 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 85« (Илья Ермаков)
___________________________


Однако идея "адаптивной модульности", когда подмена происходит прозрачно для самой системы - штука интересная. Здесь потребуется, чтобы различные реализации были совместимы "по состоянию" и могли выгружаться/загружаться в перманентный поток. Тогда для замены модуля на лету проделываем: ModuleA.Externalize(memoryStore); Unload(ModuleA); Load(ModuleB); ModuleB.Internalize(memoryStore).


Интересная мысль.
ИМХО, как раз в правильном направлении.
Это стоит хорошо обдумать.

Немного отходя в сторону от конкретного вопроса: имеет ли смысл приспособить механизм Externalize/Internalize для организации обмена данными (хотя бы через виндовые сообщения) между параллельно работающими Черными Ящиками?
 AVC


№ 91   08-06-2006 08:22 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 77« (Trurl)
___________________________

Ответ на »сообщение 74« (AVC)
___________________________

Адреса процедур также хранятся в местах, доступных сборщику мусора.


Да, но сборщик мусора может как-то трюкачить -- битики куда-то вставлять, указатели в обратную сторону выставлять, и т.п.
Кроме того, ссылка на процедуру в модуле -- как ссылка на поле в середини записи.
Как-то все это неудобно. С дескрипторами проще.


№ 90   08-06-2006 08:06 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 89« (Андрей Хохлов)
___________________________


Много вариантов получается...


Вот. Гибкость. :)
 AVC


№ 89   08-06-2006 07:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 88« (AVC)
___________________________

Много вариантов получается...
1.Объект может размещаться где угодно (RECORD)
2.Объект может размещаться только в куче (POINTER TO RECORD)
3.Возможность вызова метода зависит от того, где размещен объект (не могу это сейчас проверить)


№ 88   08-06-2006 06:45 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 86« (Андрей Хохлов)
___________________________

Еще вопрос. В КП (и O2?) метод может привязываться к записи и указателю на запись. И это можно смешивать
<...>
Какой в этом смысл?


Единственное, что сразу приходит в голову -- чтобы управлять применимостью разных методов.
Метод с указателем -- только для объектов в куче.
IN -- константный метод, не меняющий объект.
VAR -- общий случай.
Кроме того, еще есть implement-only методы (с минусом) -- вызывается только из модуля, где был определен впервые.
 AVC


<<<... | 107—98 | 97—88 | 87—78 | ...>>>
Всего сообщений в теме: 117; страниц: 12; текущая страница: 3


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования