Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

О профессионализме программиста   Найти похожие ветки 

 
Rule ©   (2005-01-27 19:00) [120]

esu ©   (27.01.05 18:57) [119]
теперь осталось сделать так, чтобы все файлы там стояли а не лежали :)


 
Kerk ©   (2005-01-27 19:05) [121]

Piter ©   (27.01.05 17:37) [92]
не понял, что ты хотел сказать.


это я в отрыве от вопроса о перегрузке. )
о том что процедура и метод имеют разный тип..


 
default ©   (2005-01-27 19:19) [122]

Игорь Шевченко ©   (27.01.05 18:20) [114]
ну должна же ОС знать когда можно выгрузить DLL из ОП, а когда нет


 
GuAV ©   (2005-01-27 19:20) [123]

Piter ©   (27.01.05 15:18) [36]


>а что тебе не нравится? Про AV упомянуть?
> Ну это и так понятно, если объект не создан, то вызов
> его метода может окончиться плохо.


Нет. Дело в том, что если изначально Obj равен nil то ничего плохого не предвидится.

Так как же определить объекты ядра, чтобы туда попали и окна ?


 
Юрий Зотов ©   (2005-01-27 21:58) [124]

Кто как, а я придерживаюсь "родной" терминологии Microsoft.

Ядро - это Kernel. Согласно прямому переводу. Значит, объекты ядра - это Kernel objects. И более ничего.

И какие именно это объекты - сказано в документации. Все прочее - это объекты чего угодно другого (или не объекты вовсе), но только не объекты ядра.

А с вольной трактовкой слишком далеко уйти можно. Терминология - штука строгая и серьезная.


 
Nous Mellon ©   (2005-01-27 22:45) [125]

ЮЗ, как всегда, рулит


 
Игорь Шевченко ©   (2005-01-28 10:26) [126]

Юрий Зотов ©   (27.01.05 21:58) [124]

Юра, объясни ты мне бестолковому, какое отношение, согласно документации Microsoft, к объектам ядра имеют DLL и кучи ?
Только потому, что так в MSDN написано ?

С уважением,


 
NewDelpher ©   (2005-01-28 11:12) [127]

Помимо профессионализма программиста очень важную роль играют и чисто человеческие качества. Будь ты хоть супер-мега-гением программизма, но если как человек ты - моральный урод, то далеко не уедешь...


 
Gero ©   (2005-01-28 12:05) [128]


> Будь ты хоть супер-мега-гением программизма, но если как
> человек ты - моральный урод, то далеко не уедешь

Это тебе кто такое сказал?


 
esu ©   (2005-01-28 12:13) [129]


> Только потому, что так в MSDN написано ?

А MSDN вообще есть четкие критерии по которым системные объекты поделены на 3 вышеупомянутые группы одка из которых называется kernel ?


 
esu ©   (2005-01-28 12:14) [130]


> Gero ©   (28.01.05 12:05) [128]

Ну если это одиночка то почему бы и да... Хотя рок музыкантам с этим явно попроще ;)


 
Набережных С.   (2005-01-28 13:06) [131]

>esu ©   (28.01.05 12:13) [129]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/object_categories.asp

и далее


 
Юрий Зотов ©   (2005-01-28 13:13) [132]

> Игорь Шевченко ©   (28.01.05 10:26) [126]

> какое отношение, согласно документации Microsoft, к объектам
> ядра имеют DLL и кучи?

Если говорить формально, то в документации Microsoft черным по белому написано, что Heap и Module - это объекты ядра:
ms-help://MS.MSDNQTR.2005JAN.1033/sysinfo/base/kernel_objects.htm

То есть, согласно документации Microsoft, DLL и кучи имеют к объектам ядра такое отношение - они ими являются. Это и есть прямой ответ на твой вопрос.

А если говорить не формально, а по смыслу, то по поводу DLL и кучи могу сказать следующее.

Загрузкой и выгрузкой DLL занимается ядро. Все наши вызовы LoadLibrary/FreeLibrary - это всего лишь запросы, не более. Удовлетоворять их, или нет, когда и как именно, какие при этом производить дополнительные операции (или не производить никаких) - все это решает и исполняет ядро. О счетчике пользователей уже говорилось. Проецированием DLL, подгрузкой ее страниц, их кэшированием и т.д. тоже занимается ядро.

По куче: управление памятью - это тоже задача ядра (притом традиционная и одна из важнейших). Все наши вызовы, связанные с распределением памяти - это тоже всего лишь запросы. Будут ли они обслужены, когда и как именно, какие при этом будут призведены дополнительные операции (или не будет призведено никаких) - все это решает ядро. Об управлении своппингом даже и говорить не приходится.

Если коротко, то я бы сказал, что объект ядра - это объект, владельцем которого является ядро. Запрос на создание, использование или уничтожение такого объекта может выдать кто угодно, но только ядро может его создать, дать к нему какой-то доступ, осуществить с ним какие-то операции и уничтожить. Причем как и когда это делать - решает тоже ядро.

Пример - система может выгрузить DLL не сразу после обнуления счетчика ее пользователей, а тогда, когда сочтет нужным и своевременным. Принимает и осуществляет такое решение именно ядро и никто другой на это повлиять не может.

Потому что владелец - ядро. Оно и рулит.


 
Игорь Шевченко ©   (2005-01-28 13:23) [133]

Юрий Зотов ©   (28.01.05 13:13) [132]


> Загрузкой и выгрузкой DLL занимается ядро. Все наши вызовы
> LoadLibrary/FreeLibrary - это всего лишь запросы, не более.
> Удовлетоворять их, или нет, когда и как именно, какие при
> этом производить дополнительные операции (или не производить
> никаких) - все это решает и исполняет ядро.


Нет, Юра, это решает пользовательский режим. Загрузчик находится для NT-систем в ntdll.dll, он все и определяет.


> О счетчике пользователей уже говорилось


Какие именно разговоры о счетчике имеются в виду ?


> Проецированием DLL, подгрузкой ее страниц, их кэшированием
> и т.д. тоже занимается ядро.


Проецированием любых страниц занимается ядро, из этого не следует, что мы будем объявлять все-все, что связано с проецируемыми страницами, объектами ядра.


> По куче: управление памятью - это тоже задача ядра (притом
> традиционная и одна из важнейших). Все наши вызовы, связанные
> с распределением памяти - это тоже всего лишь запросы. Будут
> ли они обслужены, когда и как именно, какие при этом будут
> призведены дополнительные операции (или не будет призведено
> никаких) - все это решает ядро.


Юра, кучи - это надстройка пользовательского режима над стандартными функциями управления памятью (VirtualAlloc, VirtualFree).


> Пример - система может выгрузить DLL не сразу после обнуления
> счетчика ее пользователей, а тогда, когда сочтет нужным
> и своевременным. Принимает и осуществляет такое решение
> именно ядро и никто другой на это повлиять не может


Плохой пример. Даже приведенный код KaZaNova несколькими постами выше его опровергает.

С уважением,


 
Игорь Шевченко ©   (2005-01-28 13:28) [134]

Набережных С.   (28.01.05 13:06) [131]

По той ссылке и ресурсы относятся к объектам ядра. Что вообще-то неверно :)

С уважением,

ЗЫ: Ты б перерегистрировался.


 
Игорь Шевченко ©   (2005-01-28 13:32) [135]


> А MSDN вообще есть четкие критерии по которым системные
> объекты поделены на 3 вышеупомянутые группы одка из которых
> называется kernel ?


Сначала я полагал, что критерием является та библиотека пользовательского режима, в которой находятся функции для управления теми или иными объектами. Потом понял, что ошибся, так как объекты Desktop и WindowStation относятся к kernel objects (и являются ими, кстати, говоря), а функции управления ими находятся в user32.dll

С уважением,


 
АлексейК   (2005-01-28 13:56) [136]

.... и управляет ими ядерная часть подсистемы Win32....

УБЕРИТЕ ДЕТЕЙ ОТ КОМПЬЮТЕРОВ.

P.S. Теперь то понятно почему у компьютера радиация.


 
Набережных С.   (2005-01-28 14:38) [137]

Если кто интересуется, по загрузке ДЛЛ есть добрая статья
http://msdn.microsoft.com/msdnmag/issues/02/03/Loader/default.aspx

>http://msdn.microsoft.com/msdnmag/issues/02/03/Loader/default.aspx
>ЗЫ: Ты б перерегистрировался.

А смысл? Опять исчезну - опять удалят. Пусть будет как есть.


 
Набережных С.   (2005-01-28 14:41) [138]

Во, плоды технологии Copy-Paste:) В предыдущем посте вместо дубля ссылки должно было быть:
>Игорь Шевченко ©   (28.01.05 13:32) [135]


 
Игорь Шевченко ©   (2005-01-28 14:45) [139]

Набережных С.   (28.01.05 14:38) [137]

<offtopic>

> А смысл? Опять исчезну - опять удалят. Пусть будет как есть.


Да никто тебя не удалял - база анкет сломалась. Потому и просьба перерегистрироваться.

</offtopic>

А статья эта печаталась в MSDN Magazine Russian Edition на русском языке: "Внутри загрузчика", если мне память не изменяет.

С уважением,


 
Digitman ©   (2005-01-28 14:55) [140]


> Игорь Шевченко ©   (28.01.05 13:32) [135]


Абсолютно верно, Игорь.



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.78 MB
Время: 0.065 c
6-1099950854
Kot Vaska
2004-11-09 00:54
2005.02.20
Включение при соединении с Инетом


1-1107468516
k@rt
2005-02-04 01:08
2005.02.20
Ico + Toolbar


6-1102328286
DelphiN!
2004-12-06 13:18
2005.02.20
Получение исход. вход. трафика из компонента TidMappedPortTCP


1-1107370563
GuAV
2005-02-02 21:56
2005.02.20
Исключение при создании формы.


3-1106596043
Некто
2005-01-24 22:47
2005.02.20
Закончился диапазон, когда генератор выдаёт валидные....