1.18 Lezione 18 - follen99/ArchitetturaDeiCalcolatori GitHub Wiki

Protezione della memoria

Solitamente in un SO non viene eseguito un solo processo alla volta.

🏁 1:02 04-23 fino a questo punto vengono spiegate già viste nella parte di Sistemi Operativi.

Capitolo 6 : Storage ed I/O

La coppia processore - cache si affaccia su di un BUS che consente di accedere a memoria e dispositivi I/O. Alla memoria possono accedere anche i controllers di I/O, che controllano unità di I/O come dischi, tastiere, mouse, ecc.

Capiamo quindi che questi dispositivi non sono collegati direttamente al processore, ma utilizzano dei controller che gestiscono la I/O per conto proprio, e quando hanno finito ciò che dovevano fare, generano delle interruzioni che interpellano il processore.

Caratteristica dei sistemi I/O

La caratteristica più importante per i dispositivi I/O è l'affidabilità, che in questo caso viene chiamata dependability; questa caratteristica è particolarmente importante per i dischi e dispositivi di archiviazione, proprio perchè l'ultima cosa che si vuole è perdere dei dati.

Misure di performance

  • Latenza ovvero il tempo di risposta
  • Throughput ovvero la quantità di operazioni per unità di tempo
  • Desktop e sistemi embedded in un computer desktop o embedded siamo interessati al tempo di risposta ed alla possibilità di poter connettere molti dispositivi di I/O.
  • Servers nei server la cosa più importante è il throughput, ma non la latenza. Infatti quello che si vuole è avere una grossa quantità di operazioni che vengono processate nel minor tempo possibile. Vogliamo inoltre che questo tipo di sistema sia facilmente espandibile.

Layout di settori nei drivers moderni

Tradizionalmente il miglior modo per disporre due blocchi (nei dischi) da leggere sequenzialmente, è una posizione in cui si devono spostare meno possibile le testine. Se ci troviamo nella stessa posizione delle testine, basta effettuare uno switch elettronico tra una testina e l'altra senza doverla spostare, andando a leggere su due piatti diversi (dello stesso disco).

Con il passare degli anni, si è preferito spostare leggermente la testina per leggere un nuovo blocco, piuttosto che switchare elettronicamente la testina, andando a leggere su un altro piatto.

Lo schema utilizzato è quello denominato surface serpentine, leggendo a "zig zag".

Componenti interconnesse - BUS

Come si uniscono tuti questi componenti di I/O?

Dobbiamo sicuramente interconnettere CPU, memoria, e I/O controllers. Quello che connette tutti i componenti è un bus comune, fisicamente una serie di fili paralleli che tutti possono usare, dotato di un segnale di sincronizzazione che dice alle varie componenti quando il bus viene utilizzato (per non farlo usare a due componenti contemporaneamente).

Negli ultimi anni si stanno diffondendo delle connessioni non strutturate a bus, ma sono dette seriali; viene usata la stessa tecnologia usata nelle reti di comunicazione, dove viene trasmesso un solo bit alla volta, ma con una affidabilità maggiore. Attualmente, in certi casi, conviene usare la comunicazione seriale. I dischi SATA, utilizzano una comunicazione seriale.

Tipi di BUS

Solitamente i bus che connettono le componenti sono particolarmente corti e molto veloci, ed il progetto dipende fortemente dall'organizzazione della memoria. I BUS su cui viaggiano i dati I/O sono sicuramente più lenti, proprio perchè non abbiamo bisogno di un'elevata velocità, ma della possibilità di avere delle connessioni multiple e di una maggiore lunghezza.

Segnali BUS e sincronizzazione

  • Linee dati
    • trasmettono indirizzi e dati
  • Linee di controllo
    • indicano il tipo di dato, sincronizzano le transazioni
  • Sincrono
    • c'è un clock che regola tutti i trasferimenti dei bus; il clock del bus non è lo stesso del processore, ma molto più basso.
  • Asincrono
    • Non viene usato un clock (che dice in quali istanti prendere e trasmettere informazioni), ma si usano delle linee apposite che dicono al bus quando il ricevente ha ricevuto i dati trasmessi. Questo tipo di trasmissione è la migliore; infatti se su un bus sincrono usiamo un'unita I/O particolarmente lenta, il bus deve adattarsi alla velocità dell'unità più lenta. Con il sistema asincrono, invece, il trasferimento termina nell'esatto momento in cui il ricevente ha ricevuto i dati.

fine lezione 18

⚠️ **GitHub.com Fallback** ⚠️