Table of Contents

1 2019-08-15

1.1 How we can improve processing when the physics start to impose it's limit?

Pipeline
The answer is multi-processing, the exactly same problem that are now

happening on the cloud was solved by the processors designers in the 80's. The key of multi-processing in making sure that all parts are not iddle or waiting for resource when they could be working.

1.2 How can we improve caching?

Locality principle
It can be spacial or temporal, you are more likely to acess

variables that you just access than to variables that you access a long time ago (or even do not accessed yet), the same can be said for data that are close spacialy to the data that you are using, this principal works because of the way that our code need loops and our main data structure is arrays or is based on arrays;

2 Capitulo 1

2.1 Files

  1. Estrutura de arquivos
  2. Pipes
    • Fornece um canal de comunicacao, um buffer onde um processo pode fornecer dados e outro pode consumir (buffers esses que sao gerenciados pelo sistema operacional) [piping like a true chad]
  3. Ontogeny Recapitulates Phylogeny
    • Estamos sempre repetindo os erros do passado. Mudancas e avancos tecnologicos trazem problemas antigos.
  4. System-calls
    • Chamadas no sistemas que chamam recursos e procedimentos dentro do Kernel, normalmente os sistemas operacionais abstraem esses conceitos;
    • Temos meios abstratos de montar funcoes que realizam funcoes em codigo maquina (envolvendo o SO e suas especificadades).
    • As system calls tambem server para gereciar quais processo estao sendo executados de acordo com a prioridade de cada um, rodando eles 'simultaneamente'.
    • Existem system calls para gerenciar os processos
    • Existem system calls para lidarmos com arquivos
    • System calls abstraem calls que gerenciam diretorios
      • Links inclusos, existe uma regiao do armazenamento com dados, se quisermos estruturar melhor esses dados podemos criar um 'ponteiro' para ele associando a estrutura de dados aos dados originais.
      • Muitas vezes alguns comandos da interface do usuario sao abstraidos e nao fazem exatamente o que achamos, o 'delete' do filesystem normalmente e apenas um link. Deletar um arquivo iria requer muitos recursos 'desnecessarios' (eh assim que a lixeira funciona internamente[?])
      • Um link associa um i-node a um 'path' [Isso nao e muito importante]
    • System calls tambem sao responsaveis para outras funcoes como `kill`, `seconds`, `chdir`, or `chmod`;
    • Commandos como `kill` ou `hangout` sao apenas sinals que sao enviados do processos e a maioria deles sao apenas sinals.
    • Exemplo de system call for process management. #BEGIN lang=c #define TRUE 1

      while (TRUE) { typeprompt(); readcommand(command, parameters); // read input from terminal

      if (fork() != 0) { / fork off child process / Parent code waitpid(-1, &status, 0); // wait for child to exit } else { / Child code execve(command, parameters, 0); / Execute command } } #end

  5. Processo
    • Para um processo executar ele, nos criamos uma copia dele com uma parte do processo filho nele, onde apos o filho ser executado nos voltamos a imagem original com a resposta do filho, assim 'executando' o filho.
    • Possuem tres segmentos: text (codigo do programa), data (dados definidos nos programas), and stack (onde implementamos nossas chamadas de funcoes)

2.2 Modelos de Sistemas Operacionais

2.2.1 Monoli-thic systems

Estrutura basica de um SO

  1. Um programa principal que invoca servicos
  2. Um servico que lida com system calls
  3. Conjunto de funcoes utilitarias que completam os outros servicos.

2.2.2 Layered System

Sistema conceitual desenvolvido para o dysjjjjktra

  • Separa em camadas de abstracao as operacoes e processos, quanto mais alta mais abstratos sao os conceitos usados pelo SO

2.2.3 Microkernels

A maior parte dos processos e procedimentos de hardware do SO sao mais expostas para o nivel de usuario, deixando o desenvolvimento mais livre porem com alguns novos problemas.

2.2.4 Client-Server Model

Separacao de responsabilidade 'asker' and 'answerer' onde um tem resposibilidade de ficar pedindo operacoes e outro de lidar com requisoes (como funciona a web).

2.2.5 Virtual Machines

A ideia de abstrair em codigo recursos de hardware de maneira a simular processos, onde um processo da maquina virtual nao pode afetar a maquina original mantendo uma 'sandbox' para que um ambiente nunca nao afete o outro.

  1. Rediscovered
    1. Type 1 supervisor: A ideia de usarmos varios sistemas operacionais de forma a que cada um seja

    responsavel por um 'recurso', assim podendo rodar varios ambientes diferentes no mesmo hardware mantendo a seguranca que maquinas virtuais fornecem.

    1. Pure Type: Simular um hardware e rodar esse SO em cima desse hardware simulado;
    2. Type 2 supervisor: O mais comum, onde rodamos um type 1 supervisor em cima de um sistema operacional (a forma que usamos as virtual machines hoje).

3 Capitulo 2

3.1 Processo

A diferenca entre um programa e um processo e que o processo e o programa para ser 'rodado', ja com os dados e codigos prontos para serem executados pelo processor, quando as instrucoes de um programa estao prontas para serem executadas nos o chamamos de processo.

3.1.1 Multiprogramacao (como rodamos varios programas ao 'mesmo' tempo?)

O principal objetivo desse tipo de tecnica e diminuir o tempo em que o computador fica ocioso (seja por conta de latencia do hardware ou por espera de algum tipo de IO).

  • Rodizio de recursos
  • Rodar os programas de maneira independente
  • Dedicacao do processador a apenas um programa por intervalo de tempo, assim a ir executando todos eles 'por partes'
  • Possibilidade de multiprocessamento (por multiplos processadores)
  • Gerenciamento das prioridades dos processos (entity-ranked-queue)
  • time sharing: Vamos enganar o usuario

3.1.2 Criacao de processo

E importante que tenhamos o poder de criar processos para poder fornecer os recursos de uma maquina.

  • init(unix): Inicializacao do sistema, pai de todos os projetos.
  • syscall: Chamar e gerenciar outros processos, -sub-processos
  • Entender requests do usuario para criar novos processos;
  • inicio de operacoes a partir de eventos (como uma hora, por exemplo) de operacoes em -batch- (agrupados)

4 Commandos interessantes

  • `ln`: Cria um link para um arquivo (atalho).
  • `cron`: Executa processos em determinados eventos.

5 [offtopic]

5.1 Alexandre Oliva [pica?]

Author: jpg

Created: 2019-08-20 ter 22:46

Validate