{"id":30717,"date":"2019-10-31T21:37:05","date_gmt":"2019-10-31T18:37:05","guid":{"rendered":"https:\/\/prohoster.info\/blog\/operating-systems-three-easy-pieces-part-1-intro-perevod\/"},"modified":"2019-10-31T21:37:05","modified_gmt":"2019-10-31T18:37:05","slug":"operating-systems-three-easy-pieces-part-1-intro-perevod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-perevod","title":{"rendered":"Operating Systems: Three Easy Pieces. Part 1: Intro (traduzione)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Introduzione ai sistemi operativi<\/h1>\n<p>Ciao, Habr! Voglio presentarvi una serie di articoli tradotti su una letteratura che considero interessante: OSTEP. In questo materiale viene esaminato in profondit\u00e0 il funzionamento dei sistemi operativi UNIX-like, in particolare la gestione dei processi, dei vari scheduler, della memoria e di altri componenti simili che costituiscono un moderno sistema operativo. Puoi consultare 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 considerare che la traduzione \u00e8 stata eseguita non professionalmente (abbastanza liberamente), ma spero di aver mantenuto il significato generale.<\/p>\n<p>I lavori di laboratorio su questo argomento possono essere trovati qui:<br \/>\n \u2014 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><br \/>\n \u2014 originale: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/remzi-arpacidusseau\/ostep-code\">github.com\/remzi-arpacidusseau\/ostep-code<\/a><\/noindex><br \/>\n \u2014 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><\/p>\n<p>E 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<h3>Funzionamento del programma<\/h3>\n<p>\nCosa succede quando un programma \u00e8 in esecuzione? Un programma avviato esegue una semplice operazione: esegue istruzioni. Ogni secondo milioni, e forse miliardi, di istruzioni vengono estratte dal processore dalla memoria RAM, e a sua volta le decodifica (ad esempio, riconosce a quale tipo appartengono queste istruzioni) ed esegue. Queste possono includere l'addizione di due numeri, l'accesso alla memoria, il controllo di una condizione, il passaggio a una funzione e cos\u00ec via. Dopo aver completato l'esecuzione di un'istruzione, il processore passa a un'altra. E cos\u00ec, istruzione dopo istruzione, vengono eseguite fino a quando il programma non termina.<br \/>\nQuesto esempio \u00e8 naturalmente semplificato: in realt\u00e0, per accelerare il funzionamento, l'hardware moderno consente di eseguire istruzioni fuori sequenza, calcolare risultati possibili, eseguire istruzioni simultaneamente e altre simili astuzie.<\/p>\n<h3>Modello di calcolo di Von Neumann<\/h3>\n<p>\nLa forma semplificata del funzionamento che abbiamo descritto \u00e8 simile al modello di calcolo di Von Neumann. <i>Von Neumann \u00e8 uno dei pionieri dei sistemi informatici e uno degli autori della teoria dei giochi<\/i>. Durante l'esecuzione del programma si verificano molti altri eventi, funzionano molte altre logiche e processi esterni, il cui obiettivo principale \u00e8 semplificare l'avvio, l'operativit\u00e0 e la manutenzione del sistema.<br \/>\nEsiste un insieme di software responsabile per la semplicit\u00e0 di avvio dei programmi (o addirittura per consentire l'esecuzione simultanea di pi\u00f9 programmi). Questo consente ai programmi di condividere la stessa memoria e di interagire con vari dispositivi. Questo insieme di software (programmi) \u00e8 fondamentalmente ci\u00f2 che chiamiamo sistema operativo, la cui funzione include il monitoraggio affinch\u00e9 il sistema funzioni correttamente ed efficacemente, oltre a garantire la facilit\u00e0 di gestione di questo sistema. <\/p>\n<h2>Sistema operativo<\/h2>\n<p>\n<b>Il sistema operativo, abbreviato in SO, \u00e8 un insieme di programmi interconnessi, progettati per gestire le risorse del computer e organizzare l'interazione tra l'utente e il computer.<\/b>. <br \/>\nIl SO raggiunge la sua efficienza principalmente attraverso la tecnica pi\u00f9 importante \u2014 la tecnica <b>di virtualizzazione<\/b>. Il SO interagisce con le risorse fisiche (processore, memoria, disco e simili) e le trasforma in una forma pi\u00f9 generica, con maggiori capacit\u00e0 e pi\u00f9 facile da utilizzare. Pertanto, per una comprensione generale, possiamo paragonare molto grossolanamente il sistema operativo a una macchina virtuale.<br \/>\nPer consentire agli utenti di dare comandi al sistema operativo, sfruttando cos\u00ec le capacit\u00e0 della macchina virtuale (come: avvio di un programma, allocazione di memoria, accesso a file e cos\u00ec via), il sistema operativo fornisce un'interfaccia chiamata <b>API<\/b> (application programming interface), che pu\u00f2 essere chiamata. Un tipico sistema operativo offre la possibilit\u00e0 di effettuare cento chiamate di sistema.<br \/>\nInfine, poich\u00e9 la virtualizzazione consente a pi\u00f9 programmi di funzionare (in questo modo condividendo la CPU) e contemporaneamente accedere alle loro istruzioni e dati (condividendo cos\u00ec la memoria), oltre ad accedere ai dischi (condividendo cos\u00ec i dispositivi di input\/output), il sistema operativo viene anche chiamato gestore delle risorse. Ogni processore, disco e memoria \u00e8 una risorsa del sistema e pertanto uno dei compiti del sistema operativo \u00e8 gestire queste risorse in modo efficiente, equo o, viceversa, a seconda dell'obiettivo per cui \u00e8 stato sviluppato questo sistema operativo.<\/p>\n<h3>Virtualizzazione della CPU<\/h3>\n<p>\nConsideriamo il seguente programma:<br \/>\n(https:\/\/www.youtube.com\/watch?v=zDwT5fUcki4&amp;feature=youtu.be)<\/p>\n<p> <img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 1: Intro (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/1f353e582b857fc71231472ec4f55319.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNon esegue azioni particolari, essenzialmente tutto ci\u00f2 che fa \u00e8 chiamare la funzione <b>spin<\/b>(), il cui compito \u00e8 controllare ciclicamente il tempo e restituire, dopo che \u00e8 trascorsa un secondo. In questo modo, ripete all'infinito la stringa che l'utente ha fornito come argomento.<br \/>\nAvviamo questo programma e forniamo come argomento il carattere \u201cA\u201d. Il risultato non \u00e8 particolarmente interessante: il sistema semplicemente esegue il programma, che periodicamente stampa sullo schermo il carattere \u201cA\u201d.<br \/>\nOra proviamo una variante in cui sono in esecuzione pi\u00f9 istanze dello stesso programma, ma che stampano lettere diverse, per rendere il tutto pi\u00f9 comprensibile. In questo caso, il risultato sar\u00e0 leggermente diverso. Nonostante abbiamo un solo processore, il programma viene eseguito contemporaneamente. Come \u00e8 possibile? La risposta \u00e8 che il sistema operativo, con l'aiuto delle capacit\u00e0 hardware, crea l'illusione. L'illusione che nel sistema ci siano pi\u00f9 processori virtuali, trasformando un processore fisico in un numero teoricamente infinito, consentendo cos\u00ec ai programmi di sembrare eseguirsi contemporaneamente. Questa illusione si chiama <i>Virtualizzazione CPU<\/i>.<br \/>\n Questa situazione solleva molte domande, ad esempio, se pi\u00f9 programmi desiderano avviarsi contemporaneamente, quale di essi verr\u00e0 eseguito? A questa domanda rispondono le \u201cpolitiche\u201d del sistema operativo. Le politiche vengono utilizzate in molti ambiti del sistema operativo e rispondono a domande simili, e sono anche i meccanismi di base che il sistema operativo implementa. Da qui il ruolo del sistema operativo come gestore delle risorse.<\/p>\n<h3>Virtualizzazione della memoria<\/h3>\n<p>\n Adesso analizziamo la memoria. <b>Il modello fisico della memoria nei sistemi moderni si presenta come un array di byte<\/b>. Per leggere dalla memoria \u00e8 necessario specificare <b>l'indirizzo della cella<\/b>, per ottenere accesso ad essa. Per scrivere o aggiornare i dati \u00e8 necessario specificare anche i dati e l'indirizzo della cella in cui devono essere scritti.<br \/>\n Le richieste alla memoria avvengono continuamente durante l'esecuzione del programma. Il programma memorizza nella memoria tutta la sua struttura dati e accede ad essa eseguendo varie istruzioni. Anche le istruzioni, nel frattempo, sono memorizzate nella memoria, quindi l'accesso avviene anche per ogni richiesta della successiva istruzione.<\/p>\n<h4>Chiamata a malloc()<\/h4>\n<p>Consideriamo il seguente programma, che alloca un'area di memoria utilizzando una chiamata <b>malloc()<\/b> (https:\/\/youtu.be\/jnlKRnoT1m0):<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 1: Intro (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/00b285e1999c2b010c84e712a3ac3087.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl programma esegue diverse operazioni. Innanzitutto, alloca una certa quantit\u00e0 di memoria (riga 7), quindi visualizza l'indirizzo della cella di memoria allocata (riga 9) e scrive zero nella prima posizione di memoria allocata. Successivamente, il programma entra in un ciclo in cui incrementa il valore memorizzato all'indirizzo nella variabile \u201cp\u201d. Inoltre, visualizza l'ID del proprio processo. <b>L'ID del processo \u00e8 unico per ogni processo in esecuzione.<\/b>Se tuttavia avviamo pi\u00f9 copie, ci imbatteremo in un risultato interessante: nel primo caso, se non facciamo nulla e semplicemente avviamo pi\u00f9 copie, gli indirizzi saranno diversi. Ma questo non \u00e8 in linea con la nostra teoria! Esatto, poich\u00e9 nelle distribuzioni moderne \u00e8 abilitata per impostazione predefinita la funzione di randomizzazione della memoria. Se la disattiviamo, otterremo il risultato atteso: gli indirizzi di memoria delle due applicazioni in esecuzione contemporanea saranno identici. <\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 1: Intro (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/882fe00a72deadac12f146bc8d15b024.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Di conseguenza, risulta che due programmi indipendenti operano con i propri spazi di indirizzi privati, che a loro volta vengono mappati dal sistema operativo nella memoria fisica.<\/b>Pertanto, l'uso degli indirizzi di memoria all'interno di un programma non influenzer\u00e0 in alcun modo gli altri, e ogni programma ha l'impressione di avere una propria porzione di memoria fisica, interamente dedicata al proprio utilizzo. La realt\u00e0, tuttavia, \u00e8 che la memoria fisica \u00e8 una risorsa condivisa, gestita dal sistema operativo.<\/p>\n<h3>Coerenza<\/h3>\n<p>\nUn altro dei temi importanti nell'ambito dei sistemi operativi \u00e8 la <b>coerenza<\/b>. Questo termine viene utilizzato quando si parla di problemi nel sistema che possono sorgere quando si lavora su molteplici attivit\u00e0 contemporaneamente all'interno di un programma. Problemi di coerenza possono anche sorgere all'interno dello stesso sistema operativo. Negli esempi precedenti sulla virtualizzazione della memoria e del processore, abbiamo compreso che il sistema operativo gestisce molte cose contemporaneamente: avvia il primo processo, poi il secondo e cos\u00ec via. Si \u00e8 scoperto che tale comportamento pu\u00f2 portare a determinati problemi. Ad esempio, i programmi multithread moderni incontrano tali difficolt\u00e0.<\/p>\n<p>Consideriamo il seguente programma:<\/p>\n<p> <img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 1: Intro (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/091af38bd53fb94e65afa6c57b08f012.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIl programma nella funzione principale crea due thread, usando la chiamata <b>Pthread_create()<\/b>. In questo esempio, il thread pu\u00f2 essere visto come una funzione eseguita in uno spazio di memoria insieme ad altre funzioni, con il numero di funzioni attive evidentemente superiore a uno. In questo esempio, ogni thread si attiva ed esegue la funzione <b>worker() che a sua volta semplicemente incrementa una variabile<\/b>,.<\/p>\n<p>Eseguiamo questo programma con l'argomento 1000. Come avete gi\u00e0 potuto intuire, il risultato dovrebbe essere 2000, poich\u00e9 ogni thread ha incrementato la variabile 1000 volte. Tuttavia, non \u00e8 tutto cos\u00ec semplice. Proviamo a far partire il programma con un numero di ripetizioni di un ordine superiore.<\/p>\n<p><img decoding=\"async\" alt=\"Operating Systems: Three Easy Pieces. Part 1: Intro (traduzione)\" src=\"\/wp-content\/uploads\/2019\/04\/a6a3e63f9ab94793ffde67342c5a19da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nInserendo come input un numero, ad esempio, 100000, ci aspettiamo di ottenere come output il numero 200000. Tuttavia, eseguendo il numero 100000 pi\u00f9 volte, non solo non vedremo la risposta corretta, ma otterremo anche risposte errate e diverse. La chiave \u00e8 che per incrementare un numero sono necessarie tre operazioni: estrazione del numero dalla memoria, incremento e poi scrittura del numero di nuovo. Poich\u00e9 tutte queste istruzioni non vengono eseguite atomicamente (tutte simultaneamente), possono verificarsi situazioni strane. Questo problema si chiama in programmazione <b>race condition \u2014 condizione di gara<\/b>. Quando forze ignote in momenti ignoti possono influenzare l'esecuzione di alcune delle vostre operazioni.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446340\/\">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\u044b\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\u043d\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":22702,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30717","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.1.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\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\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-1-intro-perevod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.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 1: Intro (\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\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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:37:05+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:05+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 1: Introduzione (traduzione) | ProHoster","description":"Introduzione ai sistemi operativi Salve, Habr! Vorrei presentare alla vostra attenzione una serie di articoli-traduzioni di alcune letterature che trovo interessanti: OSTEP.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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 1: Intro (\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\u044b\u0439 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u044b \u2014 OSTEP.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/operating-systems-three-easy-pieces-part-1-intro-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:37:05+00:00","article:modified_time":"2019-10-31T18:37:05+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30717","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 02:38:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:30:51","updated":"2026-01-21 02:38:19","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\/30717","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=30717"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/30717\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/22702"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=30717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=30717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=30717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}