logo

Cos'è RPC nel sistema operativo?

La Remote Procedure Call o RPC è una tecnica potente per costruire applicazioni distribuite basate su client-server. È nota anche come chiamata di funzione o chiamata di subroutine. Una chiamata di procedura remota si verifica quando un programma per computer provoca l'esecuzione di una procedura in uno spazio di indirizzi diverso, codificato come chiamata di procedura locale, senza che il programmatore dichiari esplicitamente i dettagli per l'interazione remota. Il programmatore scrive essenzialmente lo stesso codice indipendentemente dal fatto che la subroutine sia locale rispetto al programma in esecuzione o remota. Questa è una forma di interazione client-server implementata tramite un sistema di passaggio di messaggi di richiesta-risposta.

Cos'è RPC nel sistema operativo

Il modello RPC implica trasparenza della posizione che le procedure di chiamata sono in gran parte le stesse, sia locali che remote. Solitamente non sono identiche, per cui è possibile distinguere le chiamate locali da quelle remote. Le chiamate remote sono generalmente molto più lente e meno affidabili delle chiamate locali, quindi è importante distinguerle.

Le RPC sono una forma di comunicazione tra processi (IPC), in quanto processi diversi hanno spazi di indirizzi diversi. Hanno spazi di indirizzi virtuali distinti sulla stessa macchina host, anche se lo spazio di indirizzi fisici è lo stesso. Mentre se si trovano su host diversi, lo spazio degli indirizzi fisici è diverso.

Come effettuare una chiamata di procedura remota

L'ambiente chiamante viene sospeso, i parametri della procedura vengono trasferiti attraverso la rete all'ambiente in cui deve essere eseguita la procedura e lì la procedura viene eseguita.

Cos'è RPC nel sistema operativo

Quando la procedura termina e produce i suoi risultati, viene trasferita nuovamente nell'ambiente chiamante, dove l'esecuzione riprende come se tornasse da una normale chiamata di procedura.

NOTA: RPC è particolarmente adatto per l'interazione client-server (ad esempio, risposta a query) in cui il flusso di controllo si alterna tra il chiamante e il chiamato. Concettualmente, il client e il server non vengono eseguiti simultaneamente; invece, il thread di esecuzione salta dal chiamante al chiamato e poi viceversa.

Tipi di RPC

Esistono tre tipi di chiamata di procedura remota (RPC) in un sistema operativo, ad esempio:

Cos'è RPC nel sistema operativo

1. RPC di richiamata

Questo tipo di RPC consente un paradigma P2P tra i processi partecipanti. Aiuta un processo a essere sia servizi client che server. Callback RPC ha le seguenti funzioni, come ad esempio:

derivati ​​parziali nel lattice
  • Problemi applicativi interattivi elaborati in remoto.
  • Offre server con gestione client.
  • La richiamata fa attendere il processo client.
  • Gestisci i deadlock delle richiamate.
  • Facilita un paradigma peer-to-peer tra i processi partecipanti.

2. Trasmettere RPC

Broadcast RPC è la richiesta di un client trasmessa sulla rete, elaborata da tutti i server con il metodo per elaborare tale richiesta. Broadcast RPC ha le seguenti funzioni, come ad esempio:

  • Consente di specificare che il messaggio di richiesta del client deve essere trasmesso.
  • Puoi dichiarare porte di trasmissione.
  • Aiuta a ridurre il carico sulla rete fisica.

3. RPC in modalità batch

L'RPC in modalità batch consente di accodare, separare le richieste RPC in un buffer di trasmissione, sul lato client, e quindi di inviarle su una rete in un batch al server. L'RPC in modalità batch presenta le seguenti funzioni, tra cui:

  • Riduce al minimo il sovraccarico coinvolto nell'invio di una richiesta inviandole attraverso la rete in un batch al server.
  • Questo tipo di protocollo RPC è efficace solo per un'applicazione che necessita di tariffe di chiamata inferiori.
  • Ha bisogno di un protocollo di trasmissione affidabile.

Cosa fa RPC?

Quando le istruzioni di programma che utilizzano il framework RPC vengono compilate in un programma eseguibile, nel codice compilato viene incluso uno stub che rappresenta il codice della procedura remota.

Quando il programma viene eseguito e viene emessa la chiamata alla procedura, lo stub riceve la richiesta e la inoltra a un programma runtime client nel computer locale. La prima volta che viene richiamato lo stub del client, contatta un server dei nomi per determinare l'indirizzo di trasporto in cui risiede il server.

Il programma runtime client sa come indirizzare il computer remoto e l'applicazione server e invia il messaggio attraverso la rete che richiede la procedura remota. Allo stesso modo, il server include un programma runtime e uno stub che si interfaccia con la procedura remota stessa, e i protocolli di richiesta di risposta vengono restituiti allo stesso modo.

Caratteristiche dell'RPC

In un sistema operativo, la chiamata di procedura remota (RPC) ha le seguenti funzionalità, come ad esempio:

  • RPC nasconde all'utente la complessità del processo di passaggio dei messaggi.
  • RPC utilizza solo livelli specifici del modello OSI come il livello di trasporto.
  • I client possono comunicare con il server utilizzando linguaggi di livello superiore.
  • RPC funziona bene sia con ambienti locali che con ambienti remoti.
  • Il programma di RPC è scritto in codice semplice ed è facilmente comprensibile dal programmatore.
  • Il sistema operativo può gestire facilmente processi e thread coinvolti in RPC.
  • Il sistema operativo nasconde all'utente le astrazioni di RPC.

Come funziona l'RPC?

Quando viene richiamata una chiamata di procedura remota, l'ambiente chiamante viene sospeso, i parametri della procedura vengono trasferiti attraverso la rete all'ambiente in cui la procedura deve essere eseguita e la procedura viene quindi eseguita in quell'ambiente.

comando sed

Al termine della procedura, i risultati vengono trasferiti nuovamente all'ambiente chiamante, dove l'esecuzione riprende come se tornasse da una normale chiamata di procedura.

Cos'è RPC nel sistema operativo

Una chiamata di procedura remota (RPC) funziona nei seguenti passaggi in un sistema operativo:

Passo 1: Il client, lo stub del client e il runtime RPC vengono eseguiti sul computer client.

Passo 2: Un client avvia un processo di stub del client passando i parametri nel solito modo. Viene chiamato il confezionamento dei parametri della procedura smistamento . Lo stub del client viene archiviato nello spazio degli indirizzi del client e richiede inoltre al runtime RPC locale di rispedire allo stub del server.

Passaggio 3: In questa fase l'utente può accedere all'RPC effettuando regolare Chiamata Procedurale Locale. RPC Runtime gestisce la trasmissione di messaggi tra la rete attraverso client e server ed esegue anche il lavoro di ritrasmissione, riconoscimento, instradamento e crittografia.

Passaggio 4: Dopo aver completato la procedura del server, ritorna allo stub del server, che comprime (esegue il marshall) i valori restituiti in un messaggio. Lo stub del server invia quindi un messaggio al livello di trasporto.

Passaggio 5: In questa fase, il livello di trasporto restituisce il messaggio risultato al livello di trasporto del client, che restituisce un messaggio allo stub del client.

Passaggio 6: In questa fase, lo stub del client effettua il demarshall (decompressione) dei parametri di ritorno nel pacchetto risultante e il processo di esecuzione ritorna al chiamante.

Problemi di chiamata di procedura remota (RPC)

In un sistema operativo, la chiamata di procedura remota o RPC ha dovuto affrontare alcuni problemi che devono essere risolti, come ad esempio:

dormire in Javascript
Cos'è RPC nel sistema operativo

1. Tempo di esecuzione RPC

Il sistema runtime RPC è una libreria di routine e servizi che gestiscono le comunicazioni di rete che sono alla base del meccanismo RPC. Nel corso di una chiamata RPC, il codice dei sistemi runtime lato client e lato server gestisce l'associazione, stabilisce le comunicazioni su un protocollo appropriato, passa i dati della chiamata tra il client e il server e gestisce gli errori di comunicazione.

parola chiave statica in Java

2. Tronco

La funzione dello stub è fornire trasparenza al codice dell'applicazione scritto dal programmatore.

    Lato client:Lo stub gestisce l'interfaccia tra la chiamata di procedura locale del client e il sistema runtime, effettuando il marshalling e l'unmarshalling dei dati, invocando il protocollo runtime RPC e, se richiesto, eseguendo alcuni passaggi di associazione.Lato server:Lo stub fornisce un'interfaccia simile tra il sistema runtime e le procedure del gestore locale eseguite dal server.

3. Vincolante

Come fa il cliente a sapere chi chiamare e dove risiede il servizio?

La soluzione più flessibile consiste nell'utilizzare l'associazione dinamica e trovare il server in fase di esecuzione quando viene creata per la prima volta la RPC. La prima volta che viene richiamato lo stub del client, contatta un server dei nomi per determinare l'indirizzo di trasporto in cui risiede il server. La rilegatura è composta da due parti:

    Noi:Un Server che ha un servizio da offrire ne esporta un'interfaccia. L'esportazione di un'interfaccia la registra nel sistema in modo che i client possano utilizzarla.Localizzazione:Un cliente deve importare un'interfaccia (esportata) prima che la comunicazione possa iniziare.

4. La semantica chiamante associata a RPC

È principalmente classificato nelle seguenti scelte,

    Riprova il messaggio di richiesta:Se riprovare a inviare un messaggio di richiesta quando un server ha fallito o il destinatario non ha ricevuto il messaggio.Filtraggio duplicato:Rimuovi le richieste del server duplicate.Ritrasmissione dei risultati:Per inviare nuovamente i messaggi persi senza rieseguire le operazioni sul lato server.

Caratteristiche dell'RPC

Ecco le caratteristiche essenziali della chiamata di procedura remota:

  • La procedura chiamata si trova in un altro processo, che probabilmente risiederà in un'altra macchina.
  • I processi non condividono lo spazio degli indirizzi.
  • I parametri vengono passati solo tramite valori.
  • RPC viene eseguito nell'ambiente del processo server.
  • Non offre accesso all'ambiente della procedura chiamante.

Vantaggi dell'RPC

Ecco alcuni vantaggi o benefici di RPC, come ad esempio:

  • Il metodo RPC aiuta i client a comunicare con i server mediante l'uso convenzionale di chiamate di procedura in linguaggi di alto livello.
  • Il metodo RPC è modellato sulla chiamata di procedura locale, ma è molto probabile che la procedura venga eseguita in un processo diverso e in genere su un computer diverso.
  • RPC supporta modelli orientati ai processi e ai thread.
  • RPC rende nascosto all'utente il meccanismo interno di passaggio dei messaggi.
  • Lo sforzo necessario per riscrivere e sviluppare nuovamente il codice è minimo.
  • Le chiamate di procedura remota possono essere utilizzate per la distribuzione e l'ambiente locale.
  • Impegna molti dei livelli del protocollo per migliorare le prestazioni.
  • RPC fornisce l'astrazione. Ad esempio, la natura dello scambio di messaggi della comunicazione di rete rimane nascosta all'utente.
  • RPC consente l'utilizzo delle applicazioni in un ambiente distribuito e non solo nell'ambiente locale.
  • Con il codice RPC, gli sforzi di riscrittura e ri-sviluppo sono ridotti al minimo.
  • Modelli orientati ai processi e ai thread supportati da RPC.

Svantaggi dell'RPC

Di seguito sono riportati alcuni svantaggi o inconvenienti derivanti dall'utilizzo di RPC, ad esempio:

  • La chiamata di procedura remota passa i parametri solo in base ai valori e ai valori dei puntatori, il che non è consentito.
  • Il tempo di chiamata (e restituzione) della procedura remota (ovvero i costi generali) può essere significativamente inferiore rispetto a una procedura locale.
  • Questo meccanismo è altamente vulnerabile al fallimento poiché coinvolge un sistema di comunicazione, un'altra macchina e un altro processo.
  • Il concetto RPC può essere implementato in diversi modi, il che non può essere standard.
  • Non offre alcuna flessibilità in RPC per l'architettura hardware poiché è principalmente basata sull'interazione.
  • Il costo del processo aumenta a causa di una chiamata di procedura remota.