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.