Chiamate di sistema

Che cos'è una chiamata di sistema in Linux e come funziona con gli esempi

Che cos'è una chiamata di sistema in Linux e come funziona con gli esempi

Una chiamata di sistema è una funzione che consente a un processo di comunicare con il kernel Linux. È solo un modo programmatico per un programma per computer di ordinare una struttura dal kernel del sistema operativo. Le chiamate di sistema espongono le risorse del sistema operativo ai programmi utente tramite un'API (Application Programming Interface). Le chiamate di sistema possono accedere solo al framework del kernel. Le chiamate di sistema sono necessarie per tutti i servizi che richiedono risorse.

Il kernel Linux è un software proprietario che carica e opera sul dispositivo nella fase meno potenziale. Il suo compito è organizzare tutto ciò che accade sulla macchina, dalla tastiera, dall'unità disco e dagli eventi di rete per fornire intervalli di tempo per l'esecuzione simultanea di diversi programmi. La separazione di software e hardware crea una bolla sicura che migliora la protezione e l'affidabilità. Le applicazioni non privilegiate non sono in grado di raggiungere lo spazio di archiviazione di altri programmi e, se uno fallisce, il kernel sospende il processo in modo che non danneggi l'intero sistema.

Involucro sottile di wafer:

Le chiamate di sistema Linux non vengono rese esplicitamente al kernel in alcuni programmi. Quasi tutti i programmi utilizzano la libreria C di base e offrono un wrapper leggero ma essenziale per le chiamate di sistema Linux. Il repository fornisce quindi la chiamata della macchina Linux di accompagnamento dopo essersi assicurati che i parametri della funzionalità siano tradotti nei registri del processore corretti. Ogni volta che il wrapper riceve dati dalla chiamata di sistema, li analizza e li fornisce chiaramente al programma. Qualsiasi operazione interattiva con la macchina in un programma viene infine convertita in una chiamata di sistema. Quindi, diamo un'occhiata ad alcuni di loro. C'è una lunga lista di chiamate di sistema Linux che possiamo usare nel nostro sistema Linux. Ecco l'elenco di alcune chiamate di sistema Linux comuni e maggiormente utilizzate.

Discutiamo alcune delle chiamate di sistema Linux che utilizzano il linguaggio C nel nostro articolo per metterlo in pratica.

Chiamata di sistema aperta:

Possiamo usare la chiamata di sistema "Open" nella nostra distribuzione Linux per aprire rapidamente il documento, che specificheremo nel nostro codice del linguaggio C. Avvia prima il terminale di comando. Puoi usare la scorciatoia "Ctrl+Alt+T". Supponiamo di avere un file di testo “test.txt" nella directory home e contiene del contenuto al suo interno. Quindi, all'inizio, devi creare un nuovo nome file di tipo C "nuovo.c" nel terminale tramite nano editor. Pertanto, prova le semplici istruzioni nano sottostanti.

$ nano nuovo.c

Ora è stato lanciato l'editor Nano. Digita il codice mostrato di seguito al suo interno. Abbiamo due descrittori di file nel codice. Entrambi i file possono essere aperti utilizzando la chiamata di sistema aperta. Il primo descrittore contiene una chiamata di lettura e il secondo contiene la funzione di scrittura. La prima chiamata aperta è l'apertura del file di testo “test.txt" e salvando il suo contenuto nel descrittore di file "fd". La seconda chiamata di sistema aperta sta creando un file chiamato "target". Il documento "target" è stato rimborsato a un descrittore di file "fd1". L'istruzione di scrittura viene utilizzata per trascrivere i byte di dati nel buffer. Tocca "Ctrl+S" per salvare il codice e premi il tasto di scelta rapida "Ctrl+X" per chiudere il file.

Esegui l'istruzione di compilazione gcc per compilare questo codice C.

$ gcc nuovo.c

Eseguiamo il codice utilizzando il semplice “a.out" nella shell come segue:

$ ./un.su

I dati di output sono stati trasmessi al file “target”. Controlliamo il file "target" utilizzando la query "cat". La schermata di output mostra i dati di 20 caratteri nel file "target".

$ gatto bersaglio

Chiamata di sistema esecutivo:

La chiamata di sistema exec viene abbandonata per eseguire un file che è attualmente in fase di elaborazione. Il precedente file eseguibile viene sostituito e il file corrente viene utilizzato ogni volta che viene chiamato exec. Usando una chiamata di sistema exec, possiamo presumere che così facendo sovrascriverai il vecchio documento o applicazione nel ciclo con uno nuovo. Il nuovo software viene utilizzato per sovrascrivere il materiale dell'intero processo. Il documento il cui titolo è fornito nell'istruzione ogni volta che si invoca exec() viene sostituito dalla sezione delle informazioni utente che esegue la chiamata di sistema exec() (). Quindi apri il terminale di comando e, usando l'editor nano, crea un nuovo file di tipo C come segue:

$ nano exp.c

L'editor è stato aperto ora. Scrivi l'intero codice del linguaggio C sottostante al suo interno. Ci sono tre librerie principali incluse in esso. Successivamente, la funzione principale è stata istanziata. L'istruzione print ha mostrato i dati della stringa e l'ID di processo del file “exp.c". La funzione getpid() è stata utilizzata per questo scopo. Quindi abbiamo un array di tipi di caratteri con alcuni valori al suo interno. La chiamata di sistema exec è stata utilizzata per prendere il nome del file e l'array di una riga sopra come argomento. Ora il file “ciao.c" verrà elaborato. Dopodiché, arriva un'altra istruzione print, ma non verrà mai eseguita. Premi "Ctrl+S" per salvare questo file. Premi "Ctrl+X" per uscire.

Ora è il momento di creare un altro file c, "ciao.c" utilizzando l'editor nano. Usa la seguente query nella shell per farlo.

$ nano ciao.c

Scrivi il codice qui sotto in esso. Questo codice contiene due istruzioni print nella funzione principale. Il primo sta solo stampando una stringa data in esso, e il secondo sta stampando la stringa durante il recupero dell'ID di processo del file attualmente utilizzato, che è "ciao.c".

Compiliamo entrambi i file uno dopo l'altro usando gcc.

$ gcc -o exp exp.c

$ gcc -o ciao ciao.c

Quando eseguiamo l'exp.c, emetterà la prima istruzione print dall'exp.c ed entrambe le righe di stampa dall'hello.c file.

$ ./exp

Conclusione:

Abbiamo elaborato l'intero concetto di chiamate di sistema Linux e come possono essere utilizzate nel tuo sistema Linux. Abbiamo usato Ubuntu 20.04 implementando questo concetto.

Rimappa i pulsanti del mouse in modo diverso per software diversi con X-Mouse Button Control
Forse hai bisogno di uno strumento che possa cambiare il controllo del tuo mouse con ogni applicazione che utilizzi. In questo caso, puoi provare un'a...
Recensione del mouse wireless Microsoft Sculpt Touch
Ho letto di recente del Microsoft Scolpisci il tocco mouse wireless e ho deciso di acquistarlo. Dopo averlo usato per un po', ho deciso di condividere...
Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...