Multitasca: diferència entre les revisions

Contingut suprimit Contingut afegit
m Corregit: en -> a preparar
Hi ha afegits alguns dels apartats que hi haurà com a extensió de l'article.
Línia 10:
 
Cal aclarir que en qualsevol Sistema Operatiu actual, el nombre de tasques que funcionen alhora són centenars o milers i que, per tant, sempre serà necessari donar suport multitasca al maquinari amb la virtualització de la multitasca des del programari.
 
== 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 enrredereix 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 te 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 aillades, 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 a que una part de la memòria de tornar a carregar des de l'emmagatzematge secundari, es 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 i 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é ==