Newsgroup: it.comp.os.dibattiti
Titolo: Linux Multitasking

Vorrei informazioni dettagliate sulla differenza del multitasking di Linux e
di Win95/98.
Chi e' veramente multitasking? windows 95/98/NT o Linux?
Quello che ho trovato e' questo, da 
http://webopedia.internet.com/TERM/m/multitasking.html
There are two basic types of multitasking: preemptive and cooperative. In
preemptive multitasking, the operating system parcels out CPU time slices to
each program. In cooperative multitasking, each program can control the CPU
for as long as it needs it. If a program is not using the CPU, however, it
can
allow another program to use it temporarily. OS/2, Windows 95, Windows
NT, the Amiga operating system and UNIX use preemptive multitasking,
whereas Microsoft Windows 3.x and the MultiFinder (for Macintosh
computers) use cooperative multitasking. 
Grazie, ciao
Christian


Questa e` la punta dell'iceberg.
Un altro, grosso, problema e` come decidere, in caso di multitasking
preemtive, chi sara` il prossimo task ad essere eseguito.
Questo ha impatto notevole nel caso di OS RT (Real Time), in misura
minore in OS per uso "normale".
Nel caso particolare dell'Amiga, se un task aveva priorita` piu`
alta di tutti gli altri ed usava la CPU intensivamente, veninva
continuamente ri-schedulato, bloccando, di fatto, gli altri task.
Nel caso di Unix, la priorita` e` variabile, diminuisce man mano che
si usa la CPU, cioe` piu` si usa la CPU, minore sara` la priorita`.
Esiste anche un'estensione POSIX che consente di cambiare la modalita`
di scheduling.
Per w95/w98 non saprei. W95 mi sembra abbastanza preemptive, ma il
comportamento globale a volte fa pensare a multitasking cooperative o
ad un pessimo algoritmo di scheduling.
bye,
--
  Piergiorgio Sartor

di Win95/98.
MS dice che Windows (95, NT, ecc...) usa un MT di tipo preemptive, ma
io non ci ho mai creduto. Ci sono troppe situazioni in cui il sistema
rimane bloccato.
Per esempio in NT, mentre su "SQL Worksheet" (un banalissimo programma
per fare query su Oracle) faccio girare una query, non si aprono né
cartelle né "gestione risorse".

cartelle né "gestione risorse".
Nooooo.... è SQL Worksheet che rimane lockato fino a quando Oracle non
risponde, ma non ti blocca affatto il desktop né nessun'altra funzione.
Almeno con Oracle 8, 7.3 non ricordo.
Ciao

 Chi e' veramente multitasking? windows 95/98/NT o Linux?
Tutti quanti (win9x in maniera decisamente inferiore per parecchi motivi, si
vede dai frequenti deadlock), ma ritengo superiore linux/unix.
bye G.L.

 ad un pessimo algoritmo di scheduling.
Io direi che c'è un misto tra multitasking cooperative e preemptive:
eredità di winzozz3.x
Saluti,
Fabio Alemagna

NT, the Amiga operating system and UNIX use preemptive multitasking,
Io avrei dei seri dubbi su NT. Da quando ho provato i driver dello
Zip.
Obelix

 eredità di winzozz3.x
Da quanto ho sentito dire, pare sia possibile assegnare, sotto w95,
tutta la CPU ad un task (un gioco, ad es.), che quindi bloccherebbe
tutto il resto, persino parte dell'OS.
Di questo, pero`, vorrei conferme.
bye,
--
  Piergiorgio Sartor

 
Cosa e' uno scherzo? "Cooperative Multitasking" e' una parola inventata
dal marketing per far credere che windows 3.1 e mac os fossero
multitasking quando non lo sono.

 Di questo, pero`, vorrei conferme.
Non ci sarebbe niente di strano in questo. Anche con AmigaOS lo puoi
fare: Forbid()/Permit().
Saluti,
Fabio Alemagna

 fare: Forbid()/Permit().
Si, ma per l'Amiga si "raccomandava di NON usare quelle chiamate" se
non in caso di emergenza :-)
Tra parentesi la procedura non era proprio banale, cioe` non si
sarebbe dovuto chiamare forbid() senza precauzioni.
bye,
--
  Piergiorgio Sartor

 ad un pessimo algoritmo di scheduling.
Ipotesi: codice vecchio e quindi non rientrante. In particolare, il GDI
che non credo sia cambiato molto da quando e' stato scritto.
--
Fabrizio Di Giuseppe
Real email address: fabrizio@_REMOVEME_iride.com
http://www.iride.com/fabrizio
Sent via Deja.com 
http://www.deja.com/
Before you buy.

 multitasking quando non lo sono.
Ma che dici? E' una definizione ufficiale e classica, che lo distingue
dal multitasking preemptive.
Saluti,
Fabio Alemagna

 sarebbe dovuto chiamare forbid() senza precauzioni.
Nessuna precauzione di sorta. 
Saluti,
Fabio Alemagna

 eredità di winzozz3.x
La cosa è spiegata abbastanza bene in un libro uscito agli albori di
Windiws 95, e che ahimé non ho più in casa. In sostanza, dice che win95
si comporta diversamente a seconda del codice che chiede di operare in
multitasking. Innanzitutto, all'aprire della prima applicazione a 16
bit, Win95 apre una (veniva chiamata così) macchina virtuale a 16 bit,
con uno spazio d'indirizzamento e salcazzi suoi. Lì dentro operano TUTTE
le applicazioni a 16 bit aperte, con sistema cooperativo (come il
vecchio win3.1). Poi, tutte le applicazioni a 32 bit possono lavorare in
multitasking preemptive con tutti i crismi del multitasking vero e
proprio, aprendo anche più thread per ciascuna. Il punto è che l'intera
macchina virtuale a 16 bit si comporta come se fosse un'unica
applicazione a 32 bit, almeno per dal punto di vista per lo scheduler. E
se uno NON ha più applicazioni a 16 bit? E' lo stesso, perché parte del
coldice di Win95 è ancora tragicamente a 16 bit, e lo stesso vale per il
98. Fino a che punto questa teoria possa essere corretta non lo so, però
l'ho letta e la riporto...
-- 
Paolo Besser
Next Station - direttore esecutivo
----------------
il mio sito è Kombat! Il tuo no?
http://bananabros.cjb.net

 Zip.
??
Io avrei seri dubbi su di te. Da quando ho letto questo tuo post.
;-)
--
Massimiliano ADAMO

rimane bloccato.
Fai partire "MSHearts". Nei primi 5 secondi in cui fa qualcosa (cosa,
non so), non funziona _niente_, e si fermano i trasferimenti FTP.
Forse c'e' un'API disableSystemMultitasking(). Boh.
Leonardo
Microsoft Outlook: R: Re: R: Re: R: Re: R: cosa vuoi replicare oggi?

Chi e' veramente multitasking? windows 95/98/NT o Linux?
NT/*nix(*BSD inclusi)/AmigaOS sono MT preemptive, quello che poi fa
differenza e` la politica di scheduling e altri particolari non
rilevanti in questo contesto.
W9x e` MT preemptive per i task 32bit e cooperative per i 16bit per quel
che so. 
W311/MacOS (escluso MacOS-X) sono cooperative.  
-- 
The Hitman - 
http://members.xoom.it/hitman
e-posta: 
sonic...@tiscalinet.it
 <-- *NUOVO*
* Un utilizzatore medio di PC, quindi tutt'altro * 
*         che un esperto di informatica          * 

 Nessuna precauzione di sorta.
check nobody is doing anything
Disable interrupt
forbid()
...
permit()
enable interrupt
is still anybody willing do to something?
bye,
--
  Piergiorgio Sartor

risponde, ma non ti blocca affatto il desktop né nessun'altra funzione.
Il Desktop no, ma gestione risorse e le cartelle si.

Il Desktop no, ma gestione risorse e le cartelle si.
A me, no...
Ciao


Be', mi pare ovvio che devi salvare lo stato del sistema se poi ti serve
ripristinarlo...
D'altra parte Forbid()/Permit() *devono* per forza essere usate quando
di devono modificare alcune liste di sistema, questo per assicurare
l'atomicità dell'operazione: non tutte le liste di sistema sono protette
da semafori per motivi di efficienza e retrocompatibilità.
Inoltre non serve disabiitare gli interrupts in tutti i casi.
Saluti,
Fabio Alemagna

 Inoltre non serve disabiitare gli interrupts in tutti i casi.
Certo, ma queste erano le raccomandazioni, altrimenti si tratta
di hacking e non va bene, si rischia di avere SW che gira con
KS1.1 e non con KS1.2 o KS2.1 o quello che e` (stato).
Insomma era una questione di buona programmazione.
bye,
--
  Piergiorgio Sartor

 KS1.1 e non con KS1.2 o KS2.1 o quello che e` (stato).
Guarda che stiamo al 3.5... Di acqua ne è passata sotto i ponti dal 1.1
:) Ormai i giochi funzionano in multitasking :) E poi perchè parli al
passato? Amiga è ancora qui :)
Saluti,
Fabio Alemagna

 passato? Amiga č ancora qui :)
Buona notte, qui dove? Io non ne vedo in negozio... Purtroppo.
bye,
--
  Piergiorgio Sartor

 Buona notte, qui dove? Io non ne vedo in negozio... Purtroppo.
Sto parlando di AmigaOS.
Saluti,
Fabio Alemagna

 Sto parlando di AmigaOS.
Si, ma dove lo faccio girare, sull'emulatore? :-)
bye,
--
  Piergiorgio Sartor

 Si, ma dove lo faccio girare, sull'emulatore? :-)
Perchè no? Io faccio così :) 
Saluti,
Fabio Alemagna

multitasking quando non lo sono.
Bhe, ma stà di fatto che comunque in memoria si possono avere più task (su
Win 3.1)... che poi quando ne usi uno non va l'altro ...
[questo non era possibile con il Dos, che infatti non era multitasking]
BYEZzzzzz..........
-- 
<aSs0> ( 
http://web.tiscalinet.it/mastromatteo
  -  
mastr...@bigfoot.com
 )
Quando la morte mi chiamerà [...] non maleditemi, non serve a niente, tanto
all'inferno ci sarò già.                                       ICQ 21746800

 Ma quando mai... Ma in che modo si minerebbe alla stabilità del sistema?
                                               ^^^^^
ehm... ovviamente c'è un "al" di troppo :)
Saluti,
Fabio Alemagna

Obelix
Si, ma se non sbaglio il multitasking preemptive serve a darti l'impressione
che vi siano più task che contemporaneamente sono in esecuzione sulla stessa 
macchina: impressione che deriva da una suddivisione dei tempi della CPU sui
vari processi.  In un  sistema cooperative, questo non accade... o no?
(potrei sbagliarmi, non sono un esperto (ma lo avrete già capito no? :)) ))
BYEZZZZZzz..........


 wrote:
-> Il Thu, 20 Apr 2000 22:14:42 GMT, Obelix scrisse:
-> >On 20 Apr 2000 18:15:51 GMT, 
aS...@news.tiscalinet.it
 (--- aSs0 ---)
-> >wrote:
-> >
-> >>che poi quando ne usi uno non va l'altro ...
-> >e' uno dei fondamenti di un sistema monoprocessore: si esegue sempre
-> >un task alla volta...
-> >
-> >Obelix
-> 
-> Si, ma se non sbaglio il multitasking preemptive serve a darti l'impressione
-> che vi siano più task che contemporaneamente sono in esecuzione sulla stessa 
-> macchina: impressione che deriva da una suddivisione dei tempi della CPU sui
-> vari processi.  In un  sistema cooperative, questo non accade... o no?
-> (potrei sbagliarmi, non sono un esperto (ma lo avrete già capito no? :)) ))
In teoria l'impressione che girino piu' programmi contemporaneamente 
ce l'hai con tutti e due i tipi di multitasking, e' diversa l'implementazione:
a quanto ne so, con il preemptive il tutto e' controllato dal sistema, con il
cooperative dipende dalla buona volonta' delle applicazioni.
Su una macchina monoprocessore non puoi far girare due processi allo stesso
tempo, il multitasking ti "imbroglia" facendoti pensare che ce ne siano di piu'.
bye
Gianluca
-- 
Home Page                	Contro i brevetti del sw     Boicotta Microsoft
www.infinito.it/utenti/chewbe
 
no-patents.prosa.it/
 
www.boycott-ms.org/
 
"If we have to file a thousand lawsuits a day, we'll do it.
It's less expensive than losing CONTROL of YOUR creative works."
---Jack Valenti, President and CEO, Motion Picture Association of America

 Perchè no? Io faccio così :)
Perche` non e` lo stesso, purtroppo, anche se non vi sono molte
alternative.
bye,
--
  Piergiorgio Sartor

 alternative.
Lo compri usato, se proprio lo vuoi. E poi ti posso assicurare che è lo
stesso., anzi, pure meglio sotto molti aspetti.
Saluti,
Fabio Alemagna

 stesso., anzi, pure meglio sotto molti aspetti.
C'e` lo a casa, un bellissmo A500+...
Con espansione di memoria fatta in casa...
Digitalizzatore audio & video fatto in casa...
Espansione grafica fatta in casa...
Scheda DSP fatta in casa...
Controller HD IDE & driver fatto in casa...
bye,
--
  Piergiorgio Sartor

(la cache degli x86 ha un metodo per risolvere la cosa,)
Hai qualche informazione in piu`?
-- 
Lorenzo
"Given enough eyeballs, all bugs are shallow", Linus'Law
(address rot13 encoded)

 castroneria, anche lui, in questo caso.
Ho qualche dubbio che gli x86 possano risolvere la cosa in modo
efficiente. Se mai la possono risolvere. Ma di questo non posso parlare
perchè non lo so. Se qualcun'altro sta leggendo queste righe, e lo sa,
lo dica :=)
Saluti,
Fabio Alemagna

 Hai qualche informazione in piu`?
Su come x86 risolve il problema?
Dunque credo che nei data sheet dei vari Pentium ci sia
spiegato tutto. Anche su quelli dei K6.
Un riferimento puo` essere:
http://www.multimania.com/poulot/k6bug_faq.html#qa7
ed ovviamente i link alle pagine della AMD presenti.
Questo link riguarda un bug dei primi K6, che, proprio
con Linux, in particolari condizioni, causava il crash
del sistema.
Si faceva riferimento al codice automodificante presente
nella prima parte (credo "setup.s") del kernel.
bye,
--
  Piergiorgio Sartor

 lo dica :=)
http://www.multimania.com/poulot/k6bug_faq.html#qa7
come punto di partenza.
bye,
--
  Piergiorgio Sartor

 In un  sistema cooperative, questo non accade... o no?
No, come ti hanno detto, in un MTPE e' il sistema che rigorosamene
distrubuisce i lavori (il pgm manco lo sa se sta girando da solo o con
altri mille...) in un MTC e' il programma che ogni tanto dice 'beh,
ora famo fare qualcosa anche agli altri'. E se *lui* e' convinto di
girare da solo, gli altri crepano...
Obelix

nella prima parte (credo "setup.s") del kernel.
Gli ho dato un'occhiata, a setup.S.
In effetti credo che sia ancora automodificante ma e` solo per far
partire il sistema e in real mode.
In protected mode 32 bit il segmento codice e` protetto in scrittura
per cui niente self modifing code.


 per cui niente self modifing code.
Fortunatamente.
Mi chiedevo, pero`, se quel codice e` proprio necessario.
Di solito non e` una bella cosa un programma automodificante,
forse scritto in un momento di fretta :-)
bye,
--
  Piergiorgio Sartor

forse scritto in un momento di fretta :-)
Si ma non e` un programma.
E poi se hai delle motivazioni valide puoi sempre riscriverlo e
proporlo a Linus :-)


Hai qualche informazione in piu`?
Una JMP SHORT per fare un flush della cache. Era possibile calcolare
la lunghezza della prefetch queue proprio basandosi su questo. E tra
le altre cose si poteva impiegare come arma anti-debugging:
	PUSH ES
	PUSH DI
	PUSH CS
	POP ES
	MOV DI, OFFSET BANG
	MOV AL, 0F4H
	CLI
	STOSB		; Trasforma il NOP in un HLT
BANG:	NOP		; a interrupt disattivati, non e' bello
	STI		; ma se il programma gira d'un fiato non
			; se ne accorge
...eseguito sotto debugger, a meno di farlo passo-passo, otteneva un
bellissimo congelamento del sistema... Idem, se eseguito sotto varie
"sandbox" non abbastanza astvte.
Leonardo
Microsoft Outlook: R: Re: R: Re: R: Re: R: cosa vuoi replicare oggi?

 proporlo a Linus :-)
Tu ci scherzi, ma io avevo una mezza idea di farlo.
Giusto per "pulizia" del codice.
Poi, come al solito, mi servirebbero giornate di 30 ore,
invece che 24...
bye,
--
  Piergiorgio Sartor

"sandbox" non abbastanza astvte.
Meno male che il giochetto funziona solo in real mode!
In pm cli e sti a ring3 sono illegali e poi non si puo` scrivere
nel segmento codice, almeno se si settano i permessi.
Cmq e` interessante, una volta esaminai il codice per il rendering
delle textures scritto interamente in assembly x86, di un motore 3d
sviluppato da un tizio nel tempo libero. Era ottimizzato a tal punto
da usare anche codice automodificante. Un vero capolavoro.
Roba d'altri tempi...
ps. Se qualcuno lo vuole ce lo dovrei avere ancora.


 Roba d'altri tempi...
Uhm, pero` il codice automodificante e` un no-no.
Per il semplice fatto che cambiando la CPU il rischio
di incompatibilita` e` elevato.
Inoltre con le moderne cache & pipeline vari ho l'idea
che sia eseguito addirittura piu` lentamente (e pericolosamente)
del codice "normale".
bye,
--
  Piergiorgio Sartor