Un procés pot executar en múltiples nuclis?

Conculència i paral· lelisme

En un procés multifil en un únic processador, el processador pot Canvieu els recursos d' execució entre fils, resultant en execució concurrent. La competència indica que més d'un fil està fent progressos, però la Els fils no funcionen simultàniament. El canvi entre fils Passa ràpidament que els fils poden aparèixer simultàniament.

En el mateix procés multifil en un multiprocessador compartit Entorn, cada fil en el procés pot executar incloent- se actualment en un separat Processador, resultant en execució paral· lela, que és una execució simultània veritable. Quan el nombre de fils en un procés és més petit o igual que el número de processadors disponibles, el sistema de suport de fils del sistema operatiu assegura que cada fil corre en un processador diferent. Per exemple, en una matriu multiplicació que està programat amb quatre fils, i que s' executa en un sistema que té dos punts duals processadors, cada fil de programari pot funcionar simultàniament en el quatre processadors Les bases per calcular una fila del resultat alhora.

Estructura multifilant

UNIX tradicionals ja accepta el concepte de fils. Cada procés conté un sol fil, de manera que la programació amb múltiples processos és la programació amb múltiples fils. Però un procés també és un espai d' adreces i crea un procés implica crear un nou espai d' adreces.

La creació d' un fil és menys car que crear un nou procés perquè el fil creat recentment usa l' espai d' adreça del procés actual. L' hora això és necessari per canviar entre fils és més petit que el temps requerit per canviar entre processos. Un canvi entre fils és més ràpid perquè no El canvi entre espais d' adreces succeeix.

La comunicació entre els fils d' un procés és simple perquè el Els fils ho comparteixen tot, espai d' adreça més important. Així doncs, les dades produeixen per un fil està disponible immediatament a tots els altres fils en el procés.

No obstant això, aquesta compartició de dades porta a un conjunt diferent de reptes pel programador. S' ha de portar l' inserció per a sincronitzar els fils per a protegir les dades des de ser modificat per més d' un fil alhora, o des de ser llegit per Alguns fils mentre s' estan modificant per un altre fil al mateix temps. Veure Sincronització de fils Per a més informació.

Fils d' usuari

Els fils són la interfície principal de programació en multifils programació. Els fils només són visibles des de dins del procés, on els fils Compartiu tots els recursos de procés com l' espai d' adreces, fitxers oberts, i així successivament.

Estat dels fils d' usuari

El següent estat és únic per a cada fil.

ID del fil

Registra Estat, incloent el comptador de programes (PPN) i el punter de la pila

Pila

Màscara de senyal

Prioritat

Emmagatzematge privada de fils

Fils comparteixen les instruccions del procés i la majoria del procés Dades. Per aquesta raó, es pot veure un canvi en dades compartides per un fil. els altres fils en el procés. Quan un fil necessita interactuar amb un altre fils en el mateix procés, el fil ho pot fer sense incloure l' operació Entorn.

Els fils de nivell d' usuari s' anomenen per a distingir- los des de l' nivell del nucli fils, que només són la preocupació dels programadors de sistemes. Perquè aquest llibre és per a programadors d' aplicació, no s' han de discutir els fils de nivell del nucli.

Planificació de fils

L' estàndard POSIX especifica tres polítiques de planificació: primera entrada ( SED_ FIFO ), rodones- robin ( SED_ RRR ), i personalitzat ( FED_ LESConstellation name (optional) ). SED_ FIFO és Un planificador de cues basat en cua amb cues diferents per a cada nivell de prioritat. SED_ RRR és com FIFO excepte que cada fil té una quota de temps d'execució.

Les dues SED_ FIFO i SED_ RRR són Extensions de temps Real POSIX. Els fils que s' executen amb aquestes polítiques són a les Classe de planificació Real per a Solaris (RT), normalment requereix un privilegi especial. FED_ LESConstellation name (optional) és la política de planificació per omissió. Fils en execució amb la FED_ LESConstellation name (optional) Les polítiques són a Solaris tradicionalName Classe de planificació de temps (TS).

Solaris proporciona altres classes de planificació, és a dir, el temps interactiu per compartir Classe (IA), classe de Fira-Share (FS), i la classe de Prioritat fixa (FX). Les classes tan especialitzades no es parlen aquí. Vegeu el Solaris psicntl(2) Pàgina manual Per a més informació.

Hi ha disponibles dos àmbits de planificació: Àmbit del procés ( HORTAD_ SSCOPE_ PROCES ) i àmbit del sistema ( RETAD_ SOPE_ SYSTEM ). Fils amb diferents estats d' àmbit poden coexisteixar en el mateix sistema i fins i tot en el mateix sistema. El mateix procés. L' àmbit del procés provoca només aquests fils per influir en els recursos amb altres fils en el mateix procés. L' àmbit del sistema causa aquests fils a representar amb tots els altres fils del sistema. A l' exercici, comença per La versió Solaris 9, el sistema no diferencia entre aquests dos àmbits.

Cancel· lació del fil

Un fil Pot sol·licitar l' acabament de qualsevol altre fil en el procés. L' objectiu El fil, el que s'està cancel·lant, pot mantenir peticions de cancel·lació pendents També es fa neteja específica de l' aplicació quan el fil actua sobre la Sol·licitud de cancel·lació.

La característica de cancel· lació de pthreads permet o bé asíncrona o perferida Fitura d' un fil. La cancel·lació asíncrona pot ocórrer en qualsevol moment. La cancel· lació referenciada només pot passar als punts definits. Sol· cancel· lació de cancel· lada@ info: tooltip és el tipus per omissió.

Sincronització de fils

La sincronització us permet controlar el flux del programa i l' accés per a compartir dades per als fils que s' executen actualment.

Els quatre models de sincronització són bloqueigs de silencix, bloqueigs de lectura/ escriptura, condició variables, i semaphores.

Blocs de silenci Permet només un fil a la vegada per executar una secció específica de codi, o per accedir específica Dades.

Blocs de lectura/ escriptura Permet La lectura actual i l' exclusiva a un recurs compartit protegit. Per modificar un recurs, un fil ha d' adquirir primer el bloqueig d' escriptura exclusiu. Una exclusiva No es permet bloc d' escriptura fins que s' hagin alliberat tots els panys de lectura.

Variables de condició bloc fils fins que una condició en particular sigui certa.

S' està comptant els semaphores Normalment Manifica l' accés als recursos. El comptador és el límit de quants fils Pot tenir accés recurrent a les dades protegides pel semaphore. Quan la S' ha arribat al compte, el semaphore fa que el fil de crida per bloquejar- lo fins que el Compta els canvis. Un semaphore binari (amb un nombre d' un) és similar a l' operació a un bloqueig en silenci.

Artículos Relacionados:

- Processador -

Esta web usa cookies, puedes ver la política de cookies, aquí -
Política de cookies +