Sistemi Operativi - 05: Scheduling della CPU
41 Questions
1 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Qual è la principale funzione del sistema operativo nel processo di scheduling?

  • Gestire la memoria
  • Gestire i dispositivi di input/output
  • Controllare l'accesso alla CPU (correct)
  • Eseguire i processi
  • Il processo può spostarsi autonomamente dalla coda di attesa a quella di ready.

    False (B)

    Cosa accade quando il timer hardware scade durante l'esecuzione di un processo?

    Il controllo della CPU viene restituito al sistema operativo.

    Lo scheduling _____ è quello in cui il sistema interviene per gestire i processi in esecuzione.

    <p>preemptive</p> Signup and view all the answers

    Abbina i tipi di scheduling con la loro descrizione:

    <p>Scheduling preemptive = Interviene in qualsiasi momento per gestire i processi Scheduling non-preemptive = Interviene solo in casi specifici Sistema operativo sofisticato = Richiede un'architettura hardware avanzata Timer hardware = Regola il passaggio dei processi in esecuzione</p> Signup and view all the answers

    Quale di queste affermazioni è vera riguardo il scheduling preemptive?

    <p>Permette al SO di gestire processi più importanti (D)</p> Signup and view all the answers

    I moderni sistemi operativi 'general purpose' utilizzano solo lo scheduling non-preemptive.

    <p>False (B)</p> Signup and view all the answers

    Quale dei seguenti parametri non è parte della politica MFQS?

    <p>Costo di elaborazione (B)</p> Signup and view all the answers

    La multielaborazione simmetrica (SMP) prevede un solo scheduler per tutti i core.

    <p>False (B)</p> Signup and view all the answers

    Qual è uno degli obiettivi principali della politica di scheduling MFQS?

    <p>Ottenere le prestazioni migliori.</p> Signup and view all the answers

    I sistemi multi-core si basano su __________ per distribuire processi su più core.

    <p>bilanciamento del carico</p> Signup and view all the answers

    Abbina i seguenti termini ai loro significati corretti:

    <p>MFQS = Politica di scheduling complessa SMP = Multielaborazione simmetrica Core = Unità di esecuzione dei processi Coda ready to run = Posto dove si trovano i processi pronti per l'esecuzione</p> Signup and view all the answers

    Qual è il termine per il metodo di scheduling in cui il processo attualmente in esecuzione viene interrotto se arriva un processo con un burst time più breve?

    <p>Shortest Remaining Time First (A)</p> Signup and view all the answers

    Il tempo di attesa medio aumenta sempre utilizzando l'algoritmo SJF.

    <p>False (B)</p> Signup and view all the answers

    Qual è la formula per calcolare il tempo medio di attesa in un algoritmo di scheduling?

    <p>Somma dei tempi di attesa di tutti i processi diviso il numero totale di processi.</p> Signup and view all the answers

    SJF può essere sia __________ che __________.

    <p>preemptive, non preemptive</p> Signup and view all the answers

    Abbina i processi con i loro tempi di arrivo:

    <p>P1 = 0 P2 = 2 P3 = 4 P4 = 5</p> Signup and view all the answers

    È sempre possibile conoscere in anticipo il prossimo burst time di un processo in SJF.

    <p>False (B)</p> Signup and view all the answers

    Quale tra i seguenti processi ha il burst time più breve nel contesto SJF?

    <p>P3 (A)</p> Signup and view all the answers

    Qual è l'analisi principale che giustifica l'uso di SJF?

    <p>SJF migliora l'attesa dei processi brevi più di quanto peggiori quella dei processi lunghi.</p> Signup and view all the answers

    Il tempo medio di attesa dei processi P1, P2, P3 e P4 nella gestione SJF preemptiva è __________.

    <p>3</p> Signup and view all the answers

    Quale tra i seguenti algoritmi è considerato il migliore per lo scheduling?

    <p>SJF (B)</p> Signup and view all the answers

    L'algoritmo FCFS fornisce sempre tempi di attesa e turnaround eccellenti.

    <p>False (B)</p> Signup and view all the answers

    Qual è la priorità in SJF?

    <p>la durata del prossimo burst time</p> Signup and view all the answers

    Il sistema operativo può calcolare la priorità dei processi in modo _______ o _______.

    <p>interno, esterno</p> Signup and view all the answers

    Abbina i seguenti algoritmi di scheduling con le loro caratteristiche:

    <p>FCFS = Primo arrivato, primo servito SJF = Burst di CPU più breve Scheduling a Priorità = Priorità assegnata a ciascun processo Round Robin = Assegnazione della CPU in tempi fissi</p> Signup and view all the answers

    Cosa si intende per 'starvation' in uno scheduling a priorità?

    <p>Un processo che non ottiene mai la CPU (B)</p> Signup and view all the answers

    SJF preemptive non può migliorare il tempo di attesa medio rispetto a SJF non preemptive.

    <p>False (B)</p> Signup and view all the answers

    Come può essere implementato lo scheduling a priorità?

    <p>Preemptive e non preemptive</p> Signup and view all the answers

    In SJF, i processi vengono selezionati sulla base del loro ______________.

    <p>burst di CPU più breve</p> Signup and view all the answers

    Quale affermazione descrive meglio FCFS?

    <p>E' il peggiore degli algoritmi ragionevoli. (A)</p> Signup and view all the answers

    Qual è la regola empirica riguardo il CPU burst in relazione a q?

    <p>Il 80% dei CPU burst dovrebbe essere minore di q (D)</p> Signup and view all the answers

    Lo scheduling a multilivello viene utilizzato solo nei sistemi operativi più recenti.

    <p>False (B)</p> Signup and view all the answers

    Quali sono le tre categorie di processi nel multi-level queue scheduling?

    <p>foreground, background, batch</p> Signup and view all the answers

    Il tipo più generale di algoritmo di scheduling è lo scheduling a __________ con retroazione.

    <p>code multilivello</p> Signup and view all the answers

    Collega i seguenti metodi di scheduling con i loro utilizzi:

    <p>RR = Gestione della coda foreground FCFS = Gestione della coda background e batch Time slice = Assegnazione percentuale della CPU Starvation = Risultato della priorità fissa</p> Signup and view all the answers

    Quale politica di scheduling viene utilizzata per i processi foreground?

    <p>RR (C)</p> Signup and view all the answers

    Nello scheduling con retroazione, l'assegnamento di un processo a una coda è fisso.

    <p>False (B)</p> Signup and view all the answers

    Che succede a un processo che non completa il CPU burst nel tempo assegnato?

    <p>Viene retrocesso alla coda successiva.</p> Signup and view all the answers

    La percentuale di CPU assegnata alla coda foreground è __________.

    <p>80%</p> Signup and view all the answers

    Quale dei seguenti è un potenziale svantaggio dello scheduling a priorità fissa?

    <p>Starvation (C)</p> Signup and view all the answers

    Flashcards

    Scheduling preemptivo

    Il sistema operativo interrompe l'esecuzione del processo corrente e passa il controllo ad un altro processo in coda di ready.

    Scheduling non preemptivo

    Il sistema operativo non può interrompere il processo corrente finché non lo termina volontariamente.

    Processo in coda di ready

    Il processo deve attendere la liberazione della CPU per iniziare l'esecuzione.

    Processo in esecuzione

    Il processo sta eseguendo il suo codice sulla CPU.

    Signup and view all the flashcards

    Processo in coda di wait

    Il processo è in attesa di un evento specifico per continuare l'esecuzione, come il completamento di un'operazione di I/O.

    Signup and view all the flashcards

    Ruolo del sistema operativo

    Il sistema operativo controlla lo stato dei processi, gestiisce la CPU e le risorse del sistema.

    Signup and view all the flashcards

    Intervento del sistema operativo

    Il sistema operativo interviene spostando un processo da una coda all'altra, ad esempio da wait a ready.

    Signup and view all the flashcards

    Shortest Job First (SJF)

    Un algoritmo di scheduling in cui il processo con il minor tempo di esecuzione (burst time) viene eseguito per primo, indipendentemente dal suo arrivo.

    Signup and view all the flashcards

    SJF non preemptive

    Versione dell'algoritmo SJF in cui il sistema operativo non può interrompere l'esecuzione del processo corrente finché non lo termina volontariamente.

    Signup and view all the flashcards

    SJF preemptive

    Versione dell'algoritmo SJF in cui il sistema operativo può interrompere l'esecuzione del processo corrente e passare il controllo ad un altro processo in coda di ready se quest'ultimo ha un tempo di esecuzione stimato inferiore.

    Signup and view all the flashcards

    Il problema di stimare la durata dei processi

    La durata del prossimo burst di CPU di un processo non è nota a priori.

    Signup and view all the flashcards

    Stima basata su medie pesate

    Un'approssimazione di SJF che utilizza precedenti tempi di burst di CPU per stimare il tempo di burst di CPU di un processo futuro.

    Signup and view all the flashcards

    Ottimalità di SJF

    L'algoritmo SJF è ottimale perché minimizza il tempo di attesa medio e il turnaround medio.

    Signup and view all the flashcards

    Tempo di attesa medio

    Il tempo medio di attesa dei processi in un sistema di scheduling.

    Signup and view all the flashcards

    Turnaround

    Il tempo totale che un processo impiega per essere completato, dal suo arrivo al suo completamento.

    Signup and view all the flashcards

    Passaggio di controllo in SJF preemptive

    Il processo in esecuzione viene interrotto e il controllo viene passato al processo in coda di ready con il tempo di burst stimato più breve.

    Signup and view all the flashcards

    First Come First Served (FCFS)

    Un algoritmo di scheduling in cui i processi vengono serviti nell'ordine in cui arrivano in coda. Non è preemptivo, quindi un processo continua fino al termine.

    Signup and view all the flashcards

    Scheduling a priorità

    Un algoritmo di scheduling in cui ogni processo ha una priorità assegnata. Il processo con la priorità più alta viene eseguito per primo. Può essere preemptivo o non preemptivo.

    Signup and view all the flashcards

    Priorità interna

    In un sistema operativo, la priorità può essere assegnata ai processi in base a informazioni interne al sistema. Ad esempio, la quantità di risorse utilizzate da un processo potrebbe influenzare la sua priorità.

    Signup and view all the flashcards

    Priorità esterna

    In un sistema operativo, la priorità può essere assegnata ai processi in base a informazioni esterne al sistema. Ad esempio, un utente potrebbe assegnare una priorità maggiore a un processo specifico.

    Signup and view all the flashcards

    Starvation

    Un processo che ha sempre una priorità inferiore rispetto ad altri processi in coda potrebbe non essere mai eseguito. Questo problema è noto come starvation.

    Signup and view all the flashcards

    Aging

    Un meccanismo utilizzato per prevenire la starvation. I processi che aspettano da molto tempo vengono gradualmente promossi a priorità più alta.

    Signup and view all the flashcards

    SJF come scheduling a priorità

    SJF è un esempio di scheduling a priorità. La priorità di un processo è determinata dalla durata del suo prossimo burst di CPU.

    Signup and view all the flashcards

    FCFS come scheduling a priorità

    Anche FCFS può essere considerato uno scheduling a priorità. In questo caso, la priorità di un processo è determinata dal suo ordine di arrivo in coda.

    Signup and view all the flashcards

    Qualità di un algoritmo di scheduling

    Un algoritmo di scheduling è considerato 'buono' quando le sue prestazioni si avvicinano a SJF, il migliore algoritmo possibile, e si allontanano da FCFS, il peggiore algoritmo ragionevole.

    Signup and view all the flashcards

    Cos'è MFQS?

    MFQS è un algoritmo di scheduling che gestisce la priorità dei processi in più code, definendo le regole di promozione e degrado tra le code. Questo sistema permette una maggiore flessibilità nella gestione delle risorse e delle prestazioni del sistema operativo.

    Signup and view all the flashcards

    Cosa rende speciali i sistemi multi-core?

    I sistemi multi-core sono architetture con più core che condividono la stessa memoria e la cache, aumentando le performance grazie a più unità di esecuzione.

    Signup and view all the flashcards

    Come funziona la multielaborazione simmetrica (SMP) nei sistemi multi-core?

    La multielaborazione simmetrica (SMP) è una modalità di gestione dei processi in sistemi multi-core, dove ogni core ha uno scheduler che gestisce una coda di processi. I processi possono essere inseriti in una coda unica o in code separate per ogni core.

    Signup and view all the flashcards

    Perché il bilanciamento del carico è importante nei sistemi multi-core?

    È fondamentale distribuire i processi in modo equo tra i diversi core per sfruttare a pieno le capacità di un sistema multi-core. Altrimenti, alcuni core potrebbero rimanere inattivi mentre altri sono sovraccaricati.

    Signup and view all the flashcards

    Quale problema potrebbe sorgere nei sistemi multi-core con una coda di processi condivisa?

    Un problema che può sorgere nei sistemi multi-core è che lo stesso processo può essere selezionato da due diversi scheduler, portando a un'esecuzione errata. Per risolvere questo problema, bisogna assicurarsi che un processo non venga selezionato da due o più scheduler contemporaneamente.

    Signup and view all the flashcards

    Regola empirica dei burst di CPU

    Una regola generale afferma che l'80% dei burst di CPU dovrebbe essere inferiore al valore di q.

    Signup and view all the flashcards

    Classificazione dei processi in base al comportamento

    Il processo di suddivisione dei processi in diverse classi in base alle loro caratteristiche, ad esempio foreground, background e batch.

    Signup and view all the flashcards

    Scheduling a code multiple

    Il sistema operativo può gestire più code per i processi, ciascuna con una politica di scheduling specifica.

    Signup and view all the flashcards

    Politica di scheduling delle code

    La politica di scheduling per gestire le code può essere fissa o basata su un tempo di CPU assegnato a ogni coda.

    Signup and view all the flashcards

    Scheduling a code multilivello

    Le code possono essere gerarchicamente organizzate in base alla priorità, assegnando un tempo di CPU diverso a ciascuna coda.

    Signup and view all the flashcards

    Retroazione nello scheduling a code multilivello

    Un processo può essere spostato da una coda all'altra in base alla durata del suo burst di CPU.

    Signup and view all the flashcards

    Retrocessione di un processo in MFQS

    Nel MFQS, i processi vengono inseriti nella prima coda e, se non completano il loro burst di CPU nel tempo assegnato, vengono spostati in una coda successiva con una priorità inferiore.

    Signup and view all the flashcards

    Preemption in MFQS

    Le code in MFQS sono gestite con preemption, il che significa che un processo di una coda a priorità superiore può interrompere un processo in esecuzione in una coda a priorità inferiore.

    Signup and view all the flashcards

    Scheduling a code multilivello con retroazione (MFQS)

    Il MFQS è una variante dello scheduling a code multilivello che consente ai processi di essere spostati tra le code in base alla loro lunghezza di burst di CPU.

    Signup and view all the flashcards

    Spostamento di un processo tra le code in MFQS

    Il processo di spostare un processo da una coda a un'altra in base al comportamento e alla durata del suo burst di CPU.

    Signup and view all the flashcards

    Study Notes

    Scheduling della CPU

    • Il multitasking e il time sharing cercano di massimizzare l'utilizzo della CPU.
    • Il progettista del sistema operativo (SO) deve stabilire regole per decidere, quando un processo lascia la CPU, quale processo sarà il prossimo ad entrare in esecuzione.
    • L'insieme di queste regole e la loro applicazione pratica prende il nome di Scheduling della CPU.

    Fasi di elaborazione e di I/O

    • In un processo si alternano fasi di utilizzo della CPU (burst di CPU) e fasi di attesa per il completamento di operazioni di input/output (I/O) (burst di I/O).
    • Processi CPU-bound: utilizzano molto la CPU e poco i dispositivi di I/O (esempio: compilatore).
    • Processi I/O-bound: utilizzano poco la CPU e molto i dispositivi di I/O (esempio: editor di testo, browser).

    Lo scheduler della CPU

    • Il SO si occupa di decidere a quale processo assegnare la CPU quando un processo abbandona la CPU.
    • Questa operazione prende il nome di Scheduling della CPU, ed è gestita dal modulo chiamato scheduler del SO.
    • Lo scheduler interviene per scegliere il processo successivo da assegnare alla CPU.
    • Si possono considerare quattro situazioni: scheduling con e senza diritto di prelazione.

    Scheduling con e senza prelazione

      1. Il processo in esecuzione passa volontariamente dallo stato di running allo stato di waiting per eseguire un'operazione di I/O.
      1. Il processo in esecuzione termina.
    • In entrambi i casi, lo scheduler deve scegliere un nuovo processo dalla coda di ready per evitare che la CPU resti inattiva (idle).
    • Un sistema operativo che gestisce questi casi è sufficiente per implementare il multitasking.
    • Il SO deve evitare che un processo si impossessi permanentemente della CPU.

    Scheduling con e senza prelazione: ulteriori dettagli

      1. Il processo in esecuzione viene obbligato a passare dallo stato di running allo stato di ready.
    • Questo passaggio non avviene volontariamente.
    • Nelle sistemi time-sharing, il SO mantiene il controllo permanente del sistema per evitare situazioni negative.
    • Il SO deve gestire l'esecuzione di vari processi.

    Criteri di Scheduling

    • Massimizzare l'utilizzo della CPU nell'unità di tempo (anche se dipende dal carico).
    • Massimizzare il throughput (numero di processi completati in media in una certa unità di tempo).
    • Minimizzare il tempo di risposta (tempo che intercorre dall'avvio di un processo a quando inizia l'esecuzione, particolarmente importante nei sistemi interattivi).
    • Minimizzare il turnaround time (tempo medio di completamento di un processo, dalla prima volta che entra in coda di ready fino alla terminazione).
    • Minimizzare il waiting time (tempo di attesa, somma del tempo passato dal processo in coda di ready fino al momento in cui inizia l'esecuzione).

    Algoritmi di Scheduling

    • First Come, First Served (FCFS): Scheduling per ordine di arrivo.
    • Shortest Job First (SJF): Scheduling per la brevità.
    • Priority Scheduling: Scheduling per priorità.
    • Round Robin (RR): Scheduling circolare.
    • Multilevel Queue: Scheduling a code multiple.
    • Multilevel Feedback Queue: Scheduling a code multiple con retroazione.

    First Come First Served (FCFS)

    • L'implementazione è facile: gestisce la coda di ready (ready queue) in modo FIFO (First-In, First-Out).
    • Il PCB di un processo che entra nella ready queue viene collocato alla fine della coda.
    • Quando la CPU si libera, viene assegnata al processo che si trova in testa alla coda.
    • FCFS non è adatto ai sistemi time-sharing.
    • Il tempo di attesa può essere elevato se ci sono processi di lunga durata.

    Shortest Job First (SJF)

    • Si esamina la durata del prossimo burst di CPU di ogni processo nella coda di ready e si assegna la CPU al processo con il burst più breve.
    • Questo algoritmo può essere preemptive (SRTF - Shortest Remaining Time First).
    • Se un processo con un burst minore arriva in coda, nel caso preemptive, interrompe il processo attuale e passa la CPU al nuovo processo.

    Scheduling a priorità

    • Ad ogni processo è associata una priorità (solitamente un numero intero).
    • La CPU è assegnata al processo con la priorità più alta nella ready queue.
    • SJF è un tipo di scheduling a priorità.
    • FCFS è anche uno scheduling a priorità.

    Scheduling a priorità: considerazioni aggiuntive

    • Il calcolo della priorità può essere interno al sistema (basato sul comportamento del processo) o esterno (basato su criteri esterni al sistema operativo, come l'utente che ha lanciato il processo).
    • Lo scheduling a priorità può essere preemptive o non preemptive.
    • Possono verificarsi problemi di starvation (un processo non riesce mai ad ottenere la CPU a causa di processi con priorità più alta).

    Scheduling Round Robin (RR)

    • Ogni processo ha un quanto di tempo (es. 10-100 millisecondi) di utilizzo della CPU.
    • Se un processo non rilascia volontariamente la CPU entro il quanto di tempo, viene interrotto e reinserito nella ready queue.
    • La ready queue è gestita come una coda circolare.

    Scheduling Round Robin: ulteriori dettagli

    • Se ci sono n processi nella ready queue e il quanto di tempo è q, allora ogni processo riceve 1/n del tempo della CPU e nessun processo aspetta più di (n-1)q unità di tempo.
    • L'algoritmo RR è adatto ai sistemi time-sharing.
    • Le prestazioni di RR dipendono dal valore del quanto di tempo.

    Scheduling a code multiple

    • I processi sono divisi in classi (es. foreground, background, batch).
    • Ogni classe ha la sua politica di scheduling (es. foreground: RR; background: FCFS).
    • L'assegnazione alla classe può essere fissa o basata sulla priorità.
    • Possibili problemi di starvation.

    Scheduling a code multilivello con retroazione (MFQS)

    • È il tipo di scheduling più generale e complesso.
    • I processi possono essere spostati da una coda all'altra in base a parametri (lunghezza del burst di CPU, comportamenti, ecc.).
    • È più flessibile del scheduling a code multiple.

    Scheduling per sistemi multi-core

    • Le architetture moderne hanno più core di elaborazione.
    • I moderni SO usano la multi-elaborazione simmetrica (SMP), che distribuisce le risorse tra i core.
    • Importante il bilanciamento del carico per un utilizzo efficiente di tutti i core.
    • Il SO può gestire una coda per ogni core o una coda comune.

    Esempi di scheduling in sistemi operativi

    • Solaris usa scheduling a priorità con code multiple e retroazione.
    • Windows usa scheduling a priorità con retroazione.
    • Linux usa il Completely Fair Scheduler (CFS).

    Ulteriori approfondimenti

    • Presenta un'analisi degli algoritmi di scheduling.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Scheduling della CPU PDF

    Description

    Questo quiz esplora le funzioni e i metodi di scheduling dei sistemi operativi, concentrandosi su aspetti come scheduling preemptive e non-preemptive, e politiche specifiche come MFQS. Rispondi a domande su come i processi vengono gestiti e distribuiti nei moderni sistemi multi-core.

    More Like This

    Use Quizgecko on...
    Browser
    Browser