Multitasca: diferència entre les revisions

Contingut suprimit Contingut afegit
LanguageTool: correccions ortogràfiques i gramaticals
LanguageTool: correccions ortogràfiques i gramaticals
Línia 29:
 
== Multitasca preventiva (apropiativa) ==
La multitasca preventiva permet que el sistema informàtic que garanteixi de manera més fiable cada procés una "llesca" regular de temps de funcionament.  També permet que el sistema per bregar ràpidament amb esdeveniments externs importants com les dades d'entrada, que podrien requerir l'atenció immediata d'un procés o un altre. Es van desenvolupar sistemes operatius per a aprofitar aquestes capacitats de maquinari i executar diversos processos de forma preventiva.  Multitasca preventiva  va ser recolzat en PDP-8 ordinadors de desembre , i implementat en  OS / 360 MFT  en 1967, en  MULTICS  (1964) i [[Unix]]  (1969);  és una característica fonamental de tots  els [[Unixsistemes operatius]]  [[sistemes operatiusUnix]], com [[Linux]],  [[Solaris]] i  [[BSD]], amb els seus  derivats.
 
En qualsevol moment específic, els processos es poden agrupar en dues categories: els que estan a l'espera de l'entrada o sortida (anomenat "I/O obligats"), i els que estan utilitzant plenament la CPU ("CPU obligat").  En els sistemes primitius, el programari sovint "enquesta", o "busywait" a l'espera de l'entrada sol·licitada (com el disc, el teclat o l'entrada de xarxa).  Durant aquest temps, el sistema no estava realitzant un treball útil.  Amb l'adveniment de les interrupcions i multitasca preventiva, I / O processos vinculats podria ser "bloquejat", o en suspens, a l'espera de l'arribada de les dades necessàries, permetent altres processos per utilitzar la [[CPU]].  Com l'arribada de les dades sol·licitades podrien generar una interrupció, els processos bloquejats podrien garantir-se un retorn oportú a l'execució.
 
El primer [[sistema operatiu]] multitasca preventiva a disposició dels usuaris domèstics era  [[Sinclair QDOS]]  al  [[Sinclair QL]], llançat en 1984, però molt poca gent va comprar la màquina. [[Commodore  Amiga]] , llançat l'any següent, va ser el primer ordinador personal d'èxit comercial per utilitzar la tecnologia i les seves capacitats multimèdia que sigui un avantpassat clar dels ordinadors personals multitasca contemporanis.  [[Microsoft]]  va fer multitasca preventiva una característica central del seu sistema operatiu insígnia al principi de 1990 en el desenvolupament de  [[Windows NT 3.1]]  i  [[Windows 95]]. Més tard es va adoptar en l'Apple Macintosh  Mac OS X  que, com  a [[Unixsistema operatiu]]  [[sistema operatiuUnix]], utilitza multitasca preventiva per a totes les aplicacions natives.
 
Un model similar s'utilitza en  Windows 9x  i la  família de Windows NT , on les aplicacions de 32 bits natius són multitasca preventiva, i heretats de 16 bits  de Windows 3.x on els programes són multitasca cooperativa dins d'un mateix procés, encara que en la família NT és possible per forçar una aplicació de 16 bits per executar-se com un procés multitasca preventiva separat.   Les edicions de 64 bits de [[Windows]], tant per als  x86-64  i  Itanium  arquitectures, ja no donar suport a l'herència aplicacions de 16 bits, i així proporcionar multitasca preventiva per a totes les aplicacions compatibles.
 
== Temps Real ==
Una altra raó per a la multitasca és el disseny de  computació en temps real  de sistemes, on hi ha un seguit d'activitats externes no relacionades necessàriament, per a ser controlat per un sistema amb un únic processador.  En aquests sistemes un sistema d'interrupció jeràrquica és, juntament amb la prioritat, una eina per assegurar que les activitats clau se'ls dona una major proporció de disposició  del temps de procés, assegurant així l'execució de processos importants. 
 
== Multifil (multihreading) ==
Com a multitasca millora molt el rendiment dels ordinadors, els programadors van començar a implementar aplicacions com a conjunts de processos cooperants (per exemple, un procés de recopilació de dades d'entrada, les dades d'entrada de processament d'un procés, un procés escrivint resultats en el disc).  Això, però, requereix algunes eines per permetre que els processos intercanviïn de dades de manera eficient. 
 
Els fils ([[thread]] en anglès)  van néixer de la idea que la forma més eficient per als processos que cooperen per intercanviar dades seria compartir la totalitat del seu espai a la memòria.  Per tant, les discussions són efectivament els processos que s'executen en el mateix context de la memòria i altres recursos comparteixen amb els seus  processos pare , com els arxius oberts.  Fils es descriuen com  processos lleugers  perquè la commutació entre els fils no implica canviar el context de memòria (un canvi de context endarrereix molt l'execució). 
 
Si bé les discussions s'han programat de forma preventiva, alguns sistemes operatius proporcionen una variant de fils, anomenats  fibres , que es programen de forma cooperativa.  En els sistemes que no proporcionen fibres, una aplicació pot implementar les seves pròpies fibres mitjançant trucades repetides a les funcions dels treballadors.  Les fibres són més lleugers que els fils, i una mica més fàcil de programar, encara que tendeixen a perdre part o la totalitat dels beneficis de les discussions en les màquines amb múltiples processadors . 
 
Alguns sistemes donen suport directament  [[multifil]] en el maquinari .
 
== Protecció de memòria ==
''Article principal:  [[Protecció de memòria]]''
 
Essencial per a qualsevol sistema multitasca és compartir de manera segura i efectiva l'accés als recursos del sistema.  L'accés a la memòria s'ha de gestionar estrictament per assegurar que cap procés de manera inadvertida o deliberadament pot llegir o escriure en posicions de memòria fora del seu espai d'adreces.  Això es fa amb el propòsit d'estabilitat general del sistema i la integritat de dades, així com la seguretat de dades.
 
En general, la gestió d'accés a memòria és responsabilitat del nucli del sistema operatiu, en combinació amb els mecanismes de maquinari (com la unitat de gestió de memòria (MMU)) que proporcionen funcionalitats de suport.  Si un procés intenta accedir a una posició de memòria fora del seu espai de memòria, la MMU nega la sol·licitud i assenyala el nucli per prendre les mesures adequades; aquesta en general resulta en l'acabament a la força del procés.  Segons el programari i del nucli disseny i l'error específic de què es tracti, l'usuari pot rebre un missatge d'error d'accés com "violació de segment".
 
En un sistema multitasca ben dissenyat i correctament implementat, un procés donat mai pot accedir directament a la memòria que pertany a un altre procés.  Una excepció a aquesta regla és en el cas de la memòria compartida; per exemple, en el mecanisme de comunicació entre processos de [[System V]] el nucli assigna memòria per ser mútuament compartida per múltiples processos.  Tals característiques són d'ús freqüent pel programari de gestió de base de dades com [[PostgreSQL]].
 
Els mecanismes de protecció de memòria inadequats, ja sigui a causa de defectes en el seu disseny o implementacions pobres, permeten vulnerabilitats de seguretat que poden ser potencialment explotats per programari maliciós.
 
== Intercanvi de memòria ==
L'ús d'un  arxiu d'intercanvi  o swap de partició és una manera que té el [[sistema operatiu]] per proporcionar més memòria que està físicament disponible mantenint porcions de la memòria principal a  l'emmagatzematge secundari .  Mentre que la multitasca i l'intercanvi de memòria són dues tècniques completament aïllades, s'utilitzen molt sovint juntes, l'intercanvi de memòria per exemple permet que més tasques es carreguin al mateix temps.
 
En general, un sistema multitasca permet que un altre procés s'executi quan el procés en execució realitza un punt en el qual ha d'esperar que una part de la memòria de tornar a carregar des de l'emmagatzematge secundari, és a dir aprofitar els espais de temps on un procés no ma res més que esperar.
 
== Programació ==
Processos que són totalment independents no són un problema per al programa en un entorn multitasca.  La major part de la complexitat en els sistemes multitasca prové de la necessitat de compartir recursos informàtics entre les tasques i per sincronitzar el funcionament de les tasques que s'executen a la vegada i al mateix espai.
 
S'utilitzen diverses tècniques de [[computació concurrent]] per a evitar possibles problemes causats per múltiples tasques que intenten accedir-hi recurs.
 
Els sistemes més grans de vegades es construeixen amb un processador central (s) i un nombre de  processadors d'E / S , una mena d'asimetria  multiprocessament, tal com passa al model Master / Worker.
 
Amb els anys, els sistemes multitasca s'han refinat.  Els [[sistemes operatius]] moderns generalment inclouen mecanismes detallats per a la priorització dels processos, mentre que el multiprocessament simètric  ha introduït noves complexitats i capacitats. 
 
== Vegeu també ==