[Música] o Olá alunas e alunos do curso de introdução a conceitos de computação nesta vídeo-aula eu vou falar que sistema operacional começando pelo papel do sistema operacional seguido pelo gerenciamento de memória e processo feito por esse sistema bom sistema operacional ele é um software de sistema logo ele é um tipo de programa que gerencia o sistema computacional e interage com rápido Ou seja faz uma ótima interface entre o usuário eo sistema computacional é só que hoje em dia os e sistemas de computadores tem uma complexidade considerável mim parte Essa complexidade é causada pela necessidade de
você gerenciar diversos dispositivos assim podemos pensar no sistema operacional como um software de sistema que gerencia recursos computacionais que fornece uma Interface para interação com ao sistema e por exemplo nós temos aqui o aplicativo do seu banco seu navegador e o site onde você costuma comprar passagem aérea você quer fazer essa rústica você quer por exemplo imprimir o a passagem que os Tigres que você comprou para isso então você vai interagir com o programa de sistemas como é o caso dos compiladores e interpretadores e do sistema operacional isso vai permitir com que você consiga conversar
com a máquina em termos de linguagem de máquina se só os recursos da CPU e os dispositivos disponíveis para você fazer o que você deseja e dessa forma Nós temos dois papéis principais quando sistema operacional que pode ser nesse sistema pode ser visto como uma máquina estendida uma visão top-down ou gerenciador de recursos bota o PEP que que seria isso e quanto máquina estendida ele vai viabilizar tarefas de baixo nível para o usuário por exemplo usuário ele quer ler e escrever fechar o arquivo mas ele não está interessado ele quer ter essa visão alto nível
Essa visão abstrata e simples para executar essas operações agora ele não quer ao nível de detalhes que é onde está o nosso s o a respeito do endereço de blocos servido do número de setores por trilha sendo acessavam disco ou modo de gravação ele não tem interesse nessa parte bom outro papel seria o gerenciador de recursos então sistema operacional ele vai gerenciar dispositivos que compõem o computador é um se você tiver por exemplo dos processos escutando o uso da e da impressora que a gente querendo fazer uma impressão Oeste ó vai definir quem vai utilizar
aquele recurso em qual ordem é sem que você fique sabendo o mesmo vale para acessos ao disco rígido dos acessos a memória então o s o ele acaba executando a função de coordenar essa locação controlada e ordenada dos recursos o bom é um programa em execução ele reside em memória principal e suas instruções elas são processadas uma coisa a outra como nós vimos na última aula através dos ciclos PT codifi cação e execução só que na verdade nós podemos ter vários programas em memória Então temos o conceito da multiprogramação que a técnica de manter múltiplos
programas em memória principal ao mesmo tempo competindo pelo uso da CPU o nesse ponto se torna importante o gerenciamento de memória como ato de registro de cor e onde os programas são carregados em memória principal e dessa forma o sistema operacional deve efetuar o gerenciamento de memória que mantém o registro de quais programas estão em memória e onde memória eles Residem em em alguns conceitos deve também ficar Claros com o processo se refere a representação dinâmica de um programa durante a execução o gerenciamento de processo vai ser então ato de manter registro de informação para
processos que estão antigos jogos para ornamento de CPU é um ato de determinar Qual processo de memória terá acesso a última modo que possa ser executado e esse Mente Tão e nós temos que um outro conceito interessante que é o tempo compartilhado Por que você acha tranquilo uma disputa EA ideia do tempo compartilhado E você tem um sistema no qual o tempo de CPU é compartilhado entre múltiplos usuários ter ativos ao mesmo tempo então essa disputa ela é feita mas o tempo compartilhado da impressão que o uso acaba sendo um uso simultâneo E aí nós
temos a ilusão né que é bem representada no conceito de uma máquina virtual a ilusão criada por um sistema de tempo compartilhado de que cada usuário possui uma máquina dedicada a ele bom então especificamente agora no gerenciamento de memória nós temos que lembramos que nós devemos registrar Onde como um programa reside em memória e converter endereços lógicos destes programas endereços reais de memória nós vamos ter que lidar com isso então nós temos que responder uma pergunta não sabemos é exatamente o programa será carregada de memória principal como como então vamos poder saber qual o endereço
usar alguma coisa fazer alguma coisa então temos o conceito do endereço lógico endereço físico para nos ajudar isso o endereço óleo nos ajudar nisso o endereço Lógico que ele faz uma referência ao valor armazenado relativo ao programa que faz a referência de o endereço físico e o endereço realmente positivo de memória principal assim nós vamos ter que fazer uma aplicação entre essa referência esse endereço lógico e o endereço é ao endereço físico essa ligação de endereço vai ser um mapeamento de um endereço Lógico o endereço físico para a gente poder mostrar isso vamos começar por
uma técnica bem simples que até porque de gerenciamento de memória contígua única eu nesse caso nós temos um programa elas carregavam em uma área contígua de memória então parte da memória ocupada pelo sistema o restante fica disponível para o nosso padrão Observe aqui nesse caso você pode ter uma área disponível programa muito maior do que de fato ele vai usar o que então a gente estaria não fazendo um bom uso da memória ao não permite outros processos outros programas pudesse entrar utilizando também já que temos um único programa por outro lado é uma a um
gerente um tipo de gente de gerenciamento fácil de você implementar bom Então nesse caso o nós sabemos nós vamos ter uma noção de onde esse problema aplicativo começa onde que ele inicia e o meu endereço Lógico ele vai ser usado para somar é somado a esse endereço esse ponto de partida né nessa posição inicial do meu programa para eu descobrir o endereço exato Onde está o conteúdo que eu quero acessar desse programa é só aqui a nossa ideia é ter vários programas E aí temos o gerenciamento de memória particionado onde você tem mais de um
programa aplicativo em memória ao mesmo tempo fazendo uso do espaço memória e tempo de CPU e aí duas dois tipos da partição fixa nesse caso de partição fixa elas não precisam ter o mesmo tamanho Mas estamos dela é são fixados quando o sistema operacional inicializar a memória é dividido em um número específico de partições nas Quais os problemas são carregados a técnica de partição dinâmica na técnica de bastante única memória dividido em partições necessários para acomodar programas Então nesse caso a da memória principal e o pistão Como estando inicialmente fazia E à medida que programa
são carregados o espaço disponível é fatiado usando apenas o necessário para acomodar o programa que tá demorando uso e deixando outras partições menores e para poder acomodar outros programas posteriormente os dois os dois tipos utilizam uma tabela de informação de partição para poder resolver os endereços e Descobriu o endereço fica a acessar Então essa ligação de endereço é basicamente a mesma nos dois tipos de partições tá e um exemplo de uma forma de fazer isso é através do registrador base o registrador de limites Então nesse caso nós temos aqui o processo três mas também já
temos processo um processo dois e memória Ainda temos partições livres e o sistema operacional ocupando uma área que voltam nós vamos ter o endereço no registrador base o endereço de início da partição corrente e no registrador de limites tamanho da partição corrente dessa forma eu posso usar aquela técnica de somar o endereço lógico Opa somar o endereço lógico ao início do e o endereço de início do meu processo para obter o endereço da instrução do conteúdo na extinção que eu quero acessar claro que nesse caso eu consigo verificar por essa soma-se eu estou violando tamanho
máximo de espaço disponibilizado para o meu processo trecho a outra técnica técnica de memória paginada nesse caso os processos eles são divididos em páginas de tamanho fixo e carregados em quadro de memória e o que que seriam esses quadros quadro de tamanhos é um ele tem um tamanho fixo de memória principal que guarda uma página de processo a página ela tem o tamanho fixo ela tá muito fixo de um processo que é armazenado tem um quadro de memória então a tabela para você poder fazer a ligação né localizar quadro página e obter um endereço resolveu
o endereço físico acessados você tem a tabela de mapeamento de páginas que vai ser o registro de relacionamento página quadro usado pelo sistema operacional é claro que a necessidade dessa tabela é esse tipo de divisão gera uma sobrecarga no sistema operacional para manter registro de memória low carb para rhesus fazer a resolução do endereço Só que essa técnica traz Marco esses eu penso benefícios dessa técnica porque ela permite o processo não mais seja armazenado contiguamente memória né você vai poder ter uma divisão disso bom um exemplo então nós temos aqui um endereço lógico n nessa
técnica você decodifica esse endereço lógico em páginas e deslocamento E você tem aqui o tamanho do quadro tamanho da página é o cada quarto tem uma página você vai ter então pela divisão de n pelo tamanho o número de páginas que você tem que andar e falar como se você soubesse eu tenho que ir 10 páginas para frente e fazer um deslocamento na décima página a até chega até a posição x tarde pelo deslocamento Então nesse caso para ir mostrar essa ideia nós temos aqui uma decodificação no endereço lógico em página um e deslocamento 125
e vamos supor uma página um quadro com o tamanho 1024 E aí o que que vai acontecer nós vamos pelo número da página descobrir no quadro do processo um teremos um quadro uma tabela para quatro cada processo e então no caso do processo um cheio de considerando aqui eu vou ter pela página eu sei que a informação que eu busco tá no quadro 7 como cada quadro vai ter 1024 de tamanho eu vou multiplicar 7 por 1024 e também tem essa quantidade de bytes que eu vou andar até mais o deslocamento dentro da sétima do
sétimo quatro Então nesse caso eu chego com essa conta ao meu endereço físico dado por 7.293 E aí é bom agora falando do gerenciamento de processo o processo ele pode ter uma característica de ser orientado a CPU chamado CPU aonde que são processos que utilizam muito processamento não é muito muito de processamento muito processador e processos aí o balde que são orientados a entrada saída ou seja de executam muitas instruções relativas a escrita e leitura por exemplo e eu processo em si ele pode ter três status ele pode estar executando que é quando ele tá
na CPU suas instruções estão sendo processadas naquele ciclo de busca e execução que foi apresentado na última ao só que um evento pode se fazer presente e aí você transfere nesse processo que o estado de esperando que quando por exemplo processo para continuar sendo executado ele necessita de algum tipo de dado que você vai buscar no disco Então você coloca ele está te esperando ele tem parado aguardando um exemplo bom nesse ponto você fica nesse estado esperando até que o evento ocorra E aí ele muda puxado pronto seja e agora eu já tenho que ele
precisa para continuar sendo executado no CPU só que a CPU pode ter ser utilizada por esse pros por outro processo E aí ele vai ficar em estado pronto aguardando para ser escalonado né a CPU então o evento ocorre e o processo aguarda o escalonamento na CPU e bote o que também pode acontecer né uma vez que ele a seguiu foi liberado ele vai ser executado Mas uma coisa que pode acontecer é um processo passado estava executando para pronto ou seja se põe aqui no seu escalonamento no seu compartilhamento de uso da CPU você de levou
o tempo esse tempo de uso passou o processo não te mandou nenhuma nenhum evento mas como ele já gastou o tempo dele ele volta custado pronto para dar chance de outro processo também pronto possa se Eu Te possas erro a fatia de tempo dele e te uso da CPU e o e nesse caso é o escalonamento de CPU ele vai determinar Qual processo no estado pronto deve ser movido para o estado executando E aí mais temos um processo que pode ser um escalonamento que pode ser não-preemptivo ou seja o processo correntemente execução sede a CPU
voluntariamente é um por exemplo é ele precisa de um evento e sair e aquela sua CPU tá liberada para outro processo e preditivo já é uma decisão no sistema operacional de favorecer o outro processo interrompendo o processo execução das vezes aquele outro processo Tem algum tipo de prioridade E aí você interrompe o processo que está em execução e temos um escalonamento preemptivo Oi e aí quando que a gente sabe qual que é o melhor forma que os processos estão sendo gerenciados nesse escalonamento uma métrica para isso o tempo de retorno que vai ser o tempo
decorrido entre chegava do processo ao estado pronto e sua conclusão final Independente se ele for não foi sofreu interrupção ou sofreu interrupção a conclusão final dele vai te dar esse tempo de retorno assim nós temos diferentes técnicas para avaliar é esse gerenciamento de processo tão uma técnica primeiro a chegar primeiro atendido então supõe aqui que nós temos cinco processos com essas fatias de tempo é conhece esses tempos de serviço de mandar um Oi e aí o que acontece eu simplesmente isso chegou para se assumir eu ponho ele para executar chegando para essas três ele vai
ter que aguardar passar o tempo de serviço do processo um para que eu possa adicionar E aí novamente o processo 5 vai ter que ficar esperando a conclusão do processo três para poder ser visitar é o mesmo vai valer para o processo dois que vai ficar aguardando a conclusão do processo 5 o processo quatro vai ter que ficar aguardando a conclusão do processo dois para poder entrar e ter seu tempo de processamento bom dessa forma o que que vai acontecer nós temos um tempo médio de respostas 338 considerando né o tempo de conclusão fazendo a
média pelo tempo de conclusão de cada o tempo de retorno de cada processo e supondo que todos os processos chegue chegarão simultâneamente né eu vou ter uma pego o que eu tenho processos que chegaram e já estão no estado pronto eu tenho todos esses mostrado pronto e aí eu vou avaliar eles Considerando o menor tempo Primeiro Então nesse caso o meu primeiro processo ou P4 ele entra e ocupa por 20 uso faz o tempo de serviço dele e em seguida eu vou ter p3 e assim sucessivamente eu vou seguindo a ordem de menor tempo um
dessa forma e 5 ou penúltimo P2 é o último a ser executado e eu tenho tempo médio de resposta aqui já cai para 238 é baseado nos tempos de retorno desses processos uma outra técnica World Robin onde supondo aqui no nosso exemplo intervalo de tempo de 50 o que que vai acontecer eu pego por exemplo o próximo passo até fazer na ordem numérica P1 P2 p3 aí no caso é por isso que P5 e P4 então o que que vai acontecer neste caso o P1 vai ser executado 50 unidades de tempo depois ele é preto
e volta para fila P2 executados depois o p3 depois o P4 que eu acertei é quatro aqui na ordem certa E aí De quatro é executado só que ele é executado E com o tempo dele era curto ele já conclui licença em 170 nós falamos por p5q usa 50 e volta para fila retorno retornamos ao ter um e assim nesse nesse retorno do P1 ele é executado por mais 50 ou concluir essa tarefa ele é concluído em 270 E aí vamos pro P2 P2 utiliza cinco as suas 50 unidades de tempo depois você três e
agora o p3 também é concluído porque ele necessita só de 20 minutos é para ser concluído então ele tem um tempo de retorno de 370 vamos ver cinco novamente O T2 o p5q agora é concluído e o P2 nós temos aí o tempo de Conclusão o tempo de retorno de todos eles o que dá uma média nesse caso de 382 tão nesse caso a gente tem que considerar também o intervalo de tempo que está sendo dado ao processo é e o pessoal essa então foi a nossa aula de hoje espero que vocês tenham entendido o
papel do sistema operacional e eu tenho conseguido passar uma ideia a respeito de como se dá o gerenciamento de memória as estratégias de gerenciamento de memória e gerenciamento de processo nos vemos na próxima ao [Música]