Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Память

Автор: dark0ut 20.12.2002 21:43

Реально ли подвесить комп через pascal
А то я вчера значит
GetMem(p,64000);
а Dispose - соседям оставил;)
такое началось
страница в IE открывалась 5 минут и т.д.
Возможно такое?

Автор: mj 21.12.2002 0:57

тормознуть можно, а повесить разве что 98'ую...

Автор: Vit 26.12.2002 10:01

Win 95/98/ME намертво вешает такой код

Код
Repeat
 asm
   cli
 end;
Until False;


или можно запустить (ShellExecute) файл с именем "c:concon"

С NT/2000/XP как и ожидалось такие номера не пройдут.

Автор: mj 26.12.2002 21:31

Цитата
Win 95/98/ME намертво вешает такой код

Repeat
 asm
   cli
 end;
Until False;


или можно запустить (ShellExecute) файл с именем "c:concon"

С NT/2000/XP как и ожидалось такbt номера не пройдут.

Поясню тем кто не знает asm, cli обозначает отрубить все апаратные прерывания... Под NT эту команду процесор почемуто просто не замечает...

Автор: Vit 27.12.2002 2:32

Цитата
Под NT эту команду процесор почемуто просто не замечает...


Ядро NT имеет собственные процедуры обработки для команд Jmp, Cli, Int и некоторых других. Поэтому если программа не является сервисом, то вместо этих команд выполняются специальные процедуры ядра NT которые эмулируют эти команды.

Автор: BlackShadow 17.01.2003 17:59

Ну, про 9х говорить нечего. Его повесить крайне просто. Например :
asm
 CLI
 HLT
end - запрещаем прерывания и делаем паузу до их возникновения. Для надёжности можно загнать в цикл. А вот с NT надо быть хитрее. У меня только 2 варианта реализации :
1). Нагло. Создаём Run-Time нить с наивысшим приоритетом (лучше при помощи Job'а) и в цикле занимаем FPU, а заодно и CPU.
2). Коварно. Нахально. Неожиданно. Переводим процессор в реальный режим, перехватываем все прерывания и творим, что хотим. Одно "но". Даже у меня и моего "товарища" возникли проблемы в реализации этого метода. Надо код оптимизировать буквльно на несколько тактов (исходя из подопытного Celeron-330), а вот как...

А вот испоьзуя BP или что либо иное под Real-Time или Protected Mode такого не добиться. А жаль.

Автор: mj 22.01.2003 13:16

Цитата
1). Нагло. Создаём Run-Time нить с наивысшим приоритетом (лучше при помощи Job'а) и в цикле занимаем FPU, а заодно и CPU.

Ну взять на себя полную загрузку программа может ухитрится, это на самом деле легко делается через ловушки (пример я увидел на всем известном переводчике LingoWare)...
Но сама система то при этом не виснет и рано или поздно программа будет выгружена... smile.gif