Buscar

SISTEMA OPERACIONAIS TEMP 3 -2 COM RESPOSTA DE EXERCICIOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Concorrência e sincronização de 
processos
Apresentação
Um computador executa diversas atividades simultaneamente, 
processos oriundos das mais diversas funcionalidades que essa máquina tão surpreendente é capaz 
de desempenhar. O sistema operacional tem a função de realizar a comunicação entre o hardware e 
as ações que o usuário pode vir a executar em um computador.
Nesta Unidade de Aprendizagem, você vai aprender sobre a sincronização de processos, ou seja, 
aplicações concorrentes. Uma vez que o computador executa diversos processos ao mesmo tempo, 
é importante saber como ele consegue administrar essas atividades. Você vai estudar também 
sobre possíveis problemas acerca do compartilhamento de recursos.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir aplicações concorrentes.•
Discutir a comunicação entre aplicações concorrentes.•
Identificar os problemas de compartilhamento de recursos.•
Desafio
Ao acessar páginas Web, você já notou que, ao longo dos anos, elas passaram a trazer muitos 
contextos diferentes? Antes viam-se apenas textos; hoje, além dos textos, veem-se também 
diversas imagens, vídeos, gifs, dentre outros elementos.
Para solucionar o impasse, você percebe que deve haver a implementação de uma thread para que 
o desempenho da aplicação atenda às demandas do cliente.
Descreva como as várias solicitações da aplicação do cliente serão atendidas pelo seu site.
Infográfico
Conforme Silberschatz (2015), um thread é uma unidade básica de utilização da CPU. É composto 
por um ID de thread, um contador de programa, um conjunto de registradores e uma pilha. Um 
thread compartilha com outros threads pertencentes ao mesmo processo sua seção de código, a 
seção de dados e outros recursos do sistema operacional, como arquivos abertos e sinais.
 
Os threads estão presentes em diversos níveis dentro de um processo. Dessa forma, é importante 
conhecer alguns conceitos de threads de modo usuário, modo kernel e modo híbrido.
Confira no Infográfico a seguir.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/fa2286cd-6e01-4008-996a-80e44c446a8f/5f76f14c-691b-485a-b10d-1b9f54fb0266.png
Conteúdo do livro
Descobrir como um computador opera todas nossas ações diante de suas funcionalidades é genial. 
É impossível sequer imaginar a quantidade de componentes que fazem parte dessa ferramenta, 
todos funcionando de maneira simultânea. Na obra Sistemas operacionais, leia o capítulo 
Concorrência e sincronização de processos, no qual são abordados conceitos acerca dos processos, 
ou seja, o que compõe um processo. Você vai ver como o computador executa diversas atividades 
quase que simultaneamente e como se torna capaz de solucionar nossas necessidades diárias.
Boa leitura.
SISTEMAS 
OPERACIONAIS
Izabelly Soares de 
Morais
Concorrência e 
sincronização de processos
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir aplicações concorrentes.
 � Discutir a comunicação entre aplicações concorrentes.
 � Identificar os problemas de compartilhamento de recursos.
Introdução
Você já se perguntou sobre a composição de um computador? Talvez 
esse questionamento nunca passou por sua cabeça. Isso pode ser por-
que vivemos em um mundo globalizado, onde temos acesso a diversas 
novidades, hoje, quase todas tecnológicas, e esses questionamentos 
acabam sendo escassos. 
Ao falarmos do computador, atualmente, não imaginamos a quanti-
dade de componentes que o compõem. Não podemos deixar de lembrar 
que algum tempo atrás, um componente poderia ocupar um prédio 
inteiro, ou seja, era impossível deslocá-lo de um local para outro. E com-
putadores pessoais nem existiam. A cada lembrança fica mais difícil de 
imaginar como era nessa época, já que hoje podemos notar a presença 
de um componente computacional em um smartphone. 
Neste capítulo, vamos abordar as aplicações concorrentes, bem como 
a comunicação que ocorre entre elas e os contextos que envolvem a 
possibilidade da existência de diversos processos sendo executados ao 
mesmo tempo. Veremos também que, para que isso ocorra de forma 
satisfatória, algumas etapas devem ser executadas conforme a máquina 
em si consiga realizar de forma correta as atividades que lhes foram 
designadas.
Aplicações concorrentes
Antes de falarmos mais precisamente sobre aplicações concorrentes, vamos 
ressaltar alguns conceitos que envolvem esse assunto. Primeiro, quando falamos 
de aplicações, devemos ter em mente que elas se referem aos processos. E o 
que são processos? Podemos ouvir ou ver essa palavra em diversos contextos. 
Aqui, os processos remetem a uma ordenação, uma sequência de operações 
que são executadas pelo processador.
De acordo com Stallings (2010, p. 528), um processo é uma instância de 
um programa executando em um computador. Um processo engloba duas 
características principais:
 � Posse do recurso: um processo inclui um espaço de endereço virtual 
para guardar a imagem do processo; a imagem do processo é coleção de 
programa, dados, pilhas e atributos que definem o processo. De tempos em 
tempos, a um processador pode ser dada a posse (ou controle) de recursos, 
como memória principal, canais de E/S, dispositivos de E/S e arquivos.
 � Escalonamento/execução: a execução de um processo segue um caminho 
de execução (rastro) por um ou mais programas. Essa execução pode ser 
intercalada com a de outros processos. Assim, um processo tem um estado 
de execução (executando, pronto, etc.) e uma prioridade de despacho e 
é a entidade que é escalonada e despachada pelo sistema operacional.
A troca de processos, de acordo com Stallings (2010) é uma operação que 
gera a troca em um processador de um processo para outro, salvando todos 
os dados de controle do processador, registradores e outras informações do 
primeiro, substituindo com informações de processo do segundo.
Conforme Silberschatz, Galvin e Gagne (2015), quando um processo é executado, ele 
muda de estado. O estado de um processo é definido, em parte, pela atividade corrente 
do processo. Um processo pode estar em um dos seguintes estados:
 � Novo: o processo está sendo criado.
 � Em execução: instruções estão sendo executadas.
 � Em espera: o processo está esperando que algum evento ocorra (como a conclusão 
de um I/O ou o recebimento de um sinal).
 � Pronto: o processo está esperando que seja atribuído a um processador.
 � Concluído: o processo terminou sua execução.
Concorrência e sincronização de processos2
Já para Machado e Maia (2017), um processo pode ser entendido ini-
cialmente como um programa em execução, só que seu conceito é mais 
abrangente. Para que a concorrência entre os programas ocorra sem pro-
blemas, é necessário que todas as informações do programa interrompido 
sejam guardadas para que, quando este voltar a ser executado, não lhe 
falte nenhuma informação necessária à continuação do processamento. 
Essas informações são fundamentais para que o sistema operacional possa 
gerenciar a execução concorrente de programas e é a base de qualquer 
ambiente multiprogramável.
O conceito de processo pode ser definido como o conjunto necessário de 
informações para que o sistema operacional implemente a concorrência de 
programas. Sob o ponto de vista do autor, um processo é formado por três 
partes, conhecidas como contexto de hardware, contexto de software e espaço 
de endereçamento, que, juntos, mantêm todas as informações necessárias à 
execução de um programa. Observe a Figura 1 a seguir.
Figura 1. Características da estrutura de um processo.
Fonte: Machado e Maia (2017, p. 66).
3Concorrência e sincronização de processos
A seguir, podemos observar que alguns componentes fazem parte da 
composição de um processo em geral, e que outros são itens de uma thread. 
Observe o Quadro 1, que mostra, na primeira coluna, uma lista comalguns 
itens compartilhados por todas as threads em um processo; a segunda coluna 
mostra alguns itens privativos de cada thread.
Fonte: Adaptado de Tanembaum e Woodhull (2012, p. 79).
Itens por processo Itens por thread
 � Espaço de endereçamento
 � Variáveis globais
 � Arquivos abertos
 � Processos-filho
 � Alarmes pendentes
 � Sinais e rotinas de tratamento de sinal
 � Informações de contabilização
 � Contador de programa
 � Registradores
 � Pilha
 � Estado 
Quadro 1. Itens por processo versus itens por thread
Para Machado e Maia. (2017, p. 45), processos independentes, subprocessos 
e threads são maneiras diferentes de implementar a concorrência dentro de 
uma aplicação. Os autores definem como:
 � O uso de processos independentes é a maneira mais simples de imple-
mentar a concorrência em sistemas multiprogramáveis. Nesse caso, não 
existe vínculo do processo criado com o seu criador. A criação de um 
processo independente exige a alocação de um PCB, tendo contextos de 
hardware, contextos de software e espaços de endereçamento próprios.
 � Subprocessos são processos criados dentro de uma estrutura hierárquica. 
Nesse modo, o processo criador é denominado processo-pai, enquanto o 
novo processo é chamado de subprocesso ou processo-filho. O subpro-
cesso, por sua vez, pode criar outras estruturas de subprocessos. Uma 
característica dessa implementação é a dependência existente entre o 
processo criador e o subprocesso. 
 � O conceito de thread foi introduzido na tentativa de reduzir o tempo 
gasto em criação, eliminação e troca de contexto de processos nas 
aplicações concorrentes, bem como economizar recursos do sistema 
como um todo.
Concorrência e sincronização de processos4
A seguir, veremos um pouco sobre a comunicação entre as aplicações. No 
caso das threads, elas podem se diferenciar conforme a quantidade de processos 
que um programa suporta em seu espaço de endereçamento.
Comunicação entre aplicações concorrentes
Conforme Silberschatz, Galvin e Gagne (2015), thread é uma unidade básica 
de utilização da CPU. É composta por um ID de thread, um contador de pro-
grama, um conjunto de registradores e uma pilha. Uma thread compartilha, 
com outros threads pertencentes ao mesmo processo, sua seção de código, 
a seção de dados e outros recursos do sistema operacional, como arquivos 
abertos e sinais. Um processo tradicional (ou processo pesado) tem uma única 
thread de controle. Se um processo tem múltiplas threads de controle, ele pode 
executar mais de uma tarefa ao mesmo tempo.
Dessa forma, podemos afirmar que a comunicação entre as aplicações 
concorrentes pode ocorrer conforme a necessidade de utilizarmos uma ou mais 
threads por processo. Podemos denominar de monothread, quando o processo 
contém apenas uma única thread, e multithread, quando dentro do mesmo 
processo podemos constar a existência de diversas threads. Veja a Figura 2.
Figura 2. Processos com uma única thread e com múltiplas threads.
Fonte: Silberschatz, Galvin e Gagne (2015).
5Concorrência e sincronização de processos
Monothread
Para Machado e Maia (2017), um programa é uma sequência de instruções, 
composta por desvios, repetições e chamadas a procedimentos e funções. Em um 
ambiente monothread, um processo suporta apenas um programa no seu espaço 
de endereçamento. Nesse ambiente, aplicações concorrentes são implementadas 
apenas com o uso de múltiplos processos independentes ou subprocessos.
A utilização de processos independentes e subprocessos permite dividir 
uma aplicação em partes que podem trabalhar de forma concorrente. Um 
exemplo do uso de concorrência pode ser encontrado nas aplicações com 
interface gráfica, como em um software de gerenciamento de e-mails. Nesse 
ambiente, um usuário pode estar lendo suas mensagens antigas ao mesmo 
tempo que pode estar enviando e-mails e recebendo novas mensagens. Com 
o uso de múltiplos processos, cada funcionalidade do software implicaria a 
criação de um novo processo para atendê-la, aumentando o desempenho da 
aplicação. O problema nesse tipo de implementação é que o uso de processos 
no desenvolvimento de aplicações concorrentes demanda consumo de diversos 
recursos do sistema. Sempre que um novo processo é criado, o sistema deve 
alocar recursos para cada processo, consumindo tempo de processador nesse 
trabalho. No caso do término do processo, o sistema dispensa tempo para 
desalocar recursos previamente alocados (MACHADO; MAIA, 2017).
Multithread
Conforme Tanembaum e Woodhull (2012), quando múltiplas threads estão 
presentes no mesmo espaço de endereçamento, alguns pontos fazem com 
que seja necessária uma tabela de segmentos separada, com uma entrada por 
thread. Entre os itens por thread estão o contador de programa, os registra-
dores e o estado. O contador de programa é necessário porque, assim como 
os processos, as threads podem ser suspensas e retomadas. Os registradores 
são necessários porque quando as threads são suspensas, seus registradores 
devem ser salvos. Finalmente, assim como os processos, as threads podem 
estar no estado em execução, pronto ou bloqueado.
No ambiente multithread, cada processo pode responder a várias solicitações 
concorrentemente ou mesmo simultaneamente, caso haja mais de um proces-
sador. A grande vantagem no uso de threads é a possibilidade de minimizar 
a alocação de recursos do sistema, além de diminuir o overhead na criação, 
troca e eliminação de processos. Threads compartilham o processador da 
mesma maneira que processos e passam pelas mesmas mudanças de estado 
Concorrência e sincronização de processos6
(execução, espera e pronto). Por exemplo, enquanto uma thread espera por uma 
operação de E/S, outra thread pode ser executada (MACHADO; MAIA, 2017).
A grande diferença entre aplicações monothread e multithread está no uso do 
espaço de endereçamento. Processos independentes e subprocessos têm espaços 
de endereçamento individuais e protegidos, enquanto threads compartilham o 
espaço dentro de um mesmo processo. Essa característica permite que o com-
partilhamento de dados entre threads de um mesmo processo seja mais simples 
e rápido, se comparado a ambientes monothread (MACHADO; MAIA, 2017).
Particularidades do compartilhamento de 
recursos
Uma thread tem um contador de programa que controla qual instrução vai ser 
executada. Ela tem registradores, os quais contêm suas variáveis de trabalho 
correntes. Tem uma pilha, que contém o histórico de execução, com um bloco 
para cada função chamada, mas das quais ainda não houve retorno. Embora 
uma thread deva ser executada em algum processo, a thread e o seu processo 
são conceitos diferentes e podem ser tratados separadamente. Os processos 
são usados para agrupar recursos; as threads são as entidades programadas 
para execução na CPU (TANEMBAUM;WOODHULL, 2012).
Porém, o problema desse tipo de implementação, conforme Machado e 
Maia (2017), é que o uso de processos no desenvolvimento de aplicações 
concorrentes demanda consumo de diversos recursos do sistema. Sempre 
que um novo processo é criado, o sistema deve alocar recursos para cada 
processo, consumindo tempo de processador nesse trabalho. No caso do 
término do processo, o sistema dispensa tempo para desalocar recursos 
previamente alocados. Outro problema a ser considerado é quanto ao com-
partilhamento do espaço de endereçamento. Como cada processo tem seu 
próprio espaço de endereçamento, a comunicação entre processos torna-se 
difícil e lenta, pois utiliza mecanismos como pipes, sinais, semáforos, memó-
ria compartilhada ou troca de mensagens. Além disso, o compartilhamento 
de recursos comuns aos processos concorrentes, como memória e arquivos 
abertos, não é simples. 
Silberschatz, Galvin e Gagne (2015) diz que os benefícios da programação 
com múltiplos threads podem ser divididos em quatro categorias principais:
1. Capacidade de resposta: tornar uma aplicação interativa multithread 
pode permitir que um programa continue a ser executado, mesmo que 
7Concorrência esincronização de processos
parte dele esteja bloqueado ou executando uma operação demorada, o 
que aumenta a capacidade de resposta para o usuário. 
2. Compartilhamento de recursos: os processos só podem compartilhar 
recursos por meio de técnicas como memória compartilhada e transmis-
são de mensagens. Essas técnicas devem ser organizadas explicitamente 
pelo programador. No entanto, por default, os threads compartilham 
a memória e os recursos do processo ao qual pertencem. O benefício 
de compartilhar código e dados é que isso permite que uma aplicação 
tenha múltiplas threads de atividade diferentes dentro do mesmo espaço 
de endereçamento.
3. Economia: a alocação de memória e recursos para a criação de pro-
cessos é dispendiosa. Já que os threads compartilham os recursos do 
processo ao qual pertencem, é mais econômico criar threads e permutar 
seus contextos. 
4. Escalabilidade: os benefícios da criação de múltiplas threads podem ser 
ainda maiores em uma arquitetura multiprocessadora, em que as threads 
possam ser executadas em paralelo em diferentes núcleos de processa-
mento. Um processo com uma única thread só pode ser executado em 
um processador, independentemente de quantos estiverem disponíveis. 
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 5. ed. Rio de Janeiro: 
LTC, 2017. 
SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. 
ed. Rio de Janeiro: LTC, 2015. 
STALLINGS, W. Arquitetura e organização de computadores. 8. ed. São Paulo: Pretice 
Hall, 2010.
TANEMBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projeto e implementação. 
3. ed. Porto Alegre: Bookman, 2012. 
Leituras recomendadas
DELGADO, J.; RIBEIRO, C. Arquitetura de computadores. 5. ed. Rio de Janeiro: LTC, 2017.
PAIXÃO, R. R. Arquitetura de computadores: PCs. São Paulo: Érica, 2014.
TANENBAUM, A. S.; AUSTIN, T. Organização estruturada de computadores. São Paulo: 
Pearson Prentice Hall, 2013.
Concorrência e sincronização de processos8
Conteúdo:
 
Dica do professor
A gerência de processos é uma atividade muito importante para o funcionamento computacional. 
Assim, os sinais são utilizados para notificar processos oriundos do próprio sistema operacional.
Confira na Dica do Professor alguns conceitos acerca do tema.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/43b4556929c18977f5787b251370a9fb
Exercícios
1) Ao serem salvos, todos os dados de controle do processador, registradores e outras 
informações do primeiro são substituídas por informações de processo do segundo. Esses 
conceitos são referentes a qual tipo de ação?
A) Troca de processos.
B) Criação de threads.
C) Threads.
D) Troca de registradores.
E) Troca de programas.
2) Um processo é formado por três partes fundamentais, as quais são capazes de, juntas, 
manter as informações necessárias para a execução de um programa. Assinale a alternativa 
que apresenta essas três partes.
A) Contexto de hardware, tempo de processador e espaço de endereçamento.
B) Espaço de endereçamento, contexto de hardware e contexto de software.
C) Registrador de PC, registrador de status e tempo de processador.
D) Quotas, privilégios e tempo de processador.
E) Registradores, contexto de software e registrador de status.
3) Quando um processo tem apenas um programa em seu espaço de endereçamento, estamos 
nos referindo a qual tipo de ambiente de atuação de uma thread?
A) Multithread.
B) Troca de processos.
C) Monothread.
D) Troca de contexto.
E) Troca de registradores.
4) Em um processo, podemos localizar diversas informações. Um processo é composto por 
código, dados e arquivos e, em determinadas situações, haverá momentos em que teremos 
diversos registradores e pilhas agindo no mesmo processo. Assinale a seguir a alternativa 
que apresenta o conceito referente a esse contexto.
A) Registrador de PC.
B) Tempo de processador.
C) Contexto de software.
D) Monothread.
E) Multithread.
5) Assinale a alternativa que apresenta o conceito implantado com o objetivo de reduzir o uso 
de recursos do sistema e o tempo gasto em criação de contexto de processos nas aplicações.
 
A) Thread.
B) Contexto de hardware.
C) Contexto de software.
D) Espaço de endereçamento.
E) Registrador de status.
Na prática
Mal sabemos que, ao utilizarmos o computador, estamos quase que simultaneamente criando 
diversas threads e, assim, executando diversos processos. Pois bem, cada atividade desempenhada 
em um computador requer o processamento de diversas informações e, consequentemente, a 
organização completa do modo como tudo isso deve acontecer. Confira na prática como threads 
podem ser criadas por meio da programação dos computadores com a linguagem Java. 
 
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/9d408302-b356-44a1-a7f5-d20d72aff078/23dae5f1-49ce-42df-995c-bcd672e43feb.jpg
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Sincronização e comunicação entre processos
Assista ao vídeo para conhecer um pouco sobre a sincronização e a comunicação entre processos. 
A possibilidade de execução simultânea de mais de um processo faz com que o computador 
disponibilize diversos comportamentos possíveis diante desse contexto.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Sincronização de processos
Assista ao vídeo para conferir na prática como pode ser programada a sincronização, que 
corresponde à possibilidade de um processo ser executado quase que simultaneamente a outro, 
caso em que o computador deve aplicar métodos para permitir e organizar a execução dos 
processos.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Threads e sincronização e comunicação entre processos
Assista ao vídeo para compreender mais sobre a thread, que pode ser considerada um programa 
que permite a divisão de um processo em diversos outros subprocessos, além de permitir 
aplicações concorrentes e compartilhamento de recursos pelo mesmo processo.
https://www.youtube.com/embed/bRAEToyq3mg
https://www.youtube.com/embed/txK7TN7d9kI
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/NucqOdjrprg

Continue navegando