{"id":30992,"date":"2019-10-31T21:38:47","date_gmt":"2019-10-31T18:38:47","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod\/"},"modified":"2019-10-31T21:38:47","modified_gmt":"2019-10-31T18:38:47","slug":"operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","title":{"rendered":"Sistemi Operativi: Tre Facili Pezzi. Parte 2: Astrazione: Processo (traduzione)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduzione ai sistemi operativi<\/h1>\n<p>\nCiao, Habr! Vorrei presentarvi una serie di articoli tradotti su una libreria che trovo interessante: OSTEP. In questo materiale si analizza in profondit\u00e0 il funzionamento dei sistemi operativi simili a Unix, in particolare la gestione dei processi, vari pianificatori, la memoria e altri componenti simili che costituiscono un moderno sistema operativo. Potete visualizzare l'originale di tutti i materiali qui <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/\">qui<\/a><\/noindex>. Si prega di notare che la traduzione non \u00e8 stata eseguita da un professionista (\u00e8 abbastanza libera), ma spero di aver mantenuto il significato generale.<\/p>\n<p>Le esercitazioni su questo argomento possono essere trovate qui:<\/p>\n<ul>\n<li>originale: <noindex><a rel=\"nofollow\" href=\"http:\/\/pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html\">pages.cs.wisc.edu\/~remzi\/OSTEP\/Homework\/homework.html<\/a><\/noindex><\/li>\n<li>originale: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><\/li>\n<li>la mia personale adattazione: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bykvaadm\/OS\/tree\/master\/ostep\">github.com\/bykvaadm\/OS\/tree\/master\/ostep<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nAltre parti:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/446340\/\">Parte 1: Introduzione<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nE potete anche dare un'occhiata al mio canale su <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/bykvaadm\">Telegram<\/a><\/noindex> =)<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Consideriamo l'astrazione pi\u00f9 fondamentale che il sistema operativo fornisce agli utenti: il processo. La definizione di processo \u00e8 piuttosto semplice: \u00e8 <b>un programma in esecuzione<\/b>. Il programma di per s\u00e9 \u00e8 una cosa senza vita, che risiede su disco: un insieme di istruzioni e forse alcuni dati statici, in attesa di essere avviati. \u00c8 proprio il sistema operativo che prende questi byte e li avvia, trasformando il programma in qualcosa di utile.<br \/>\n Spesso gli utenti desiderano eseguire pi\u00f9 di un programma contemporaneamente; ad esempio, puoi avviare sul tuo laptop un browser, un gioco, un lettore multimediale, un editor di testo e cos\u00ec via. Di fatto, un sistema tipico pu\u00f2 eseguire decine e centinaia di processi simultaneamente. Questo fatto rende il sistema pi\u00f9 facile da usare, non dovendo mai preoccuparti se la CPU \u00e8 libera: semplicemente avvii i programmi.<\/p>\n<p><i>Da qui sorge il problema: come garantire l'illusione di molteplici CPU? Come pu\u00f2 un sistema operativo creare l'illusione di un numero praticamente infinito di CPU, anche se si dispone di un solo CPU fisico?<\/i><\/p>\n<p>Il sistema operativo crea questa illusione attraverso la virtualizzazione della CPU. Eseguendo un processo, poi fermandolo, avviando un altro processo e cos\u00ec via, il sistema operativo pu\u00f2 mantenere l'illusione che esistano molteplici CPU virtuali, anche se in realt\u00e0 si tratta di uno o pi\u00f9 processori fisici. Questa tecnica \u00e8 chiamata <b>partizionamento temporale delle risorse CPU<\/b>. Questa tecnica consente agli utenti di eseguire quanti pi\u00f9 processi simultanei desiderano. Il costo di tale soluzione \u00e8 rappresentato dalle prestazioni: se pi\u00f9 processi condividono la CPU, ciascun processo sar\u00e0 elaborato pi\u00f9 lentamente.<br \/>\n Per implementare la virtualizzazione della CPU, e in particolare per farlo bene, il sistema operativo ha bisogno di supporto sia a livello basso che a livello alto. Il supporto a basso livello \u00e8 chiamato <b>meccanismi<\/b> \u2014 sono metodi o protocolli a basso livello che implementano la parte necessaria della funzionalit\u00e0. Un esempio di tale funzionalit\u00e0 \u00e8 il contesto di commutazione, che consente al sistema operativo di fermare un programma e avviarne un altro sul processore. Questa suddivisione temporale \u00e8 realizzata in tutti i sistemi operativi moderni.<br \/>\n Sopra questi meccanismi si trova una certa logica incorporata nel sistema operativo, sotto forma di \"politiche\". <b>Politica<\/b> \u2014 \u00e8 un certo algoritmo di decisione del sistema operativo. Tali politiche, ad esempio, determinano quale programma dovrebbe essere eseguito (dalla lista dei comandi) per primo. Cos\u00ec, ad esempio, questo compito sar\u00e0 risolto dalla politica chiamata <b>politica di pianificazione (scheduling policy)<\/b> e nella scelta della decisione si baser\u00e0 su dati come: la cronologia di esecuzione (quale programma \u00e8 stato eseguito pi\u00f9 a lungo nell'ultimo minuto), quale carico sta generando il processo (quali tipi di programmi sono stati eseguiti), le metriche di prestazione (se il sistema \u00e8 ottimizzato per l'interazione interattiva o per la larghezza di banda) e cos\u00ec via.<\/p>\n<h3>Astrazione: processo<\/h3>\n<p>\n L'astrazione di un programma in esecuzione gestita dal sistema operativo \u00e8 ci\u00f2 che chiamiamo <b>processo<\/b>. Come gi\u00e0 detto, un processo \u00e8 semplicemente un programma in esecuzione in un dato intervallo di tempo. \u00c8 il programma tramite il quale possiamo ottenere informazioni aggregate da diverse risorse di sistema, a cui il programma accede o che il programma coinvolge durante la sua esecuzione.<br \/>\n Per comprendere gli elementi costitutivi di un processo, \u00e8 necessario comprendere gli stati del sistema: cosa pu\u00f2 leggere o modificare un programma durante l'esecuzione. In ogni momento \u00e8 importante sapere quali elementi del sistema sono cruciali per l'esecuzione del programma.<br \/>\n Uno degli elementi ovvi dello stato del sistema che \u00e8 incluso in un processo \u00e8 <b>la memoria<\/b>. Le istruzioni si trovano in memoria. I dati che il programma legge o scrive si trovano anch'essi in memoria. Pertanto, la memoria che il processo pu\u00f2 indirizzare (il cosiddetto spazio di indirizzamento) \u00e8 parte del processo.<br \/>\n Anche i registri fanno parte dello stato del sistema. Molte istruzioni sono indirizzate a modificare il valore dei registri o a leggerne il valore, e cos\u00ec i registri diventano una parte fondamentale del funzionamento del processo. <br \/>\nVa notato che lo stato della macchina \u00e8 anche costituito da alcuni registri speciali. Ad esempio,<b> IP \u2014 instruction pointer<\/b> \u2014 puntatore all'istruzione che il programma sta eseguendo in quel momento. Ci sono anche <b>stack pointer<\/b> e il relativo <b>frame pointer<\/b>, che vengono utilizzati per gestire: parametri delle funzioni, variabili locali e indirizzi di ritorno.<br \/>\nInfine, i programmi spesso accedono alla ROM (memoria permanente). Tali informazioni su \u201cI\/O\u201d (input\/output) devono includere un elenco dei file aperti dal processo in quel momento.<\/p>\n<h3>Processo API<\/h3>\n<p>\n Per migliorare la comprensione del funzionamento del processo, esamineremo alcuni esempi di chiamate di sistema che devono essere incluse in qualsiasi interfaccia di sistema operativo. Questi API sono disponibili in una forma o nell'altra su qualsiasi sistema operativo.<\/p>\n<p>\u25cf <b>Crea<\/b> (creazione): Un sistema operativo deve includere un metodo per creare nuovi processi. Quando immetti un comando nel terminale o avvii un'applicazione facendo doppio clic sull'icona, viene inviato un messaggio al sistema operativo per creare un nuovo processo e avviare il programma specificato.<br \/>\n\u25cf <b>Eliminazione<\/b>: Poich\u00e9 esiste un'interfaccia per la creazione di processi, il sistema operativo deve anche fornire la possibilit\u00e0 di terminare forzatamente un processo. La maggior parte dei programmi si avvia e si chiude naturalmente durante la propria esecuzione. In caso contrario, l'utente desidererebbe avere la possibilit\u00e0 di interromperli e quindi un'interfaccia per fermare il processo sarebbe utile.<br \/>\n\u25cf <b>Attendere <\/b>(attesa): A volte \u00e8 utile attendere la conclusione di un processo, quindi vengono forniti alcuni interfacce che consentono di farlo.<br \/>\n\u25cf <b>Controllo Misc<\/b> (varie operazioni di controllo): Oltre a terminare e attendere un processo, ci sono anche altri vari metodi di controllo. Ad esempio, la maggior parte dei sistemi operativi offre la possibilit\u00e0 di mettere in pausa un processo (interrompere la sua esecuzione per un certo periodo) e successivamente riprenderlo (continuare l'esecuzione).<br \/>\n\u25cf <b>Stato <\/b>(stato): Esistono diverse interfacce per ottenere informazioni sullo stato del processo, come la durata del suo funzionamento o in quale stato si trovi attualmente.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemi Operativi: Tre Facili Pezzi. Parte 2: Astrazione: Processo (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/eccf4ba3b12a60a54a62bb13986a7783.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Creazione del processo: dettagli<\/h3>\n<p>Una delle cose interessanti \u00e8 come i programmi si trasformano in processi. In particolare, come il sistema operativo carica e avvia un programma. Come viene creato specificamente un processo.<br \/>\nIn primo luogo, il sistema operativo deve caricare il codice del programma e i dati statici nella memoria (nello spazio degli indirizzi del processo). I programmi sono generalmente memorizzati su disco o su un'unit\u00e0 a stato solido in un formato eseguibile. Pertanto, il processo di caricamento del programma e dei dati statici in memoria richiede al sistema operativo la capacit\u00e0 di leggere questi byte dal disco e posizionarli da qualche parte in memoria.<\/p>\n<p>Nei sistemi operativi precedenti, il processo di caricamento veniva eseguito in modo impaziente (eagerly), il che significa che il codice veniva caricato completamente nella memoria prima che il programma venisse avviato. I sistemi operativi moderni lo fanno in modo pigro (lazily), cio\u00e8 caricando pezzi di codice o dati solo quando necessari per l'esecuzione del programma.<\/p>\n<p>Dopo che il codice e i dati statici sono stati caricati nella memoria del sistema operativo, \u00e8 necessario eseguire alcune altre operazioni prima di avviare il processo. Una certa quantit\u00e0 di memoria deve essere allocata per lo stack. <b>I programmi utilizzano lo stack per variabili locali, parametri di funzione e indirizzi di ritorno.<\/b>. Il sistema operativo alloca questa memoria e la restituisce al processo. Lo stack pu\u00f2 anche essere allocato con alcuni argomenti, in particolare riempie i parametri della funzione main(), come l'array argc e argv.<\/p>\n<p>Il sistema operativo pu\u00f2 anche allocare una certa quantit\u00e0 di memoria per l'heap del programma. <b>L'heap viene utilizzato dai programmi per i dati dinamicamente allocati richiesti esplicitamente.<\/b>. I programmi richiedono questo spazio chiamando una funzione <b>malloc()<\/b> e lo puliscono esplicitamente, chiamando una funzione. <b>free()<\/b>. La heap \u00e8 necessaria per strutture dati come: liste collegate, tabelle hash, alberi e altro. Inizialmente, viene allocata una piccola quantit\u00e0 di memoria per la heap, ma nel tempo, durante l'esecuzione del programma, la heap pu\u00f2 richiedere ulteriore memoria tramite la chiamata API della libreria malloc(). Il sistema operativo \u00e8 coinvolto nel processo di allocazione di ulteriore memoria per soddisfare queste richieste.<\/p>\n<p>Il sistema operativo si occuper\u00e0 anche di compiti di inizializzazione, in particolare quelli relativi all'input\/output. Ad esempio, nei sistemi UNIX, ogni processo ha per impostazione predefinita 3 descrittori di file aperti per il flusso standard di input, output e errori. Questi descrittori permettono ai programmi di leggere l'input dal terminale e di visualizzare informazioni sullo schermo. <\/p>\n<p>In questo modo, caricando il codice e i dati statici nella memoria, creando e inizializzando lo stack e svolgendo altre attivit\u00e0 relative all'esecuzione di operazioni di input\/output, il sistema operativo prepara il terreno per l'esecuzione del processo. In definitiva, rimane l'ultimo compito: avviare l'esecuzione del programma attraverso il suo punto di ingresso, chiamato funzione main(). Passando all'esecuzione della funzione main(), il sistema operativo trasferisce il controllo della CPU al processo appena creato, facendo cos\u00ec iniziare l'esecuzione del programma. <\/p>\n<h3>Stato del processo<\/h3>\n<p>\n Ora che abbiamo una certa comprensione di cosa sia un processo e come venga creato, elenchiamo gli stati in cui un processo pu\u00f2 trovarsi. Nella sua forma pi\u00f9 semplice, un processo pu\u00f2 trovarsi in uno di questi stati:<br \/>\n\u25cf <b>Esecuzione<\/b>. Nello stato in esecuzione, il processo viene eseguito sulla CPU. Ci\u00f2 significa che le istruzioni vengono eseguite.<br \/>\n\u25cf <b>Pronto<\/b>. Nello stato di attesa, il processo \u00e8 pronto per avviarsi, ma per qualche motivo il sistema operativo non lo esegue nel momento specificato.<br \/>\n\u25cf <b>Bloccato<\/b>. In stato bloccato, il processo esegue alcune operazioni che non gli consentono di essere pronto per l'esecuzione fino a quando non si verifica un evento. Un esempio comune \u00e8 quando un processo inizializza un'operazione IO, diventa bloccato e cos\u00ec un altro processo pu\u00f2 utilizzare la CPU.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemi Operativi: Tre Facili Pezzi. Parte 2: Astrazione: Processo (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/d2c01bdb08e7b7aeea78edcbf6ce0250.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPossiamo immaginare questi stati come un grafo. Come possiamo vedere nell'immagine, lo stato di un processo pu\u00f2 cambiare tra RUNNING e READY a discrezione del sistema operativo. Quando lo stato di un processo cambia da READY a RUNNING, ci\u00f2 significa che il processo \u00e8 stato programmato. In direzione opposta \u2014 \u00e8 stato rimosso dalla pianificazione. Nel momento in cui un processo diventa BLOCKED, ad esempio, inizializzando un'operazione IO, il sistema operativo lo terr\u00e0 in questo stato fino al verificarsi di un evento, come il completamento dell'IO. In quel momento, il passaggio allo stato READY e possibilmente immediatamente a RUNNING, se cos\u00ec decide il sistema operativo. <br \/>\nDiamo un'occhiata a un esempio di come due processi attraversano questi stati. Immaginiamo innanzitutto che entrambi i processi siano in esecuzione e utilizzino solo la CPU. In questo caso, i loro stati appariranno come segue.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemi Operativi: Tre Facili Pezzi. Parte 2: Astrazione: Processo (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/904cef8e04c2f0d8eaf4fdc5860f5bfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNel seguente esempio, il primo processo dopo un certo periodo di lavoro richiede IO e passa allo stato BLOCKED, dando l'opportunit\u00e0 di avviare il secondo processo (FIG 1.4). Il sistema operativo vede che il processo 0 non utilizza la CPU e avvia il processo 1. Durante l'esecuzione del processo 1, l'IO termina e lo stato del processo 0 cambia in READY. Infine, il processo 1 termina, e alla sua conclusione il processo 0 viene avviato, eseguito e completato.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemi Operativi: Tre Facili Pezzi. Parte 2: Astrazione: Processo (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/06f44895cc976e7755c1f7bf5afe466b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Struttura dei dati<\/h3>\n<p>\n Il sistema operativo \u00e8 a sua volta un programma e, come qualsiasi altro programma, ha alcune strutture dati chiave che monitorano diversi pezzi di informazione rilevanti. Per tenere traccia dello stato di ogni processo, il sistema operativo manterr\u00e0 una certa <b>process list<\/b> per tutti i processi nello stato READY e alcune informazioni aggiuntive per monitorare i processi in esecuzione in quel momento. Inoltre, il sistema operativo deve monitorare anche i processi bloccati. Una volta completato l'IO, il sistema operativo deve risvegliare il processo necessario e portarlo nello stato pronto per l'esecuzione.<\/p>\n<p>Ad esempio, il sistema operativo deve salvare lo stato dei registri del processore. Nel momento in cui il processo viene interrotto, lo stato dei registri viene salvato nello spazio indirizzi del processo, e quando il suo lavoro riprende, i valori dei registri vengono ripristinati, consentendo cos\u00ec la continuazione dell'esecuzione di questo processo.<\/p>\n<p>Oltre agli stati ready, blocked, running, esistono anche altri stati. A volte, al momento della creazione, un processo pu\u00f2 trovarsi nello stato INIT. Infine, un processo pu\u00f2 essere riservato allo stato FINAL, quando \u00e8 gi\u00e0 completato, ma le informazioni su di esso non sono ancora state cancellate. In sistemi UNIX, tale stato \u00e8 chiamato <b>processo-zombie<\/b>. Questo stato \u00e8 utile nelle situazioni in cui il processo genitore desidera conoscere il codice di uscita del processo figlio; ad esempio, di solito 0 segnala una conclusione positiva e 1 un errore, tuttavia i programmatori possono definire codici di uscita aggiuntivi per segnalare vari problemi. Alla conclusione, il processo genitore effettua l'ultima chiamata di sistema, ad esempio wait(), per attendere la conclusione del processo figlio e segnalare al sistema operativo che \u00e8 possibile liberare eventuali dati associati al processo completato.<\/p>\n<p><img decoding=\"async\" alt=\"Sistemi Operativi: Tre Facili Pezzi. Parte 2: Astrazione: Processo (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/4756790c823a7e9ebbe26ff067ca00cc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Punti chiave della lezione:<\/h3>\n<p>\n\u25cf <b>Processo <\/b> \u2014 l'astrazione principale di un programma in esecuzione nel sistema operativo. In un dato momento, un processo pu\u00f2 essere descritto dal suo stato: il contenuto della memoria nel suo spazio di indirizzi, il contenuto dei registri del processore, inclusi il puntatore delle istruzioni e il puntatore dello stack, oltre alle informazioni sull'I\/O, come i file aperti che vengono letti o scritti.<br \/>\n\u25cf <b>Processo API<\/b> consiste nelle chiamate che i programmi possono fare riguardo ai processi. Di solito, queste sono chiamate per creare, eliminare o eseguire altre operazioni.<br \/>\n\u25cf Il processo si trova in uno dei molti stati, tra cui running, ready, blocked. Vari eventi, come la pianificazione, l'eccezione dalla pianificazione o l'attesa, possono tradurre lo stato del processo da uno all'altro.<br \/>\n\u25cf <b>Elenco dei processi<\/b> contiene informazioni su tutti i processi nel sistema. Ogni voce in esso \u00e8 chiamata process control block, che \u00e8 effettivamente una struttura che contiene tutte le informazioni necessarie su un processo specifico.\u2003<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446866\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":22968,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30992","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 2: \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 (\u043f\u0435\u0440\u0435\u0432\u043e\u0434) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:38:47+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:38:47+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Sistemi Operativi: Tre facili pezzi. Parte 2: Astrazione: Processo (traduzione) | ProHoster","description":"Introduzione ai sistemi operativi Ciao, Habr! Vorrei presentarvi una serie di articoli-traduzioni di una letteratura che trovo interessante \u2014 OSTEP. In questo materiale viene esaminato in profondit\u00e0 il funzionamento dei sistemi operativi unix-like, in particolare \u2014 la gestione dei processi, dei vari pianificatori, della memoria e di altri componenti simili che compongono un sistema operativo moderno. Puoi visualizzare l'originale di tutti i materiali qui.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Operating Systems: Three Easy Pieces. Part 2: \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f: \u041f\u0440\u043e\u0446\u0435\u0441\u0441 (\u043f\u0435\u0440\u0435\u0432\u043e\u0434) | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP. \u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0430 unix-\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c\u0438, \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u043e\u0447\u0438\u0438\u043c\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u041e\u0421. \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0432\u0441\u0435\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0443\u0442.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-2-abstraktsiya-protsess-perevod","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:38:47+00:00","article:modified_time":"2019-10-31T18:38:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30992","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 03:59:23","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:26:04","updated":"2026-01-21 03:59:23","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/30992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=30992"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/30992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/22968"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=30992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=30992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=30992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}