Tipos de sistemas
- 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
geeksforgeeks" loading="lazy" src="/posts/ciencias-da-computacao-dia-251-fb2e997h2hjj/image_400.png">
- 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
geeksforgeeks" loading="lazy" src="/posts/ciencias-da-computacao-dia-251-fb2e997h2hjj/image_401.png">
- 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