Open (crida al sistema)

De la Viquipèdia, l'enciclopèdia lliure

Per a la majoria de sistemes de fitxers, un programa inicialitza l'accés a un fitxer en un sistema de fitxers mitjançant la crida al sistema obert. Això assigna recursos associats al fitxer (el descriptor del fitxer) i retorna un identificador que el procés utilitzarà per referir-se a aquest fitxer. En alguns casos l'obertura es realitza pel primer accés.[1]

El mateix fitxer es pot obrir simultàniament per diversos processos, i fins i tot pel mateix procés, resultant en diversos descriptors de fitxers per al mateix fitxer; depenent de l'organització de fitxers i del sistema de fitxers. Les operacions sobre els descriptors, com ara moure el punter del fitxer o tancar-lo, són independents — no afecten altres descriptors del mateix fitxer. Les operacions del fitxer, com ara una escriptura, es poden veure mitjançant les operacions dels altres descriptors: una lectura posterior pot llegir les dades que s'han escrit recentment.[2]

Durant l'open, el sistema de fitxers pot assignar memòria per als buffers, o pot esperar fins a la primera operació.

S'ha resolt el camí del fitxer absolut. Això pot incloure connectar-se a un host remot i notificar a un operador que cal un mitjà extraïble. Pot incloure la inicialització d'un dispositiu de comunicació. En aquest punt, es pot tornar un error si l'amfitrió o el mitjà no està disponible. Es realitza el primer accés com a mínim al directori dins del sistema de fitxers. Normalment es retornarà un error si no es pot localitzar ni accedir als components de nivell superior de la ruta (directoris). Es retornarà un error si s'espera que el fitxer existeixi i no existeix o si el fitxer encara no hauria d'existir i existeix.[3]

Si s'espera que el fitxer existeixi i existeix, l'accés al fitxer, tal com està restringit per les marques de permís a les metadades del fitxer o la llista de control d'accés, es valida amb el tipus d'operacions sol·licitades. Normalment, això requereix un accés addicional al sistema de fitxers, encara que en alguns sistemes de fitxers els meta-marcadors poden formar part de l'estructura de directoris.

Si el fitxer s'està creant, el sistema de fitxers pot assignar la quantitat inicial d'emmagatzematge predeterminada o una quantitat especificada en funció de les capacitats del sistema de fitxers. Si això falla, es retornarà un error. Es pot actualitzar el directori amb la nova entrada o es pot retardar fins que es realitzi el tancament.

Altres errors que es poden produir durant l'obertura inclouen errors en l'actualització del directori, connexions múltiples no permeses, errors en mitjans, errors en l'enllaç de comunicació i errors en el dispositiu.

El valor de retorn s'ha d'examinar sempre i s'ha de prendre una acció específica d'error.

En molts casos, l'obertura de la biblioteca en temps d'execució específica del llenguatge de programació pot dur a terme accions addicionals, inclosa la inicialització d'una estructura de biblioteca en temps d'execució relacionada amb el fitxer.

Tan aviat com un fitxer ja no sigui necessari, el programa hauria de tancar-lo. Això farà que la biblioteca en temps d'execució i els buffers del sistema de fitxers s'actualitzin al suport físic i permetrà que altres processos accedeixin a les dades si s'hagués requerit un ús exclusiu. Algunes biblioteques en temps d'execució poden tancar un fitxer si el programa crida a la sortida en temps d'execució. Alguns sistemes de fitxers poden realitzar les operacions necessàries si el programa finalitza. Cap d'ells és probable que es produeixi en cas d'un nucli o una fallada d'alimentació. Això pot causar danys a les estructures del sistema de fitxers que requereixin l'execució d'utilitats del sistema de fitxers llargues i privilegiades durant les quals pot ser que tot el sistema de fitxers sigui inaccessible.[4]

Arguments de crida[modifica]

  1. El nom del camí del fitxer,
  2. El tipus d'accés sol·licitat al fitxer (llegir, escriure, afegir, etc.),
  3. El permís inicial del fitxer es demana utilitzant el tercer argument anomenat mode. Aquest argument només és rellevant quan s'està creant un fitxer nou.

Després d'utilitzar el fitxer, el procés hauria de tancar-lo mitjançant la crida close, que pren el descriptor del fitxer que es tancarà. Alguns sistemes de fitxers inclouen una disposició per permetre l'alliberament del fitxer.

Alguns llenguatges informàtics inclouen biblioteques en temps d'execució que inclouen funcionalitats addicionals per a sistemes de fitxers concrets. L'obertura (o alguna rutina auxiliar) pot incloure especificacions per a la mida de la clau, la mida del registre i la velocitat de connexió. Algunes rutines obertes inclouen l'especificació del codi del programa que s'ha d'executar en cas d'error.

Referències[modifica]

  1. «Input-output system calls in C | Create, Open, Close, Read, Write» (en anglès americà), 28-06-2017. [Consulta: 14 desembre 2023].
  2. «open(2) - Linux manual page» (en anglès). [Consulta: 14 desembre 2023].
  3. «System Calls in Linux: An Overview» (en anglès), 06-06-2023. [Consulta: 14 desembre 2023].
  4. Kaplarevic, Vladimir. «System Calls in Operating System Explained | phoenixNAP KB» (en anglès americà), 31-08-2023. [Consulta: 14 desembre 2023].