Os sistemas operacionais de computador (SO) fornecem um conjunto de funções necessárias usadas pela maioria dos softwares, fornecendo a conexão necessária para controlar e sincronizar o hardware dele. Nos primeiros computadores sem SO, cada programa precisava do hardware completo específico para rodar corretamente e cumprir tarefas básicas. Ele tinha seus próprios drivers para os dispositivos periféricos como impressoras e os leitores de cartão perfurado. A crescente complexidade de hardwares e aplicações de programas fez eventualmente os SO serem necessários no uso diário.

Plano de fundo Os primeiros computadores eram mainframes e não possuíam qualquer tipo de sistema operacional. Cada usuário tinha um único acesso à máquina por um determinado período e deveriam ir ao computador com o programa e os dados, muitas vezes em cartões perfurados, fitas de papel ou magnéticas. O programa deveria ser carregado dentro da máquina, ela, por sua vez, teria de ser configurada para trabalhar até o programar ser completado ou travar. Os programas geralmente poderiam ser depurados por um painel de controle usando botões rotativos, interruptores e painel com luzes.

Linguagens simbólicas, montadores e compiladores foram desenvolvidos por programadores para traduzir o código de programa simbólico dentro do código da máquina que antes teria sido codificado manualmente. Máquinas antigas vinham com bibliotecas de suporte para códigos em cartões perfurados ou fitas magnéticas, que deveriam ser conectadas ao programa do usuário para auxiliar nas operações como na entrada e saída. Essa foi a origem do SO moderno, no entanto, as máquinas ainda executavam um trabalho por vez. Na Universidade de Cambridge na Inglaterra, a fila de trabalho já foi uma vez um varal onde eram penduradas fitas com prendedores de roupas com cores diferentes para indicar a prioridade do trabalho.

À medida que as máquinas se tornaram mais poderosas, o tempo necessário para executar programas diminuiu drasticamente. No entanto, em contrapartida, o tempo para preparar e configurar o equipamento para o próximo usuário aumentou consideravelmente. O custo de utilização das máquinas evoluiu de uma simples verificação do relógio de parede para um processo de login automatizado no computador.

As filas de execução também sofreram uma transformação significativa ao longo do tempo. O que antes era uma fila física de pessoas aguardando na porta, agora se tornou uma pilha de mídias organizadas em uma mesa de espera, contendo trabalhos ou lotes de cartões perfurados empilhados em leitores. Este processo foi otimizado com máquinas capazes de selecionar e sequenciar automaticamente as fitas magnéticas a serem processadas.

Originalmente, os desenvolvedores de programas tinham acesso direto para executar seus próprios trabalhos nas máquinas. No entanto, com o tempo, foram substituídos por operadores de máquinas dedicados, que assumiram a responsabilidade pelo gerenciamento e manutenção das máquinas. Estes operadores gradualmente perderam interesse em realizar tarefas manualmente.

À medida que os centros de computação comercial enfrentavam desafios relacionados à perda de dados devido a adulterações ou erros operacionais, os fabricantes de equipamentos foram forçados a melhorar rapidamente o desempenho das bibliotecas para evitar o uso indevido dos recursos do sistema. A automação do monitoramento tornou-se essencial não apenas para o uso da CPU, mas também para o controle de páginas impressas, cartões perfurados, leitores de cartão e discos de armazenamento.

Recursos de segurança foram incorporados aos sistemas operacionais para registrar quais programas acessavam quais arquivos, prevenindo, por exemplo, que um programa de engenharia acesse acidentalmente arquivos de folha de pagamento de produção. Essas medidas foram essenciais para garantir a integridade e a segurança dos sistemas de computação em evolução.

Todos esses recursos foram desenvolvidos para a compilação de um sistema operacional totalmente autossuficiente. Eventualmente, o tempo de execução das bibliotecas tornou-se um amontoado de programas iniciados antes do primeiro trabalho do cliente e poderia ler o trabalho do cliente, controlar sua execução, gravar seu uso, reatribuir recursos do hardware depois do término do trabalho e, imediatamente, ir para o próximo processo. Esse programas residentes no plano de fundo, capazes de gerenciar vários processos em instância, foram frequentemente chamados de "monitores", ou "programas de monitoramento" antes do termo "sistemas operacionais" ser estabelecido.

Um programa oculto oferece: gerenciamento básico de hardware, agendamento de software e recursos de monitoramento; que podem ser considerado o pai dos SO dos computadores pessoais atuais. Mas houve uma mudança no significado de SO. Bem como os primeiros automóveis necessitavam de velocímetros, som e ar-condicionado, o que posteriormente veio ser comum; cada vez mais e mais os recursos opcionais de se tornaram padrões em cada pacote de SO. Entretanto, algumas aplicações como sistemas de gerenciamento de banco de dados; as planilhas permaneciam opcionais com preços separados. Isso levou a compreensão de um SO como um sistema de usuário completo com interface gráfica de usuário integrada, utilitários, algumas aplicações como editor de texto, gerenciador de arquivos e ferramentas de configuração.

O verdadeiro descendente dos primeiros sistemas operacionais é conhecido hoje como "Kernel". Nos meios técnicos e de desenvolvimento, a velha percepção limitada de um SO continuava, por conta do desenvolvimento contínuo de sistemas operacionais integrados para todos os tipos de dispositivos com um componente de processamento de dados, desde aparelhos portáteis até robôs industriais com controle de sistema em tempo real, que não rodem aplicações de usuário no front-end. Um dispositivo com um SO integrado hoje em dia não está tão longe do que alguém poderia pensar do seu antecessor da década de 1950.

As categorias mais amplas de sistemas e aplicações são discutidas nos artigos sobre software de computador.

Mainframes O primeiro sistema operacional usado para um trabalho real foi o GM-NAA I/O, produzido em 1956 pela divisão de pesquisa da General Motors para o IBM 704. A maioria dos outros sistemas operacionais mais recentes para os mainframes da IBM também eram produzidos por clientes.

Os primeiros sistemas operacionais eram muito diversificados, com cada fornecedor ou cliente produzindo um, ou mais sistemas operacionais específicos para a estrutura principal do computador deles. Todo sistema operacional, do mesmo fornecedor, podiam possuir, drasticamente, diferentes modelos de comandos, procedimentos de operação e instalações como auxiliares de depuração. Tradicionalmente, toda vez que um fabricante lançava uma nova máquina, deveria vir com um novo sistema operacional. A maioria das aplicações tinha que ser ajustadas manualmente, recompiladas e retestadas.

Sistemas no hardware IBM Isto continuou até a década de 1960, quando a IBM, principal fornecedora de hardware, parou de trabalhar com os sistemas existentes e colocou todos os seus esforços no desenvolvimento nas séries de máquinas System/360. Todas elas usavam a mesma instrução e arquitetura de input/output. A IBM pretendia desenvolver um sistema operacional único para o novo hardware, o OS/360. Os problemas encontrados no desenvolvimento do OS/360 eram legendários, sendo descritos por Fred Brooks em The Mythical Man-Month, um livro que se tornou um clássico da Engenharia de Software. Por conta da diferença de desempenho entre a variedade de hardware e atrasos com o desenvolvimento do software, um grupo inteiro de sistemas operacionais foi introduzido, ao invés de um único OS/360.

A IBM acabou liberando uma série de quebra galhos acompanhados por dois sistemas operacionais melhores desenvolvidos:

OS/360 para sistemas intermediários e avançados. Esse foi disponibilizado em três opções de geração de sistema: PCP para novos usuários — esses não possuíam recursos de multiprogramação. MFT para sistemas intermediários, que foi substituindo pelo MFT-II nos OS/360 versões 15/16. Esse tinha um sucessor, o OS/VS1, que foi descontinuado na década de 1980. MVT para sistemas avançados. Esse era bastante similar ao PCP e MFT (a maioria dos programas poderia ser portada entre os três sem serem recompilados), mas tinha um gerenciamento de memória mais sofisticado e uma instalação de time-sharing, TSO. O MVT possuía vários sucessores, incluindo o recente z/OS. DOS/360 para pequenos modelos. O System/360 teve vários sucessores, incluindo o recente z/VSE. Ele foi significativamente diferente do OS/360.

A IBM manteve uma compatibilidade completa com o passado, então aqueles programas desenvolvidos nos anos sessenta ainda podiam rodar no z/VSE (se desenvolvidos para o DOS/360), ou z/OS (se desenvolvido para o MFT ou MVT) sem que houvesse a necessidade de mudanças.

A IBM também desenvolveu o TSS/360, um sistema time-sharing para o System/360 modelo 67. Em compensação, eles perceberam a importância de desenvolver um sistema timeshare. Então eles convocaram centenas de desenvolvedores para trabalhar no projeto. As primeiras versões lançadas do TSS eram lentas e instáveis. No momento em que TSS teve aceitável desempenho e estabilidade, a IBM queria que os usuários do TTS migrassem para o OS/360 e OS/VS2; enquanto a IBM oferecia um TSS/370 PRPQ, eles o abandonaram depois de 3 lançamentos.

Muitos sistemas operacionais para a IBM com arquitetura S/360 e S/370 eram desenvolvidos por terceiros, incluindo o Michigan Terminal System (MTS) e o MUSIC/SP.

Outra estrutura principal de sistemas operacionais A Control Data Corporation desenvolveu o sistema operacional SCOPE na década de 1960 para processamento em lote e o posterior desenvolvimento do sistema operacional MACE para time-sharing, que mais tarde serviu como base para o Kronos. Em parceria com universidade de Minnesota, o Kronos e posteriormente os sistemas operacionais NOS foram desenvolvidos durante a década de 1970; que suportavam lotes simultâneos e o uso de time-sharing. Como muitos sistemas comerciais time-sharing, sua interface era uma extensão do sistema time sharing DTSS; um dos esforços pioneiros em time-sharing e linguagens de programação.

No final da década de 1970, o Control Data e a universidade de Illinois desenvolveram o sistema PLANTO, que usava painel com displays e redes time-sharing de longa distância. O PLATO foi notavelmente inovador para o seu tempo; o modelo de compartilhamento de memória da linguagem de programação TUTOR do PLATO permitia aplicações como chat em tempo real e jogos gráficos multi-usuários.

Para o UNIVAC 1107 — UNIVAC, a primeira fabricante de computadores comerciais —, produziu o sistema operacional EXEC I. A Computer Sciences Corporation desenvolveu o EXEC II e entregou ele para a UNIVAC. O EXEC II foi portado para o UNIVAC 1108. Mais tarde, a UNIVAC desenvolveu o sistema operacional EXEC 8 para o 1108; ele foi a base para os posteriores membros da família de sistemas operacionais. Como todas as primeiras estruturas principais de sistemas, o EXEC I e o EXEC II tiveram um sistema batch-oriented que gerenciava bateias magnéticas, leitores de cartões e impressoras de linha. O EXEC 8 suportava ambos processamentos, de lote e transações on-line. Na década de 1970, a UNIVAC criou sistema Real-Time Basic (RTB) suporte em larga escala de time-sharing, também patenteou depois o sistema Dartmouth BASIC.