O SO é um software de sistema que fornece uma interface entre o usuário e o hardware, permitindo a execução de aplicações sem que o usuário precise lidar com detalhes de baixo nível.
Abstrai operações de I/O (ex.: abrir, ler, escrever e fechar arquivos) de forma simples e de alto nível, ocultando detalhes como setores de disco ou blocos de memória.
Coordena o uso concorrente de dispositivos (CPU, impressora, disco, memória) definindo políticas de acesso e evitando conflitos.
Responsável por registrar onde cada programa está carregado e por traduzir endereços lógicos (usados pelo programa) em endereços físicos (na RAM).
Endereço lógico = referência relativa ao programa; endereço físico = posição real na memória.
Um processo é a instância em execução de um programa. O SO mantém informações de controle (PCB) e controla seu ciclo de vida.
Tempo de retorno (turnaround time) = tempo entre a entrada no estado pronto e a conclusão do processo.
Resposta correta: B) Fornece uma interface de alto nível para operações de arquivo, como abrir, ler e fechar.
O conceito de “máquina estendida” refere‑se à abstração que o SO oferece ao usuário, permitindo manipular recursos de forma simples, sem conhecer detalhes de hardware.
Resposta correta: C) Reduz fragmentação externa.
A paginação permite que as páginas sejam alocadas em quadros dispersos, eliminando os “buracos” que surgem na memória quando usamos partições fixas.
Resposta correta: C) 0xC12C
Cálculo: base do quadro = 12 × 4 KB = 12 × 4096 = 49152 = 0xC000. Endereço físico = 0xC000 + 300 = 0xC12C.
Resposta correta: C) 404 ms
Simulação RR (quantum = 50 ms) resulta nos tempos de conclusão: P1 = 430 ms, P2 = 310 ms, P3 = 130 ms, P4 = 550 ms, P5 = 600 ms. Média = (430+310+130+550+600)/5 = 404 ms.
Olá, alunas e anunos do curso de Introdução ao Conceito de Computação nesta Visual, eu vou falar de sistema
operacional.
Começando pelo papel do sistema operacional, seguido pelo gerenciamento de memória e processo feito por esse
sistema.
Bom, sistema operacional é um software de sistema.
Logo, ele é um tipo de programa que gerem sim um sistema computacional e terá de com hardware, ou seja, faz uma
conta, uma interface entre o usuário e o sistema computacional.
Bom, só que hoje em dia, esse sistema de computadores tem uma complexidade considerável e em parte, essa
complexidade é causada pela necessidade de você gerenciar diversos dispositivos.
Assim, podemos pensar no sistema operacional com um software de sistema que gerem sim recursos computacionais
que
fornece uma interface para a interação com tal sistema.
Por exemplo, as temas aqui, o aplicativo de seu banco, o seu navegador e o site onde você costuma comprar
passagem à
área.
Você quer fazer essa busca, você quer, por exemplo, imprimir a passagem que é o meu estíritis que você
comprou.
Para isso, então, você vai ter agir com o programa de sistemas, como é o caso dos computadores e ter
produtadores,
que do sistema operacional.
Isso vai permitir com que você consiga conversar com a máquina, entendo os linguagens de máquina, acessar os
recursos da CPU e os dispositivos disponíveis para você fazer o que você deseja.
Dessa forma, nós temos dois papas principais para o sistema operacional, que podem ser, nesse sistema pode ser
visto
como uma máquina estendida uma visão tapudal ou o gerenciador de recursos, botam up.
O que seria isso? Enquanto a máquina estendida, ele vai viabilizar tarefas de baixo nível para o usuário.
Por exemplo, o usuário quer ler, escrever, fechar um 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 o nível de detalhes, que é onde está o S.
O.
A respeito do indireço de bloco acelido, do número de setores por trídeas, sendo acessado no disco ou modo de
gravação.
Ele não tem interesse nessa parte.
Bom, o outro papel seria o gerenciador de recursos.
Então, o sistema operacional vai gerenciar dispositivos que compõem computador.
Então, se você tiver, por exemplo, dois processos disputando o uso da impressora, quer enfiquerem fazer uma
impressão, o S.
O.
vai definir quem vai utilizar aquele recurso, em qual ordem.
Sem que você fique sabendo, o mesmo vale para acessos ou discurismo, acessos à memória.
Então, o S.
O.
ele acaba executando a função de coordenar essa localção controlada e ordenada dos recursos.
Bom, o programa em execução, ele reside em memória principal e suas instruções.
Eles são processados uma coisa a outra, como nós vimos na última aula através do ciclo.
Busca de codificação e execução.
Isso aqui, 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 SAPU.
Nesse ponto, está a importante o gerenciamento de memória como o ato de manter registro de com e onde os
programas
são carregados em memória principal.
Lesta forma, o sistema opressional deve efetar um gerenciamento de memória que mantém um registro de quais
programas
estão em memória e onde memória eles residem.
Alguns conceitos devem também ficar clara com o processo, se refere à representação dinâmica de um programa
durante
execução.
O gerenciamento de processo vai ser então o ato de manter registro de informação para processos que estão
ativos.
Já um escalonamento de SAPU é o ato de determinar qual processo de memória terá acesso a SAPU de modo que possa
ser
executado.
Com isso, sim, então nós temos que um outro conceito interessante que é o tempo compartilhado, porque você vai
ter
uma disputa.
E a ideia do tempo compartilhado é que você tem um sistema no qual o tempo de SAPU é compartilhado entre
múltiplos
usuários terativos ao mesmo tempo.
Então, essa disputa é feita, mas o tempo compartilhado da impressão que o uso, aquela sendo uso simultânea e aí
nós
temos a ilusão, 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, 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 indereços lógicos que estão desses programas e indereços reais de
memória,
nós vamos ter que lidar com isso.
Então, nós temos que responder uma pergunta, nós sabemos onde exatamente o programa será a carreira de memória
principal, como então vamos poder saber qual é o endereço usar para alguma coisa, fazer alguma coisa.
Então temos o conceito do endereço lógico e o endereço físico para nos ajudar a isso, o endereço lógico nos
ajudar
nisso, o endereço lógico, ele faz uma referência a um valor armazenado, relativo ao programa que faz a
referência.
Já o endereço físico, o endereço real no dispositivo de memória principal.
Assim, nós vamos ter que fazer uma ligação entre essa referência e se indereço lógico e o endereço real, o
endereço
físico.
Essa ligação de endereço vai ser um apiamento de endereço lógico e um endereço físico.
Para poder nos trair, vamos começar para uma técnica bem simples, que é a técnica de gerenciamento de memória
contigo a única.
Então, nesse caso, nós temos um programa apenas carregado em um área contigo de memória.
Então, parte da memória ocupada pelo sistema operacional e o restante fica disponível para o nosso programa.
Observe que, nesse caso, você pode ter uma área disponível para o 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 permitir que outros processos outros
programas podessem estar utilizando também, já que temos um único programa.
Por outro lado, é um gerenciamento fácil de você implementar.
Bom, então, nesse caso, nós sabemos, nós vamos ter uma noção de onde esse programa aplicativo começa, antes que
ele
inicia.
E o meu endereço lógico, ele vai ser usado para ser 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.
Bom, só que a nossa ideia é ter vários programas e aí temos o gerenciamento de memória que é particionado onde
você
tem mais de um programa aplicativo e memória, ao mesmo tempo, fazendo o uso do espaço e memória e tempo de
CPU.
E aí, dois tipos, a partição fixa, nesse caso, de partição fixa, elas não precisam ter o mesmo tamanho, mas os
tamanhos delas já são fixados quando o sistema operacional é inciadizado.
A memória é dividida em número específico de partições nas quais os programas são carregados.
A técnica de partição dinâmica, na técnica de partição dinâmica, a memória é dividida em partições necessárias
para
acomodar programas.
Então, nesse caso, na memória principal, eles estão, como estão inicialmente, fazia.
E a medida que programas são carregados, os espaços disponíveis é fateado, usando apenas o necessário para
acomodar
o programa que está demandando o uso e deixando outras partições menores vazias para poder acomodar outros
programas
posteriormente.
Bom, os dois tipos utilizam uma tabela de informação de partição para poder resolver os interessos e descobrir o
endereço físico acessado.
Então, essa ligação de endereço é basicamente a mesma nos dois tipos de partições, e um exemplo de forma de se
fazer
isso é através do registro do base e o registro do diminui-nos.
Então, nesse caso, nós temos aqui o processo 3, mas também já temos processo 1, processo 2 e memória, ainda
temos
partições vivas e o sistema operacional ocupando uma área aqui.
Bom, então nós vamos ter um endereço no restrador básico, o endereço de início da partição corrente e no
registro de
inícios, tamanho da partição corrente.
Dessa forma, eu posso usar aquela técnica de somar um endereço lógico ao início do meu processo para obter o
endereço da instrução do conteúdo da instrução.
Eu quero acessar.
Claro que nesse caso, eu consigo verificar por essa soma se eu estou violando o tamanho máximo de espaço
disponibilizado pro meu processo 3.
Outra técnica é a técnica de memória paginada.
Nesse caso, os processos e edições divididos em páginas de tamanho fixo e carregados em quadro de memória.
O que seria esses quadros? Quadros de tamanho fixo de memória principal, que guarda uma página de processo.
A página tem um tamanho fixo de um processo que é armazenado em quadro de memória.
Então, a tabela, para você poder fazer a ligação localizar quadro, página e obter um endereço resolveu, um
endereço
físico acessado, você tem a tabela de uma teamento de páginas, que vai ser um registro de relacionamento
páginacoado, usado pelo sistema operacional.
Repare que a necessidade dessa tabela e esse tipo de divisão geram uma sobrecarga nos sistemas operacional para
manter registro de memória local e para refazer a resolução do endereço.
Só que essa técnica traz mais, desse esforço compensa o benefício dessa técnica, porque ela permite que o
processo
não mais seja armazenado continuamente em memória.
Você vai poder ter uma divisão disso.
Bom, um exemplo, então nós temos aqui um endereço lógico, N, nesta 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, e cada quadro tem uma página, você vai ter, então, pela
divisão de N, pelo tamanho, um número de páginas, que você tem que andar, então, como se você soubesse, eu tenho
que
ir 10 páginas para frente e fazer um deslocamento na décima página até x, até a posição x, dá da período de
deslocamento.
Então, nesse caso, para ir nos traçar essa ideia, nós temos aqui uma decodificação do endereço lógico em páginal
1 e
deslocamento 125, vamos supor uma página, um quadro, com tamanho 124, e aí o que vai acontecer? Nós vamos ter um
número da página, descobrir no quadro do processo 1, teremos um quadro, uma tabela para cada processo, então, no
caso da processão que estamos considerando aqui, eu vou ter pela página, eu sei que a informação que eu busco
estar
no quadro 7, com cada quadro vai ter 124 de tamanho, eu vou multiplicar 7 por 124, então, eu tenho a quantidade
de
bytes que eu vou andar, até, mais um deslocamento dentro da sétima do sétimo 4, então, nesse caso, eu chego com
essa
conta ao meu endereço físico, dado por 7,293.
Bom, agora falando do gerenciamento de processo, o processo pode ter uma característica de ser orientado a CPU,
o
chamado CPU Bound, que são processos que utilizam muito processamento, muito de processamento, muito
processador, e
processos aí o Bound, que são orientados à entrada saída, ou seja, eles executam muitas instruções relativas à
escrita e leitura, por exemplo.
E o processo em si pode ter 3 estados, ele pode estar executando, que é quando ele está na CPU, os seus
instruções
estão sendo processadas naquele ciclo de busco execução, que foi apresentado no optimal.
Só que um evento pode se fazer presente, e aí você transfere esse processo com o estado de esperando, que é
quando,
por exemplo, o processo, para continuar sendo executado, ele necessita de algum tipo de dado que você vai buscar
no
disco.
Então, você coloca ele em estado esperando, ele tem parado, aguardando um evento.
Bom, nesse ponto, você fica nesse estado esperando até que o evento ocorra e aí ele enguda, postado pronto, ou
seja,
ele agora já tem o que ele precisa para continuar sendo executado na CPU, só que a CPU pode estar sendo
utilizada
por esse processo.
E aí ele vai ficar em estado pronto, aguardando para ser escalonado na CPU.
Então, o evento ocorre e o processo aguada, o escalonamento na CPU.
Bom, o que também pode acontecer, uma vez que a CPU foi liberada, ele vai se executado, mas uma coisa que pode
acontecer, é um processo passado, estado executando para pronto, ou seja, suponha que no seu compartilhamento de
uso
da CPU, você delegou um tempo, esse tempo de uso passou, o processo não demandou nenhuma evento, mas como ele já
gastou o tempo dele, ele volta postado pronto.
Pra dar a chance que outro processo também pronto possa ser o espaço a partir de tempo dele de uso da CPU.
Bom, nesse caso, o escalonamento de CPU, ele vai determinar qual processo no estado pronto deve ser movido para
o
estado executando.
E aí nós temos um processo que pode ser, um escalonamento que pode ser não preenventivo, ou seja, o processo
correntemente em execução sede a CPU voluntariamente.
Então, por exemplo, ele precisa de um evento descalhe e aquela CPU está liberada para outro processo.
E, preenventivo, já é uma decisão do sistema operacional de favorecer o outro processo interrumpendo o processo
em
execução, dá-lhe vezes aquele outro processo, tem algum tipo de prioridade, e aí você interrompte o processo que
está em execução e temos um escalonamento preenventivo.
Bom, e aí quando que a gente sabe qualquer 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 chegada do
processo
ao estado pronto e sua conclusão final, independente de ser de 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, então uma técnica, a primeira
chegar, a primeira tende, então supõe aqui que nós temos cinco processos com essas fatias de tempo, com esses
tempos
de serviço demandado.
E aí, qual que acontece? Eu simplesmente chegou o processo 1 e ponho ele para executar, chegando o processo 13
ele
vai ter que aguardar a passar o tempo de serviço do processo 1 para que eu possa adicionar.
E aí novamente o processo 5 vai ter que ficar esperando a conclusão do processo 3 para poder ser executável.
O mesmo vai valer com o processo 2 que vai ficar guardando a conclusão do processo 5, e o processo 4 vai ter que
ficar guardando a conclusão do processo 2 para poder entrar e ter seu tempo de processamento.
Bom, dessa forma, o que vai acontecer? Nós temos um tempo médio de resposta de 338, considerando o tempo de
conclusão fazendo a média pelo tempo de conclusão de cada, o tempo de retorno de cada processo.
Supondo que todos os processos chegam a se mutaneamente, eu vou ter uma pega que eu tenho processos que
chegaram,
que já estão no estado pronta, eu tenho todos esses no estado pronta.
E aí eu vou avaliar eles considerando o menor tempo, primeiro.
Então nesse caso, o primeiro processo 4 ele entra e ocupa por 20, usa o faz tempo de serviço 3.
Em seguida eu vou ter p3, e assim sucessivamente eu vou seguindo a ordem de menor tempo.
Bom, dessa forma, p5 ao penúltimo, p2 é o último a ser executado.
Eu tenho um tempo médio de resposta que já cai para 238, baseado nos tempos de retorno desses processos.
Uma outra técnica é o road robin onde supondo aqui no nosso exemplo, um intervalo de tempo de 50, o que vai
acontecer? Eu pego, por exemplo, eu posso até fazer a ordem no meca, p1, p2, p3, na invocada que eu croque p5 e
p4.
Então o que vai acontecer nesse caso? O p1 vai ser executado 50 nd de tempo.
Depois ele volta para a fila p2 executado, depois o p3, depois o p4 aqui, ou a certez, p4 aqui, não há nem
certa.
Aí o p4 é executado, só que ele é executado e como o tempo dele era curto ele já conclui em 170.
Vamos para o p5 que usa 50 e volta para a fila, retornando os p1.
E nesse retorno do p1 ele é executado por mais 50 o que conclui a certez, ele é concluído em 270.
Aí vamos para p2, p2 utiliza 50 nd de tempo, depois o p3 e agora o p3 também é concluído, porque ele necessita
só de
20 nd de tempo para ser concluído.
Então ele tem um tempo de retorno de 30.
Vamos para o p5, novamente o p2, o p5 que agora é concluído e o p2, temos o tempo de conclusão, o tempo de
retorno
de todos eles, o que dá uma média nesse caso de 382.
Então nesse caso a gente tem que considerar também um intervalo de tempo que está sendo dado aos processos.
Bom pessoal, essa foi a nossa aula de hoje, espero que vocês tenham entendido o papel do sistema operacional e
eu
tenho a você de passar uma ideia a respeito de como citar o gerenciamento de memória, estratégia de
gerenciamento de
memória e gerenciamento de processo.
Nos vemos na próxima aula.