fala pessoal tudo bem então vamos para mais uma aula de so e na aula passada estávamos conversando sobre os conceitos sobre mais alguns conceitos base de so como entrada saída proteção e interpretador de comandos o Shell né E aí foi onde a gente fez aquela prática breve espero que vocês tenham aproveitado e seguido com ela tá bom hoje a gente vai falar sobre processos é um assunto bastante denso mas bastante importante então a gente vai se aprofundar um pouco mas também não vamos aurier esse assunto porque realmente ele é complexo extenso Tá bom mas caso
você tenha interesse e eu recomendo que você dê uma olhada lá no livro do tanibal que tá na ementa da disciplina e procure lá no capítulo 2 que é o capítulo sobre processo E aí né pode se divertir com ele lá bom então o que que são os processos processo é o conceito mais Central para qualquer sistema operacional tá é uma abstração de um programa em execução na memória é um conceito muito importante tá é uma das mais antigas importantes abstração em sistemas operacionais dando suporte a possibilidade de haver operações pseudo paralelas ou pseudo concorrentes
Tá o que que o que que são essas operações pseudo paralelo as o pseudo concorrentes bom a gente precisa lembrar que lá atrás a gente não tinha um processador com mais de um núcleo então um processador possuía apenas um núcleo tá Por mais distante incrível que pareça realmente né passamos por isso como como um processador com apenas um núcleo só era possível executar uma operação por vez tá um núcleo e a gente está falando de CPU ou CP né a unidade básica de processamento né ou a unidade central de processamento Então essa unidade central de
processamento né ao CP ou CPU ela só podia executar uma operação por vez tá lembra lá a gente falou do sistemas em lote depois falamos do multi programado né então com o avanço de Tecnologia em hardware e também instamas operacionais foi possível a gente criar o sistemas multiprogramados o que que possibilitou isso né foi essa abstração de processo abstrair o que era um software em execução para o conceito de processo E aí surge esse conceito da pseudocorrência ou pseudo paralelismo Tá então vamos lá lembrando Então desse momento onde a gente tinha um processador Com um
único núcleo a gente só tinha uma operação acontecendo por vez só que a gente saiu do sistemas em lote que de fato executava uma operação por vez e a gente precisava dar uma sensação né para o usuário que ele tava executando várias coisas ao mesmo tempo e de fato não é não só a sensação de estar executando mais de uma coisa ao mesmo tempo mas de fato realmente executar mais de uma coisa tá só que aí quando a gente tinha apenas um núcleo não era possível Executar tudo ao mesmo tempo então esse conceito de processo
né possibilitou que a gente criasse aqui os sistemas multi programados né Então como que isso acontecia né Mais ou menos a gente já vai discutir melhor só que na frente mas mais ou menos os temporacional organizava lá os processos a gente já vai conversar sobre isso e aí a gente tinha essa unidade de processamento né o núcleo do processador e ele disponibilizava uma quantidade de processamento e o sistema operacional dividia né a cada pedaço de tempo ele dividia né para um processo aí parava o processo dava um pouco de processamento para um outro processo parava
dava para um outro Aí voltava para o primeiro e assim ia tá Então o conceito de processo possibilitou a gente começar a fazer esse tipo de coisa mas com o surgimento dos processadores com mais de uma com mais de um núcleo a gente passa a ter um novo cenário tá Então imagina o seguinte a gente tem aqui por exemplo algo que seja passou tá Então imagina que você usuário tá tentando acessar lá Netflix por exemplo Então você é o usuário aqui né que tá tentando acessar o browser seja no seu computador ou lá na TV
né pelo aplicativo da TV mas aqui a gente tá pelo browser e se digita lá netflix.com né ou clica ela num vídeo e beleza né o que que vai acontecer bom vai acontecer um http request nesse momento você já deve ter passado por programação web então já não é tão novidade né vai acontecer uma requisição http que vai lá para o servidor beleza que servidor que é esse servidor web né aquele que tá servindo a Netflix para a gente Ok até aí sem mistério Agora imagina que a gente tá nesse momento onde eu não consigo
executar mais de uma atividade ao mesmo tempo imagina que a gente voltou lá no tempo né na lá atrás né na tecnologia e a gente só consegue executar uma tarefa por vez né o processador só executa uma tarefa por vez o que que aconteceria se um outro usuário tentasse acessar Netflix também para clicar lá numa série para poder assistir bom se esse processador só executasse uma tarefa por vez né se esse servidor só responder se é um request por vez quando chegasse outro usuário para tentar acessar Netflix ele ia editar lá no navegador né netflix.com
né Por exemplo e ia dar tá malte ou né o navegador ia responder lá como algum tipo de problema né porque não foi possível receber essa responsa né aqui embaixo Aqui do observar porque porque se ele se ele consegue responder apenas né se ele consegue executar apenas uma operação por vez e esse usuário né que requisitou lá sério tá recebendo streaming da série né até esses filme não acabar pode ser que esse servidor não consiga responder uma outra requisição se for o mesmo processo tá então nota que é algo extremamente bloqueante né e bom a
gente hoje acho que ninguém aqui passa passou por isso né se você digitar lá agora né netflix.com clicar numa série você vai ver a série né E ninguém vai ficar sem assistir série Porque Você clicou lá no ícone da série lá enfim né na thumb da série Por que que isso é possível hoje né porque esse servidor que tá aqui né nesse nosso exemplo ele responde a mais de uma operação ele responde a mais de uma requisição por vez Então aqui imagina quantas milhões de pessoas né não acessam uma Netflix por segundo por minuto por
dia né imagina quantos teras betabyte sei lá de tráfego de séries e etc né não usuário não faz download aqui né imagina a quantidade de usuário tentando acessar então a gente só consegue entregar esse tipo de tecnologia né A gente só consegue entregar esse tipo de cenário graças ao sistemas que lidam com multiprocessos né que conseguem executar várias coisas ao mesmo tempo então antigamente quando a gente só tinha uma única um único núcleo no processador parecia que as coisas estavam acontecendo ao mesmo tempo mas na verdade não era né então o processador ele tinha que
se dividir ele né ele tinha que ser um operacional dividia né o processamento um pouquinho para cada processo né e assim Ir até terminar todos os processos Claro era muito rápido né abstração sistema operacional foi muito importante nisso né então era muito rápido e para a gente era talvez quase imperceptível né hoje a gente ia perceber porque os programas né são muito mais pesados a gente executa tarefas que demandam muito mais do Hardware então o único uma processador único núcleo Talvez né iríamos incomodar bastante né então hoje sofre muito com isso né com computador que
fica lento etc então com certeza a gente ia sentir essa esse cenário né bom mas aí então surge os computadores com mais de um núcleo tá E aí essa possibilidade de multi programar né de executar vários processos ao mesmo tempo porque cada núcleo executa um processo por vez E além disso né a gente vai falar mais para frente aí nas próximas aulas sobre trads né um processador pode ter mais de um núcleo e esse núcleo pode executar várias trades ao mesmo tempo você deve já ter visto isso né Se Você pesquisou sobre processador você vai
ver lá que ah é um quad- não sei quantas trads é um Octa com ser contras né ou seja cada núcleo daquele consegue paralelizar tantas coisas ao mesmo tempo tá Tá mas vamos voltar um pouquinho aqui mais no nosso exemplo para a gente entender um pouco mais sobre o processo imagina que a gente tem aqui um PC de usuário tá o seu próprio computador aí ou celular por exemplo quando você liga ele ele começa é iniciar processos todos os programas que são inicializados são abstraídos na forma de processo para o sistema operacional e aí o
sistema operacional vai gerenciá-los na forma de processo tá imagina um cliente de e-mail Talvez né hoje a gente não usa tanto mas imagina um cliente de meio ou o teu WhatsApp né e sei lá um outro software aí por exemplo o teu antivírus você não tá com antivírus aberto o tempo todo você não tá com o teu WhatsApp aberto o tempo todo certo ele simplesmente está lá instalado né como é que ele sabe então que você recebeu uma mensagem como é que ele te notifica que você recebeu uma mensagem ou que você espetou um pen
drive e tinha um vírus lá um possível vírus como que isso acontece Bom há alguns processos né que são executados entre aspas secretamente né a gente acaba que não percebe eles estão executando em segundo plano tá Ou seja você não tem interação com esses processos eles estão executando lá de uma forma oculta E você Muitas vezes nem sabe que ele tá lá mas quando ele precisa executar essa interação com o usuário né ele tem plena te mandar uma notificação enfim né de poupar uma tela na tua cara lá falando olha pen drive tá com vírus
né Vamos tomar uma ação né porque esses programas estão rodando em segundo plano na forma de processo Beleza então nota como é extenso esse assunto tá bom então tivemos aqui uma visão de um cenário multiprogramado né de um computador de um dispositivo que executa várias coisas ao mesmo tempo então você pegar o seu celular o seu smartwatch smart TV seu computador etc né tudo que tiver um processador em um sistema operacional vai estar executando dessa forma beleza então falamos aqui de segundo plano então Note que alguns processos vão operar né em primeiro plano que são
esses processos que você usuário tem interação por exemplo Você clicou lá no ícone no WhatsApp abrir WhatsApp é um processo que está em primeiro plano você está interagindo com ele né você quer editar um trabalho lá um arquivo você abre lá até o Word você tá lidando com processo em primeiro plano em segundo plano né são esses processos que você não interage mas um sistema interage com eles e se for necessário né ele consegue executar algo para interagir com você beleza e ainda falando sobre isso a gente tem os tais dos Demons tá no Windows
não é muito comum a gente falar esse nome mas os Demons existem do mesmo jeito Tá o que que são os Demons os Demons são os processos que ficam em segundo plano e que normalmente os processos que o sistema utiliza então o sistema do WhatsApp Por Exemplo né o processo que fica ali do WhatsApp né que a gente falou em segundo plano ele é um demo tá você não tá interagindo com ele mas quando chega uma mensagem para você ele tá lá x momento né a x tempo olhando a tua caixa de mensagem sei lá
como é que chama né mas tá lá olhando até o teu WhatsApp lá né E quando ele fala olha tem uma mensagem nova ele vai te notificar tá então a cada x segundos Ou micro segundos a gente não sabe né ele vai lá e vai te avisar tá então é um Dimon rodando no Unix né no sistemas baseados em Onix já é mais comum a gente falar sobre Demons tá já não é mais né não é não é tão oculto né não é tão fechado quanto no Windows Tá mas também existem no Windows só a
única diferença que no sistemas baseado em Onix Ou seja todos exceto o Windows a gente tem um controle muito maior sobre Seja lá o que for tá E os processos a mesma coisa beleza bom mas ok tem os processos em segundo plano um usuário comum né que tá operando um processo em primeiro plano conseguiria colocar esse processo em segundo plano O que que vocês acham Para para pensar né você tá lá no seu sei lá Word né daria para colocar ele em segundo plano Daria né dá né Tem como a gente vai fazer na próxima
aula vou demonstrar uma prática tá E aí eu vou mostrar isso para vocês num Linux tá bom porque é lá onde a gente vai conseguir ver melhor isso no Windows dá também mas a gente vai conseguir interagir melhor e ver detalhes isso não lembro tá no Windows pessoal a gente pode ver os processos utilizando o gerenciador de tarefas do Windows né então você clica lá com o botão direito gerenciar tarefas você vai ver os processos não é tão detalhado Tá quanto que a gente vai vai ver no Linux mas a Microsoft disponibiliza uma suíte de
ferramentas que se chama e nela né vem lá um monte de ferramenta e algumas delas você consegue ver melhor os processos né ver os detalhes dos processos etc Tá mas ainda assim você vai ver que é mais fechado do que num Linux beleza e no Linux a gente vai utilizar o comando PS tá então eu não vou falar muito agora depois da próxima aula que vai ser prática eu vou te mostrar isso como é que vai funcionar Tá bom bom e o modelo de processo né como é que são esses processos né a gente precisa
definir um pouquinho melhor agora de forma mais técnica tá então um processo vai ser um programa em execução né a gente falou então que o sistema operacional Abstrai softwares né programas em execução no formato de processo tá então um processo é um programa em execução beleza Além disso ele é também ele possui registradores e variáveis você vai ver aqui no material que eu coloquei ainda o computador de programas e se você tiver esperto você vai lembrar lá da aula de arquitetura de computadores quando você viu assemble e você vai lembrar que foi falado sobre o
contador de programas e ele é um registrador então aqui eu tô sendo redundante estou falando dele aqui só para constar tá porque ele é muito importante e é bom lembrar que ele faz parte aqui né um dos registrado mais importantes aqui de processos o que que esse registrador faz ele aponta para as instruções que o processo precisa executar ou seja as instruções do programa que tá carregado na memória beleza bom que mais um nem sempre um único nem sempre um programa que vale a um único processo tá Às vezes um programa ele gera mais de
um processo a gente chama isso de código rentrante tá que que é um código reintrante um código reintrante né é um código é um executável é um software que tem a capacidade né de tem a possibilidade né de permitir que mais um usuário Execute o mesmo software sem que haja necessidade de haver uma cópia dele na memória confusa né Então tá vamos pensar da seguinte forma imagina que você está num servidor Windows por exemplo se você abrir uma cópia do Word né Você vai lá Abrir teu documento no Word ele vai subir uma Instância do
word para memória do computador se um outro usuário fizer a mesma coisa com um arquivo seja ele qual for uma outra Instância do Word vai subir para memória Beleza agora imagina que a gente tá lá por exemplo num servidor web ó vamos voltar aqui para o nosso servidor web tá quando a gente acessa o servidor web o servidor web tá lá na memória ele vai atender você vai devolver tua requisição e quando chega um outro pedido de usuário não sobe um outro servidor é o mesmo servidor tá então o servidor possui funções né de programação
né programada que são reentrantes e permite que os usuários executem Essas funções sem precisar ter uma cópia desse servidor web né sem precisar tomar cópia desse código de programação na memória tá e com a vantagem de que um usuário não vai interferir no contexto de dados do outro tá existe ali uma proteção Beleza a gente não vai entrar a fundo nisso aqui mas lembre desses códigos rentrantes tá porque eu vou mostrar depois que eles vão gerar novos processos tá bom aí você vai ver processo pai e processo filho vou mostrar isso aqui para você tá
só para deixar um diagrama aqui ó código retrátil gera processual e processo B beleza Bom falamos um pouco sobre isso aqui né então quando tinha apenas um núcleo né um processador tinha apenas um núcleo né uma unidade central de processamento existia processos Paralelos né então você nota aqui ó que os processos eles não não acontecem no mesmo tempo Tá Diferente de quando a gente passou a ter processadores com mais de uma unidade central de processamento aqui você tem ó fisicamente Paralelos beleza só que aqui pessoal não basta só ter um processador com mais de um
núcleo né OK sistema operacional vai lidar vai gerenciar isso aqui mas aqui entra aquele conceito de programação assim Corona ou até threads né e coisas assim se você quiser desenvolver um software para se beneficiar desse modelo né do nosso modelo atual de processadores que tem mais um núcleo e ele tradings você vai ter que investir em programação assim Corona né em gerenciamento de threads E por aí vai beleza bom cada processo Então vai possuir O programa né as funções que vão ser executadas um espaço de endereçamento na memória e o contexto de hardware e software
tá e o so vai gerenciar esse bloco esse processo utilizando o BCP o bloco de controle de processamento de processo bloco de controle de processos aqui do lado eu deixei uma imagem bem simplificada tá que você vai ver aqui ó ponteiros estado do processo nome do processo prioridade os registradores a memória arquivos que foram abertos pelo processo tá então um sistema operacional vai gerenciar os processos através dessa estrutura de dados que é o dcp beleza só para deixar um pouquinho mais didático né a interação né entre usuário sistema operacional com B CPS aqui ó né
usuário né executa um processo então um processo fica fica identificado através do usuário então o usuário tal executou processo tal tá o so vai colocar o estado do processo tá se ele tá em execução se ele tá parado se ele tá bloqueado né os as instruções vão para memória né então tudo que tá sendo executado né parte está na memória ou está tudo na memória tá E aí o sistema operacional vai gerenciando e o processador vai né processando ali essas instruções Beleza Aqui tem uma imagem para demonstrar aqui a para ilustrar a estrutura dos processos
tá então no contexto de software e hardware nós temos essas informações tá como piad que é o ID do processo identificador do processo o ID né que é o user aí de o dono do processo tá o ardido usuário do processo a prioridade E por aí vai beleza estados do processo né então em execução Ele tá em execução né o Pronto ele está aguardando para ser executado tá então ele tá parado esperando outra coisa acontecer e o em espera ele é capaz de ser executado até que algum evento externo aconteça tá normalmente um evento de
entrada e saída beleza bom então temos aqui os uma imagem tá demonstrando aqui vários processos e os Tema operacional tem um escalonador Tá o que que é esse escalonador esse escalonador ele vai organizar os processos e vai colocar as prioridades no processo então processos que são muito importantes para o sistema né para o funcionamento do sistema vamos ter prioridades né mais altas processos que não são tão importantes vão ter prioridades mais baixas por exemplo se você abrir um Word Ali você vai ver que o teu World tem uma prioridade muito baixa Tá talvez a mais
baixa do sistema porque ele não é essencial para o sistema tá mas dá para mexer nisso aqui a gente vai ver isso aqui depois beleza o que que causa a criação de um processo né Quais são os eventos bom o sistema inicializar né causa criação de processo Então quando você liga o sistema que ele faz o boot faz o boot o post né Aliás o inverso né etc ele começa a carregar softwares programas tá E conforme esses programas vão carregando e eles precisam ficar no sistema né na memória para ficar executando as chamadas de sistema
etc eles são criados na forma de São abstraídos na forma de processo tá então quando o sistema inicializa ele já começa a levantar processos que vão virar de íons beleza execução de chamada de sistema tá então quando alguns software chama usa alguma chamada do sistema cria um processo Ah como assim Então imagina que você quer salvar um arquivo num pen drive você vai causar você vai executar uma chamada no sistema para usar aio né imprimir um arquivo né enfim você vai sempre estar fazendo alguma coisa ali que vai chamar alguma função do sistema operacional tá
requisições do usuário né então tarefas do usuário trabalho em lote tá isso tudo vai gerar processos e depois vou demonstrar aqui para vocês bom para fechar aqui pessoal no Windows né quando um processo é criado é criado o processo pai e o processo filho com o mesmo espaço de endereçamento sempre tá então o espaço de endereçamento né o endereço de memória é o mesmo para o pai para o filho no Linux ou no sistemas baseados em Onix é criado o processo pai é criado o processo filho o filho faz uma cópia do espaço de endereçamento
do processo pai só que o espaço de endereçamento é diferente então existe ali uma diferença e bom né É bem mais seguro ter espaços de endereçamento diferente tá bom é isso ficamos por aqui com essa aula teórica sobre processos na próxima aula eu vou fazer uma demonstração mais prática porque esse assunto realmente é denso tá E daqui para frente a gente vai falar de dreads Beleza então pessoal Muito obrigado e até a próxima