sono multithreading, multiprocessing, multitasking implementato su set di istruzioni o OS?

5

Su un computer con un singolo core della CPU,

  • deve essere implementato un programma multithreading basato su un sistema operativo? Può essere implementato nel set di istruzioni ed essere eseguito senza un sistema operativo?

  • È possibile eseguire più programmi in modalità multitasking senza un sistema operativo? È possibile implementare il multitasking tra programmi senza un sistema operativo (ad esempio implementato solo nel set di istruzioni)?

Su un computer con più cpu / core,

  • deve essere implementato un programma multithreading basato su un sistema operativo? Può essere implementato nel set di istruzioni ed essere eseguito con thread paralleli senza sistema operativo?

  • È possibile eseguire più processi in modalità multiproccessing in parallelo senza un sistema operativo? Questo parallelismo multiproccabile può essere implementato senza un sistema operativo (ad esempio nel set di istruzioni)?

La motivazione delle mie domande è:

  • Il multithreading, il multiprocessing e il multitasking sono, rispettivamente, intrinsechi all'architettura del computer o al sistema operativo? (nota: un sistema operativo è implementato e basato su un'architettura computerizzata I concetti intrinseci all'architettura di un computer possono essere indipendenti dal sistema operativo)

  • Alcuni parallelismi come pipeline, superscalare e calcolo vettoriale sono intrinseci all'architettura del computer e indipendenti dal sistema operativo. I parallelismi a livello di thread e processo sono intrinseci all'architettura del computer o al sistema operativo? Il multitasking (come una sorta di calcolo concorrente) intrinseco all'architettura del computer o al sistema operativo?

Grazie.

    
posta Tim 28.01.2015 - 02:49
fonte

2 risposte

5

On a computer with a single cpu core, must a multithreading program be implemented based on an OS?

No. Un programma può implementare il proprio threading e scheduler. A questo punto, tuttavia, il programma sta assumendo il ruolo di un sistema operativo, in quanto in assenza di un kernel del sistema operativo appropriato, il programma deve implementare tutto il codice di comunicazioni hardware normalmente presente nei driver.

Can it be implemented in the instruction set and run without an OS?

Sì e no. Il set di istruzioni di molte CPU moderne include le funzionalità richieste per i thread a livello di hardware e questa funzionalità deve essere implementata sotto forma di uno schedulatore di thread. Questo potrebbe effettivamente essere parte del programma, ma ancora una volta, in assenza di un sistema operativo, il programma deve implementare quelle funzionalità che comunicano con l'hardware.

Can multiple programs run in multitasking way without an OS? Can multitasking between programs be implemented without an OS (e.g. implemented only in the instruction set)?

Questo suggerisce una confusione sul ruolo del sistema operativo.

Affinché programmi distinti, disconnessi e indipendenti possano essere eseguiti in un ambiente di multithreading, è necessario un monitor di processo per gestire la pianificazione, l'esecuzione e la conclusione di questi thread. Ad un livello estremamente alto, il kernel del sistema operativo è, in sostanza, un monitor di processo.

On a computer with multiple cpus/cores, must a multithreading program be implemented based on an OS? Can it be implemented in the instruction set and run with parallel threads without an OS?

Ci deve essere una parte di codice che pianifica l'esecuzione del codice su più core, oltre a gestire l'inizializzazione di quei core. Questo è normalmente il ruolo del monitor di processo. Un singolo programma autonomo potrebbe in teoria implementare queste funzionalità, ma, come sopra, deve assumere tutti i ruoli del kernel per farlo.

Can multiple processes run in multiproccessing parallel way without an OS? Can this multiproccessing parallelism be implemented without an OS (e.g. but in the instruction set)?

Ancora una volta, questo è il ruolo del monitor del programma. Sulle tipiche architetture CPU moderne e generiche, tale monitor deve esistere in modo che i processi possano essere pianificati su core diversi dal core primario. In linea di principio, un core della CPU potrebbe essere progettato per affrontare questi argomenti, e credo che alcune GPU e alcuni altri piccoli core (GreenArray vengono in mente) siano di fatto costruiti in questo modo, o, proprio meno, affidati a una CPU ausiliaria per scopi generali per eseguire il monitor di processo.

Are multithreading, multiprocessing,and multitasking, respectively, intrinsic to computer architecture or to operating system?

No.

Are thread and process level parallelisms intrinsic to computer architecture, or to OS? Is multitasking ( as a kind of concurrent computing) intrinsic to computer architecture or OS?

No e no

Ancora una volta, rilevo un fraintendimento del ruolo dei sistemi operativi.

Ci sono aspetti del parallelismo implementati in o l'hardware del computer o il sistema operativo, ma non sono intrinseci a nessuno dei due. Storicamente, questo era interamente il dominio del monitor di processo, specialmente nei primi sistemi di condivisione del tempo. Tale ruolo è stato inserito nel dominio delle librerie di sistema in sistemi cooperativi multitasking, in cui alcune chiamate di sistema passano temporaneamente l'esecuzione al sistema operativo per gestire, tra le altre cose, la pianificazione delle attività. I moderni sistemi operativi multiprocessing sono poco più di monitor di processo che gestiscono, tra le altre attività, i processi dedicati alla gestione dell'hardware.

    
risposta data 28.01.2015 - 03:23
fonte
2

L'idea che il software possa o meno fare qualcosa senza un sistema operativo non è davvero significativa.

Un sistema operativo è un software, e in realtà l'unica cosa che distingue un sistema operativo da altri software in esecuzione su un computer è che (almeno nella maggior parte dei moderni sistemi multitasking) il sistema operativo riserva determinati tipi di operazioni a se stesso e impedisce l'esecuzione di altri software loro. Senza un sistema operativo, non c'è nulla che impedisca a qualsiasi altro software di fare qualsiasi cosa che un sistema operativo farebbe di solito, inclusa l'esecuzione di più thread e / o processori. Ciò implicherebbe in genere l'interazione con l'hardware a un livello che verrebbe impedito se fosse presente un sistema operativo, ma senza una di tali restrizioni non si applicherebbe.

Ora è discutibile che implementando tali funzionalità, il tuo software (o almeno qualche suo modulo) diventerebbe esso stesso un SO, ma questo è un problema di semantica e non molto produttivo.

Cercando di arrivare a un livello al di sotto delle tue domande, penso che quello che stai davvero cercando di chiedere sia qualcosa di più vicino a "è possibile che un'architettura di processore fornisca funzionalità multitasking complete a un livello inferiore al sistema operativo". La risposta a questo è difficile: sarebbe possibile per il processore andare oltre i progetti attuali in questa direzione, ma alla fine, la cooperazione del sistema operativo sarebbe necessaria perché una nuova discussione richiede una pianificazione, e questa è una responsabilità del sistema operativo.

    
risposta data 28.01.2015 - 08:50
fonte