ufabc SO Aula10 Gerenciamento de Arquivos [Modo de...

56
Sistemas Operacionais BC 1518 - Sistemas Operacionais Sistema de Arquivos Sistema de Arquivos 1 Sistema de Arquivos Sistema de Arquivos (aula 10 - Parte1) Prof. Marcelo Z. do Nascimento Prof. Marcelo Z. do Nascimento [email protected]

Transcript of ufabc SO Aula10 Gerenciamento de Arquivos [Modo de...

Sistemas Operacionais

BC 1518 - Sistemas Operacionais

Sistema de ArquivosSistema de Arquivos

1

Sistema de ArquivosSistema de Arquivos(aula 10 - Parte1)

Prof. Marcelo Z. do NascimentoProf. Marcelo Z. do [email protected]

Sistemas Operacionais Roteiro

• Introdução

• Arquivos

• Atributos de Arquivos

• Extensão de Arquivos

2

• Operações de Arquivos

• Diretórios

• Gerência de Alocação de Espaço em Disco

• Leituras Sugeridas

• Exercícios

Sistemas Operacionais Introdução

• Um processo pode armazenar uma quantidade limitada de informações dentro de seu próprio espaço de endereçamento;

• Tem capacidade restrita ao tamanho do espaço de endereçamento virtual;

• Quando o processo termina, a informação é

3

• Quando o processo termina, a informação é perdida?

• Quando múltiplos processos precisam acessar à informação?

• O SO abstrai do conceito de processador para criar a abstração de um processo e abstrai o conceito de memória física para oferecer ao processo o espaço de endereçamento (virtual).

Sistemas Operacionais Introdução

• Um processo deve ser capaz de ler e gravar grandevolume de dados em dispositivos como fitas ediscos de forma permanente;

• A maneira pela qual o sistema operacionalestrutura e organiza estas informações é através

4

estrutura e organiza estas informações é atravésda implementação de arquivos;

• Arquivo é uma coleção de informaçõescorrelatas (registros) que recebe um nome e égravado no armazenamento secundário:

– Criada pelo processo;

– Espaço de endereçamento =>usado para modelar o disco.

Sistemas Operacionais Introdução

• Os processos podem ler arquivos existentes ecriar novos;

• A informação contida no arquivo deve serpersistente, ou seja, não pode ser afetada pelacriação e pelo termino de um processo;

5

criação e pelo termino de um processo;

• Poderá desaparecer se o proprietário removê-lo.

• De modo geral, a parte do SO que trata dosarquivos é conhecida como sistema de

arquivos.

Sistemas Operacionais Arquivos

• Quando um processo cria um arquivo => recebe um nome, quando termina, o arquivo continua existindo e outros processos podem ter acesso a ele simplesmente pelo nome;

• As informações contidas em um arquivo são definidas pelo seu criador;

6

definidas pelo seu criador;• Exemplo: arquivo de texto é uma seqüência de caracteres

ASCII organizados em linhas.

• O SO administra de maneira a facilitar ao acesso ao seu conteúdo;

• Informações sobre arquivos são guardadas em uma estrutura de diretório, a qual é mantida em disco rígido.

Sistemas Operacionais Arquivos

Nomeação de arquivos

• Arquivos é um mecanismo de abstração:– Isola o usuário dos detalhes sobre como e onde a informação está armazenada e como os discos funcionam.

• Quando arquivos são criados, nomes são

7

• Quando arquivos são criados, nomes são atribuídos a eles e são referenciados por meio de seus nomes;

• Muitos sistemas de arquivos permitem nomes com tamanhos de até 255 caracteres.

• Letras, números e alguns caracteres especiais podem compor nomes dos arquivos:• Exemplo: A-Z, a-z, 0-9, %, !, ) e &.

Sistemas Operacionais Tipos de Arquivos

Exemplos

8

Sistemas Operacionais Atributos de Arquivo

• Nome – única informação armazenada no formatolegível para o ser humano

• Identificador – um número identifica o arquivodentro do sistema de arquivos

• Tipo – necessário para sistemas que admitemdiferentes tipos de arquivos

9

diferentes tipos de arquivos

• Localização – ponteiro para localização do arquivodentro do dispositivo

• Tamanho – tamanho do arquivo

• Proteção – controla quem pode ler, escrever eexecutar

• Data, hora, e identificação do usuário – dadosúteis para proteção, segurança e último acesso

Sistemas Operacionais Arquivo - Extensão

• Alguns sistemas, as extensões de arquivos constituem apenas convenções e não são impostas pelo SO;

• Sistemas Unix:– Exemplo: aula1.txt pode ser algum tipo de arquivo texto, mas o nome serve mais para lembrar o

10

texto, mas o nome serve mais para lembrar o proprietário, não oferece qualquer informação real para proprietário;

• Mas os compiladores podem exigir que arquivos tenha uma extensão;– Exemplo: aula1.c

• O Windows atribui significados a cada extensão:– Exemplo: aula1.doc irá inicializar o Microsoft Word.

Sistemas Operacionais Arquivo - Extensão

• Alguns sistemas suportam uma extensão relacionada ao arquivo:

• MS-DOS:– 1-3 caracteres (Ex.: exemplo.txt);

– suporta apenas uma extensão;

• UNIX: extensão pode conter mais de 3

11

• UNIX: extensão pode conter mais de 3 caracteres;– UNIX suporta mais de uma extensão:

– Ex.: exemplo.c.Z (arquivo com compressão);

– UNIX também permite que arquivos sejam criados sem extensão.

Sistemas Operacionais Arquivos

Extensão de arquivos - Exemplos

Formato de imagens gráficas (Graphical File.gif

Arquivo de backupFile.bak

SignificadoExtensão

12

Arquivo Portable Document FormatFile.pdf

Arquivo textoFile.txt

Arquivo de áudio padrão MPEG (Moving Picture Expert Group – padrão de compressão de vídeo digital e áudio)

File.mp3

Arquivo de “ajuda”File.hlp

Formato de imagens gráficas (Graphical Interchange Format)

File.gif

Sistemas Operacionais

• Usuário: Alto nível

– Interface � como os arquivos aparecem?– Como arquivos são nomeados e protegidos?– Quais operações podem ser realizadas?

Arquivos - Classificação

13

• S.O.: Baixo nível

– Como arquivos são armazenados fisicamente?– Como arquivos são referenciados (links)?

Sistemas Operacionais Operações de Arquivos

Aplicação• O sistema de arquivodisponibiliza um conjunto de rotinas que permite às aplicações realizarem operações de E/S;

• O SO pode fornecer chamadas ao

14

Dispositivos

Rotinas de E/ S

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

• O SO pode fornecer chamadas ao sistema para criar, ler, excluir, etc.

Sistemas Operacionais Operações sobre Arquivos

• Criar:

– Duas etapas são necessárias: espaço no sistema de arquivo e uma entrada para o novo arquivo precisa ser feita no diretório;

• Escrever:

• Fazer um system Call com o nome do arquivo e as informações a serem escritas;

15

informações a serem escritas;

• Ler:

• Um system call que especifica o nome do arquivo e onde na memória o próximo bloco do arquivo deve ser colocado.

• Reposicionar dentro de um arquivo:

– O diretório é pesquisado em busca de entrada correta, e o ponteiro da posição atual do arquivo é reposicionado para determinado valor

Sistemas Operacionais Operações sobre Arquivos

• Apagar:

– Procura-se o arquivo nomeado no diretório e libera o

espaço do arquivo e apaga-se a entrada no diretório.

• Truncar:

– Se quiser apagar o conteúdo de um arquivo, mas manter

16

– Se quiser apagar o conteúdo de um arquivo, mas manter

seus atributos de forma que seu tamanho seja igual a

zero e seu espaço seja liberado.

Sistemas Operacionais Abertura de Arquivos

• Um conjunto de informações (dados) sãonecessário para gerenciar um arquivo aberto;

• O SO mantém uma tabela de arquivos aberto;• Várias informações estão associadas ao arquivoaberto:– Ponteiro de Arquivo: ponteiro para localização da

17

– Ponteiro de Arquivo: ponteiro para localização da ultima leitura/escrita pelo processo que abriu o arquivo

– Contador de arquivo aberto: contador do número de vez que o arquivo foi aberto – permite remover dados da tabela de arquivo aberto quando o último processo é fechado

– Localização em disco do arquivo: as informações para localizar o arquivo no disco são mantidas na memória

– Direito de acesso: permitir ou negar requisições de E/S subsequentes

Sistemas Operacionais Lock de arquivo

• Fornece funcionalidade semelhante aos locks de leitor/escritor de sincronização de processos;• Lock compartilhado: semelhante a um lock de leitor, em que vários processos podem obter o lock ao mesmo tempo;

• Lock exclusivo: comporta-se semelhante como um lock de escritor, apenas um processo por vez.

18

escritor, apenas um processo por vez.

• Também pode oferecer o mecanismo:– obrigatória: quando um processo obtiver o arquivo impede que qualquer outro processo tenha acesso ao arquivo

• Ex. Windows

– consultivo:obtém o lock manualmente no momento em que for acessar o arquivo

• Ex. Unix

Sistemas Operacionais Organização de Arquivos

• Consiste em como os seus dados estãointernamente armazenados;

• Arquivos podem ser estruturados de diferentesmaneiras:

– a) Seqüência não estruturada de bytes

19

– a) Seqüência não estruturada de bytes• Para o SO, os arquivos são apenas conjuntos debytes;

• SO não se importa com o conteúdo do arquivo;– Significado deve ser atribuído pelos programasem nível de usuário (aplicativos);

• Exemplo: UNIX e Windows;

Sistemas Operacionais Organização de Arquivos

• b) Árvores de registros (tamanho variado), cada qual com um campo chave em uma posição fixa:

• Visualizar um arquivo como um conjunto de registros;

• Exemplo: Banco de Dados

Ana Cláudia Teresa

20

Byte

(a) Organização não-estruturada

Ana Cláudia Teresa

Beatriz Camila Daniele Patrícia Tina Vanessa

Isabela Maria

Registro

(b) Organização Indexada

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Sistemas Operacionais

• Arquivos regulares � são aqueles que contêminformações dos usuários;

• Exemplo: UNIX e Windows;

• Diretórios � são arquivos responsáveis pormanter a estrutura do Sistema de Arquivos;

• Arquivos especiais de caractere � são aqueles

Tipos de arquivos

21

• Arquivos especiais de caractere � são aquelesrelacionados com E/S e utilizados para modelardispositivos seriais de E/S;– Ex.: impressora, interface de rede, terminais;

• Diretório: /dev/lp;

• Arquivos especiais de bloco � são aquelesutilizados para modelar discos;

• Diretório: /dev/hda1;

Sistemas Operacionais Exemplo: Linux

$$ lsls --ll /home/davidson/home/davidson

$ $ --rwxrrwxr----rr---- 1 davidson davidson 6654 20051 davidson davidson 6654 2005--0303--07 05:27 apt07 05:27 apt--listlist

• Dono: Definido como pelo usuário que criou o arquivo,

• Grupo: As permissões em nível de grupo,

22

• Outros: Simplesmente, todos os usuários que não são vocêmesmo nem pertencem ao seu grupo primário.

• Leitura (r),

• Escrita (w),

• Execução (x).

Sistemas Operacionais Estrutura de Diretório:

Partições

• Deseja-se ter vários sistemas de arquivos em um disco, com um espaço de swap ou disco não formatado;

• O sistema de arquivos pode ser dividido em partições.

• Cada disco possui no mínimo uma partição, que é

23

• Cada disco possui no mínimo uma partição, que é uma estrutura de baixo nível, em que arquivos e diretórios residem.

• Cada partição é tratada como um disco separado;

• As partes podem ser combinadas para formar estruturas maiores, conhecidas como volume ou disco virtual.

Sistemas Operacionais

Tabela de conteúdo do volume:

• Cada partição possui informações sobre os

arquivos armazenados nela.

• O diretório mantém informações sobre os arquivos

da partição específica - como o nome, localização,

Estrutura de Diretório: Partições

24

da partição específica - como o nome, localização,

tamanho e tipo.

• O diretório pode ser visto como uma tabela de

símbolos que traduz o nome do arquivo em

posição para o mesmo ser manipulado.

Sistemas Operacionais Estrutura de Diretório:

Partições

25

Sistemas Operacionais

Disco

MBR

Tabela de partição Partições

Estrutura de Diretório: Partições

26

BootDiretório

RaizGerenc. de Espaço livre

Super blocoArquivosDiretóriosI-nodes

Contém parâmetros (tipo do SA, número de blocos) sobre o sistema de arquivos e é carregado na memória

Sistemas Operacionais

• O diretório pode ser visto como uma tabela de símbolos, que traduz nomes de arquivo nas entradas de diretório;

• As operações em um diretório:– Procurar por um arquivo:procurar a entrada para um

Estrutura de Diretório: Conceitos

27

determinado arquivo

– Criar um arquivo:

– Excluir um arquivo:

– Listar um diretório: listar os arquivos

– Renomear um arquivo:

– Atravessar o sistema de arquivo: acessar cada diretório e cada arquivo dentro de uma estrutura de diretório.

Sistemas Operacionais Estrutura do Diretório

Uma coleção de nodes contendo informações sobre

todos os arquivos

Directory

28

F 1 F 2 F 3F 4

F n

Arquivos

Ambos as estruturas de arquivos e diretórios resiem no disco

Sistemas Operacionais

– Create;

– Delete;

Exemplos de operações com diretório (UNIX):

Estrutura de Diretório: Conceitos

29

– Opendir;

– Closedir;

– Readdir;

– Rename;

Sistemas Operacionais

• Estrutura de diretórios de nível único

IdentificaçãoProteção

OrganizaçãoLocalizaçãoAtributos

• Apenas um diretório contém todos os arquivos � diretório raiz (root directory);

• Desvantagem:

• Sistemas com vários usuários

Estrutura de Diretório: Conceitos

30

Diretórios Arquivos

• Sistemas com vários usuários podem criar arquivos como mesmo nome;

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Sistemas Operacionais

• Estrutura de diretórios com dois níveis

Usuário1

Usuário2

Arquivo1

Arquivo2

Arquivo3

•Cada usuário possui um diretório privado;

•Sem conflitos de nomes de arquivos;

Estrutura de Diretório: Conceitos

31

Usuário3

Usuárion

Arquivo1

Arquivo1

Arquivo2

Arquivo3

User File Directory(UFD)

Arquivos

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Sistemas Operacionais

• Estrutura de diretórios hierárquicos:

Usuário1

Diretório1

Diretório2

Arquivo1

Arquivo2

Arquivo1

• Usuários podem criar diversos diretórios que agrupam arquivos;

• Busca eficiente;

Estrutura de Diretório: Conceitos

32

Usuário2

Usuário3

Usuárion

Diretório Raiz

Arquivo1

Arquivo1

Diretório1

Arquivo1

Arquivo2

Arquivo1

Arquivo2

• Busca eficiente;

• Capacidade de agrupamento

• Diretório corrente(diretório de trabalho)

• cd /spell/mail/prog

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Sistemas Operacionais

• Caminho de um arquivo

Disco C:/

O método requer técnicas pelas quais os arquivos são acessados;

Estrutura de Diretório: Conceitos

33

IvanIvanCarlos Paulo

Teste Pessoal

Soma.exe

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Sistemas Operacionais

• Dois diferentes maneiras:– Caminho absoluto (absolute path name);

– Caminho relativo (relative path name);

• Caminho absoluto: consiste de um caminho a partir do diretório raiz até o arquivo;

Diretórios

34

partir do diretório raiz até o arquivo;– É único;

– Exemplo:

• UNIX: /usr/ast/mailbox;

• Windows: \usr\ast\mailbox.

Sistemas Operacionais

• Caminho relativo: utilizado em conjunto com o diretório corrente;

• Usuário estabelece um diretório como sendo o

diretório corrente; nesse caso caminhos não

iniciados no diretório raiz são tido como relativos

Diretórios

35

ao diretório corrente;

– Exemplo:

– Absoluto: cp /usr/ast/mailbox /usr/ast/mailbox.bak

– Relativo: /usr/ast: cp mailbox mailbox.bak

Sistemas Operacionais Diretório em Grafo

Acíclico� Uma estrutura de árvore proíbe o compartilhamento de arquivos ou diretório;� Com grafo acíclico é possível o compartilhamento de arquivos e subdiretórios, ou seja, o mesmo arquivo ou subdiretório pode estar em dois diretórios diferentes.

36

Sistemas Operacionais

� Compartilhamento pode ser implementado por:� link: é criado um ponteiro, para outro arquivo ou subdiretório;� duplicar informações: pode gerar inconsistências de informação;� lista de referências ao arquivo: entradas no diretório

Diretório em Grafo Acíclico

37

ou links simbólicos

• Eliminação de um arquivo ou diretório:•retirada do link: não afeta o arquivo, arquivo ou diretório é eliminado se todos os links forem removidos;• retirada da referência da lista de referências: arquivo só é eliminado quando a lista estiver vazia ->é preciso somente de um contador de referências, se contador = 0, arquivo pode ser eliminado.

Sistemas Operacionais Montagem

• SO => capacidade de montar vários sistemas de arquivos.� Constrói tabelas de montagem que contêm informaçõessobre os nomes de caminhos do ponto de montagem esobre os dispositivos que armazena cada sistema dearquivo.

•Montagem => combina vários sistemas de arquivo

38

•Montagem => combina vários sistemas de arquivo em um único espaço de nomes (conjunto de arquivos que pode ser identificado por um único sistema de arquivo).� Exemplo:

� Windows – montado em C: sistema arquivo seguinte D;

• Unix – alguns sistemas de arquivos são montados em um dos diretórios localizados em /mnt/.

Sistemas Operacionais Montagem

• SO => verifica se o dispositivo contém um sistema de arquivo válido.

• O sistema de arquivo é montado no ponto de montagem especificado.

• SO pode proibir a montagem sobre diretórios que contém arquivos

39

(a) Sistema Existente. (b) Partição não montada

Sistemas Operacionais

� Contra � danos físicos (confiabilidade)

� acessos impróprios (proteção)

� Confiabilidade: cópia de arquivos com intervalos regulares

Proteção

40

� Proteção resultado direto da habilidade de acessar arquivos

� Níveis de Proteção de Sistemas� não permitem o acesso a outros usuários, não precisam de proteção (default)

� têm proteção completa, proibindo o acesso

� têm livre acesso sem nenhuma proteção

Sistemas Operacionais

� Lista de acesso pode ser muito grande

dependendo da forma de implementação;

� Redução do tamanho da lista: � operações de leitura, escrita e execução

� classificação dos usuários em grupos

Proteção

41

� classificação dos usuários em grupos

� proprietário: usuário que criou o arquivo

� grupo: vários usuários que compartilham e necessitam

de acesso similar ao arquivo

� universo: todos os outros usuários

Sistemas Operacionais

� Classificação: três campos para definir a proteção;

� Cada campo = coleção de bits que controlam o acesso, a cada bit está associado uma permissão;

� Exemplo: Unix • três campos com três bits ( 0 = negado, 1 =

Proteção

42

• três campos com três bits ( 0 = negado, 1 = permitido)

•r = acesso de leitura•w = acesso de escrita•x = acesso de execução

Sistemas Operacionais

Windows XP Controle de Acesso

43

Sistemas Operacionais Unix – Exemplo de Acesso

44

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Contígua

É armazenado cada arquivo como um bloco contíguo É armazenado cada arquivo como um bloco contíguo de dados no disco;de dados no disco;

45

0 1 2

3 4 5

6 7 8

9 10 11

12 13 14

Arquivo Bloco

A. TXT 4

B. TXT 10

C. TXT 13

3

1

2

Extensão

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Ex. Escrita em CD e DVD

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Contígua

Vantagem:•desempenho é excelente porque o arquivo todo pode ser lido do disco numa única operação;

46

Desvantagens:

•Não é viável a menos que o tamanho máximo do arquivo seja conhecido no momento que o arquivo é criado.• Fragmentação externa.

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Encadeada

Organizado como um conjunto de blocos ligados Organizado como um conjunto de blocos ligados logicamente no disco, independente de sua posição logicamente no disco, independente de sua posição física. física. Usa um ponteiro no início do arquivoUsa um ponteiro no início do arquivo

47Fonte: TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: PHB, 2ª ed., 2003.

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Encadeada

Vantagem: não há fragmentação externa já que todo bloco do disco pode ser usado;

48

Desvantagem: •Acesso aos arquivos é realizado seqüencialmente aos blocos dos arquivos. Isso exige muitas buscas e o acesso a disco deve acessar seqüencialmente cada setor do arquivo

Fonte: TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: PHB, 2ª ed., 2003.

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Encadeada usando uma tabela na memória

O ponteiro é colocado em uma tabela na memória O ponteiro é colocado em uma tabela na memória ao invés de ser colocado no bloco (ao invés de ser colocado no bloco (File Allocation File Allocation TableTable););

49Fonte: TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: PHB, 2ª ed., 2003.

Ex. MS-DOS

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Encadeada usando uma tabela na memória

Vantagem: •O encadeamento permanece na memória, assim pode ser seguido sem fazer qualquer referência ao disco;

50

disco;

Desvantagem: •Toda a tabela deve estar na memória

Fonte: TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: PHB, 2ª ed., 2003.

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Indexada

Bloco deíndice

310117

Cada arquivo tem seu próprio bloco de índiceCada arquivo tem seu próprio bloco de índice

Ex. Ext2fs e NTFS

51

0 1 2

3 4 5

6 7 8

9 10 11

12 13 14

7

Fonte: Machado, F. B; Maia, L. P. Arquitetura de Sistema Operacionais, 3º ed., LTC, 2003

Sistemas Operacionais Gerência de Alocação de

Espaço em Disco

• Alocação Indexada

Vantagem: •O bloco de índice somente é carregado na memória quando o seu respectivo arquivo está aberto (em uso);

52

aberto (em uso);

Desvantagem:•sofre desperdício de espaço, pois o ponteiro do bloco de índice é em geral maior do que o de alocação encadeada (parte do bloco).

Sistemas Operacionais Sumário

• Sistema de Arquivos

• Atributos de Arquivos

• Extensão de Arquivos

• Diretórios:• Partições

53

• Partições

• Estrutura: Níveis

• Gerência de Alocação de Espaço em Disco:• Alocação contígua

• Alocação encadeada

• Alocação indexada

Sistemas Operacionais

• Silberschatz, A., Galvin, P. B. Gagne, G. Sistemas Operacionais com Java. 7º edição. Editora Campus, 2008 .

Leituras Sugeridas

54

• TANENBAUM, A. Sistemas Operacionais Modernos. Rio de Janeiro: Pearson, 3 ed. 2010

Sistemas Operacionais

Acesse o link abaixo:

http://hostel.ufabc.edu.br/~marcelo.nascimento/

Notas de Aula

55

Obrigado!!!

Sistemas Operacionais Exercícios

1.Quais as formas de alocação de espaços em discos? Liste eexplique as características (vantagens e problemas) decada técnica.

2.Explique o objetivo das operações open e close aplicadasem arquivos.

56

3.Quais as vantagens e desvantagens de usar locksobrigatório em vez de locks de consulta, cujo uso dita a

critério do usuário?