Transcrição do áudio
Pegou um momento de falar sobre comunicação entre processos. Por que? Deixa eu abaixar um pouco o som aqui. Todo o processo, ele precisa naturalmente se comunicar com outros processos. Afinal, tudo em sua máquina trabalha naturalmente em paralelo para alcançar os objetivos do usuário, certo? Então, a comunicação entre processos é algo muito importante. Nós vimos então que nós temos várias formas de nos comunicar. Naturalmente, se fosse um processo, eu falaria assim. Ahahahah. Mas os processos se comunicam por, por exemplo, um arquivo. O que você acha que é aquele seu doc-chiz que você guarda? Algo que um processo escreveu para que um outro processo no futuro possa ler e fazer alguma coisa para você. Um TXT é um arquivo criado por um processo para que outro processo leia no futuro. Naturalmente. Existem também aqueles arquivos que são chamados de pipe. São arquivos especiais de troca de dados entre processos. Aonde o output de um processo é guardado como uma stream, momentaneamente, para input no in de outro processo. Assim como nós também temos os arquivos de comunicação socket, que é uma outra forma de comunicação entre processos, certo? Então, coloquei aqui algumas possibilidades aqui de comunicação entre processos. As comunicações entre os processos, então, o mais bacana que você vai ver aqui, deixa eu pegar um terminal aqui. Ao longo desse curso é esse cara aqui, até o momento. Você não foi ainda além do capítulo 15. Quando você chegar para... Ops, ops, deu algum pipoco de job aqui. Foi mal, galera. Foi mal, apareceu os jobs aqui estranhos, hein. O robô meu tá trabalhando. Eu tenho alguns robôs que trabalham para mim. Então, vamos lá. Então, eu chego aqui e faço, por exemplo, o ps, ps ao x. E aí ele me traz essa lista. Daqui eu quero, naturalmente, passar para outro processo. Então, eu quero criar um arquivo, um pip temporário. Esse arquivo, desculpe, é pipe temporário. Esse arquivo pipe temporário, ele vai entrar, então, no input de um outro processo. Então, como seria... Então, você chegaria aqui, ps ao x, aí você cria um pipe para a entrada no outro processo que se chama Grap, onde ele filtra tudo que é pipe, certo? E aí, então, ele lista. Aconteceu que, momentaneamente, o output desse processo, ele acabou sendo injetado nesse outro processo, por meio de um arquivo. E via terminal, nós conhecemos como esse caractério que chamamos, inclusive, de pipe. Beleza? É apenas uma das formas de troca ditados, ok? Entre os processos. Mas isso local, né? No mesmo núcleo, não sempre do mesmo núcleo, né? Nem... Se você ler o capítulo de multiprocessamento do livro do Tannibal, se temos o Prestes Modernos, você vai ver que ele fala sobre multiprocessamento em múltiplos núcleos e você vai ver que, naturalmente, você tem uma memória compartilhada e ele tem duas formas de jumpar as memórias, os módulos de memória, a avião ômega, não é isso? Crossbar, por exemplo, são as duas. Por exemplo, são as duas, né? E que, então, tem dois núcleos trabalhando na mesma máquina sem nenhum problema. Beleza? Show. Lá vamos nós. Olha que interessante. Se você pegar aqui, coleguinha, essa máquina é essa máquina. Se eu puxar uma outra máquina... Deixa eu pegar uma outra máquina aqui. Essa aqui é uma outra máquina. A gente chama a máquina amarela, a máquina verde. Legal? São duas máquinas completamente diferentes. São dois sistemas operacionais diferentes. Tá? Uma é a máquina aula, a outra é a máquina pessoal. Então, eu não tenho como pegar um PS aqui e jogar para essa outra máquina. O que o pipe ele é. Então, um mecanismo de comunicação, uma forma de me comunicar. Internamente, ali, na própria máquina. Para aí, deixa eu fazer aqui uma mudança aqui nas minhas máquinas. Uma máquina que me chamou atenção aqui. Legal. Para aí. Legal. Beleza. Então, eu não tenho como pegar aqui e jogar o grep para cá. Certo? Não tenho como fazer isso. Com um pipe, mas com um socket. Então, socket é uma forma de você, então... Eu fechei e fechei. É uma forma de você fazer com que um processo de uma máquina se comunique com outra máquina. Bem na ideia de cliente servidor. E você tem uma comunicação na rede, assim como você tem uma comunicação local. É por isso que toda máquina... Acabei fechando, né? Aqui eu fui um vacilão do cara. É por isso que toda máquina, inclusive, você vai encontrar isso aqui. E pedras. Inclusive, galera, é papo para o próximo capítulo. Tá? Próximo capítulo. Você vai encontrar esse loopback aqui. Para que serviços dessa máquina se comuniquem com os serviços dessa máquina. Se também como serviços dessa máquina se comuniquem com serviços de outras máquinas. Teoricamente, socket quando foi projetado foi projetado para sistemas operacionais de serviços. Bom, você viu sobre o zoológico de processador, de sistemas operacionais. E vocês viram também por ali, mais ou menos no capítulo. Tá? Aqui nós temos sistemas operacionais antes, era uma grande sopa de função. Depois passou a ser organizada em camadas, né? Isso, que é praticamente um sistema operacional como Linux ou Unix. E você tem também a possibilidade de um sistema operacional de serviços. Aonde serviço chama serviço. Só que serviço chamar serviço em todo sistema operacional seria muito burocrático. Seria muito difícil isso. Então é melhor você ter um misto, um sistema impressionado em núcleos, com núcleo e camadas. E você ter algum serviço na história, tá? Entre camadas muito distantes. Isso ficou muito bom, tá? Memora compartilhada for que nós vimos variáveis, vimos threads, pipe, vimos fila de mensagens tipo MQ, de mensagens tipo eu subo uma mensagem, um signal, que seria uma mensagem, o signal seria uma mensagem, tá? E socket. Legal? Próximo, a próxima aula eu vou falar sobre top e h top e até mais. Tchau. Agora é só achar minha máquina, que qual é qual. Achei.