Discussione:
QBASIC.EXE e processore sfruttato al 100%
(troppo vecchio per rispondere)
Simone
2007-10-13 15:25:42 UTC
Permalink
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/
Luca Pascali
2007-10-13 15:34:19 UTC
Permalink
Post by Simone
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.
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.
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
S.
2007-10-13 15:39:12 UTC
Permalink
Post by Luca Pascali
Post by Simone
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.
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.
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
Grazie mille.

--------------------------------
Inviato via http://arianna.libero.it/usenet/
Andrea Laforgia
2007-10-13 16:38:50 UTC
Permalink
On Sat, 13 Oct 2007 17:34:19 +0200, Luca Pascali
Post by Luca Pascali
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).
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.
Luca Pascali
2007-10-13 17:00:16 UTC
Permalink
Post by Andrea Laforgia
On Sat, 13 Oct 2007 17:34:19 +0200, Luca Pascali
Post by Luca Pascali
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).
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
Andrea Laforgia
2007-10-14 11:55:15 UTC
Permalink
On Sat, 13 Oct 2007 19:00:16 +0200, Luca Pascali
Post by Luca Pascali
Non proprio, ed è più che normale che vada al 100%
Non lo è.
Post by Luca Pascali
Il processo *sa* se il sistema per il quale viene scritto è multitasking
o no.
No, non lo sa affatto e non gli serve saperlo.
Post by Luca Pascali
Sotto molti aspetti anche il programmatore lo sa (per via delle
chiamate al sistema operativo e al tipo di accesso alla memoria).
Le chiamate al sistema operativo ti sono mascherate se usi librerie
distribuite col compilatore. Il tipo di accesso alla memoria ti è
mascherato.
Post by Luca Pascali
E sotto DOS non c'era il concetto di "attendi il dato dal sistema
operativo".
Non sono le applicazioni che "attendono il dato dal sistema
operativo". I sistemi operativi come Windows sono "preemptive":
gestiscono loro lo switch tra processi a prescindere da ciò che
"pensi" il processo specifico.
Post by Luca Pascali
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
Ma quando mai? ma dove? ma che stai dicendo? non esistono stati di
"wait". Quello di cui tu parli è probabilmente il multitasking
cooperativo che si è estinto con l'ultima glaciazione.
Post by Luca Pascali
Ecco che un editor per Windows è sempre allo 0%
I processi per Windows non sono mai allo 0% perché esiste comunque del
codice che viene eseguito.
Post by Luca Pascali
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.
Tu non hai MAI programmato. Quello che stai dicendo non ha né capo né
coda. I processi DOS non interrogano affatto costantemente gli
interrupt, non monitorizzano affatto i registri in memoria (che sono
poi i "registri in memoria"? i registri sono quelli del processore).
Prova a leggere un interrupt col vecchio codice DOS e ti verrà
sollevata una bella eccezione di Privileged Instruction.
Il multitasking è gestito dal sistema operativo, non dai processi.
Post by Luca Pascali
Si ha lo stesso effetto con programmi (ad esempio) di elaborazione di
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.
Bishop
2007-10-31 15:01:32 UTC
Permalink
Post by Simone
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.
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 viahttp://arianna.libero.it/usenet/
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)

Loading...