{"id":589,"date":"2023-10-10T13:34:40","date_gmt":"2023-10-10T11:34:40","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/?page_id=589"},"modified":"2023-10-18T16:30:33","modified_gmt":"2023-10-18T14:30:33","slug":"1-4-programes-i-processos","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/1-4-programes-i-processos\/","title":{"rendered":"1.4. Programes i processos"},"content":{"rendered":"<p>Els ordinadors executen programes que s\u00f3n llistats d\u2019instruccions que indiquen com processar un conjunt de dades.<\/p>\n<p>Podem dividir els llenguatges de programaci\u00f3 entre:<\/p>\n<ul>\n<li>Baix nivell: assembladors i de m\u00e0quina. Propers al codi binari.<\/li>\n<li>Alt nivell: f\u00e0cils de llegir i entendre (per exemple, C, PHP, Python o Java).<\/li>\n<\/ul>\n<p>Aix\u00ed mateix, podem diferenciar els llenguatges d\u2019alt nivell compilats o interpretats.<\/p>\n<p>Un programa escrit amb un llenguatge de programaci\u00f3 compilat, per poder executar-se, necessita ser abans processat per un compilador adequat, i tradu\u00eft a llenguatge m\u00e0quina (binari). Els compiladors s\u00f3n programes encarregats de dur a terme l\u2019an\u00e0lisi l\u00e8xica, sint\u00e0ctica i sem\u00e0ntica del codi. Un cop superada aquesta etapa de verificaci\u00f3, el compilador genera un fitxer objecte que ha de ser enlla\u00e7at amb diverses llibreries de funcions del sistema per generar un fitxer executable binari. L\u2019usuari pot executar aquest arxiu quan calgui. La depuraci\u00f3 dels programes compilats \u00e9s costosa, i \u00e9s rendible nom\u00e9s en els casos en qu\u00e8 el rendiment \u00f2ptim d\u2019aquests, en termes de temps d\u2019execuci\u00f3 i espai de mem\u00f2ria, \u00e9s capital.<\/p>\n<p>Per executar tasques m\u00e9s senzilles \u00e9s possible dissenyar prototips (en angl\u00e8s, <em>scripts<\/em>) emprant llenguatges orientats a la producci\u00f3 r\u00e0pida de programes, com Perl o Python, llenguatges interpretats. Aquests llenguatges de <em>scripting<\/em> posseeixen un joc d\u2019instruccions espec\u00edficament dissenyat per facilitar l\u2019adquisici\u00f3 i tractament de fitxers de text. Els seus int\u00e8rprets processen els programes a instrucci\u00f3, saltant-se d\u2019aquesta manera la creaci\u00f3 d\u2019un fitxer binari. A canvi, el seu rendiment, en comparaci\u00f3 amb els fitxers executables, \u00e9s menor.<\/p>\n<p>Un cop l\u2019usuari decideix executar un programa, el SO ha de crear una entitat l\u00f2gica associada a aquest codi a la qual dotar de recursos suficients per desenvolupar la seva activitat (processador, mem\u00f2ria i acc\u00e9s a dispositius). Aquesta metodologia permet executar de forma concurrent diverses inst\u00e0ncies de la mateixa aplicaci\u00f3 sense m\u00e9s inconvenient que els propis de la compartici\u00f3 d\u2019alguns recursos (f\u00e0cilment esmenables dins del programa, utilitzant noms \u00fanics per als fitxers i altres dispositius).<\/p>\n<p>At\u00e8s que nom\u00e9s un proc\u00e9s pot estar simult\u00e0niament en possessi\u00f3 de la CPU, s\u2019ha de realitzar una planificaci\u00f3 \u00f2ptima per decidir en cada moment a quin proc\u00e9s li correspon el seu \u00fas. Malgrat que la compartici\u00f3 del processador sembla una seriosa limitaci\u00f3, \u00e9s en realitat un gran avantatge, ja que un proc\u00e9s gasta una fracci\u00f3 important del seu temps esperant per accedir a altres dispositius m\u00e9s lents. Per tant, superposant l\u2019\u00fas de la CPU amb les esperes dels processos s\u2019aconsegueix simular un treball en paral\u00b7lel, quan realment nom\u00e9s existeix un processador.<\/p>\n<p>Les estacions de treball actuals estan dotades de multiprocessadors, aix\u00f2 \u00e9s, nodes amb dos, quatre o m\u00e9s processadors dins de la mateixa m\u00e0quina. Gr\u00e0cies a aquesta ampliaci\u00f3 dels recursos disponibles, el SO, mitjan\u00e7ant les llibreries de disseny de programes apropiades, pot fer treballar els seus programes en paral\u00b7lel, permetent que determinats fragments d\u2019aquests treballin independentment sobre diferents conjunts de dades en diferents processadors. Cada unitat de codi executable en paral\u00b7lel dins del proc\u00e9s rep el nom de <em>fil d\u2019execuci\u00f3<\/em> (en angl\u00e8s, <em>thread<\/em>). En un sistema amb una \u00fanica CPU, el SO tamb\u00e9 \u00e9s capa\u00e7 de planificar diversos <em>threads<\/em> per simular paral\u00b7lelisme, sempre que la c\u00e0rrega de treball de la m\u00e0quina no sigui excessiva.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Els ordinadors executen programes que s\u00f3n llistats d\u2019instruccions que indiquen com processar un conjunt de dades. Podem dividir els llenguatges de programaci\u00f3 entre: Baix nivell: assembladors i de m\u00e0quina. Propers al codi binari. Alt nivell: f\u00e0cils de llegir i entendre (per exemple, C, PHP, Python o Java). Aix\u00ed mateix, podem diferenciar els llenguatges d\u2019alt nivell [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/589"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/comments?post=589"}],"version-history":[{"count":3,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/589\/revisions"}],"predecessor-version":[{"id":762,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/pages\/589\/revisions\/762"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/introduccion-a-los-entornos-de-trabajo-gnu-linux\/wp-json\/wp\/v2\/media?parent=589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}