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

image

  • 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

<a href=\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

<a href=\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