são multiencadeamento, multiprocessamento, multitarefa implementada no conjunto de instruções ou SO?

5

Em um computador com um único núcleo de CPU,

  • um programa multithreading deve ser implementado com base em um sistema operacional? Pode ser implementado no conjunto de instruções e executado sem um SO?

  • Podem vários programas ser executados no modo multitarefa sem um sistema operacional? A multitarefa entre programas pode ser implementada sem um SO (por exemplo, implementado apenas no conjunto de instruções)?

Em um computador com vários cpus / núcleos,

  • um programa multithreading deve ser implementado com base em um sistema operacional? Pode ser implementado no conjunto de instruções e executado com encadeamentos paralelos sem um SO?

  • Podem ser executados vários processos em multiprocessamento de forma paralela sem um SO? Esse paralelismo de multiprocessamento pode ser implementado sem um sistema operacional (por exemplo, mas no conjunto de instruções)?

A motivação das minhas perguntas é:

  • Multithreading, multiprocessamento e multitarefa, respectivamente, são intrínsecos à arquitetura do computador ou ao sistema operacional? (nota: um sistema operacional é implementado com base e é executado em uma arquitetura de computador. Conceitos intrínsecos a uma arquitetura de computador podem ser independentes do sistema operacional)

  • Alguns paralelismos, como pipeline, superescalar e computação vetorial, são intrínsecos à arquitetura do computador e independentes do sistema operacional. Os paralelismos de threads e de processos são intrínsecos à arquitetura do computador ou ao sistema operacional? A multitarefa (como uma espécie de computação concorrente) é intrínseca à arquitetura ou ao sistema operacional do computador?

Obrigado.

    
por Tim 28.01.2015 / 02:49
fonte

2 respostas

5

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

Não. Um programa pode implementar seu próprio threading e scheduler. Neste ponto, entretanto, o programa está assumindo o papel de um sistema operacional, na medida em que, na ausência de um kernel do sistema operacional adequado, o programa deve implementar todo o código de comunicações de hardware normalmente encontrado nos drivers.

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

Sim e não. O conjunto de instruções de muitas CPUs modernas inclui a funcionalidade necessária para encadeamentos em nível de hardware, e essa funcionalidade deve ser implementada na forma de um agendador de encadeamentos. Isso pode realmente ser parte do programa, mas, novamente, na ausência de um sistema operacional, o programa deve implementar os recursos que se comunicam com o 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)?

Isso sugere uma confusão sobre o papel do sistema operacional.

Para que programas distintos, desconectados e independentes sejam executados em um ambiente de multithread, é necessário um monitor de processo para gerenciar o agendamento, a execução e a finalização desses threads. Em um nível extremamente alto, o núcleo do sistema operacional é, em sua essência, um monitor de 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?

Deve haver uma parte do código que agende a execução de código em vários núcleos, bem como para gerenciar a inicialização desses núcleos. Esta é normalmente a função do monitor de processo. Um único programa autônomo poderia, em princípio, implementar esses recursos, mas, como acima, deve assumir todos os papéis do kernel para fazer isso.

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)?

Mais uma vez, esta é a função do monitor do programa. Em arquiteturas típicas de CPU de propósito geral modernas, tal monitor deve existir para que os processos sejam agendados em núcleos diferentes do núcleo principal. Em princípio, um núcleo de CPU poderia ser projetado para lidar com essas questões, e eu acredito que algumas GPUs e outros pequenos núcleos (GreenArrays vem à mente) são de fato construídos desta forma, ou, no próprio menos, confie em uma CPU auxiliar de uso geral para executar o monitor de processo.

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

Não.

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?

Não e não.

Mais uma vez, detecto um mal-entendido sobre o papel dos sistemas operacionais.

Existem aspectos de paralelismo que são implementados em qualquer hardware de computador ou sistema operacional, mas eles são intrínsecos a nenhum deles. Historicamente, isso era inteiramente o domínio do monitor de processo, especialmente em sistemas de compartilhamento de tempo antigos. Esse papel foi colocado no domínio das bibliotecas do sistema em sistemas multitarefa cooperativos, onde algumas chamadas do sistema entregam temporariamente a execução ao sistema operacional para manipular o agendamento de tarefas, entre outras coisas. Os sistemas operacionais de multiprocessamento modernos são pouco mais que monitores de processo que gerenciam, entre outras tarefas, processos dedicados ao gerenciamento de hardware.

    
por 28.01.2015 / 03:23
fonte
2

A noção de se o software pode ou não fazer algo sem um SO não é realmente significativa.

Um sistema operacional é software, e realmente a única coisa que distingue um sistema operacional de outro software rodando em um computador é que (pelo menos na maioria dos sistemas multitarefa modernos) o SO reserva certos tipos de operação e impede que outro software execute eles. Sem um sistema operacional, não há nada que impeça qualquer outro software de fazer algo que um sistema operacional normalmente faria, incluindo a execução usando vários threads e / ou processadores. Isso normalmente envolveria a interação com o hardware em um nível que seria impedido se houvesse um sistema operacional presente, mas sem uma restrição desse tipo não se aplicaria.

Agora é discutível que, implementando tais recursos, seu software (ou pelo menos algum módulo dele) se tornaria um sistema operacional, mas isso é um problema de semântica e não muito produtivo.

Tentando chegar a uma camada abaixo de suas perguntas, acho que o que você está realmente tentando perguntar é algo mais próximo de "é possível para uma arquitetura de processador fornecer recursos completos de multitarefa em um nível abaixo do sistema operacional". A resposta para isso é difícil: seria possível para o processador ir além dos projetos atuais nessa direção, mas, no final, a cooperação do sistema operacional seria necessária porque um novo thread requer agendamento, e isso é uma responsabilidade do sistema operacional.

    
por 28.01.2015 / 08:50
fonte