SISTEMAS OPERACIONAIS PROFESSOR - AIRTON KUADA EMAIL - [email protected] EMENTA DA DISCIPLINA • • • • • • • • HISTÓRICO E EVOLUÇÃO TIPOS DE SISTEMAS OPERACIONAIS SERVIÇOS DO SISTEMA OPERACIONAL ESTRUTURA DE UM SISTEMA OPERACIONAL CONCEITOS DE HARDWARE E SOFTWARE PROCESSOS, COMUNICAÇÃO INTERPROCESSOS ESCALONAMENTO GERENCIAMENTO DE MEMÓRIA, PAGINAÇÃO, MULTIPROGRAMAÇÃO MEMÓRIA VIRTUAL • SISTEMAS DE ARQUIVOS • GERÊNCIA DE DISPOSITIVOS BIBLIOGRAFIA • ARQUITETURA DE SISTEMAS OPERACIONAIS – FRANCIS B. MACHADO – LUIZ PAULO MAIA • SISTEMAS OPERACIONAIS MODERNO – ANDREW S. TANENBAUM INTRODUÇÃO O QUE É UM SISTEMA OPERACIONAL ??? CONJUNTO DE PROGRAMAS EXECUTADOS PELO PROCESSADOR DA MESMA FORMA QUE QUALQUER OUTRO PROGRAMA QUAL A FUNÇÃO DE UM SISTEMA OPERACIONAL ?? CONTROLAR O FUNCIONAMENTO DO COMPUTADOR, COMO UM GERENTE DOS DIVERSOS RECURSOS DISPONÍVEIS NO SISTEMA (IMPRESSORA, DISCO, VÍDEO, TECLADO, FITA) VISÃO DE UM SISTEMA DE COMPUTAÇÃO VISÃO DO COMPUTADOR PELO USUÁRIO MÁQUINAS DE NÍVEIS HISTÓRICO PRIMEIRA FASE (1945-1955) INÍCIO DA SEGUNDA GUERRA SURGEM OS PRIMEIROS COMPUTARES: MILHARES DE VÁLVULAS, NECESSIDADES DE GRANDES ÁREAS, ALTO CONSUMO, LENTO PRIMEIRO COMPUTADOR DE PROPÓSITO GERAL - ENIAC - CALCULO BÁLISTICO - 18 MIL VÁLVULAS - 10 CAPACITORES - 70 MIL RESISTORES - PESAVA 30 TONELADAS - CONSUMO DE 140 KVA EM FUNCIONAMENTO - 5 MIL ADIÇÕES POR SEGUNDO SEGUNDA FASE (1956-1965) - CRIAÇÃO DO TRANSISTOR E MEMÓRIA MAGNÉTICA - SURGIMENTO DOS PRIMEIROS SISTEMAS OPERACIONAIS - PRIMEIRAS LINGUAGENS ASSEMBLY E FORTRAN FACILITARAM A PROGRAMAÇÃO - PROCESSAMENTO BATCH - OS SISTEMAS OPERACIONAIS PASSARAM A TER O SEU PRÓPRIO CONJUNTO DE ROTINAS PARA OPERAÇÃO DE ENTRADA/SAIDA (INPUT/OUTPUT CONTROL - IOCS) - COM O IOCS O PROGRAMADOR NÃO NECESSITA ESCREVER A ROTINAS DE I/O (INDEPENDÊNCIA DO DISPOSITIVO) TERCEIRA FASE (1966-1980) - APARECIMENTO DOS CIRCUITOS INTEGRADOS E MICROPROCESSADORES, REDUÇÃO DE CUSTO E TAMANHO E AUMENTO DE PODER DE PROCESSAMENTO DAS MÁQUINAS -IBM LANÇA A SÉRIE 360 (PEQUENA, PODERASA E COMPATÍVEL) QUE DURANTE A EVOLUÇÃO GARANTIA A COMPATIBILIDADE COM AS GERAÇÕES ANTERIORES (PRESERVA O INVESTIMENTO) - DESENVOLVIMENTO DO OS/360 QUE TENTAVA ATENDER TODOS OS TIPOS DE APLICAÇÕES E PERIFÉRICOS - DEC LANÇA PDP-8 TERCEIRA FASE (1966-1980) - COMPARTILHAMENTO DA MEMÓRIA PRINCIPAL E PROCESSADOR PERMITE A MULTIPROGRAMAÇÃO - SUBSTITUIÇÃO DE FITA MAGNÉTICAS POR DISCO INTRODUZ MELHORIA NO SISTEMA EM BATCH, PODES-SE ALTERAR A ORDEM DA SEQUENCIA DE PROCESSAMENTO - COMUNICAÇÃO COM O USUÁRIO (SISTEMAS ON-LINE) - TIME-SHARING - SURGIMENTO DO SISTEMA OPERACIONAL UNIX (1969) (ASSEMBLER DEPOIS C) EM UM PDP-7 BASEADO NO MULTICS (DEC) - SURGIMENTO DOS PRIMEIROS MICROCOMPUTADORES (CPM, 8 BITS) QUARTA FASE (1981-1990) - PROJETO DE MINIATURIZAÇÃO (LSI, VLSI) DE COMPONENTE - MINI E SUPERMINI COMPUTADORES GANHAM ESPAÇO - SURGIMENTO DO PC (PERSONAL COMPUTER) DE 16 BITS DA IBM E O SISTEMA DOS (DISK OPERATION SYSTEM). - OS SISTEMAS UNIX LIKE DOMINAM OS MINIS E SUPERMINIS - INTRODUÇÃO DO CONCEITO DE MULTIPROCESSAMENTO - REDES DISTRIBUIDAS (WAN) COM PROTOCOLOS SNA, DECNET, TCP/IP COMEÇA A DESPONTAR - PRIMEIROS SISTEMAS OPERACIONAIS DE REDE (NETWARE). QUINTA FASE (1991 - ????) - A REDE MUNDIAL DE COMPUTADORES (INTERNET) - SISTEMAS ESPECIALISTAS (INTELIGÊNCIA ARTIFICIAL) - REDES NEURAIS - PROCESSAEMENTO DE GRANDES VOLUMES DE DADOS - PROCESSAMENTO DISTRIBUÍDO (RPC, CORBA) - ARQUITETURA CLIENT/SERVER - SURGIMENTO DA INTERFACE GRÁFICO (WINDOWS) - MULTIMÍDIA - IMPLEMENTAÇÃO DE CONCEITOS UTILIZADOS EM COMPUTADORES GRANDES COMPUTADORES, AGORA NO DESKTOP CONCEITOS DE HARDWARE E SOFTWARE HARDWARE É COMPOSTO POR UM CONJUNTO DE COMPONENTES INTERLIGADOS: PROCESSADOR, MEMÓRIA PRINCIPAL, REGISTRADORES, TERMINAIS, IMPRESSORAS, DISCOS MAGNÉTICOS, FITAS MAGNÉTICAS, ETC. COMPONENTES SÃO DIVIDIDOS EM UNIDADES FUNCIONAIS: - UCP - MEMÓRIA PRINCIPAL - DISPOSITIVOS DE ENTRADA E SAÍDA UNIDADES FUNCIONAIS DE UM COMPUTADOR UCP - UNIDADES DA UCP: UC - CONTROLA AS ATIVIDADES DE TODOS OS COMPONENTES DO COMPUTADOR, MEDIANTE A EMISSÃO DE PULSOS ELÉTRICOS GERADO POR UM DISPOSITIVO CHAMADO DE CLOCK. ULA - REALIZAÇÃO DE OPERAÇÕES LÓGICAS (TESTES E COMPARAÇÕES) E ARITMÉTICAS (SOMAS E SUBTRAÇÕES) - VELOCIDADE DO PROCESSADOR É MEDIDA EM NÚMERO DE INSTRUÇÕES EXECUTADAS EM UMA UNIDADE DE TEMPO (SEGUNDOS), PODE SER MIPS, MEGFLOPS CLOCK - DISPOSITIVO DE ALTA VELOCIDADE, LOCALIZADO NA UCP - GERA PULSOS ELÉTRICO SINCRONOS EM DETERMINADO INTERVALO DE TEMPO - A QUANTIDADE DE VEZES QUE ESTE PULSO SE REPETE EM UM SEGUNDO DEFINE A FREQUENCIA DO CLOCK (MEDIDO EM HERTZ). A UC UTILIZA O SINAL DE CLOCK PARA A EXECUÇÃO DAS INSTRUÇÕES QUANTO MAIOR A VELOCIDADE, MAIOR A QUANTIDADE DE INSTRUÇÃO EXECUTADO EM UMA UNIDADE DE TEMPO REGISTRADORES - MEMÓRIA DE ALTA VELOCIDADE - LOCALIZADO NO INTERIOR DO PROCESSADOR - ARMAZENAMENTO TEMPORÁRIO DE DADOS - O NÚMERO DE PROCESSADOR VARIA EM FUNÇÃO DA ARQUITETURA DE CADA PROCESSADOR - REGISTRADORES COMUNS A TODAS ARQUITETURAS: - CONTADOR DE INSTRUÇÃO (IP) - STACK POINTER (SP) - REGISTRADOR DE ESTADO (FLAGS) DESCRIÇÃO DOS REGISTRADORES DO PC 8086 - 16 BITS DESCRIÇÃO DOS REGISTRADORES DO PC 80386 - 32 BITS ARQUITETURA DO PC MEMÓRIA PRINCIPAL (RAM) - ORGANIZADO EM CÉLULAS - CADA CÉLULA POSSUI UM NÚMERO DE BITS - BIT É A UNIDADE BÁSICA DE MEMÓRIA E POSSUI VALOR 0 OU 1 - ATUALMENTE TODOS OS COMPUTADORES TRABALHAM COM CÉLULAS DE 8 BITS (PODE EXISTIR COM 32, 64) - CADA CÉLULA POSSUI UMA IDENTIFICAÇÃO MEMÓRIA PRINCIPAL MEMÓRIA ROM - MEMÓRIA NÃO VOLÁTIL - NÃO NECESSITA DE ENERGIA PARA PRESERVAR O CONTEÚDO - PODE SER GRAVADAS UMA ÚNICA VEZ - GRAVAÇÃO ATRAVÉS DE LUZ ULTRA VIOLETA - EXISTEM OUTRAS VARIANTES: EPROM, EAROM, EAPROM, NVRAM MEMÓRIA CACHE - MEMÓRIA VOLÁTIL DE ALTA VELOCIDADE (nano) - TEMPO DE ACESSO MENOR QUE A MEMÓRIA PRINCIPAL - ANTES DE ACESSAR A MEMÓRIA PRINCIPAL É VERIFICADO A MEMÓRIA CACHE - A CADA ACESSO A MEMÓRIA PRINCIPAL, É LIDO UM BLOCO DA MEMÓRIA E ATUALIZADO A MEMÓRIA CACHE - POSSUI ALTO CUSTO MEMÓRIA SECUNDÁRIA - MEIO PERMANENTE DE ARMAZENAMENTO DE PROGRAMAS E DADOS - NÃO PRECISA DE ENERGIA PARA MANTER AS INFORMAÇÕES - ACESSO LENTO (mili), BAIXO CUSTO - GRANDE CAPACIDADE DE ARMAZENAMENTO - EXEMPLO DE MEMÓRIA SECUNDÁRIA - FITA MAGNÉTICA - DISCO MAGNÉTICO - DISCO ÓPTICO RELAÇÃO ENTRE OS TIPOS DE MEMÓRIAS DISPOSITIVO DE ENTRADA/SAÍDA - UTILIZADO PARA COMUNICAÇÃO ENTRE O COMPUTADOR E O MUNDO EXTERNO (TECLADO, IMPRESSORA, MONITOR, DISCOS, SCANNER, CANETA ÓTICA, MOUSE, MULTIMIDIA, FITAS) - ATRAVÉS DESTES DISPOSITIVOS A UCP E MEMÓRIA PODEM COMUNICAR-SE COM OS USUÁRIOS (ANALISTAS, PROGRAMADORES, USUÁRIOS FINAIS) - PODEM SER DIVIDIDOS DA SEGUINTE FORMA: - INTERFACE HOMEM/MÁQUINA - MEMÓRIA SECUNDÁRIA. BARRAMENTO - AS UNIDADES FUNCIONAIS DO COMPUTADOR SÃO INTERLIGADAS ATRAVÉS DE LINHAS DE COMUNICAÇÃO DENOMINADAS BARRAMENTOS. - NO BARRAMENTO TRAFEGAM INFORMAÇÕES COMO ENDEREÇOS, DADOS OU SINAIS DE CONTROLE - A COMUNICAÇÃO NO BARRAMENTO PODE SER UNIDIRECIONAL OU BIDIRECIONAL - ENTRE A UCP E MEMÓRIA EXISTE TRÊS BARRAMENTO: BARRAMENTO DE DADOS, BARRAMENTO DE ENDEREÇOS, BARRAMENTO DE CONTROLE BARRAMENTO PIPELINING - SEMELHANTE A UMA LINHA DE MONTAGEM, ONDE UMA TAREFA É DIVIDIDA EM SEQUENCIA DE SUBTAREFAS, E EXECUTADAS EM DIFERENTES ESTÁGIOS - EXEMPLO DE PIPELINE: EXECUÇÃO DE UMA INSTRUÇÃO - PODE SER UTILIZADA COMO TÉCNICA DE PARALELISMO EM SISTEMAS COM UM OU MAIS PROCESSADORES PARA AUMENTAR O DESEMPENHO DOS SISTEMA DE COMPUTADORES. ARQUITETURA CISCxRISC RISC (REDUCED INSTRUCTION SET COMPUTER) - POSSUI POUCAS INSTRUÇÕES DE MÁQUINA - INSTRUÇÃO EXECUTADO DIRETAMENTE PELO HARDWARE - GRANDE NÚMERO DE PROCESSADORES - EXEMPLO: SUN, SPARC, RS-6000, PA-RISC, ALPHA, MIPS CISC (COMPLEX INSTRUCTION SET COMPUTERS) - INSTRUÇÕES COMPLEXAS QUE SÃO INTERPRETADAS POR MICROPROGRAMAS NÚMERO DE REGISTRADORES PEQUENO - QQUER INSTRUÇÃO PODE ACESSAR A MEMÓRIA RAM - EXEMPLO: VAX, 80X86, PENTIUM, 68xxxx SOFTWARE - O HARDWARE POR SI SÓ NÃO POSSUI UTILIDADE. - DEVE EXISTIR UM CONJUNTO DE PROGRAMAS, UTILIZADO COMO INTERFACE ENTRE AS NECESSIDADES DO USUÁRIO E AS CAPACIDADES DO HARDWARE. - TIPOS DE SOFTWARE - TRADUTOR - INTERPRETADOR - LINKER - LOADER - DEPURADOR - LINGUAGEM DE CONTROLE (SHELL) - LINGUAGEM DE MÁQUINA TRADUTOR -INICIALMENTE, PARA PROGRAMAR ERA NECESSÁRIO CONHECER O HARDWARE E PROGRAMAR EM PAINÉIS E FIOS - A PROGRAMAÇÃO ERA FEITO EM LINGUAGEM DE MÁQUINA DIRETAMENTE E CARREGADO EM MEMÓRIA - COM O SURGIMENTO DAS LINGUAGENS DE MONTAGEM E ALTO NÍVEL, O PROGRAMADOR NÂO NECESSITA CONHECER ASPECTOS DE HARDWARE - OS PROGRAMAS EM LINGUAGEM DE MONTAGEM E ALTO NÍVEL NÃO PODEM SER EXECUTADOS DIRETAMENTE PELA UCP , NECESSITAM PASSAR POR UM PROCESSO DE TRADUÇÃO ONDE TODA REPRESENTAÇÃO SIMBÓLICA É TRADUZIDO PARA UM CÓDIGO BINÁRIO TRADUTOR - O MÓDULO GERADO PELO TRADUTOR É CHAMADO DE CÓDIGO OBJETO - DEPENDENDO DA LINGUAGEM DE PROGRAMAÇÃO UTILIZADO, O TRADUTOR PODE SER CHAMADO DE - MONTADOR - COMPILADOR. TRADUTOR dosseg .model small .stack 100h .data hello_message db 'Hello, World!',0dh,0ah,'$' .code main proc mov ax,@data mov ds,ax mov ah,9 mov dx,offset hello_message int 21h mov ax,4C00h int 21h main endp end main PROGRAMA HELLO.ASM #include <stdio.h> main ( ) { char hello_message[] = "'Hello, World!"; printf ("%s\n", hello_message ) } PROGRAMA HELLO.C 19BB:0010 19BB:0013 19BB:0015 19BB:0017 19BB:001A 19BB:001C 19BB:001F B8BD19 8ED8 B409 BA0200 D21 B8004C CD21 MOV MOV MOV MOV INT MOV INT AX,19BD DS,AX AH,09 DX,0002 21 AX,4C00 21 CÓDIGO BINÁRIO GERADO PELO MONTADOR TRADUTOR - LINGUAGEM DE MONTAGEM É UM CONJUNTO DE SÍMBOLOS MNEMÔNICOS ASSOCIADOS ÀS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA DO PROCESSADOR. - A LINGUAGEM DE MONTAGEM DEPENDE DA ARQUITETURA DE CADA PROCESSADOR, ISTO É VARIA DE COMPUTADOR PARA COMPUTADO (MASM, TASM NA PLATAFORMA 80X86) - A LINGUAGEM DE ALTO NÍVEL NÃO POSSUI LIGAÇÃO DIRETA COM A MÁQUINA, FICANDO ESSA PREOCUPAÇÃO COM O COMPILADOR. TODOS OS DETALHES DE ARQUITETURA DO PROCESSADOR FICA ESCONDIDO DO PROGRAMADOR QUE FICARÁ PREOCUPADO APENAS COM A APLICAÇÃO (COBOL, C, PASCAL). LINKER - O CÓDIGO BINÁRIO GERADO PELO TRADUTOR AINDA NÃO PODE SER EXECUTADO, APESAR DE ESTAR EM CÓDIGO DE MÁQUINA, PODE EXISTIR CHAMADAS DE SUB-ROTINAS EXTERNAS - O LINKER É O RESPONSÁVEL POR GERAR, A PARTIR DE UM OU MAIS MÓDULOS-OBJETOS, UM ÚNICO PROGRAMA EXECUTÁVEL FUNÇÕES BÁSICAS DO LINKER: - RESOLVER TODAS AS REFERÊNCIAS SIMBÓLICAS EXISTENTES ENTRE OS MÓDULOS (PESQUISA EM BIBLIOTECAS) - RESERVAR MEMÓRIA PARA A EXECUÇÃO DO PROGRAMA LINKER INTERPRETADOR - O INTERPRETADOR É UM TRADUTOR QUE NÃO GERA CÓDIGO-OBJETO. A PARTIR DE UM PROGRAMA-FONTE ESCRITO EM LINGUAGEM DE ALTO NÍVEL, O INTERPRETADOR TRADUZ CADA INSTRUÇÃO NO MOMENTO DA EXECUÇÃO E EXECUTA A INSTRUÇÃO - DESVANTAGEM - TEMPO GASTO NA TRADUÇÃO DAS INSTRUÇÕES DO PROGRAMA A CADA VEZ QUE FOR EXECUTADO VANTAGEM - RAPIDEZ NOS TESTES DE APLICAÇÕES QUE ESTÃO EM DESENVOLVIMENTO - EXEMPLOS: DBASE, BASI, APL, LOADER - É O UTILITÁRIO RESPONSÁVEL EM COLOCAR FISICAMENTE NA MEMÓRIA UM PROGRAMA PARA EXECUÇÃO. - O PROCEDIMENTO DE CARGA VARIA COM O CÓDIGO GERADO PELO LINKER, DESTA FORMA O LOADER É CLASSIFICADO COMO SENDO DO TIPO: - ABSOLUTO: O PROGRAMA É CARREGADO EM UMA POSIÇÃO EXATA DA MEMÓRIA - RELOCÁVEL - O PROGRAMA É CARREGADO EM QUALQUER POSIÇÃO DE MEMÓRIA DEPURADOR - DURANTE O DESENVOLVIMENTO DE PROGRAMAS ESTAMOS SUJEITO A ERROS - O DEPURADOR É UM UTILITÁRIO QUE PERMITE A EXECUÇÃO CONTROLADA DE UM PROGRAMA PARA REALIZAR A CORREÇÃO DE EVENTUAIS ERROS DE PROGRAMAÇÃO - FACILIDADES DE UM DEPURADOR - EXECUÇÃO PASSO - A - PASSO - ALTERAÇÃO/VISUALIZAÇÃO DE VARIÁVEIS - BREAKPOINTS - WATCHPOINT (AVISO DE ALTERAÇÃO DE VARIAVEL) LINGUAGEM DE CONTROLE - É A FORMA COMO O USUÁRIO COMUNICA-SE COM O SO - INTERPRETA TODOS OS COMANDOS EMITIDOS PELO USUÁRIO, DEVOLVE MENSAGENS DE ERRO OU FAZ CHAMADAS AS ROTINAS DO SISTEMA - FORNECE A POSSIBILIDADE DE AUTOMAÇÃO DE COMANDOS (ARQUIVOS DE COMANDOS) - INTERAÇÃO MAIS AMIGÁVEL ATRAVÉS DE JANELAS - RECONHECIMENTO DE COMANDOS DE VOZ TIPOS DE SISTEMAS OPERACIONAIS OS SISTEMAS OPERACIONAIS PODEM SER CLASSIFICADOS LEVANDO OS SEGUINTES ASPECTOS: - EVOLUÇÃO DE HARDWARE - APLICAÇÕES SUPORTADAS TIPOS DE SISTEMAS OPERACIONAIS SISTEMAS MONOPROGRAMÁVEIS/MONOTAREFAS - AS PRIMEIRAS MÁQUINAS ERAM DEDICADAS A UM ÚNICO TRABALHO (JOB), QUALQUER OUTRO PROGRAMA DEVERIA AGUARDAR O TÉRMINO. - CARACTERÍSTICAS - CPU OCIOSA A MAIOR PARTE DO TEMPO - RECURSOS ALOCADOS A UM ÚNICO USUÁRIO - MEMÓRIA SUBUTILIZADA - IMPLEMENTAÇÃO SIMPLES - NÃO EXISTE PREOCUPAÇÃO COM PROTEÇÃO DE RECURSOS SISTEMAS MONOPROGRAMÁVEIS SISTEMAS MULTIPROGRAMÁVEIS/MULTITAREFA - VIERAM SUBSTITUIR OS SISTEMAS MONOPROGRAMÁVEIS - SÃO MAIS COMPLEXOS E EFICIÊNTES, ISTO É PERMITEM QUE OS RECURSOS COMPUTACIONAIS (MEMÓRIA, PROCESSADOR, PERIFÉRICOS) SEJAM COMPARTILHADOS DE FORMA ORDENADA POR DIVERSOS PROGRAMAS - CARACTERÍSTICAS - IMPLEMENTAÇÃO COMPLEXA - AUMENTO DA PRODUTIVIDADE - REDUÇÃO DE CUSTOS SISTEMAS MULTIPROGRAMÁVEIS/MULTITAREFA A PARTIR DO NÚMERO DE USUÁRIOS QUE INTERAGEM COM O SISTEMA, OS SISTEMAS MULTIPROGRAMÁVEIS PODEMOS CLASSIFICAR COMO MONOUSUÁRIO x MULTIUSUÁRIO. SISTEMAS MULTIPROMÁVEIS/MULTITAREFA MEMÓRIA EM AMBIENTES MONO/MULTIPROGAMADO SISTEMAS MULTITAREFA OS SISTEMAS MULTIPROGRAMÁVEIS PODEM SER CLASSIFICADOS PELA FORMA COMO AS APLICAÇÕES SÃO GERENCIADAS SISTEMAS BATCH - PRIMEIRO SISTEMA UTILIZADO EM AMBIENTE MULTIPROGRAMADO - OS TRABALHOS ARMAZENADOS EM FITA, ONDE ESPERAM PARA SER EXECUTADO SEQUENCIALMENTE. - OS PROGRAMAS CHAMADOS DE JOB NÃO EXIGEM INTERASSÃO COM O USUÁRIO, LENDO E GRAVANDO DADOS EM FITAS OU DISCO - UTILIZAM MELHOR O PROCESSADOR - LONGO TEMPO DE RESPOSTA - PROCESSAMENTO SEQUENCIAL - EXEMPLO: COMPILAÇÃO, LINKEDIÇÃO, SORT, BACKUP EXEMPLO DE UM PROCESSO BATCH FL001.EXE (ATUALIZA DADOS DE FUNCIONÁRIO) FL002.EXE (ATUALIZA TAXAS DA FOLHA) FL003.EXE (CALCULA VALORES DE PAGAMENTO) FL004.EXE (EMITE RELATORIO DE PAGAMENTO) FL005.EXE (EMITE CONTRACHEQUE) SISTEMA DE TEMPO COMPARTILHADO - TIME-SHARING OU ON-LINE - PERMITE A INTERAÇÃO DOS USUÁRIOS COM O SISTEMA, ATRAVÉS DE TERMINAIS QUE INCLUEM VÍDEO, TECLADO E IMPRESSORA - ESTE SISTEMAS UTILIZAM UMA LINGUAGEM DE CONTROLE QUE PERMITEM AO USUÁRIO COMUNICAR-SE DIRETAMENTE COM O SISTEMA OPERACIONAL, EXEMPLO: SOLICITAR A LISTAGEM DO DIRETÓRIO CORRENTE - PARA CADA USUÁRIO O SISTEMA ALOCA UMA FATIA DE TEMPO DO PROCESSADOR (TIME-SLICE), DANDO A IMPRESSÃO QUE O SISTEMA ESTÁ DEDICADO - IMPLEMENTAÇÃO COMPLEXA, AUMENTA PRODUTIVIDADE DO USUÁRIO E REDUZ CUSTO DE UTILIZAÇÃO DO SISTEMA . SISTEMAS ON-LINE SISTEMA DE TEMPO REAL - REAL TIME - SEMELHANTE AOS SISTEMAS DE TEMPO COMPARTILHADO, A DIFERENÇA É O TEMPO DE RESPOSTA EXIGIDO NO PROCESSAMENTO DAS APLICAÇÕES - NOS SISTEMA DE TEMPO COMPARTILHADO O TEMPO DE RESPOSTA PODE VARIAR SEM COMPROMETER AS APLICAÇÕES EM EXECUÇÃO, NOS SISTEMAS DE TEMPO REAL AS RESPOSTAS DEVEM ESTAR DENTRO DE LIMITES RÍGIDOS. - NÃO EXISTE FATIA DE TEMPO, O TRABALHO É BASEADO EM PRIORIDADE EM FUNÇÃO DA IMPORTÂNCIA NO SISTEMA, A PRIORIDADE É CONTROLADO PELA APLICAÇÃO E NÃO PELO SISTEMA. EXEMPLO: USINA, REFINARIA, TRÁFEGO AÉREO SISTEMAS MULTIPROCESSADOS - SISTEMAS QUE POSSUEM MULTIPLOS PROCESSADORES INTERLIGADOS E TRABALHANDO EM CONJUNTO. - OS SISTEMAS MULTIPROCESSADOS PODEM SER CLASSIFICADOS DA SEGUINTE FORMA: - COMUNICAÇÃO ENTRE AS CPUs - GRAU DE COMPARTILHAMENTO DE MEMÓRIA - GRAU DE COMPARTILHAMENTO DE DISPOSITIVOS DE E/S SISTEMAS MULTIPROCESSADOS SISTEMAS FORTEMENTE ACOPLADOS - EXISTEM DOIS OU MAIS PROCESSADORES COMPARTILHANDO UMA ÚNICA MEMÓRIA E CONTROLADOS POR APENAS UM ÚNICO SISTEMA OPERACIONAL - SÃO UTILIZADOS PARA PROCESSAMENTO QUE FAZEM USO INTENSIVO DA CPU (BANCO DE DADOS, CALCULO VETORIAL, CALCULO MATRICIAL - DIVERSOS PROGRAMAS SÃO EXECUTADOS SIMULTANEAMENTE, OU UM PROGRAMA É DIVIDIDO EM SUBPROGRAMAS - FACILIDADE EM AUMENTAR A CAPACIDADE COMPUTACIONAL DO SISTEMA COM BAIXO CUSTO, MAS SURGEM NOVOS PROBLEMAS DE CONCORRÊNCIA DE ACESSO SISTEMAS FORTEMENTE ACOPLADOS SISTEMAS ASSIMÉTRICOS - CONCEITO MASTER/SLAVE - SOMENTE O MASTER EXECUTA SERVIÇOS DO SISTEMA OPERACIONAL, O(S) OUTRO(S) EXECUTAM TAREFAS DO USUÁRIO - DEPENDENDO DO VOLUME DE TRABALHO (PEDIDO DE E/S) PARA O SO, O MASTER FICARÁ SOBRECARREGADO - ESTE TIPO DE IMPLEMENTAÇÃO NÃO UTILIZA DE FORMA EFICIENTE O HARDWARE DEVIDO A ASSIMETRIA DOS PROCESSADORES, QUE NÃO REALIZAM AS MESMAS FUNÇÕES SISTEMAS ASSIMÉTRICOS SISTEMA SIMÉTRICO (SMP) AO CONTRÁRIO DA ORGANIZAÇÃO MASTER/SLAVE, IMPLEMENTA A SIMETRIA ENTRE OS PROCESSADORES, OU SEJA, TODOS OS PROCESSADORES REALIZAM AS MESMAS FUNÇÕES, APENAS POUCAS FUNÇÕES FICAM A CARGO DE UM ÚNICO PROCESSADOR ( BOOT DE SISTEMA) - COM VÁRIOS PROCESSADORES COMPARTILHANDO A MESMA MEMÓRIA E PERIFÉRICOS, SURGEM SITUAÇÕES DE CONFLITOQUE FICA A CARGO DO HARDWARE E DO SO. - UM PROGRAMA PODE SER EXECUTADO POR QUALQUER PROCESSADOR, INCLUSIVE POR VÁRIOS PROCESSADORES AO MESMO TEMPO (PARALELISMO) - IMPLEMENTAÇÃO COMPLEXA - MELHOR BALANCEAMENTO DO PROCESSAMENTO E DAS OPERAÇÕES DE E/S SISTEMAS SIMÉTRICOS ORGANIZAÇÃO FUNCIONAL O ESQUEMA DE COMUNICAÇÃO INTERNA ENTRE AS UNIDADES FUNCIONAIS É FUNDAMENTAL EM SISTEMAS MULTIPROCESSADOS, POIS DETERMINA QUANTAS CPUs O SISTEMA IRÁ TER E COMO SERÁ O ACESSO DIRETO A MEMÓRIA - PARA PERMITIR QUE AS DIVERSAS UNIDADES FUNCIONAIS COMPARTILHEM A MEMÓRIA É NECESSÁRIO DIVIDI-LA EM MÓDULOS. - A ORGANIZAÇÃO FUNCIONAL PODE SER DIVIDIDA EM TRÊS TIPOS: BARRAMENTO COMUM BARRAMENTO CRUZADO MEMÓRIA MULTIPORT BARRAMENTO - FORMA MAIS SIMPLES DE COMUNICAÇÃO, FLEXIVEL, ECONÔMICA, LIMITADO A POUCOS PROCESSADORES - SOMENTE UMA UNIDADE FUNCIONAL PODE UTILIZAR O BARRAMENTO EM UM DETERMINADO INSTANTE - PASSÍVEL DE GARGALO QUANDO MUITAS UNIDADES TÊM QUE UTILIZAR O BARRAMENTO - BARRAMENTO CRUZADO - EVITA GARGALO DO BARRAMENTO COMUM - AS UNIDADES FUNCIONAIS SÃO CONECTADAS ATRAVÉS DE UM BARRAMENTO CRUZADO (CROSSBAR-SWITCH MATRIX) - NESTA ARQUITETURA É POSSÍVEL A COMUNICAÇÃO SIMULTÂNEA ENTRE DIVERSAS UNIDADES SIMULTANEAMENTE, MAS NÃO PERMITE ACESSO SIMULTANEO A UM MESMO COMPONENTE - MUITOS PROCESSADORES PODEM SER UTILIZADOS MEMÓRIA MULTIPORT - NO ESQUEMA DE BARRAMENTO CRUZADO É POSSÍVEL DOIS PROCESSADORES ACESSAREM A UM MÓDULO DE MEMÓRIA NO MESMO INSTANTE - MEMÓRIA MULTIPORT PERMITE ACESSOS SIMULTÂNEOS A UM MESMO MÓDULO DE MEMÓRIA - CADA MÓDULO TÊM DIVERSAS PORTAS DE ACESSO SISTEMA FRACAMENTE ACOPLADOS - SISTEMAS FRACAMENTE ACOPLADOS CARACTERIZAM-SE POR POSSUIR DOIS OU MAIS SISTEMAS DE COMPUTAÇÃO INTERLIGADOS ATRAVÉS DE UM SISTEMA DE COMUNICAÇÃO, SENDO QUE CADA SISTEMA POSSUI O SEU PRÓPRIO SISTEMA OPERACIONAL GERENCIANDO RECURSOS, COMO PROCESSADOR, MEMÓRIA E DISPOSITIVOS DE E/S. - DÉCADA DE 80, COM SISTEMA CENTRALIZADO E TERMINAIS BURROS REMOTO INTERLIGADOS ATRAVÉS DO SISTEMA DE COMUNICAÇÃO - COM A EVOLUÇÃO DOS COMPUTADORES, E O AVANÇO DAS TELECOMUNICAÇÕES, SURGE UM NOVO MODELO DE COMPUTAÇÃO CHAMADO DE REDES DE COMPUTADORES (NÓS INTELIGENTES INTERLIGADOS POR UM SISTEMA DE COMUNICAÇÃO) SISTEMAS FRACAMENTE ACOPLADOS SISTEMAS OPERACIONAIS DE REDE (SOR) CADA NÓ POSSUI O SEU PRÓPRIO SISTEMA OPERACIONAL, ALÉM DE HARDWARE E SOFTWARE QUE POSSIBILITAM AO SISTEMA TER ACESSO A OUTROS COMPONENTES DE REDE E COMPARTILHANDO RECURSOS - FUNÇOES DE UM SOR: CÓPIA REMOTA EMULAÇÃO DE TERMINAL IMPRESSÃO REMOTA CORREIO ELETRÔNICO GERÊNCIA REMOTA SISTEMA OPERACIONAL DE REDE: NETWARE WINDOWS NT UNIX SISTEMAS OPERACIONAIS DISTRIBUÍDOS - CADA COMPONENTE DE REDE TAMBÉM POSSUI SEU PRÓPRIO SISTEMA OPERACIONAL, MEMÓRIA, PROCESSADOR E DISPOSITIVOS. - O QUE DEFINE UM SISTEMA DISTRIBUÍDO É A EXISTÊNCIA DE UM RELACIONAMENTO MAIS FORTE ENTRE OS SEUS COMPONENTES, ONDE OS SISTEMAS OPERACIONAIS SÃO GERALMENTE OS MESMOS. - PARA O USUÁRIO E SUAS APLICAÇÕES É GERALMENTE COMO SE NÃO EXISTISSE UMA REDE DE COMPUTADORES, MAS SIM UM ÚNICO SISTEMA CENTRALIZADO - A GRANDE VANTAGEM DESTE SISTEMA É O BALANCEAMENTO DE CARGA SISTEMAS OPERACIONAIS DISTRIBUÍDOS PROCESSOS PROCESSOS MODO GERAL. UM PROGRAMA EM EXECUÇÃO. MODO CONCEITUAL O CONCEITO DE PROCESSO PODE SER DEFINIDO COMO SENDO O AMBIENTE ONDE SE EXECUTA UM PROGRAMA PCB PROCESS CONTROL BLOCK O SISTEMA OPERACIONAL MATERIALIZA O PROCESSO ATRAVÉS DE UMA ESTRUTURA DE DADOS (PCB). ATRAVÉS DESTA ESTRUTURA O SISTEMA OPERACIONAL MANTÉM TODAS AS INFORMAÇÕES SOBRE O PROCESSO PROCESS CONTROL BLOCK MULTITAREFA PARTES DE UM PROCESSO UM PROCESSO PODE SER DIVIDIDO EM TRÊS PARTES: - HARDWARE CONSTITUI-SE BASICAMENTE DOS REGISTRADORES DE PROPÓSITO GERAL (AX, BX, CX, DX), APONTADOR DE INSTRUÇÃO (IP), STACK POINTER (SP) E BITS DE ESTADO - SOFTWARE ESPECIFICA CARACTERÍSTICAS DO PROCESSO QUE VÃO INFLUIR NA EXECUÇÃO DE UM PROGRAMA COMO: PRIORIDADE, NÚMERO DE ARQUIVOS ABERTOS, ETC. - ESPAÇO DE ENDEREÇAMENTO É A ÁREA DE MEMÓRIA DO PROCESSO ONDE O PROGRAMA SERÁ EXECUTADO, ALÉM DO ESPAÇO PARA OS DADOS UTILIZADOS POR ELE. CONTEXTO DE HARDWARE DO PROCESSO - MUDANÇA DE CONTEXTO ESTADOS DE UM PROCESSO UM PROCESSO EM UM SISTEMA TAREFA NÃO É EXECUTADO O TEMPO TODO PELO PROCESSADOR, ELE PASSA POR UMA SÉRIE DE ESTADOS QUE SÃO BASICAMENTE OS SEGUINTES: NOVO - QUANDO O PROCESSO ESTÁ SENDO CRIADO PRONTO - ESTÁ AGUARDANDO UMA OPORTUNIDADE PARA EXECUTAR, OS SO IRÁ DETERMINAR QUAL PROCESSO IRÁ SER EXECUTADO DENTRE OS QUE ESTÃO NO ESTADO DE PRONTO EXECUTANDO - ESTÁ SENDO PROCESSADO PELA CPU INTERROMPIDO - ESTÁ AGUARDANDO ALGUM EVENDO EXTERNO OU POR ALGUM RECURSO PARA PODER PROSSEGUIR SEU PROCESSAMENTO FINALIZADO - O PROCESSO ESTÁ FINALIZADO E SEUS RECURSOS JÁ FORAM LIBERADOS MUDANÇA DE ESTADOS DE UM PROCESSO FILAS DE ESTADO PROCESSO IO/CPU BOUND PROCESSO IO BOUND PROCESSO CPU BOUND COMUNICAÇÃO ENTRE PROCESSOS COMUNICAÇÃO ENTRE PROCESSOS EM UM AMBIENTE MULTITAREFA, OS PROCESSOS PODEM SER CLASSIFICADOS CONFORME A SUA INDEPENDÊNCIA/DEPENDÊNCIA DE OUTROS PROCESSOS: INDEPENDENTES - O PROCESSO INICIA A SUA EXECUÇÃO E PROSSEGUE ATÉ A SUA FINALIZAÇÃO, DESTA FORMA NÃO AFETA E NEM É AFETADO POR OUTROS PROCESSOS EM EXECUÇÃO COOPERATIVOS - O PROCESSO COOPERA COM OUTROS PROCESSOS, DESTA FORMA, SUA EXECUÇÃO AFETA OU É AFETADO POR OUTROS PROCESSOS. EM GERAL OS PROCESSOS COOPERANTES COMPARTILHAM ALGUM RECURSO OU TROCAM MENSAGENS ENTRE SI. MOTIVOS PARA COOPERAÇÃO ENTRE PROCESSOS COMPARTILHAMENTO DE RECURSOS - VÁRIAS PESSOAS UTILIZANDO O MESMO ARQUIVO - COMPARTILHAMENTO DE PERIFÉRICOS AUMENTO DA VELOCIDADE DE PROCESSAMENTO - DIVISÃO DE UM PROCESSO EM SUBTAREFAS INDEPENDENTES MODULARIDADE - CONSTRUÇÃO DE SISTEMAS MODULARES CONVENIÊNCIA MECANISMOS DE COMUNICAÇÃO UMA EXECUÇÃO CONCORRENTE QUE REQUER COOPERAÇÃO ENTRE PROCESSOS REQUER TAMBÉM MECANISMOS QUE PERMITAM AOS PROCESSOS COMUNICAREM-SE UNS COM OS OUTROS E SINCRONIZAREM SUAS AÇÕES. OS MECANISMOS COMUMENTE UTILIZADO ENTRE OS PROCESSOS COOPERANTES SÃO: MEMÓRIA COMPARTILHADA TROCA DE MENSAGENS; COMUNICAÇÃO POR MEMÓRIA COMPARTILHADA OS PROCESSOS UTILIZAM UMA REGIÃO DE MEMÓRIA FÍSICA COMUM, ONDE TODOS REALIZAM AS OPERAÇÕES DE LEITURA E GRAVAÇÃO COMUNICAÇÃO POR TROCA DE MENSAGENS TROCA DE MENSAGENS É UM MECANISMO DE COMUNICAÇÃO ENTRE PROCESSOS, IMPLEMENTADO PELO SISTEMA OPERACIONAL ATRAVÉS DE DUAS ROTINAS DE SISTEMA: SEND - ENVIA UMA MENSAGEM RECEIVE - RECEBE UMA MENSAGEM SEND (RECEPTOR, MENSAGEM) RECEIVE (TRANSMISSOR, MENSAGEM) FORMAS DE ENDEREÇAMENTO DIRETO - O PROCESSO QUE DESEJA ENVIAR OU RECEBER A MENSAGEM ENDEREÇA EXPLICITAMENTE O NOME DO PROCESSO RECEPTOR OU TRANSMISSOR, NESTE CASO SÓ EXISTE A COMUNICAÇÃO ENTRE DOIS PROCESSOS. INDIRETO - UTILIZA UMA ÁREA COMPARTILHADA, ONDE AS MENSAGENS PODEM SER COLOCADAS PELO PROCESSO TRANSMISSOR E RETIRADAS PELO RECEPTOR, ESTA ÁREA É CONHECIDO COMO MAILBOX. ESTE MAILBOX APRESENTA CARACTERÍSTICAS NO MOMENTO DA CRIAÇÃO, COMO POR EXEMPLO: QUANTIDADE DE MENSAGENS, TAMANHO DE MENSAGENS. VÁRIOS PROCESSOS PODEM ESTAR ASSOCIADOS A UM MAILBOX, AS FUNÇÕES SEND/RECEIVE ENDEREÇAM O MAILBOX TROCA DE MENSAGENS DIRETO P1 - SEND (P2, MENSAGEM) RECEIVE (P1, MENSAGEM) P2 - SEND (P1, MENSAGEM) RECEIVE (P1, MENSAGEM) INDIRETO SEND (MAILBOX, MENSAGEM) RECEIVE (MAIBOX, MENSAGEM) SEND (MAILBOX, MENSAGEM) RECEIVE (MAIBOX, MENSAGEM) TROCA DE MENSAGENS INDEPENDENTE DA FORMA DE ENDEREÇAMENTO ENTRE PROCESSOS, A COMUNICAÇÃO ENTRE ELES PODE ELES PODE BLOQUEAR OU NÃO OS PROCESSOS ENVOLVIDOS. BASICAMENTE EXISTEM DUAS FORMAS DE COMUNICAÇÃO ENTRE PROCESSOS ATRAVÉS DA TROCA DE MENSAGENS: SINCRONA, UM PROCESSO ENVIA UMA MENSAGEM (SEND) E FICA ESPERANDO ATÉ QUE O PROCESSO RECEPTOR LEIA A MENSAGEM, O QUANDO O PROCESSO TENTA RECEBER UMA MENSAGEM (RECEIVE) E PERMANECE ESPERANDO, ATÉ QUE O PROCESSO TRANSMISSOR ENVIE A MENSAGEM. ESTE TIPO DE COMUNICAÇÃO. NA COMUNICAÇÃO SINCRONA NÃO EXISTE NECESSIDADE DE BUFFERS PARA GUARDAR AS MENSAGENS TROCA DE MENSAGENS ASSINCRONA, NEM RECEPTOR PERMANECE AGUARDANDO O ENVIO DE UMA MENSAGEM, NEM O TRANSMISSOR O SEU RECEBIMENTO, NESTE CASO EXISTE A NECESSIDADE DE BUFFERS PARA ARMAZENAR AS MENSAGENS. DEVE EXISTIR MECANISMOS QUE PERMITAM AO PROCESSO IDENTIFICAR SE A MENSAGEM FOI ENVIADA OU RECEBIDA VANTAGEM - A GRANDE VANTAGEM DA COMUNICAÇÃO ASSINCRONA É O GRAU DE PARALELISMO NA EXECUÇÃO DOS PROCESSOS, COMPARADO À COMUNICAÇÃO SÍNCRONA, ONDE A NECESSIDADE DE ESPERA DOS PROCESSOS REDUZ O GRAU DE CONCORRÊNCIA. SINCRONIZAÇÃO ENTRE PROCESSOS SINCRONIZAÇÃO ENTRE PROCESSOS É COMUM PROCESSOS QUE TRABALHAM JUNTOS (CONCORRENTES) COMPARTILHAREM RECURSOS DO SISTEMA, COMO ARQUIVOS, REGISTROS DISPOSITIVOS E ÁREAS DE MEMÓRIA. DE MANEIRA GERAL, O COMPARTILHAMENTO DE RECURSOS ENTRE PROCESSOS PODE GERAR SITUAÇÕES INDESEJÁVEIS CAPAZES DE COMPROMETER O SISTEMA. O MECANISMO QUE GARANTE O ACESSO AOS RECURSOS COMPARTILHADOS SÃO CHAMADOS DE MECANISMOS DE SINCRONIZAÇÃO SINCRONIZAÇÃO ENTRE PROCESSOS CONSIDERAREMOS DOIS PROCESSOS CONCORRENTES TROCANDO INFORMAÇÕES ATRAVÉS DE OPERAÇÕES DE GRAVAÇÃO E LEITURA EM UM BUFFER (MEMÓRIA COMPARTILHADA) UM PROCESSO SÓ PODE GRAVAR DADOS NO BUFFER SE ELE NÃO ESTIVER CHEIO E UM PROCESSO SÓ PODE LER DADOS ARMAZENADOS DO BUFFER SE EXISTIR ALGUM DADO PARA SER LIDO. EM AMBOS OS CASOS OS PROCESSOS DEVERÃO AGUARDAR ATÉ QUE O BUFFER ESTEJA PRONTO PARA AS OPERAÇOES DE GRAVAÇÃO OU DE ESCRITA. SINCRONIZAÇÃO ENTRE PROCESSOS PROBLEMAS DE COMPARTILHAMENTO DE RECURSOS EXEMPLO PRÁTICO: ATUALIZAÇÃO DE CONTA BANCÁRIA SE DOIS CAIXAS ESTÃO MANIPULANDO A MESMA CONTA CORRENTE, UM REALIZA A OPERACÃO DE DÉBITO E OUTRO A OPERAÇÃO CRÉDITO. SALDO ATUAL: R$ 200,00 VALOR DE DÉBITO - R$ 200,00 VALOR DO CRÉDITO - R$ 400,00 SE A OS DOIS CAIXAS ACESSAM SIMULTANEAMENTE A CONTA, O SALDO FINAL ESTARÁ ERRADO COM O VALOR DE R$ 600,00, QUANDO DEVERIA SER DE R$ 400,00 EXCLUSÃO MÚTUA E REGIÃO CRÍTICA EXCLUSÃO MÚTUA A SOLUÇÃO MAIS SIMPLES PARA EVITAR O PROBLEMA DE COMPARTILHAMENTO DE RECURSOS APRESENTADO ANTERIORMENTE, É IMPEDIR QUE DOIS OU MAIS PROCESSOS ACESSEM O MESMO RECURSO NO MESMO INSTANTE ENQUANTO UM PROCESSO ESTIVER UTILIZANDO O RECURSO COMPARTILHADO, TODOS OS OUTROS QUE QUEIRAM ACESSAR ESSE MESMO RECURSO DEVERÃO ESPERAR ATÉ QUE O PRIMEIRO TERMINE O ACESSO ESSA IDÉIA DE EXCLUSIVIDADE DE ACESSO É CHAMADO DE EXCLUSÃO MÚTUA. REGIÃO CRÍTICA A PARTE DO CÓDIGO DO PROGRAMA ONDE É FEITO O ACESSO AO RECURSO COMPARTILHADO É DENOMINADO DE REGIÃO CRÍTICA. SE PUDERMOS EVITAR QUE DOIS PROCESSOS ENTREM EM SUAS REGIÕES CRITICAS AO MESMO TEMPO, OU SEJA, SE CONSEGUIRMOS A EXECUÇÃO MUTUAMENTE EXCLUSIVA DAS REGIÕES CRÍTICAS, EVITAREMOS PROBLEMAS DECORRENTES DO COMPARTILHAMENTO. OS MECANISMOS QUE IMPLEMENTAM A EXCLUSÃO MÚTUA UTILIZAM UM PROTOCOLO DE ACESSO À REGIÃO CRÍTICA TODA VEZ QUE FOR EXECUTAR A REGIÃO CRÍTICA, O PROCESSO OBRIGATORIAMENTE IRÁ EXECUTAR ANTES UM PROTOCOLO DE ENTRADA NESSA REGIÃO, DA MESMA FORMA QUE AO SAIR, DEVERÁ EXECUTAR UM PROTOCOLO DE SAÍDA. REGIÃO CRÍTICA INICIO ENTRADA_REGIÃO_CRÍTICA( ); {Protocolo de entrada} REGIAO_CRÍTICA ( ); {Execução da Região Crítica } SAÍDA_REGIÃO_CRÍTICA( ); {Protocolo de Saída } FIM PROTOCOLOS DE ENTRADA/SAÍDA MÉTODO 1. UTILIZANDO UMA VARIÁVEL COMPARTILHADA PORTA PROTOCOLOS DE ENTRADA/SAÍDA MÉTODO 2. UTILIZANDO UMA VARIÁVEL COMPARTILHADA VEZ PROTOCOLOS DE ENTRADA/SAÍDA MÉTODO 3 CADA PROCESSO UTILIZA UMA VARIÁVEL COMPARTILHADA PORTA1 E PORTA2 PROTOCOLOS DE ENTRADA/SAÍDA MÉTODO 4. UTILIZA TRÊS VARIÁVEIS COMPARTILHADAS VEZ, PORTA1 E PORTA2 PROBLEMAS DOS PROTOCOLOS DE E/S MÉTODO 1 - NÃO GARANTE EXCLUSÃO MÚTUA MÉTODO 2 - EXISTE A NECESSIDADE DE ALTERNÂNCIA ENTRE OS PROCESSOS - RECURSO DISPONÍVEL MAS NÃO PODE SER UTILIZADO MÉTODO 3 - PODE OCORRER DEADLOCK MÉTODO 4 - NÃO EXISTE PROBLEMAS PROTOCOLO DE E/S POR HARDWARE A SOLUÇÃO MAIS SIMPLES PARA O PROBLEMAS DA EXCLUSÃO MÚTUA É FAZER É FAZER COM QUE O PROCESSO ANTES DE EXECUTAR A REGIÃO CRÍTICA, DESABILITE TODAS AS INTERRUPÇÕES EXTERNAS E AS REABILITE APÓS DEIXAR A REGIÃO CRÍTICA. COMO A MUDANÇA DE CONTEXTO SÓ PODE SER REALIZADA ATRAVÉS DE INTERRUPÇÕES, O PROCESSO QUE AS DESABILITOU TERÁ ACESSO EXCLUSIVO GARANTIDO. desabilita_Interrupções executa_região_crítica( ) habilita_Interrupções; PROTOCOLOS DE E/S SEMÁFOROS UM SEMÁFORO É UMA VARIÁVEL INTEIRA NÃO NEGATIVA , QUE SÓ PODE SER ASSOCIADA ATRAVÉS DAS FUNÇÃO WAIT SIGNAL GERALMENTE O SEMÁFORO ESTÁ ASSOCIADO A UM RECURSO COMPARTILHADO, INDICANDO QUANDO O RECURSO ESTÁ SENDO ACESSADO POR UM DOS PROCESSOS CONCORRENTES. SE O SEU VALOR FOR MAIOR QUE ZERO, NENHUM PROCESSO ESTÁ UTILIZANDO O RECURSO, CASO CONTRÁRIO O PROCESSO FICA IMPEDIDO DO ACESSO É ENTRA EM ESTADO DE SUSPENSO PROTOCOLOS DE E/S SEMÁFOROS PROBLEMAS DESABILITA INTERRUPÇÃO SE O PROCESSO TRAVAR, TODO O SISTEMA ESTARÁ COMPROMETIDO, OU SEJA, NEM O SISTEMA OPERACIONAL IRÁ EXECUTAR DEVIDO A DESABILITAÇÃO DE INTERRUPÇÃO, SERÁ NECESSÁRIO UM RESET DE HARDWARE NO EQUIPAMENTO SEMÁFORO ERROS DE CODIFICAÇÃO DESABILITAR A UTILIZAÇÃO DO RECURSO, EXEMPLO - WAIT SEM UM SIGNAL OU INVERSÃO ENTRE POSIÇÃO ENTRE SIGNAL E WAIT DEADLOCK UM PROCESSO É DITO EM DEADLOCK QUANDO ESTÁ ESPERANDO POR UM EVENTO QUE NUNCA OCORRERÁ. ESSA SITUAÇÃO É CONSEQUÊNCIA, NA MAIORIA DAS VEZES, DO COMPARTILHAMENTO DE RECURSOS DO SISTEMA ENTRE VÁRIOS PROCESSOS, SENDO QUE CADA PROCESSO DEVE TER ACESSO AO RECURSO DE FORMA EXCLUSIVA (EXCLUSÃO MUTUA) DEADLOCK CONDIÇÕES PARA A EXISTÊNCIA DE DEADLOCK CADA RECURSO SÓ PODE ESTAR ALOCADO A UM ÚNICO PROCESSO EM UM DETERMINADO INSTÂNTE (EXCLUSÃO MÚTUA) UM PROCESSO, ALÉM DOS RECURSOS JÁ ALOCADOS, PODE ESTAR ESPERANDO POR OUTROS RECURSOS UM RECURSO NÃO PODE SER LIBERADO DE UM PROCESSO SÓ PORQUE OUTROS PROCESSOS DESEJAM O MESMO RECURSO UM PROCESSO PODE TER DE ESPERAR POR UM RECURSO ALOCADO A OUTRO PROCESSO E VICE-VERSA (ESPERA CIRCULAR) PREVENÇÃO DE DEADLOCK PREVINIR DEADLOCKS, É PRECISO GARANTIR QUE UMA DAS QUATRO CONDIÇOES NECESSÁRIAS PARA SUA OCORRÊNCIA NUNCA SE SATISFAÇA PRIMEIRA CONDIÇÃO - ELIMINAR EXCLUSÃO MUTUA - CAUSA INCONSISTÊNCIA DE DADOS SEGUNDA CONDIÇÃO - EVITAR QUE PROCESSOS QUE JÁ POSSUAM RECURSOS ALOCADOS REQUISITEM NOVOS RECURSOS - REQUISITAR TODOS OS RECURSOS NO INICIO DA EXECUÇÃO, SE NÃO HOUVER RECURSOS DISPONÍVEIS, O PROCESSO NÃO É INICIADO - PODE SER QUE O PROCESSO SÓ UTILIZARÁ O RECURSO 10 HORAS DEPOIS DE INICIAR A EXECUÇÃO DO PROCESSO. PREVENÇÃO DE DEADLOCK TERCEIRA CONDIÇÃO - PODE SER EVITADO QUANDO PERMITIMOS QUE UM RECURSO SEJA RETIRADO DE UM PROCESSO, NO CASO DE OUTRO PROCESSO NECESSITAR DO MESMO RECURSO - A LIBERAÇÃO DE UM RECURSO JÁ ALOCADO PODE CAUSAR SÉRIOS PROBLEMAS, PODENDO ATÉ FAZER O PROCESSO PERDER TODO PROCESSAMENTO REALIZADO ATÉ O MOMENTO QUARTA CONDIÇÃO - EXCLUIR A POSSIBILIDADE DE ESPERA CIRCULAR, ISTO É SE NECESSITAR DE OUTRO RECURSO, DEVERÁ LIBERAR O PRIMEIRO DETECÇÃO DO DEADLOCK A DETECÇÃO DO DEADLOCK É O MECANISMO QUE DETERMINA, REALMENTE, A EXISTÊNCIA DE UM DEADLOCK, PERMITINDO IDENTIFICAR OS RECURSOS E PROCESSOS ENVOLVIDOS NO PROBLEMA. OS SISTEMAS OPERACIONAIS, PARA DETECTAR DEADLOCKS, DEVEM MANTER UMA ESTRUTURA DE DADOS CAPAZES DE IDENTIFICAR CADA RECURSO DO SISTEMA, O PROCESSO QUE O ESTÁ ALOCANDO E OS PROCESSOS QUE ESTÃO A ESPERA DA LIBERAÇÃO DO RECURSO. TODA VEZ QUE O RECURSO E ALOCADO OU LIBERADO POR UM PROCESSO, A ESTRUTURA DEVE SER ATUALIZADA. GERALMENTE, OS ALGORITMOS QUE IMPLEMENTAM ESSE MECANISMO VERIFICAM A EXISTENCIA DE FILA CIRCULAR, PERCORRENDO TODA ESTRUTURA. CORREÇÃO DO DEADLOCK APÓS A DETECÇÃO DO DEADLOCK, UMA SOLUÇÃO BASTANTE UTILIZADA PELA MAIORIA DOS SISTEMAS OPERACIONAIS É, ELIMINAR UM OU MAIS PROCESSOS ENVOLVIDOS NO DEADLOCK E DESALOCAR OS RECURSOS JÁ GARANTIDOS POR ELES, QUEBRANDO, ASSIM A ESPERA CIRCULAR A ELIMINAÇÃO DOS PROCESSOS ENVOLVIDOS NO DEADLOCK PODE SER FEITA UTILIZANDO ALGUM CRITÉRIO COMO POR EXEMPLO: PRIORIDADE OU DE FORMA ALEATÓRIA THREADS SUBPROCESSOS - UM PROCESSO PODE CRIAR CRIAR OUTROS PROCESSOS, NESTE CASO O PROCESSO CRIADOR CHAMA-SE PAI E O PROCESSO CRIADO CHAMA-SE PROCESSOS FILHO, O PROCESSO FILHO POR SUA VEZ PODE CRIAS OUTROS PROCESSOS. UTILIZAÇÃO DE SUBPROCESSOS PERMITE DIVIDIR UMA APLICAÇÃO EM PARTES QUE PODEM TRABALHAR DE FORMA CONCORRENTE EXEMPLO: UM BANCO DE DADOS ATENDE A REQUISIÇÃO DE TODOS OS CLIENTE, SE UM PROCESSO QUE EMITE UM RELATÓRIO FOR INICIADO, TODOS OUTROS PROCESSO QUE NECESSITEM ACESSAR O REGISTROS DO BANCO DE DADOS TERÃO QUE ESPERAR O PROCESSO DE EMISSÃO DE RELATORIOS ACABAR. COM O USO DE SUBPROCESSO, CADA REQUISIÇÃO IMPLICARIA NA CRIAÇÃO DE UM NOVO PROCESSO PARA ATENDÊ-LA, AUMENTANDO O THROUGHPUT DA APLICAÇÃO E CONSEQUENTEMENTE, MELHORANDO O SEU DESEMPENHO CRIAÇÃO DE SUBPROCESSOS TODA VEZ QUE UM PROCESSO É CRIADO, É NECESSÁRIO QUE O SISTEMA ALOQUE RECURSOS (CONTEXTO DE HARDWARE, CONTEXTO DE SOFTWARE, ESPAÇO DE ENDEREÇAMENTO), ALÉM DE CONSUMIR TEMPO DE CPU NESTE TRABALHO. NO CASO DE TERMINO DO PROCESSO, O SISTEMA GASTA TEMPO PARA DESALOCAR RECURSOS PREVIAMENTE ALOCADOS. THREADS NA TENTATIVA DE DIMINIUIR O TEMPO GASTO NA CRIAÇÃO/ELIMINAÇÃO DE PROCESSOS, BEM COMO ECONOMIZAR RECURSOS DO SISTEMA COMO UM TODO, FOI INTRODUZIDO O CONCEITO DE THREAD (LINHA) EM UM AMBIENTE MULTITHREAD, NÃO É NECESSÁRIO HAVER VÁRIOS PROCESSOS PARA SE IMPLEMENTAR APLICAÇÕES CONCORRENTES. THREADS THREADS COMPARTILHAM O PROCESSADOR DA MESMA MANEIRA QUE UM PROCESSO. POR EXEMPLO, QUANDO UM THREAD ESPERA POR UM I/O, OUTRA THREAD PODE SER EXECUTADO. CADA THREAD POSSUI SEU PRÓPRIO CONTEXTO DE HARDWARE (REGISTRADORES), PORÉM COMPARTILHA O MESMO ESPAÇO DE ENDEREÇAMENTO COM AS DEMAIS THREAD DO PROCESSO. THREADS PASSAM PELOS MESMOS ESTADOS QUE UM PROCESSO THREAD x SUBPROCESSO DIFERENÇA ENTRE THREADS E PROCESSOS A GRANDE DIFERENÇA ENTRE SUBPROCESSOS E THREADS É O ESPAÇO DE ENDEREÇAMENTO. ENQUANTO SUBPROCESSOS POSSUEM CADA UM, ESPAÇOS INDEPENDENTES E PROTEGIDOS, THREADS COMPARTILHARM O MESMO ESPAÇO DE ENDEREÇAMENTO DO PROCESSO, SEM NENHUMA PROTEÇÃO, PERMITINDO ASSIM QUE UMA THREAD POSSA ALTERAR DADOS DE OUTRA THREAD. GERÊNCIA DO PROCESSADOR MULTITAREFA O CONCEITO BÁSICO QUE GEROU A IMPLEMENTAÇÃO DOS SISTEMAS MULTIPROGRAMÁVEIS FOI O COMPARTILHAMENTO DA UCP ENTRE OS DIVERSOS PROCESSOS. PARA ISSO, TODO SISTEMA MULTIPROGRAMÁVEL POSSUI UM CRITÉRIO PARA DETERMINAR QUAL A ORDEM NA ESCOLHA DOS PROCESSOS PARA EXECUÇÃO ENTRE OS VÁRIOS PROCESSOS QUE CONCORREM PELA UTILIZAÇÃO DO PROCESSADOR, ISTO É QUE ENCONTRM-SE NO ESTADO PRONTO. FILAS DE ESTADO ESCALONAMENTO O PROCEDIMENTO DE SELEÇÃO DE UM PROCESSO PARA EXECUÇÃO É CHAMADO DE ESCALONAMENTO, É REALIZADO PELO SISTEMA OPERACIONAL. A PARTE DO CÓDIGO DO SISTEMA OPERACIONAL RESPONSÁVEL PELO ESCALONAMENTO É CHAMADO DE ESCALONADOR OU SCHEDULER OBJETIVOS DO ESCALONAMENTO: - MANTER A CPU OCUPADA A MAIOR PARTE DO TEMPO - BALANCEAR A UTILIZAÇÃO DOPROCESSADOR ENTRE AS DIVERSOS PROCESSOS - MAXIMIZAR O THROUGHPUT DO SISTEMA - OFERECER TEMPO DE RESPOSTA RAZOAVEL PARA O USUÁRIO ESCALONAMENTO CADA ALGORITMO DE ESCALONAMENTO VISA ATENDER A UM TIPO DE PROCESSAMENTO OS CRITÉRIOS DE ESCALONAMENTO PODEM SER (DEPENDE DE CADA SISTEMA): - UTILIZAÇÃO DE CPU - THROUGHPUT - QUANTIDADE DE PROCESSOS EXECUTADO EM UM DETERMINADO INTERVALO DE TEMPO - TEMPO DE TURNAROUND - É O TEMPO QUE O PROCESSO LEVA DESDE A SUA ADMISSÃO NO SISTEMA ATÉ O SEU TÉRMINO - TEMPO DE RESPOSTA - É O TEMPO DECORRIDO DO MOMENTO DA SUBMISSÃO DE UM PEDIDO AO SISTEMA ATÉ A PRIMEIRA RESPOSTA PRODUZIDA ESCALONAMENTO TIPOS DE ESCALONAMENTO - NÃO-PREEMPTIVO - NESTE TIPO DE SISTEMA, QUANDO UM PROCESSO GANHA O DIREITO DE UTILIZAR A CPU, NENHUM OUTRO PROCESSO PODE LHE RETIRAR ESSE RECURSO (CPU), ISTO É O PROCESSO PODE UTILIZAR O PROCESSADOR ENQUANTO FOR NECESSÁRIO - PREEMPTIVO - NESTE TIPO DE SISTEMA, O SISTEMA PODE INTERROMPER A EXECUÇÃO DE UM PROCESSO PARA QUE OUTRO PROCESSO UTILIZE O PROCESSADOR ESCALONAMENTO NÃO-PREEMPTIVO ESCALONAMENTO FIFO PRIMEIRO A ENTRAR PRIMEIRO A SER SELECIONADO PARA EXECUÇÃO IMPLEMENTADO ATRAVÉS DE UMA FILA UM PROCESSO QUANDO ENTRA NO ESTADO DE PRONTO É COLOCADO NO FINAL DA FILA PROBLEMAS IMPOSSIBILIDADE DE PREVER QUANDO UM PROCESSO TERÁ A SUA EXECUÇÃO INICIADA PROCESSOS CPU-BOUND IRÃO PREJUDICAR OS PROCESSOS IO-BOUND NÃO É EFICIÊNTE ESCALONAMENTO NÃO-PREEMPTIVO ESCALONAMENTO SHORTEST-JOB-FIRST (SJF) ASSOCIA A CADA PROCESSO AO SEU TEMPO DE EXECUÇÃO, OU SEJA, QUANDO O PROCESSADOR ESTÁ LIVRE, O PROCESSO EM ESTADO DE PRONTO QUE PRECISAR DE MENOS TEMPO DE UCP PARA TERMINAR SEU PROCESSAMENTO É SELECIONADO PARA EXECUÇÃO FAVORECE PROCESSOS QUE NECESSITAM DE POUCO TEMPO DE CPU PROBLEMA É DETERMINAR O TEMPO DE EXECUÇÃO DE CADA PROCESSO ESTE SISTEMA NÃO PODE SER UTILIZADO EM SISTEMAS INTERATIVOS ESCALONAMENTO NÃO-PREEMPTIVO A PARTIR DO MOMENTO QUE O PROCESSO ESTÉ EM EXECUÇÃO, VOLUNTARIAMENTE LIBERA O PROCESSADOR E RETORNANDO A FILA DE PRONTO TODOS OS PROCESSOS DEVEM COOPERAR EXPONTANEAMENTE PARA QUE O ANDAMENTO DE OUTROS PROCESSOS NÃO SEJAM AFETADOS. SE UM PROCESSO “MAL COMPORTADO”NÃO LIBERAR A CPU, NADA PODERÁ SER FEITO, A NÃO AGUARDAR OU .... “BOOT” EXEMPLO: WINDOWS 3.11 ESCALONAMENTO PREEMPTIVO O ESCALONAMENTO PREEMPTIVO PERMITE QUE O SISTEMA DÊ ATENÇÃO AOS PROCESSOS MAIS PRIORITÁRIOS E TAMBÉM O COMPARTILHAMENTO DO PROCESSADOR É FEITO DE UMA MANEIRA MAIS UNIFORME ENTRE OS PROCESSOS. A TROCA DE UM PROCESSO POR OUTRO NA CPU (MUDANÇA DE CONTEXTO) CAUSADA PELA PREEMPÇÃO, GERA UM OVERHEAD AO SISTEMA. É NECESSÁRIO ESTABELECER CORRETAMENTE OS CRITÉRIOS DE PREEMPÇÃO PARA NÃO SOBRECARREGAR O SISTEMA ESCALONAMENTO PREEMPTIVO ESCALONAMENTO CIRCULAR (ROUND ROBIN) SEMELHANTE A AO FIFO, PORÉM QUANDO UM PROCESSO PASSA PARA O ESTADO DE EXECUÇÃO, EXISTE UM TEMPOLIMITE PARA SUA UTILIZAÇÃO, ESSE TEMPO É DENOMINADO DE TIME-SLICE OU QUANTUM. QUANDO O TEMPO EXPIRA, ELE VOLTA PARA O ESTADO DE PRONTO, DANDO A VEZ PARA OUTRO PROCESSO. ESSE MECANISMO É CHAMADO DE PREEMPÇÃO POR TEMPO ATRAVÉS DO ESCALONAMENTO CIRCULAR, NENHUM PROCESSO PODERÁ MONOPOLIZAR A CPU EM SISTEMAS INTERATIVOS COM O USUÁRIO ESTE ALGORITMO É BASTANTE ADEQUADO. ESCALONAMENTO PREEMPTIVO - FILA CIRCULAR ESCALONAMENTO PREEMPTIVO ESCALONAMENTO POR PRIORIDADE O ESCALONAMENTO CIRCULAR CONSEGUE MELHORAR A DISTRIBUIÇÃO DO TEMPO DA CPU, PORÉM NÃO CONSEGUE IMPLEMENTAR UM COMPARTILHAMENTO DIFERENCIADO ENTRE OS PROCESSOS, ISTO ACONTECE EM RAZÃO DE O ESCALONAMENTO CIRCULAR TRATAR TODOS OS PROCESSOS DE UMA MANEIRA IGUAL, O QUE NEM SEMPRE É O IDEAL PROCESSOS IO-BOUND COMPETEM DE FORMA IGUAL COM OS PROCESSOS CPU-BOUND ESCALONAMENTO PREEMPTIVO ESCALONAMENTO POR PRIORIDADE EM CERTAS CIRCUNSTANCIAS, ALGUNS PROCESSOS DEVEM SER TRATADOS DE MANEIRA DIFERENTE DE OUTROS PROCESSOS É PRECISO ASSOCIAR A CADA UM DELES UMA PRIORIDADE DE EXECUÇÃO NESSE ESQUEMA, PROCESSOS DE MAIOR PRIORIDADE SÃO ESCALONADOS PREFERENCIALMENTE, ISTO É, TODA VEZ QUE UM PROCESSO FOR PARA A FILA DE PRONTO COM PRIORIDADE SUPERIOR AO PROCESSO EM EXECUÇÃO, O SISTEMA DEVERÁ INTERROMPER O PROCESSO CORRENTE, COLOCÁ-LO NO ESTADO DE PRONTO E SELECIONAR O DE MAIOR PRIORIDADE. ESTE MECANISMO É DEFINIDO COMO PREEMPÇÃO POR PRIORIDADE ESCALONAMENTO PREEMPTIVO ESCALONAMENTO POR PRIORIDADE A PRIORIDADE PODE SER ESTÁTICA OU DINÂMICA A PRIORIDADE É DITA ESTÁTICA QUANDO NÃO É MODIFICADA DURANTE A EXISTÊNCIA DO PROCESSO NA PRIORIDADE DINÂMICA, A PRIORIDADE DO PROCESSO PODE SER AJUSTADA DE ACORDO COM O TIPO DE PROCESSAMENTO REALIZADO PELO PROCESSO A PRIORIDADE DE UM PROCESSO VAI AUMENTANDO A MEDIDA QUE O MESMO PERMANECE NA FILA DE PRONTO, APÓS A SUA EXECUÇÃO A PRIORIDADE É A MAIS BAIXA POSSÍVEL DE TEMPOS EM TEMPOS É REALIZADO UM RECALCULO DE PRIORIDADE DOS PROCESSOS PRONTOS ESCALONAMENTO PREEMPTIVO ESCALONAMENTO POR MÚLTIPLAS FILAS COMO DIVERSOS PROCESSOS DO SISTEMA POSSUEM CARACTERÍSTICAS DE PROCESSAMENTO DIFERENTES, É DIFÍCIL QUE UM ÚNICO MECANISMO DE ESCALONAMENTO SEJA ADEQUADO A TODOS OS TIPOS DE PROCESSO. UMA BOA POLÍTICA SERIA CLASSIFICAR OS PROCESSOS EM FUNÇÃO DO TIPO DE PROCESSAMENTO REALIZADO E APLICAR A CADA GRUPO MECANISMOS DE ESCALONAMENTO DISTINTO O ESCALONAMENTO POR MULTIPLAS FILAS IMPLEMENTA DIVERSAS FILAS DE PROCESSO NO ESTADO DE PRONTO, ONDE CADA PROCESSO É ASSOCIADO EXCLUSIVAMENTE A UMA DELA. CADA FILA POSSUI UMA PRIORIDADE ASSOCIADA ESCALONAMENTO PREEMPTIVO ESCALONAMENTO POR MÚLTIPLAS FILAS ESCALONAMENTO COM MÚLTIPLOS PROCESSADORES EXISTE UMA [ÚNICA FILA DE PRONTO E SÃO ESCALONADOS NO PRIMEIRO PROCESSADOR DISPONÍVEL NO CASO DE DOIS OU MAIS PROCESSADORES SE TORNAR DISPONÍVEL EM UM MESMO INSTANTE, NÃO PODE HAVER A POSSIBILIDADE DE UM PROCESSO SER ESCALONADO POR DOIS PROCESSADORES DIFERENTES. A MEMÓRIA FÍSICA É ÚNICA PARA TODOS OS PROCESSADORES, CONTENDO ASSIM TODOS OS PROGRAMAS, NÃO FAZ DIFERENÇA EM QUAL PROCESSADOR A EXECUÇÃO OCORRERÁ. ESCALONAMENTO COM MÚLTIPLOS PROCESSADORES GERENCIAMENTO DE MEMÓRIA INTRODUÇÃO O COMPUTADOR POSSUI DOIS TIPOS DE MEMÓRIA PRINCIPAL - MEMÓRIA RAM, RECURSO ESCASSO, DE ARMAZENAMENTO TEMPORÁRIO, DE ALTO CUSTO, DE RÁPIDO ACESSO SECUNDÁRIA - DISCO OU FITA É UM MEIO PERMANENTE, MAIS ABUNDANTE E DE BAIXO CUSTO, ACESSO LENTO, ONDE SÃO ARMAZENADOS OS PROGRAMAS E DADOS. TODA VEZ QUE DESEJARMOS EXECUTAR UM PROGRAMA RESIDENTE NA MEMÓRIA SECUNDÁRIA, DEVEREMOS ALGUMA FORMA, CARREGÁ-LO PARA A MEMÓRIA PRINCIPAL CICLO DE UM PROGRAMA PROGRAMAÇÃO PROGRAMA EM DISCO PROGRAMA EM MEMÓRIA RAM INTRODUÇÃO COMO A MEMÓRIA PRINCIPAL É ESCASSA E DE ALTO CUSTO, É NECESSÁRIO QUE O SISTEMA OPERACIONAL NÃO OCUPE MUITO ESPAÇO EM MEMÓRIA E AO MESMO TEMPO DEVE OTIMIZAR SUA UTILIZAÇÃO. EM SISTEMAS MONOPROGRAMÁVEIS, A GERÊNCIA DE MEMÓRIA NÃO É MUITO COMPLEXA, NOS SISTEMAS MULTIPROGRAMÁVEIS ELA SE TORNA CRÍTICA, DEVIDO A NECESSIDADE DE MANTER O MAIOR NÚMERO DE USUÁRIOS POSSÍVEIS UTILIZANDO A MEMÓRIA EFICIÊNTEMENTE ALOCAÇÃO CONTÍGUA SIMPLES FOI IMPLEMENTADA NOS PRIMEIROS SISTEMAS OPERACIONAIS, AINDA ESTÁ PRESENTE EM ALGUNS SISTEMAS MONOPROGRAMÁVEIS (DOS) A MEMÓRIA PRINCIPAL ESTÁ DIVIDIDA EM DUAS PARTES: UMA ESTÁ PARA O SISTEMA OPERACIONAL E A OUTRA PARA O PROGRAMA DE USUÁRIO O PROGRAMA DE USUÁRIO ESTÁ LIMITADO AO ESPAÇO DE MEMÓRIA DISPONÍVEL, OU SEJA O TAMANHO TOTAL DE MEMÓRIA PRINCIPAL MENOS O QUE ESTÁ SENDO OCUPADO PELO SISTEMA OPERACIONAL USUÁRIO PODE ACESSAR DADOS EM QUALQUER POSIÇÃO DE MEMÓRIA, INCLUSIVE MODIFICAR O SO PARA PROTEGER O SO EXISTE UM REGISTRADOR PARA DELIMITAR AS ÁREAS DA APLICAÇAO E DO SO ALOCAÇÃO CONTÍGUA SIMPLES ALOCAÇÃO CONTÍGUA SIMPLES FÁCIL IMPLEMENTAÇÃO NÃO PERMITE A UTILIZAÇÃO EFICIENTE DA MEMÓRIA E DO PROCESSADOR, POIS APENAS UM USUÁRIO PODE DISPOR DESSES RECURSOS SE O PROGRAMA DO USUÁRIO NÃO PREENCHE TOTALMENTE A MEMÓRIA, EXISTIRÁ UMA ESPAÇO DE MEMÓRIA SEM UTILIZAÇÃO ALOCAÇÃO CONTÍGUA SIMPLES OVERLAY A PRINCÍPIO OS PROGRAMAS DE USUÁRIO ESTAVAM LIMITADOS AO TAMANHO DA MEMÓRIA PRINCIPAL DISPONÍVEL. PARA EXECUTAR UM PROGRAMA COM TAMANHO MAIOR QUE A MEMÓRIA DISPONÍVEL, É NECESSÁRIO DIVIDIR O PROGRAMA EM MÓDULOS DE FORMA QUE PUDESSEM EXECUTAR INDEPENDENTEMENTE UMA DA OUTRA, UTILIZANDO UMA MESMA ÁREA DE MEMÓRIA, ESTA TÉCNICA É CHAMADA DE OVERLAY. CADA VEZ QUE UM DOS MÓDULOS FOR REFERÊNCIADO PELO MÓDULO PRINCIPAL, O MÓDULO SERÁ CARREGADO DA MEMÓRIA SECUNDÁRIA PARA A ÁREA DE OVERLAY, SOBREPONDO O MÓDULO ATUAL, SE O MÓDULO JÁ ESTIVER NA ÁREA DE OVERLAY, NADA É REALIZADO TÉCNICA DE OVERLAY ALOCAÇÃO CONTÍGUA SIMPLES OVERLAY A TÉCNICA DE OVERLAY TEM VANTAGEM DE PERMITIR QUE O PROGRAMADOR EXPANDA OS LIMITES DA MEMÓRIA PRINCIPAL A UTILIZAÇÃO DESTA TÉCNICA EXIGE MUITO CUIDADO POIS PODE TRAZER PROBLEMAS DE DESEMPENHO DA APLICAÇÃO, DEVIDO A TRANSFERÊNCIA EXCESSIVA DOS MÓDULOS ENTRE O DISCO E A MEMÓRIA. A DEFINIÇÃO DAS ÁREAS DE OVERLAY É FUNÇÃO DO PROGRAMADOR, ATRAVÉS DE COMANDOS ESPECIAIS DA LINGUAGEM UTILIZADA. ALOCAÇÃO PARTICIONADA PARA PROPORCIONAR MELHOR APROVEITAMENTO DOS RECURSOS COMPUTACIONAIS, OS SISTEMAS OPERACIONAIS TORNARAM-SE MULTITAREFA. PARA A MULTIPROGRAMAÇÃO SER EFICIÊNTE É NECESSÁRIO QUE VÁRIOS PROGRAMAS ESTEJAM NA MEMÓRIA AO MESMO TEMPO, DAÍ A NECESSIDADE DE UMA NOVA FORMA DE ORGANIZAÇÃO PARA A MEMÓRIA PRINCIPAL ALOCAÇÃO PARTICIONADA ESTÁTICA UTILIZADO EM SISTEMAS MULTIPROGRAMÁVEIS A MEMÓRIA É DIVIDIDA EM PEDAÇOS, CHAMADO DE PARTIÇÕES CADA PARTIÇÃO TEM O TAMANHO DEFINIDO NA INICIALIZAÇÃO DO SISTEMA, EM FUNÇÃO DO TAMANHO DOS PROGRAMAS QUE EXECUTARIAM NESTE AMBIENTE SEMPRE QUE É NECESSÁRIO A ALTERAÇÃO DA PARTIÇÃO É NECESSÁRIO O SISTEMA DEVE SER DESATIVADO E REINICIADO COM A NOVA CONFIGURAÇÃO ALOCAÇÃO PARTICIONADA ESTÁTICA ALOCAÇÃO PARTICIONADA ESTÁTICA ABSOLUTA COMPILADORES E MONTADORES DE PRIMEIRA GERAÇÃO GERAVAM CÓDIGOS ABSOLUTOS, ISTO FAZIA COM QUE UM PROGRAMA SÓ PODERIA EXECUTAR EM UMA ÚNICA PARTIÇÃO, MESMO QUE OUTRAS PARTIÇÕES ESTIVESSEM LIVRES. A ESSE TIPO DE ALOCAÇÃO CHAMOU-SE ALOCAÇÃO PARTICIONADA ESTÁTICA ABSOLUTA. CÓDIGO ABSOLUTO ALOCAÇÃO PARTICIONADA ESTÁTICA ABSOLUTA ALOCAÇÃO PARTICIONADA ESTÁTICA RELOCÁVEL COM A EVOLUÇÃO DOS COMPILADORES E MONTADORES FOI POSSÍVEL A GERAÇÃO DE CÓDIGOS RELOCÁVEIS E ASSIM OS PROGRAMAS PUDERAM SER CARREGADOS EM QUALQUER PARTIÇÃO A PARTIR DESTA IMPLEMENTAÇÃO FOI CRIADO UM NOVO TIPO DE ORGANIZAÇÃO, DENOMINADO DE ALOCAÇÃO PARTICIONADA ESTÁTICA RELOCÁVEL PARA MANTER O CONTROLE SOBRE QUAIS PARTIÇÕES ESTAVAM ALOCADAS OU NÃO, OS SISTEMAS POSSUÍAM TABELAS, DELIMITANDO SEU CADA PARTIÇÃO, SEU TAMANHO E SE ESTAVA EM USO OU NÃO SEMPRE QUE UM PROGRAMA É CARREGADO, O SISTEMA PERCORRE A TABELA NA TENTATIVA DE LOCALIZAR UMA PARTIÇÃO LIVRE, ONDE O PROGRAMA PODE SER ALOCADO ALOCAÇÃO PARTICIONADA ESTÁTICA RELOCÁVEL TABELA DA ALOCAÇÃO DE PARTIÇÕES ALOCAÇÃO PARTICIONADA ESTÁTICA RELOCÁVEL NESSE ESQUEMA DE ALOCAÇÃO DE MEMÓRIA, A PROTEÇÃO BASEIA-SE EM DOIS REGISTRADORES QUE INDICAM OS LIMITES INFERIORES E SUPERIORES ONDE UM PROGRAMA ESTÁ SENDO EXECUTADO. CASO O PROGRAMA TENTE ACESSAR UMA POSIÇÃO DE MEMÓRIA FORA DOS LIMITES DEFINIDOS PELOS REGISTRADORES, ELE É INTERROMPIDO E UMA MENSAGEM DE ERRO É ENVIA. OS SISTEMAS DE ALOCAÇÃO ABSOLUTA E NOS DE ALOCAÇÃO RELOCÁVEL, OS PROGRAMAS NORMALMENTE NÃO PREENCHEM TOTALMENTE AS PARTIÇÕES. OS PEDAÇOS DE MEMÓRIA QUE FICAM IMPEDIDOS DE SER UTILIZADO POR OUTROS PROGRAMAS É CHAMADO DE FRAGMENTAÇÃO DELIMITAÇÃO DA PARTIÇÃO FRAGMENTAÇÃO DA MEMÓRIA PRINCIPAL ALOCAÇÃO PARTICIONADA DINÂMICA A ALOCAÇÃO PARTICIONADA ESTÁTICA MOSTROU A NECESSIDADE DE UMA NOVA FORMA DE ORGANIZAÇÃO DE MEMÓRIA QUE PERMITISSE DIMINUIR A FRAGMENTAÇÃO E CONSEQUENTEMENTE AUMENTAR O GRAU DE COMPARTILHAMENTO DA MEMÓRIA. NA ALOCAÇÃO DINÂMICA (OU VARIÁVEL), FOI ELIMINADO O CONCEITO DE PARTIÇÕES DE TAMANHO FIXO, CADA PROGRAMA UTILIZARIA O ESPAÇO DE QUE NECESSITASSE, PASSANDO ESSE PEDAÇÃO A SER SUA PARTIÇÃO ALOCAÇÃO PARTICIONADA DINÂMICA ALOCAÇÃO PARTICIONADA DINÂMICA O PROBLEMA DE FRAGMENTAÇÃO NÃO ESTÁ RESOLVIDO, POIS COMEÇARÁ A OCORRER QUANDO OS PROGRAMAS FOREM TERMINANDO E DEIXANDO ESPAÇOS CADA VEZ MENORES NA MEMÓRIA, NÃO PERMITINDO O INGRESSO DE NOVOS PROGRAMAS. EXISTEM DUAS SOLUÇÕES PARA O CASO: ESPAÇOS ADJACENTES DEVEM SER REUNIDOS, PRODUZINDO UM ÚNICO ESPAÇO DE TAMANHO MAIOR; REALOCAÇÃO DE TODAS AS PARTIÇÕES OCUPADAS, ELIMINANDO TODOS OS ESPAÇOS ENTRE ELAS E CRIANDO UMA ÚNICA ÁREA LIVRE CONTÍGUA. A RELOCAÇÃO REDUZ A FRAGMENTAÇÃO MAS A IMPLEMENTAÇÃO É COMPLEXA E ONEROSA EM RECURSOS. ALOCAÇÃO DINÂMICA FRAGMENTAÇÃO SOLUCÃO PARA FRAGMENTAÇÃO AGREGAÇÃO DE ESPAÇOS CONTÍGUO SOLUCÃO PARA FRAGMENTAÇÃO RELOCAÇÃO DE PARTIÇÃO ESTRATÉGIA PARA ESCOLHA DA PARTIÇÃO OS SISTEMAS OPERACIONAIS IMPLEMENTAM, BASICAMENTE TRÊS ESTRATÉGIAS PARA DETERMINAR EM QUAL PARTIÇÃO LIVRE UM PROGRAMA SERÁ CARREGADO PARA EXECUÇÃO. AS ESTRATÉGIAS TENTAM EVITAR, OU DIMINUIR O PROBLEMA DA FRAGMENTAÇÃO ANTES QUE ELA OCORRA ESTRATÉGIAS BEST-FIT - DEIXA O MENOR ESPAÇO; WORST-FIT - DEIXA O MAIOR ESPAÇO FIRST-FIT - PRIMEIRA PARTIÇÃO LIVRE ESTRATÉGIA PARA ESCOLHA DE PARTIÇÃO ESTRATÉGIA DE ALOCAÇÃO ESTRATÉGIA PARA ALOCAÇÃO BEST-FIT ESCOLHE A MELHOR PARTIÇÃO (BEST-FIT), OU SEJA, AQUELA EM QUE O PROGRAMA DEIXA O MENOR ESPAÇO SEM UTILIZAÇÃO A LISTA DE ÁREAS LIVRES ESTÁ ORDENADA POR TAMANHO, DIMINUINDO O TEMPO DE BUSCA POR UMA ÁREA DESOCUPADA COMO É ALOCADA A PARTIÇÃO QUE DEIXA A MENOR ÁREA LIVRE, A TENDÊNCIA É QUE CADA VEZ MAIS A MEMÓRIA FIQUE COM PEQUENAS ÁREAS NÃO CONTÍGUAS, AUMENTANDO O PROBLEMA DA FRAGMENTAÇÃO ESTRATÉGIA PARA ALOCAÇÃO WORST-FIT ESSE MECANISMO ESCOLHE A PIOR PARTIÇÃO(WORST-FIT), OU SEJA, AQUELA EM QUE O PROGRAMA DEIXA O MAIOR ESPAÇO SEM UTILIZAÇÃO APESAR DE UTILIZAR AS PARTIÇÕES MAIORES, A TÉCNICA WORST-FIT DEIXA ESPAÇOS LIVRES MAIORES QUE PERMITEM A UM MAIOR NÚMERO DE PROGRAMAS UTILIZAR A MEMÓRIA, DIMINUIDO O PROBLEMA DA FRAGMENTAÇÃO ESTRATÉGIA PARA ALOCAÇÃO FIRST-FIT ESSE MECANISMO ESCOLHE A PRIMEIRA PARTIÇÃO (FIRSTFIT) LIVRE, DE TAMANHO SUFICIENTE PARA CARREGAR O PROGRAMA. NESSE ALGORÍTMO, A LISTA DE ÁREAS LIVRES ESTÁ ORDENADO POR ENDEREÇOS CRESCENTE. COMO O MÉTODO TENTA PRIMEIRO UTILIZAR AS ÁREAS LIVRES DE ENDEREÇOS MAIS BAIXO, EXISTE UMA GRANDE CHANCE DE SE OBTER UMA GRANDE PARTIÇÃO LIVRE NOS ENDEREÇOS MAIS ALTOS DE MEMÓRIA. DAS TRÊS ESTRATÉGIAS A FIRST-FIT É A MAIS RÁPIDA, CONSUMINDO MENOS RECURSO DO SISTEMA SWAPPING