Newsgroup: it.comp.programmare
Titolo: QBASIC.EXE e processore sfruttato al 100%

Salve,
sto usando QBASIC.EXE per scrivere un programma...
Sto utilizzando un pc portatile con un Pentium M 2,0GHz (pentium m 755), 2Gb
di ram, hard disk 100Gb ecc... con Windows Xp.
Il problema è il seguente:
ogni volta che utilizzo l'applicazione qbasic.exe per scrivere il programma
la cpu viene sistematicamente sfruttata al 100% (vedi Task Manager) mentre
il resto sembra funzionare regolarmente.
Come mai quindi aprendo qbasic la cpu viene utilizzata al massimo?
E' normale che accada questo o c'è qualche problema (a cui posso porre
rimedio)?
Grazie a chi risponderà.
S.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 
Forse per il fatto che si tratta di una applicazione DOS (nel senso di
MS-DOS 5 o MS-DOS 6) e che quindi non sa nulla di quello che è il
multitasking.
Quindi è normale che vada al 100% (non presenta istruzioni di idle per
il processore per dargli un po' di respiro).
L'unico rimedio che vedo io è passare ad un altro ambiente, sempre Basic
se vuoi, ma che sia compilato per Windows.
Ce ne sono tanti in giro.
Luca

Il 13 Ott 2007, 17:34, Luca Pascali <pasckos...@TOGLIMI.yahoo.iTt> ha
scritto:

Grazie mille.


il processore per dargli un po' di respiro).
No, non è normale. E' il sistema operativo che si preoccupa di gestire
il multitasking ed anche i processi DOS ne sono coinvolti.
L'applicazione non è tenuta a sapere come viene gestito lo switch tra
processi nel sistema operativo e non è normale che si ciucci tutta la
CPU.


Non proprio, ed è più che normale che vada al 100%
Il processo *sa* se il sistema per il quale viene scritto è multitasking
o no. Sotto molti aspetti anche il programmatore lo sa (per via delle
chiamate al sistema operativo e al tipo di accesso alla memoria).
Infatti un programma compilato per Windows (come pure un programma per
Linux) non gira sotto MSDOS, un programma MSDOS gira sotto Windows
perché questo ci mette in mezzo una virtualizzazione, nello specifico un
mezzo accrocchio per far credere al processo DOS di essere l'unico a
girare (infatti i programmi DOS pensano di leggere direttamente la
memoria fisica e pensano di accedere agli interrupt del DOS).
E sotto DOS non c'era il concetto di "attendi il dato dal sistema
operativo".
Gli altri programmi (quelli compilati per Windows, o in un caso più
generico per il sistema operativo multitasking su cui devono girare)
ogni tanto si metteranno in uno stato di wait da cui usciranno solo a
seguito di un evento gestito dal sistema operativo (un timer, un
segnale, un semaforo, una informazione disponibile dall'hal).
Ecco che un editor per Windows è sempre allo 0% fintanto che non gli
viene chiesto qualcosa (premuto un tasto, spostato il mouse, ridisegno
della finestra), mentre un applicativo MSDOS che interroga costantemente
gli interrupt o monitorizza dei registri in memoria per sapere se
qualcosa è cambiato richiede molto processore.
Si ha lo stesso effetto con programmi (ad esempio) di elaborazione di
immagini quando si lancia un filtro o una operazione molto pesante.
Fintanto che il programma gira e non è in attesa dell'hardware, questo
richiede CPU. Il sistema non si inchioda, ma l'indicazione della cpu
segna sempre 100%
Luca

immagini quando si lancia un filtro o una operazione molto pesante.
Quando un'applicazione sta elaborando, è normale che rubi processore
(in realtà non è normale che ciucci la cpu al 100% per troppo tempo,
perché va a discapito delle altre applicazioni).
Sottolineo: quando sta elaborando.
Non è normale che un processo DOS rubi tutto il processore a meno che
non sia partito un loop di elaborazione a palla. In condizioni
normali, il processo DOS è un processo come tutti gli altri.


Consiglierei di usare il FreeBasic. E' compatibile al 99% con il
qbasic, open source, e supporta molte funzioni in piu' (OOP,
multitasking...) . Dovrebbe permetterti di passare gradualmente dallo
stile QB (a cui sei abituato) ad uno stile di programmazione piu' in
linea con l' hardware attuale (e di convertire in modo relativamente
indolore i tuoi vecchi programmi). Oltre a windows, supporta DOS32 e
linux. A meno che tu non intenda sviluppare il tuo software per
macchine decisamente datate, ti consiglio il passaggio (puoi sempre
tenerti l' ambiente di sviluppo QB, che e' decisamente comodo, ed
usare il freebasic solo per compilare)