You are on page 1of 64

Captulo 2: Estruturas dos sistemas

de computao

Operao do sistema de computao


Estrutura de E/S
Estrutura de armazenamento
Hierarquia de armazenamento
Proteo de hardware
Estrutura de Rede

2.1 Operao do sistema de


computao

Barramento do sistema

CPU e dispositivos

Conecta CPU + controladores de dispositivos


Proporciona acesso memria
Trabalham de forma concorrente
Competem pelo acesso memria

Acesso memria

Coordenado pelo controlador de memria

Responsvel por ordenar e sincronizar o acesso

2.1 Operao do sistema de


computao
Sistema de computao
moderno

2.1 Operao do sistema de


computao

Inicializao do sistema

Programa inicial (bootstrap) carregado

Normalmente armazenado em memria de leitura ROM ou EEPROM


Inicializa sistema bsico: registradores, controladores de dispositvos,
contedo da memria
Aloca memria, carrega e inicia a execuo do sistema operacional

Exemplo (Linux)
1.
2.

3.

4.

5.

O processador executa cdigo da BIOS


BIOS conhece dispositivos bootveis e carrega o programa de primeiro
estgio de boot
Programa de primeiro estgio de boot pequeno (512k) e carrega
programa do 2o estgio
Programa do 2o estgio (GRUB, LILO) possui sistema de arquivos bsico e
localiza, carrega, descomprime e executa o kernel
Kernel carrega primeiro processo de usurio (inicializador de processos):
init

2.1 Operao do sistema de


computao

SO aguarda a ocorrncia de eventos

Em geral, ocorrncia de interrupes

Interrupes

Hardware

Software

Sinal enviado (a qualquer tempo) CPU atravs do barramento


Execuo de uma operao especial, como uma chamada ao
sistema operacional

SOs atuais

Dirigidos por interrupo

Inativos enquanto no houver processos em execuo, E/S para


atender

2.1 Operao do sistema de


computao

Enventos tratados pelo SO

Interrupes
Excees

Interrupo causada por:

Erro durante execuo (Ex.: diviso por zero ou acesso invlido


memria)
Solicitao especfica de um programa tratada pelo SO

Para cada tipo de interrupo

So executadas rotinas de servio especficas do SO

2.1 Operao do sistema de


computao

Quando a CPU interrompida...

Bloqueia trabalho atual


Transfere imediatamente a execuo para uma localizao
fixa
Essa localizao contm endereo da rotina de servio da
interrupo
Rotina de servio executada
CPU retoma execuo interrompida

2.1 Operao do sistema de


computao
Linha de tempo da execuo de uma
interrupo

2.1 Operao do sistema de


computao

Mecanismo de interrupes

Dependente de arquitetura
Diversas caractersticas comuns

Interrupo deve tranferir execuo para rotina de servio

Rotina de servio poderia examinar informaes sobre interrupo


Aps exame, chamar manipulador especfico
Isso lento, tendo em vista que interrupes so freqentes e devem
ser tratadas de forma eficiente

Implementao eficiente de interrupes

Interrupes so restritas e em quantidade fixa: numeradas


Usa-se um vetor de ponteiros para rotinas: vetor de interrupes
A rotina de tratamento chamada diretamente: atravs do
nmero da interrupo

2.1 Operao do sistema de


computao

Antes de executar rotina de servio de interrupo

Deve-se salvar o endereo da instruo interrompida na


pilha
Quando interrupo altera o estado do processador

Deve-se salvar todo um contexto da execuo atual

Valores de registradores, endereo da instruo atual

Contexto salvo na pilha

Aps o trmino da interrupo

Contexto restaurado
Execuo continuada

2.1 Operao do sistema de


computao

Chamada ao sistema

Mtodo usado para um processo solicitar aes ao sistema


operacional

Ex.: escrita em dispositivo de vdeo, acesso a arquivos, acesso


rede, criao de novos processos, etc.

So numeradas e tambm utilizado vetor indexado


Podem ser invocadas atravs de uma instuo especfica: ex.:
int 0x80 + valor de registradores

Demonstrao grfica

Fonte: http://escreveassim.com.br/2012/10/15/voce-sabe-o-que-e-sistema-operacional-p2/

2.2 Estrutura de E/S

Os dispositivos de E/S e a CPU executam simultaneamente


Cada controlador de dispositivo responsvel por um tipo de
dispositivo especfico

Cada controlador possui

Pode haver mais de um dispositivo conectado (ex.: controlador SCSI,


IDE)
Buffer local: dados
Conjunto de registradores: operaes

A CPU transfere dados entre a memria principal e os buffers locais


A E/S ocorre do dispositivo para o buffer local do controlador
O controlador de dispositivo informa CPU que sua operao est
terminada atravs de uma interrupo

2.2.1 Interrupes de E/S

Incio de operao de E/S

CPU carrega registradores do controlador do dispositivo + buffer, se


necessrio
Controlador examina registradores para verificar tipo da solicitao
Controlador d incio transferncia de dados
Completada a transferncia, informa a CPU atravs de uma
interrupo

E/S pode ser

Sncrona: processo solicita E/S e aguarda resultado para continuar


execuo
Assncrona: processo continua execuo aps solicitar E/S, sem
esperar pelo final da operao

2.2.1 Interrupes de E/S


E/S sncrona e
assncrona

2.2.1 Interrupes de E/S

Espera pelo final da E/S

Instruo especial wait

Mquinas sem wait

CPU fica em estado de espera at a prxima interrupo


Ficam executando um loop de espera

Se CPU esperar pelo trmino de E/S

S haver uma E/S pendente


Quando E/S terminar, o SO saber exatamente qual dispositivo
interrompeu
E/S concorrentes no possvel e execuo tambm fica parada

Recursos so mal aproveitados

2.2.1 Interrupes de E/S

Melhoria 1

Iniciar E/S
Continuar execuo do SO ou processo at o trmino
Nesse caso:

necessrio que o programa faa uma chamada ao sistema


Permite o processo aguardar at o final da E/S, se necessrio
O SO pode executar outro processo enquanto o anterior aguarda pela E/S

Melhoria 2

Executar vrias requisies de E/S ao mesmo tempo


SO mantm tabela de estado de dispositivo

Cada entrada da tabela: tipo de dispositivo, endereo e estado (parado,


ocioso, ocupado)
Dispositivo ocupado pode ter uma fila de espera na tabela

2.2.1 Interrupes de E/S


Tabela de estado de
dispositivo

2.2.1 Interrupes de E/S

Com essa melhoria...


1.
2.
3.
4.

5.
6.

Dispositivo gera interrupo


SO identifica qual dispositivo gerou interrupo
SO indexa a tabela pelo nmero do dispositivo
SO altera entrada da tabela para refletir o atendimento da
interrupo gerada. Em geral, a interrupo o fim de uma
operao
Se houver solicitaes na fila, SO atende prxima
SO retorna rotina/processo em execuo

2.2.1 Interrupes de E/S

Interrupes podem ser geradas antes de serem


requeridas

Ex.: teclado gera interrupes (teclas pressionada)

Se esse caso for permitido (pr-digitao), SO deve manter


buffer para guardar caracteres

s vezes, nenhum programa solicitou leitura do teclado

Se algum programa solicitar leitura, SO busca primeiro no buffer

E/S assncrono

Pode haver CPU executando um processo e diversos


dispositivos trabalhando para diferentes processos
Maior eficincia

2.2.2 Estrutura de DMA

Problema

Dispositivos de E/S podem ser muito lentos em relao CPU


(ex.: teclado)
CPU no pode ficar aguardando recebimento de dados a baixa
velocidade: desperdcio de recursos

Interrupo de E/S lenta pode ter prioridade baixa

Interrupo podem precisar esperar por outras prioritrias


Interrupo pode ser suspensa para tratar outra de maior prioridade

Dispositivos de E/S podem ser rpidos tanto quanto a memria


(ex.: disco, rede, etc.)

Dispositivo interromper muito CPU


Faltar tempo para executar processos

2.2.2 Estrutura de DMA

Para resolver esse problema...


DMA (Direct Memory Access)

Usado por dispositivos de alta velocidade


1.
2.

3.

Controlador do dispositivo posiciona buffers, ponteiros e contadores


Controlador transfere bloco de dados diretamente memria (sem
solicitar nada CPU)
Ao final, controlador gera apenas uma interrupo que tratada
pela CPU

Apenas 1 interrupo gerada por bloco, ao invs de 1 a cada


byte ou palavra: CPU gasta muito menos tempo processando
Interrupes de dispositivos lentos podem continuar sendo
tratadas por byte ou palavra

2.2.2 Estrutura de DMA

Operao da CPU com DMA


1.
2.

3.

4.

5.

6.

Processo solicita ao SO transferncia de dados


SO providencia uma buffer de tamanho 128 a 4096 bytes
(depende do tipo de dispositivo)
Parte do SO posiciona registradores de controle do DMA para
realizar a operao: driver de dispositivo
Controlador de DMA fica instrudo a realizar E/S: enquando
E/S ocorre, CPU fica livre
DMA precisa acessar a memria para transferir dados em
palavras: concorre com a CPU em relao memria (algum
retardo para CPU durante E/S)
Controlador de DMA interrompe CPU ao final da E/S

2.3 Estrutura de armazenamento

Programas devem estar na memria principal (MP)


para serem executados
CPU s pode acessar diretamente MP
MP do tipo RAM

Vetor de palavras de memria


Cada palavra tem endereo prprio
Acesso feito atravs de instrues load/store para
endereos de memria

Load: move palavra da MP para registrador na CPU


Store: move palavra de registrador para MP

CPU tambm carrega automaticamente instrues da MP


para executar programas

2.3 Estrutura de armazenamento

Mquina de von Neumann

Memria
Unidade lgica e aritmtica (ALU)
CPU

Registradores diversos

Unidade de controle: controlar execuo

De acordo com essa mquina, o ciclo de execuo/instuo


1.

2.
3.

4.
5.

Prxima instruo buscada na MP e armazenada em registrador


de instruo (IR)
Instruo decodificada: pode necessitar de operandos na MP
Operandos so buscados na MP e armazenados em registradores
de dados, se necessrio
Instruo executada com operandos
Retorno de resultado pode ser retornado MP ou em registrador
especfico

2.3 Estrutura de armazenamento

Idealmente programas e dados devem estar sempre e


integralmente na MP: isso no possvel

MP pequena para armazenar todos programas/dados (Ex.:


PostgreSQL operando BD de 5TB)
MP voltil: perde seu contedo quando a energia
interrompida

Soluo: uso de memria secundria

Espcie de extenso ad MP
Exigncias: deve ser grande e no voltil (persistente)
Dispositivo mais comum: disco magntico

Programas so armazenados em disco


Processos usam disco como fonte/destino de dados
necessrio um gerenciamento entre MP/disco (Cap. 14)

2.3 Estrutura de armazenamento

Diferentes sistemas de armazenamento existem

Motivos: preo, velocidade, tamanho, volatilidade,


confiabilidade

Outros sistemas de armazenamento

Memria cache: rpida, cara, pequena, intermediria


CD-ROM: leitura de grande volume de dados (mais lento
que disco)
Fitas magnticas: armazenamento de enorme quantidade
de dados (seqenciais e lentas: backup)

2.3.1 Memria principal

MP e registradores

nicas reas acessveis diretamente pela CPU


Instrues podem usar endereos de MP, mas no de disco!
Dessa forma

Instruo e todos seus dados devem estar na MP no momento


da execuo

Dados devem ser movidos antes para MP se l no estiverem

Acesso conveniente a dispositivos de E/S

E/S mapeado da memria: intervalos de endereos de memria


so mapeados em registradores de dispositivos

Interessante quando dispositivo de E/S responde rpido:


controlador de vdeo

2.3.1 Memria principal

Exemplo de mapeamento de E/S: vdeo

Pores da tela so mapeadas em posies da MP


Mostrar o texto na tela basicamente escrever na MP nas posies
mapeadas
Controlador do vdeo l MP e exibe no vdeo o resultado

Portas seriais e paralelas podem usar E/S mapeada

CPU faz E/S lendo e gravando em registradores de dispositivos


chamados portas de E/S
MP contm dados e CPU programa registrador de controle para
transferir byte
Dispositivo transfere byte e limpa registrador de controle: pronto
para prxima transferncia

ou CPU confere constantemente registrador de controle: E/S programada


(PIO)
ou CPU interrompida quando E/S termina: E/S dirigida por interrupo

2.3.1 Memria principal

Registradores da CPU

Embutidos no chip
Acessveis dentro de um ciclo de relgio da CPU
CPU pode decodificar mais de uma instruo/realizar operao
por ciclo de CPU

Memria principal no to rpida quanto registradors

acessvel atravs do barramento de memria


O acesso pode levar vrios ciclos de CPU

Processador aguarda enquanto dados de instruo so buscados na


MP
Perda de desempenho intolervel: MP muito acessada
Soluo: memria cache

Memria que serve de buffer rpido para dados constantemente


acessados

2.3.2 Discos magnticos

Principais estruturas de memria secundria


Consiste de:

Bandeja do disco: forma circular, como um CD

Cabeote de leitura/gravao: fica perto de uma superfcie


da bandeja

Superfcies da bandeja possuem material magntico


Dados so representados magneticamente nas bandejas

So fixados em um brao

Superfcie de bandeja dividida em trilhas circulares

Trilhas so subdividas em setores


Conjunto de trilhas em uma mesma posio de brao: cilindro
(todas as bandejas)

2.3.2 Discos magnticos

2.3.2 Discos magnticos

Um disco pode ter

Milhares de cilindros concntricos


Trilhas com centenas de setores

Tamanho medido em GB
Quando em uso: disco gira rapidamente
Velocidade do disco est associada a:

Taxa de transferncia: taxa em que dados fluem de/para disco


Tempo de busca: tempo para mover brao at cilindro
Latncia rotacional: tempo para setor rotacionar at cabeote
Tempo de posicionamento: tempo de busca + latncia
rotacional

2.3.2 Discos magnticos

Taxa de transferncia: medida em MB/s


Cabeote pode colidir com superfcie do disco

Discos podem ser removveis

Em caso de queda de equipamento


Superfcie danificada, no recupervel
Uso de bandejas ou gavetas
Podem ser hot swap: removidos/inseridos sem desligar
equipamento

Discos podem ser flexveis

Parecido com rgidos


Atualmente em desuso

2.3.2 Discos magnticos

Conexo entre disco/computador

Transferncia no barramento

Atravs de um conjunto de cabos: barramento de E/S


Diversos tipos de barramento disponveis: IDE, SATA, SCSI
Atravs de processadores eletrnicos: controladores do
disco

Tipos de controladores

Controlador hospedeiro: localizado no lado do computador


Controlador de disco: embutido em cada drive de disco

2.3.2 Discos magnticos

Exemplo de computador solicitando E/S


1.

2.

3.

4.

Controlador hospedeiro recebe comando atravs de portas


de E/S mapeadas na memria
Controlador hospedeiro envia comando ao controlador de
disco atravs do barramento
Controlador de disco opera hardware do drive: usualmente
possuem cache (buffer)
Transferncia ocorre entre buffer e a superfcie do disco

Transferncias ocorrem entre buffer e controlador


hospedeiro rapidamente

2.3.3 Fitas magnticas

Usadas inicialmente como um meio de


armazenamento secundrio
Propriedades

Boa permanncia (persisncia)


Armazena grande volume de dados
Acesso muito lento
Utilizadas hoje para backup/informao com pouca freqncia
Posicionamento em ponto correto de leitura/escrita da fita
pode ser muito lento (minutos)

Aps esse posicionamento, a leitura/escrita pode ser


razoavelmente rpida

2.4 Hierarquia de armazenamento

Existe uma variedade de sistemas de


armazenamento

Hierarquia de armazenamento

Memria principal, disco magntico, fita, registradores, etc.


De acordo com custo e velocidade
Nvel superior: registradores (muito rpidos e muito caros)
...
Nvel inferior: fitas magnticas (muito lentas e baratas)

Custo/velocidade no tudo...

Volatilidade

2.4 Hierarquia de armazenamento

2.4 Hierarquia de armazenamento

Projeto de um sistema de memria/armazenamento

Deve levar em conta todos aspectos: custo, velocidade,


tamanho
Usar memria rpida o quanto for necessrio: cara
Usar memria voltil e barata sempre que for possvel
Usar memrias intermedirias (cache)

Diminuir disparidades
Melhorar desempenho

2.4.1 Armazenamento em caches


(caching)

Caching: princpio importante (muito usado)

Informao encontra-se em algum sistema de


armazenamento (MP)
Conforme utilizao, informao levada para memria
cache

Sistema de armazenamento mais rpido

Busca da informao
1.
2.
3.

Verifica-se se ela est na memria cache


Se estiver, acessada (rapidamente)
Caso contrrio, busca-se na MP e copia-se para cache

Supe-se que ser em breve utilizada novamente

2.4.1 Armazenamento em caches


(caching)

Alguns registradores de ndice funcionam como


espcie de cache

Programador decide qual informao estar nesses


registradores

Sistemas de cache implementados em hardware

Cache de instrues: usado na maioria das arquiteturas

Prximas instrues so carregadas para cache

Evita alguns acessos MP

Cache de dados: tambm muito utilizado


Como esto totalmente implementados em hardware
(inclusive algoritmos)

Fora de controle do SO: questo de arquitetura

2.4.1 Armazenamento em caches


(caching)

Caches tm tamanho limitado

Gerenciamento o maior problema do projeto

Tamanho do cache e poltica de alocao: uma boa escolha


pode alcanar 80% a 99% de acesso ao cache com sucesso
Diversos algoritmos de realocao podem ser controlados por
software (Cap. 10)

Memria cache relativa

MP pode ser cache para memria secundria

Dados podem ser alocados na MP e disponibilizados para


futuros acessos

SO mantm um cache na MP de dados de arquivos

Disco pode ser cache para fita, etc.

2.4.2 Coerncia e consistncia

Mesmo dado pode estar em diferentes nveis da hierarquia de


armazenamento

Arquivo em disco, parcialmente em MP, parcialmente em cache,


algumas informaes em registradores

Registrador operado e dado muda de valor

Problema: como manter a coerncia/consistncia?

2.4.2 Coerncia e consistncia

SO que executa s um processo por vez

Fcil de controlar

Usa-se dado o quanto necessrio no nvel mais alto da


hierarquia
Ao final, guarda-se o dado no nvel mais inferior, mantendo
consistncia

Ambiente multitarefa

Processos so comutados a todo tempo


Vrios processos podem acessar os mesmos dados
Deve-se ter muito cuidado para manter consistncia

Processos devem sempre ter acesso ao dado mais recente

2.4.2 Coerncia e consistncia

Ambiente multiprocessador

Problema maior ainda: registradores e caches tambm so


separadas

Coerncia de cache

Sistema de atualizao por hardware dos demais caches

Ambiente distribudo

Maior complexidade

Pode haver vrias cpias do mesmo arquivo


H vrios computadores separados
Os acessos a cpias de arquivos necessitam de consistncia

Discusso do assunto no Cap 16.

2.5 Proteo de hardware

Inicialmente sistemas eram monousurios

Operados pelo programador: sem problemas

Multiprogramao

Compartilhamento de recursos
Vrios programas na memria ao mesmo tempo
Surgimento de problemas

Erro de um processo pode afetar os demais

Ex: alterao de dados de outro processo/SO

SO deve assegurar proteo

Um programa incorreto no deve atrapalhar outros

2.5 Proteo de hardware

Muitos erros so identificados pelo hardware

Tentativa de executar instruo ilegal


Acesso memria fora do espao de endereamento do
usurio

Nesses casos

Hardware gera exceo para SO


SO trata exceo

Processo terminado
gerado cdigo ou mensagem de erro
A imagem do processo pode ser gravada em arquivo: debug

2.5.1 Operao em modo dual

Execuo de instrues ocorre em duas


modalidades

Modalidade usurio
Modalidade sistema (ou privilegiada/supervisor/monitor)

Hardware

Utiliza 1 bit para indicar modalidade corrente

Valor: sistema (0) ou usurio (1)

Permite distinguir instrues executveis por usurios e


pelo SO

Durante inicializao do sistema: hardware em


modo sistema

2.5.1 Operao em modo dual

SO opera em modo sistema


Processos so executados em modo usurio
Quando ocorre interrupo/exceo

Hardware troca modalidade de usurio para sistema


SO trata interrupo/exceo
SO sempre troca modalidade para usurio antes de passar
a execuo para um processo

Modo dual permite identificar processos com erro e


proteger restante do sistema

2.5.1 Operao em modo dual

Algumas instrues s so executadas em modo


sistema

Instrues privilegiadas
Se um processo tentar executar
1.
2.
3.

Hardware no executa
gerada uma exceo para SO
SO toma providncias necessrias

Um processo pode requisitar execuo de tarefas


que necessitem de instrues privilegiadas

Nesse caso, SO disponibiliza interface: chamadas ao


sistema

2.5.1 Operao em modo dual

Execuo de chamada ao sistema


1.

2.
3.
4.

5.

6.

Processo faz chamada ao sistema atravs da execuo de


instruo especial
Hardware trata instruo como interrupo de software
O bit de modalidade passa a ser sistema
O controle passado para a rotina de tratamento de
interrupo do SO atravs do vetor de interrupes
O SO determina o tipo de chamada ao sistema e faz a
execuo de sua rotina especfica
O SO retorna a execuo da prxima instruo do
processo com o bit de modalidade usurio (1)

2.5.1 Operao em modo dual

Ausncia do modo dual

Pode causar srias falhas em um SO

MS-DOS

Escrito para arquitetura Intel 8088 (sem modo dual)


Um programa de usurio pode desativar SO

Ex.: Reescrevendo dados do SO

Arquiteturas mais recentes (Pentium e similares)

Implementam modo dual


SOs: Linux, MS Windows 2000, IBM OS/2, Mac OS X

Utilizam caracterstica e implementam proteo

2.5.2 Proteo de E/S

Programa pode corromper operao normal do sistema

Emitir instrues de E/S ilegais


Acesso a localizaes de memria dentro do SO
Recusar-se de deixar a CPU

Alguns mecanismos so usados para que esses


problemas no ocorram

Para evitar E/S ilegal: todas instrues de E/S so privilegiadas

Assim, E/S s permitida atravs do SO

SO no permite alterao de seus dados


Retorno execuo do processo s se d no modo usurio

2.5.2 Proteo de E/S

Chamada
ao
sistema
para E/S

2.5.3 Proteo de memria

Pores de memria devem ser protegidas

Partes do SO (vetor de interrupes, rotinas de servio)


Acesso a dados/cdigo de outros processos
Proteo: fornecida por hardware usada pelo SO

Como isolar espao de memria de cada programa?

Hardware: fornece 2 registradores

Registrador base: contm o menor endereo fsico de memria


autorizado
Registrador limite: contm o tamanho do intervalo de endereos
autorizados

2.5.3 Proteo de memria


Proteo com registradores base e
limite

2.5.3 Proteo de memria

Proteo garantida atravs de verificao de


endereos em modo usurio
CPU em modo usurio

Toda tentativa de acesso memria resulta em exceo


Tratamento da exceo: verificao do endereo

Resulta em acesso (se endereo for vlido)


Ou Resulta em erro fatal (no caso de endereo invlido)

Registradores base e limite

S podem ser alterados em modo sistema

Atravs de instrues privilegiadas

SO altera valores quando novo processo ganha CPU

2.5.3 Proteo de memria


Verificao de
endereos

2.5.4 Proteo da CPU

Alm de proteger E/S e memria...


Deve-se proteger CPU

Processo no pode usar CPU indefinidamente

Proteo da CPU

Hardware: prov um timer


Timer interrompe CPU aps um tempo fixo (Ex.: a cada 10
ms)
Timer varivel: SO especifica o tempo em contador

Contador decrementado em determinados pulsos de relgio


Quando contador atinge 0, ocorre interrupo

2.5.4 Proteo da CPU

Interrupo da CPU via timer

Possibilita SO ser acionado para trocar o processo que est


na CPU, por exemplo
Aps tratar interrupo, SO ajusta novamente contador
(timer)

Instrues para modificar operao do timer so


privilegiadas
Uso do timer

Bastante freqente em SO de tempo compartilhado


Usado tambm para atualizar relgio (data/hora) do sistema

2.6 Estrutura de rede

Existem basicamente dois tipos de rede

Redes LAN

LAN (Local Area Networks): redes locais


WAN (Wide Area Networks): redes de longa distncia
Pequena abrangncia geogrfica (1 prdio)
Alto compartilhamento de recursos locais (impressora,
arquivos)
Links comuns usam: par tranado, fibra tica, wireless

Redes WAN

Longa abrangncia (alcance mundial)


Tecnologias: linhas dedicadas, comunicao via satlite
Uso de roteadores: encaminham pacotes para correto destino

2.6.1 Redes locais


Rede
local

2.6.1 Redes de longa distncia


Rede de longa
distncia

You might also like