multiprocessados → sistemas com múltiplos núcleos (múltiplas CPUS)
tempo-real → sistemas de baixa latência (sem atrasos), ou que podem
ter atrasos, mas poucos (sistemas não críticos)
servidor → sistema de alto desempenho. Podendo ter dimensões de um
computador de mesa ou de mainframes. Usado para atender a múltiplas
requisições
embarcados → sistemas que fazem uma única coisa. O sistema não
permite a instalação de softwares externos (tudo está em uma ROM)
cartões inteligentes → JAVA possuía uma plataforma para programar
para esses sistemas, contendo dentro de si uma JVM
Computadores de grande porte
para processamento de muitas coisas ao mesmo tempo(time sharing) e
grande volume de dados
OS/390 da IBM era o OS mais usado, hj o LINUX tem crescido pra isso
Mainframes só processavam os dados
Mainframes possuíam terminais burros q recolhiam os valores e
repassavam para o mainframe
OSes
Linux foi baseado no MINIX
Ecos → usado para sistemas embarcados de tempo real para aplicações
criticas
Arquitetura
comunicação pode ser feita entre processos usando socket
shell é a camada mais acima do kernel → local onde o user pode
executar comandos para o kernel
Interface do user → linha de comando, menus, GUI
não necessariamente tudo é passado para o Kernel, certas coisas
(como operações aritméticas pode ser executadas direto)
processo → programa em execução
programa → parte passiva, ainda não executado
O scheduler do sistema é responsável por gerenciar quando um certo
processo deve executar em cada momento
Quando um processo é criado, o sistema fica verificando qual dos
processos da fila podem ser executados para usar de maneira
eficiente a rápida a CPU
Quando algo utiliza I/O, o processo é bloqueado até que seja
possível usar o recurso, caso esteja sendo usado por outro processo
ainda
Processos Single thread possuem um PC(contador de programa),
executando uma única instrução por vez
Processos multithreading possuem um PC para cada thread
OS pode executar vários processos ao mesmo tempo
OS gerencia os processos → criando, deletando, sincronizando(ao se
comunicar, um deve ser o SEND e o outro o RECV), trata deadlocks,
etc
deadlock (famoso jantar dos filósofos) → quando os processos
precisam de recursos, mas cada um pega uma parte e nenhum deles
consegue pegar o suficiente para rodar de maneira correta
ao fazer um FORK de um processo (criar) você aloca mais memória para
o novo processo
ao fazer um DELETE de algum arquivo, você marca a região que o
arquivo estava como usável, podendo ser sobrescrito por outro novo.
Sendo assim, o arquivo não é deletado de fato
bufferização → armazenamento de dados temporários enquanto estão
sendo transferidos
spooling → enfileira tarefas, e faz com que uma tarefa não
sobreponha a outra (possui uma pequena memória que coloca em fila os
jobs)
quando um processo gerar um arquivo, outro até pode ler no mesmo
momento, mas não consegue escrever junto