30
1 Daniely Goes Botelho Eduardo Jodoval Luiz dos Santos Junior Kelvin SISTEMA OPERACIONAL MAC Aracaju 2014

TRABALHO SO JOW

  • Upload
    ufs-br

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

1

Daniely Goes Botelho

Eduardo

Jodoval Luiz dos Santos Junior

Kelvin

SISTEMA OPERACIONAL MAC

Aracaju2014

2

UNIVERSIDADE TIRADENTES

Daniely Goes Botelho

Eduardo

Jodoval Luiz dos Santos Junior

Kelvin

SISTEMA OPERACIONAL MAC

Trabalho apresentado comorequisito parcial de avaliação dadisciplina SistemasOperacionais, ministrada peloProfº. Adolfo Pinto Guimarães,do curso de Ciência daComputação, no 1º semestre de2014.

Aracaju2014

3

SUMÁRIO

1. INTRODUÇÃO..................................................................................................................3

2. HISTÓRIA..........................................................................................................................4

3. VERSÕES...........................................................................................................................4

4. DEFINIÇÕES E CARACTERÍSTICAS..........................................................................8

5. GERENCIAMENTO DE PROCESSOS...........................................................................9

6. GERENCIAMENTO DE MEMÓRIA............................................................................13

6.1. Memória RAM e o Gerenciamento de memória....................................................13

6.2. Visão geral do gerenciamento de memória no MAC OS X....................................13

6.3. Características do Gerenciamento de memória no MAC......................................15

6.3.1. Paginação sob demanda...................................................................................15

6.3.2. External Memory Management Interface (EMMI).......................................15

6.3.3. Named Memory Entries...................................................................................16

6.3.4. Lazy Evaluation de Memória Copiada (Shadows Objects)...........................16

6.3.5. Memory Maps...................................................................................................16

6.3.6. Herança de Named Regions.............................................................................16

6.3.7. UPLs..................................................................................................................17

6.3.8. UBC (Unified Buffer Cache)............................................................................17

6.4. Memórias utilizadas.................................................................................................17

6.4.1. Wired Memory ou memória residente............................................................19

6.4.2. Memória Virtual...............................................................................................19

6.5. Compartilhamento de Memória..............................................................................19

6.6. O que mudou no Mavericks.....................................................................................20

7. ENTRADA E SAÍDA.......................................................................................................22

7.1. Drivers.......................................................................................................................23

7.2. HDs............................................................................................................................24

7.3. Conexões....................................................................................................................25

8. SISTEMA DE ARQUIVOS..............................................................................................26

8.1. MFS (Macintosh File System)..................................................................................26

8.2. HFS (Hierarchical File System)...............................................................................27

8.3. HFS+ (Hierarchical File System).............................................................................27

9. CONCLUSÃO..................................................................................................................27

4

1. INTRODUÇÃO

Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2. HISTÓRIA

O Mac OS é o sistema operacional dos computadores da linha Macintosh,

da Apple. O seu surgimento ocorreu em 1984, junto ao lançamento do primeiro

Macintosh. Esse computador tinha 128 KB de RAM e processadores da família 68000

da Motorola. Inicialmente, o seu sistema operacional era chamado apenas de System.

O System era modificado a cada versão do Macintosh com pequenas

melhorias. Assim seguiu até 1988, com o System 6. Em 1991, a Apple lançou o System

7, considerado uma versão com várias mudanças. Entre elas, estão o uso de cores,

multitarefa como parte integrante do sistema, introdução da linguagem Apple Script e

Drag & Drop de arquivos. Outro avanço notável do sistema operacional surgiu em

1994, quando a Apple começou a adotar o uso de processadores PowerPC da IBM, que

permitiram maior processamento pelo SO e pelos programas, e também começou a

permitir a criação de clones da sua arquitetura por outros fabricantes. A partir da versão

7.6, o nome Mac OS começou a ser adotado.

O Macintosh Operating System (MAC OS) é a denominação padrão dos

computadores Macintosh produzidos pela Apple. Sua evolução ocorreu até a versão

Mac OS X, A primeira versão foi lançada em 1984, até antes da versão 7.6,era chamado

apenas de "System" após esta versão passou a se chamar "Mac OS" até a sua versão

10.9 onde passou a se chamar OS X.

3. VERSÕES

Mac OS X v10.0 Cheetah - O primeiro sistema da linha Mac OS X foi

anunciado em janeiro de 1999, com o nome Mac OS X Server 1.0. O sistema foi a

evolução do Mac OS anterior, que foi inspirado no sistema OPENSTEP desenvolvido

pela extinta NeXT, empresa criada por Steve Jobs durante seu período de ausência na

Apple.

A versão beta foi disponibilizada no ano 2000 e finalmente em março de

2001 a versão oficial foi lançada, com o codinome “Cheetah”. Ela era vendida a US$

5

129 e trazia uma mudança radical em relação às versões anteriores do Mac OS. O

núcleo do sistema foi remodelado e o sistema recebeu aprimoramentos na gerência de

memória.

O Mac OS X Cheetah apresentou pela primeira vez a Dock, uma nova

forma de organizar as aplicações do sistema operacional na interface com o usuário.

Além disso, foram apresentados o aplicativo de e-mail Mail, o Address Book, um editor

de texto novo chamado TextEdit, suporte a Multitask Preemptivo, suporte a PDF,

interface Aqua, suporte a OpenGL, a utilização de AppleScripts e mecanismos de

proteção de memória.

Esta edição foi a primeira a contar com o iTunes, o programa de música

mais famoso da Apple. Apesar de todas estas novidades, o sistema sofreu muitas críticas

principalmente no que tange o tempo de resposta da interface, a estabilidade do sistema

e problemas de compatibilidade com hardware, por exemplo, para gravar CDs.

Mac OS X v10.1

Puma - Após o lançamento do Cheetah, em Setembro de 2001, a Apple

lançou o Mac OS X 10.1, codinome “Puma”. A versão foi fornecida gratuitamente como

atualização do Cheetah. Como mudanças, foi melhorado o desempenho geral do sistema

e foi adicionado um suporte mais eficiente à gravação de CDs e DVDs e ao OpenGL.

Além disso, a Apple introduziu a aplicação Image Capture que facilitava a aquisição de

imagens de câmeras digitais e escâneres. Mesmo com esta melhora, a crítica ainda dizia

que o sistema não tinha um desempenho bom o suficiente para sua adoção em grande

escala.

Mac OS X v10.2

Jaguar - Em 23 de Agosto de 2002, a Apple lançou mais uma versão, o Mac

OS X 10.2, codinome “Jaguar”. Além de melhorias de desempenho e estabilidade, o

sistema atualizou o Address Book, deu suporte ao sistema de impressão CUPS, muito

utilizada em sistemas Linux, e adicionou o filtro de mensagens indesejadas no Mail. As

redes Windows passaram a ser compatíveis e foi desenvolvido o Quartz Extreme. Este

programa permite que a composição gráfica seja realizada diretamente na placa de

vídeo, diminuindo a carga sobre o processador. Por fim, a Apple lançou a aplicação

Inkwell para reconhecimento de escrita.

Mac OS X v10.3

6

O Mac OS X Panther (Foto: Reprodução)

Panther - Em Outubro de 2003, a Apple lançou o Mac OS X 10.3, codinome

“Panther”. Como novidades, o sistema aprimorou o mecanismo de busca do Finder,

permitiu a troca eficiente de usuários em um mesmo sistema, introduziu o Exposé para

facilitar a visualização de janelas do usuário, a ferramenta de programação Xcode, o

Preview para renderizar PDFs e o QuickTime com suporte a uma maior gama de

formatos. Além disso, foi introduzido o FileVault para criptografar o disco dos usuários,

o iChat com suporte a conferência de áudio e vídeo e o Safari, o browser da Apple.

Mac OS X v10.4

Tiger - Em Abril de 2005, a Apple colocou a venda o Mac OS X 10.4,

codinome “Tiger”. Segundo a Apple, ele foi o lançamento de maior sucesso na sua linha

de sistemas operacionais. O Tiger foi o primeiro a executar em máquinas com

arquitetura Apple-Intel, que utiliza processadores baseados em x86 em vez da

arquitetura PowerPC tradicional.

Como novidades, o Tiger introduziu o Spotlight, o mecanismo de busca da

Apple, uma nova versão do Mail e os widgets. Para automatizar tarefas, foi feito o

Automator que permite a programação de ações e para a acessibilidade foi desenvolvido

o VoiceOver para a aplicação de zoom na tela e comandos de voz. Foi introduzido

também o aplicativo Dictionary e o Grapher, que permite desenhar gráficos

tridimensionais.

Leopard - O Mac OS X 10.5 “Leopard” foi lançado em outubro de 2007. O

Leopard introduziu um design novo da área de trabalho, uma Dock nova, menus

semitransparentes e novas interfaces para o iTunes. O desempenho foi otimizado e foi

introduzido a Time Machine, ferramenta de backup da Apple. Além da Time Machine,

alguns aplicativos sofreram atualização como o Dictionary, o iCal, iChat, Mail e Safari.

Foi desenvolvido o BootCamp que permite que outros sistemas operacionais sejam

instalados no Mac e a ferramenta Spaces para a utilização de múltiplas áreas de trabalho

virtuais. Por fim, foi adicionado o suporte a aplicações 64-bit.

Mac OS X v10.5

Snow Leopard - O Mac OS X 10.6, codinome “Snow Leopard” foi lançado

em junho de 2009. Diferentemente das outras versões, o objetivo principal do Snow

Leopard não foi introduzir muitas funcionalidades. O objetivo principal foi melhorar o

desempenho e reduzir a utilização de memória. A maioria dos softwares da Apple foi

reescrita para se adequar ao hardware mais moderno, também foram introduzidos novos

7

arcabouços de programação como o OpenCL e por fim, extinguiu-se o suporte a Macs

de arquitetura PowerPC. Como novidades, foi apresentado um Finder totalmente

reescrito, um Boot Camp com suporte à leitura e escrita em partições Windows, suporte

a multitoque na maioria dos MacBooks, uma versão puramente 64-bits do QuickTime,

Safari 4 e uma melhora na acessibilidade fornecida pelo VoiceOver.

Lion - Em Outubro de 2010, a Apple inovou e trouxe o Mac OS X 10.7,

codinome “Lion”. O Lion apresentou o conceito da App Store, onde os usuários podem

comprar os aplicativos para Mac em uma única interface, semelhante a iTunes Store.

Também foi adicionado o mecanismo de compartilhamento de arquivos entre Macs, o

Airdrop. Os mecanismos de autocorreção do iOS (sistema operacional dos iPods Touch,

iPhones e iPads) foram integrados ao sistema. Além disso, foi introduzido o AutoSave

para salvar automaticamente documentos e o FaceTime para videoconferências.

Nesta versão, o aplicativo Mail foi refeito para ficar semelhante ao do iOS e foi

implementada a função "resume" que permite que o Mac seja desligado e depois

religado com todos os aplicativos e configurações que estavam abertas. Por fim, a Apple

trouxe a funcionalidade Versions, que realiza um controle automático de versão sobre

cada documento editado.

Mac OS X v10.6

Snow Leopard - O Mac OS X 10.6, codinome “Snow Leopard” foi lançado

em junho de 2009. Diferentemente das outras versões, o objetivo principal do Snow

Leopard não foi introduzir muitas funcionalidades. O objetivo principal foi melhorar o

desempenho e reduzir a utilização de memória. A maioria dos softwares da Apple foi

reescrita para se adequar ao hardware mais moderno, também foram introduzidos novos

arcabouços de programação como o OpenCL e por fim, extinguiu-se o suporte a Macs

de arquitetura PowerPC. Como novidades, foi apresentado um Finder totalmente

reescrito, um Boot Camp com suporte à leitura e escrita em partições Windows, suporte

a multitoque na maioria dos MacBooks, uma versão puramente 64-bits do QuickTime,

Safari 4 e uma melhora na acessibilidade fornecida pelo VoiceOver.

Mac OS X v10.7

Mountain Lion - Em Fevereiro de 2012, a Apple anunciou o OS X 10.8,

codinome “Mountain Lion”. Diferentemente das versões anteriores, a Apple preferiu

chamar o sistema simplesmente de OS X, em vez de Mac OS X. Como novidades, o

sistema trará a aproximação entre o sistema operacional para iMacs e MacBooks e o

sistema iOS para dispositivos móveis da Apple. Como exemplo desta integração, será

8

introduzido o programa Messages, que permite a troca de mensagens entre Macs e

também entre dispositivos com iOS.

Essa versão receberá também o Game Center, que tem a mesma função do

iOS e permite a organização de jogos online, a integração com o Twitter e o Centro de

Notificações. Nem todas as funcionalidades novas ainda foram reveladas, mas espera-se

que, cada vez mais, o OS X se aproxime do iOS e vice-versa. Desta forma, ouso arriscar

que a tendência é que os sistemas da Apple deixem de ser sistemas complementares e se

transformem em uma única plataforma.

Mac OS X v10.8

Mountain Lion - Em Fevereiro de 2012, a Apple anunciou o OS X 10.8,

codinome “Mountain Lion”. Diferentemente das versões anteriores, a Apple preferiu

chamar o sistema simplesmente de OS X, em vez de Mac OS X. Como novidades, o

sistema trará a aproximação entre o sistema operacional para iMacs e MacBooks e o

sistema iOS para dispositivos móveis da Apple. Como exemplo desta integração, será

introduzido o programa Messages, que permite a troca de mensagens entre Macs e

também entre dispositivos com iOS.

Essa versão receberá também o Game Center, que tem a mesma função do

iOS e permite a organização de jogos online, a integração com o Twitter e o Centro de

Notificações. Nem todas as funcionalidades novas ainda foram reveladas, mas espera-se

que, cada vez mais, o OS X se aproxime do iOS e vice-versa. Desta forma, ouso arriscar

que a tendência é que os sistemas da Apple deixem de ser sistemas complementares e se

transformem em uma única plataforma.

OS X v10.9 Mavericks é a décima versão do OS X, sistema operacional

para Mac. OS X Mavericks foi anunciado em 10 de junho de 2013 e lançado no dia 22

de Outubro de 2013 como uma atualização gratuita através da Mac App Store. 2 3 4

O Sistema Operacional possui funções que melhoram a duração da bateria, além de

melhorias no Finder e maior integração ao iCloud.5

Este sistema operacional marca o início de uma mudança no esquema de

nomenclatura do "OS X", mudando de nomes de felinos para locais da Califórnia.

Seguindo o novo esquema de nomenclatura, a versão atual do sistema operacional é

“Mavericks", um local de surf no Norte da Califórnia.

4. DEFINIÇÕES E CARACTERÍSTICASXXXXXXXXXXXXXXXXXXXXXX

9

5. GERENCIAMENTO DE PROCESSOS

O princípio do funcionamento de todo Sistema Operacional parte do kernel,

pois ele é quem possibilita a interação entre a camada Hardware e Software.O kernel,

também conhecido como núcleo do Sistema Operacional funciona de duas formas

básicas: monolítico e microkernel.

Kernel em modo Monolítico

Em um kernel monolíticocada serviço básico do sistema como gerência de

processo e de memória, manipulação de interrupção e comunicação de I/O, sistema de

arquivos e etc., é executado em espaço de kernel (modo privilegiado).Essa abordagem

garante um desempenho superior visto que existe uma interação direta entre as

aplicações e os serviços de kernel. Entretantoexiste uma grande dependência entre os

componentes, de maneira que, caso ocorra um defeito em algum driver, todo o sistema

pode parar de funcionar. Além disso, essa abordagem apresenta um mau gerenciamento

de recursos uma vez que drivers de dispositivos que não estão em uso continuam na

memória.

Alguns exemplos de abordagens monolíticas:

- BSD;

- Linux;

- MS-DOS e derivados, incluindo Windows 95, Windows 98 e Windows ME;

- Solaris;

- Palm OS;

Kernel em modo Microkernel

A abordagem em microkernel consiste em definir abstrações simples sobre o

hardware, dividindo melhor as tarefas de sistema e de aplicações. Essa abordagem

possui um desempenho inferior ao monolítico, porém são mais fáceis de manter e,

devido a sua estrutura, caso algum driver de dispositivo pare de funcionar não

necessariamente implica no travamento total do sistema. Nem é necessário

reinicialização da máquina caso haja alguma alteração num driver por exemplo. Além

disso, nessa abordagem é possível implementar partes restantes do sistema operacional

em linguagens de alto nível, aumentando ainda mais a sua escalabilidade.

Alguns exemplos de abordagens microkernel:

- Hurd;

- MINIX;

10

- Mach;

XNU - Kernel do MACOSX

O kernel do Sistema Operacional MAC (a partir da versão 10) é o XNU(X

isNot Unix)que se trata de um kernel híbrido, pois é composto por um kernel monolítico

e outro microkernel, que são respectivamente o Mach 3.0 e o BSD, juntamente com

uma API orientada a objeto para controlar os drivers de dispositivos, chamada I/O Kit.

O Mach foi um projeto de pesquisa desenvolvido pela Universidade

Carnegie Mellon no ano de 1985.As versões anteriores tinham kernels monolíticos e

com muitos códigos do BSD.

O Mach é responsável por muitas tarefas de baixo nível do sistema, entre as

quais:

- Multitarefa;

- Gerenciamento de Memória Virtual;

- Comunicação entre os processos;

- Gerenciamento de interrupção;

O BSD é o componente do kernel que cuida de manter a segurança do

sistema gerenciando permissões de acesso a processos, firewall, políticas de segurança,

entre outros. Ao logar em um computador MAC, por exemplo, é o BSD quem determina

seu nível de acesso. Ele também permite que um administrador possa definir quais

processos um usuário normal pode e não pode acessar. Também contribui com a

sincronização dos processos.

Outro componente importante do kernel é o I/O Kit que permite que um

computador MAC manipule vários dispositivos com tecnologias diversificadas ao

mesmo tempo. Por esse motivo é possível conectar dispositivos utilizando cabos USB,

Firewiree Thunderbolt simultaneamente, por exemplo.

Devido a sua estrutura de interação entre os subsistemas o XNU é

considerado um kernel em camadas.

11

Como a imagem acima sugere existe uma estrutura mínima que interage

com o hardware (microkernel) provendo mecanismos para interagir com os demais

subsistemas. E o kernel se encontra acima da estrutura básica do S.O. agindo como um

conjunto de recursos disponibilizados ao microkernel a fim de atender as requisições

(chamadas de sistema) das aplicações de usuários.

12

Entre as vantagens dessa estrutura estão:

Interface padronizada: os processos não se distinguem em serviços de espaço de

usuário ou de serviço do kernel, pois todos os processos se comunicam através

de mensagens IPC; Extensibilidade: é possível adicionar ou atualizar serviços sem a necessidade de

recompilar todo o kernel; Flexibilidade no suporte de novos subsistemas: pela sua clara separação de

funcionalidades se torna mais fácil a manutenção; Portabilidade: todo código específico da arquitetura está no microkernel, dessa

forma bastaria reescrever o microkernel para mudar a arquitetura; Confiabilidade (isolamento dos subsistemas): se um subsistema parar, não para

todo o sistema pois subsistemas executam de modo usuário; Escalonador de Processos (Mach Scheduling)

O escalonador de processos do MACOSX foi desenvolvido a partir do

escalonador OSFMK. Para escalonar os processos ele se baseia numa variante do

algoritmo de múltiplas filas com realimentação, dividindo as filas de prioridades em

quatro grupos de processos. E são executados os grupos de maior prioridade (Tempo

real) para o de menor prioridade (Normal).

Grupos de Processo

- Normal: prioridade das aplicações normais de usuário;

- Sistema: prioridade das aplicações do sistema, com prioridade maior que as threads

normais de usuário;

- Kernel: reservada para threads em espaço de kernel que necessitam rodar em

prioridade superior às threads de sistema;

- Tempo Real: threads cuja prioridade se baseia na necessidade de reservar ciclos de

clock pré-definido, independente de outras tarefas que estejam sendo executadas;

Características do Escalonamento

- Suporta tempo compartilhado e prioridade fixa;

- Threads de Tempo Real normalmente são de prioridade fixa;

- Threads de prioridade fixa executam durante um tempo pré-determinado ou até que

uma prioridade maior queira executar;

- Se uma thread de tempo real não respeitar o tempo de processamento ela pode ser

penalizada e rebaixada a uma prioridade normal;

- Threads que usam muito tempo do processador, usam prioridade baixa para evitar que

threads de prioridade monopolizem o uso do processador;

13

-Comunicação entre os processos ocorrem por: fila de mensagens, semáforos,

notificações, lock sets e rpc;

6. GERENCIAMENTO DE MEMÓRIA

6.1. Memória RAM e o Gerenciamento de memória

A memória RAM (Random Access Memory), é uma memória de acesso

aleatório que faz parte e é um dos principais componentes presentes em um computador.

Essa memória tem como função, armazenar dados temporariamente para que o

processador possa acessar os mesmos no momento em que necessitar. Qualquer

aplicativo que é executado no computador, utiliza a memória RAM para registrar seus

dados, que por sua vez, podem ser lidos, escritos e apagados pelo processador.

Portanto, é necessário algum tipo de controle desse hardware, para que o

mesmo se torne funcional. Com o gerenciamento de memória, feito pelo sistema

operacional, é possível controlar quais partes da memória serão utilizadas ou não. Além

disso, o gerenciamento é responsável por alocar espaço em memória aos processos que

irão ser executados e removê-los da memória, liberando posições ocupadas, quando o

mesmo for finalizado. Outra funcionalidade do gerenciador de memória é controlar o

swapping de informação, constante na execução das aplicações.

Podemos definir como tarefas do gerenciador de memória, a alocação e

reciclagem. A primeira, é quando o programa requisita um bloco de memória e

gerenciador o disponibiliza para a alocação. Já na reciclagem, é quando um bloco de

memória já foi alocado, mas por algum motivo é preciso ser liberado, então o

gerenciador libera o bloco em questão, que por sua vez, pode ser reutilizado.

Para realizar um gerenciamento de memória eficiente, devemos levar em

conta diversos fatores importantes para o seu desempenho, como a segurança,

isolamento, performance, entre outros. Devido a isso, essa função cabe ao sistema

operacional e não ao aplicativo.

6.2. Visão geral do gerenciamento de memória no MAC OS X

Os processos que são executados no sistema operaiconal Mac OS X,

possuem seu próprio conjunto de espaço de endereçamento de memória, podendo esse

conjunto ser de 32bits ou de 64bits. Nos processos de 32 bits, cada um tem um espaço

14

que pode endereçar dinamicamente, chegando ao limite de 4gb. Já os processos de 64

bits, o limite é de 18 exabytes.

O processo possui um espaço de endereço virtual que é constituído por

regiões de memória mapeada. Cada região dessa representa um conjunto específico de

páginas de memória virtual. Essa regiões possuem atributos específicos e controlam

diversas funcionalidades como, herança, escreve-proteção, e se é "wired" (isto é, não

pode ser paginada out). Além disso, possuem um determinado número de páginas,

alinhadas, no qual o endereço inicial também corresponde ao endereço inicial da página

e o final do endereço define o fim da página.

Como falamos anteriormente, o gerenciamento de memória é quem vai

controlar a memória física, ou seja, a memória RAM. Porém, existe uma outra memória,

presente no computador, que se tornou uma característica comum nos sistemas

operacionais modernos. Estamos falando da memória virtual (Virtual Memory – VM)

do kernel mach, que apesar de não ser um hardware, auxilia a memória RAM no seu

gerenciamento. Esse subsistema consiste do módulo machine-dependent phisical map

(pmap) e outros módulos independentes para gerenciar a estrutura de dados, tais como

os Virtual Address Space Maps (VM maps).

Quando residente cada página da memória virtual é carregada em alguma

parte da memória física. Esta porção, normalmente é chamada de “page frame”.

A memória virtual, cria um espaço de endereços para cada programa

abstraindo detalhes mais técnicos para o programador. Normalmente ela é

implementada através de paginação (paging). O Mac OS X, inclui três paginadores

internos, o padrão (anônimo), o paginador para dispositivos e o paginador vnode. Com

esse último paginador, é possível realizar uma chamada de sistema sem a necessidade

de entender qual objeto está sendo manipulado, já que o vnode pode mapear um

processo para um objeto em qualquer tipo de sistema de arquivo. A chamada de sistema

só precisa saber como fazer uma chamada orientada à objetos usando a interface vnode.

O kernel trata operações de entrada e saída sobre regiões da memória. Os

paginadores se comunicam com o subsistema Mach-VM utilizando interfaces UPL e

derivadas do paginador do Mach.

6.3. Características do Gerenciamento de memória no MAC

15

O sistema operacional MAC OS X, possui um sistema de gerenciamento de

memória altamente poderoso. No MAC, o usuário pode escrever seu próprio

gerenciador de memória, conforme suas necessidades. É possível utilizar o pmap para

visualizar o uso de memória e assim tratar, caso necessário. Em relação ao kernel, o

gerencimento de memória, tente a mantê-lo pequeno e simples e a comunicação entre

eles é através de um protocolo bem definido. Além dessas características básicas, o

gerenciamento de memória do MAC, possui outras que precisam de um destaque maior.

A seguir explicaremos cada uma dessas características.

6.3.1. Paginação sob demanda

Um programa não precisa estar todo na memória para ser executado, pois

muitas partes dele sequer são necessárias em toda execução. Um editor de texto, por

exemplo, possui determinadas funções que nem são utilizadas pelo usuário e as rotinas

que implementam essas funções, não precisam ser alocadas, se não estiverem sendo

utilizadas, ou seja, somente precisam estar na memória naqueles raros instantes em que

realmente são necessárias.

Nesse modo de gerenciamento, podemos utilizar a implementação da

memória virtual conhecida como Paginação sob demanda. Esse tipo de implementação é

bastante utilizada e é baseada na paginação simples, ou seja, a memória lógica é

dividida em páginas que podem ser colocadas em qualquer quadro da memória física,

porém, somente as páginas que o processo acessa é que são carregadas para a memória

física. O bit de válido/inválido indica se a página já está presente na memória ou se

ainda está no disco.

6.3.2. External Memory Management Interface (EMMI)

Todo tipo de dado que está presente no espaço de memória é munido através

dos memory objects. O Mach solicita ao proprietário (owner) do memory objects

(pager) pelo conteúdo e retorna e ele possíveis modificações nos dados. Além disso, o

Mach, exporta uma interface para esse Memory Objects, permitindo que haja

contribuição de várias tarefas modo-usuário em seu conteúdo. Essa interface é chamada

de EMMI.

16

6.3.3. Named Memory Entries

O identificador que o sistema operacional usa para indexar uma tabela de

objetos, é conhecido como Handler. Podemos dizer que ele funciona como uma

referência ao objeto. Os Named Entries, são handles para objetos compartilhados ou

submapas, ou seja, eles permitem ao proprietário, mapear o objeto de memória virtual,

ou passar o direito de mapeá-lo. Quando mapeamos uma named entriy em 2 tasks diferentes, resulta em

memória compartilhada. A task, por sua vez, quando é criada, são clonadas a partir do

pai e sua porção mapeada da memória pode ser herdada tanto como uma cópia, como

compartilhada, ou ainda nenhum desses, sendo baseadas nos atributos associados ao

mapeamento.

6.3.4. Lazy Evaluation de Memória Copiada (Shadows Objects)

Quando há cópia de memória, a mesma é protegida com read-only access

para as duas task que compartilham a memória. Essa cópia é feita quando ambas tasks

tentam acessar a mesma porção, permitindo assim simplificações em diversas áreas,

principalmente nas messagings APIs.

6.3.5. Memory Maps

Memory Maps é uma lista ordenada duplamente ligadas. Cada objeto

contém uma lista de páginas e shadow-references a estes objetos.

6.3.6. Herança de Named Regions

Named Regions podem ser herdadas, não só como um grupo de objetos de

memória, mas também toda a relação de mapeamento entre eles.

Named Region é como uma named entry, mas ao invés de conter virtual

mem. objects, contém um fragmento de mapa virtual

6.3.7. UPLs

17

UPLs, significa Universal Page Lists, ou seja, são estruturas de dados que

descrevem como o conjunto de páginas físicas são delimitadas. Elas incluem vários

atributos das páginas que descrevem, como por exemplo, informações de caching,

permissões, mapeamentos, e etc.

Subsistemas do Kernel, particularmente o File System, usam UPLs para se

comunicar com o subsistema VM.

6.3.8. UBC (Unified Buffer Cache)

UBC é um conjunto de páginas capazes de armazenar (caching) o conteúdo

dos arquivos e a porçãoConstitui um conjunto de páginas para armazenar (caching) o

conteúdo dos arquivos e a porção anônima do espaço de endereços. O exemplo mais

comum é a memória alocada dinamicamente.

6.4. Memórias utilizadas

No sistema operacional Windows, existe a memória usado por ele mesmo, a

memória usada pelos programs e a memória livre. Já no MAC OS X, existe um outro

tipo de memória, conhecida como memória inativa. Portanto, existem quatro categorias

de memórias no MAC OS X, são elas:

Residente: é usada pelo OS X. Essa memória nunca irá para disco. As

informações armazenadas na RAM não podem ser movidas para a unidade do

Mac. A quantidade de memória Residente depende dos aplicativos que estão em

uso no momento.

Ativa: é usada pelos programas que estão abertos. Caso seja necessário ela pode

ser paginada em disco. Essas informações estão armazenadas na RAM e foram

usadas recentemente.

Livre: é a memória que não está sendo usado. Inativa: é a memória que foi usada pelo programa mas não foi liberada. Ela é

apenas marcada como inativa.

Para entendermos melhor a memória inativa, vamos supor que o aplicativo

Mail foi executado e o mesmo leva 5 segundos para ser aberto. Basicamente, esse tempo

18

é utilizado para a montagem do ambiente para esse aplicativo. Quando o mesmo for

encerrado, sua memória não é liberada e sim marcada como inativa. Se o mesmo

aplicativo for aberto posteriormente, será praticamente instatâneo, pois ele não precisará

montar o ambiente novamente. É como se marcasse a memória como ativa.

Podemos verificar essas memórias através do monitor de atividade. Veja a seguir uma

janela do Monitor de Atividade com a aba Memória do Sistema selecionada:

Figura 6.4.1: Monitor de AtividadeFonte: Apple, Suporte.

A memória utilizada corresponde ao total de RAM utilizada e o tamanho de

memória virtual à quantidade de Memória Virtual referente a todos os processos do

Mac. As páginas de entrada/páginas de saída, refere-se à quantidade de informações

transferidas entre a RAM e a unidade do Mac. Esse número é um total acumulado dos

dados que o Mac OS X transferiu entre a RAM e a unidade do Mac. Já a troca usada,

corresponde à quantidade de informações copiadas para o arquivo de troca da unidade

do Mac.

19

Abaixo explicaremos as memória utilizadas pelo MAC OS X com mais

detalhes e como as mesmas podem ser utilizadas.

6.4.1. Wired Memory ou memória residente

Essa memória é de uso restrito para armazenamento de código kernel e

estrutura de dados. Os softwares da camada de usuário, aplicações ou frameworks não

podem ser armazenados nessa memória. No entanto eles podem afetar a quantidade de

Wired memory existente num dado momento. Exemplos de entidades do kernel que

utilizam wired memory são: VM Objects, I/O buffer cache e condutores.

6.4.2. Memória Virtual

Como dito anteriormente, o MAC OS X utiliza a memória virtual, através

do mecanismo de paginação, para auxiliar o gerenciamento de memória. Ao utilizar a

memória virtual, minimizamos o uso de memória física, consequentemente diminui o

tempo de consumo da CPU.

Quando todo o espaço de memória é preenchido, o Mac usa o disco rígido

par armazenar os dados que não estão em uso atualmente para dar espaço aos dados que

são necessário no momento. Esse espaço no disco é conhecido como o armazenamento

de apoio, pois serve como reserva para a memória principal.

O Mac OS X, não utiliza uma pré-partição SWAP para a memória virtual.

Em vez disto ele usa todo o espaço disponível na máquina da partição de boot.

6.5. Compartilhamento de Memória

Memória compartilhada é a memória que pode ser escrita ou lida a partir de

dois ou mais processos. O compartilhamento de memória possibilita partilhar grandes

recursos como ícones ou sons, além de tornar rápida a comunicação entre um ou mais

processos. Porém, quando a memória é compartilhada, torna-se frágil. Se algum

programa corromper sua seção compartilhada, afetará em todos os outros que estão

compartilhando essa seção, já que irão ler arquivos corrompidos.

20

O compartilhamento no MAC é feito pela criação de um processo através da

cópia de um outro processo existente. O processo escravo pode ser um clone de um

outro processo diferente do pai. Existem três tipos de compartilhamento de memória

entre processos pais e filhos.

• quando a seção não pode ser usado pelo processo escravo, ou seja, o

processo pai não deu permissão e qualquer acesso a ela será tratado como um acesso a

uma área não alocada

• quando a seção é compartilhada, ou seja, compartilhamento sem

restrições e quando uma alteração ocorre na mesma, a outra é atualizada.

• quando a seção no escravo é uma cópia da seção do pai. Nesse caso, a

regição é copiada e qualquer alteração feita nela, será apenas localmente.

6.6. O que mudou no Mavericks

Na última versão lançada pela Apple do Mac, a Mavericks, há uma grande

preocupação em economizar memória RAM. Isso foi feito através do ajuste da memória

inativa presente nos discos rígidos. Quando a memória fica cheia, o Mavericks

compacta os dados dos aplicativos inativos, disponibilizando assim mais memória.

Essa compressão e descompressão, acontece de maneira muito rápida,

principalmente se comparadas com versões anteriores. Foi assim que surgiu a chamada

memória comprimida.

Como dito anteriormente, o Mac utiliza o disco rígido para armazenar

conteúdo inativo da memória, deixando a RAM mais livre para os aplicativos em

execução. Porém, há um problema quando temos pressa em voltar a ver um aplicativo

que estava no disco como inativo, já que o mesmo é muito lento para esse tipo de

procedimento.

A memória comprimida serve como uma solução para resolver o problema

do uso de memória, comprimindo o conteúdo inativo, evitando recorrer à lenta

paginação para o disco. Além disso, o mavericks reformou o monitor de atividade, como

mostra figura abaixo.

21

Figura 6.6.1: Monitor de atividade no MavericksFonte: Faria, Gustavo.

A memória física é a quantidade de RAM instalada. A memória usada é a quantidade de memória instalada que está sendo usada. A virtual é a quantidade de memória que os aplicativos solicitaram. A troca usada é a quantidade de memória paginada no disco. A memória do aplicativo, é a memória que está sendo utilizada pelos aplicativos. Cache do arquivo é a memória marcada como disponível para uso pelo

aplicativos. Memória Residente Comprimido, é a memória comprimida.

7. ENTRADA E SAÍDA

É uma das várias funções do sistema operacional controlar os dispositivos

de entrada e saída. Enviar sinais para que os dispositivos realizem alguma ação e tratar

interrupções e exceções geradas pelos dispositivos.

22

Os dispositivos de entrada e saída permitem uma interação do computador

com o mundo exterior por meio da comunicação com o usuário ( utilizando mouse,

teclado, monitor), impressão de informações, captura e reprodução de video e áudio e

comunicação com outros computadores.

Dispositivos de entrada podem ser divididos em duas categorias:

dispositivos de blocos e dispositivos de caractere. Dispositivos de bloco trabalha com

informações com tamanho fixo de bytes, e esses blocos podem ser lidos ou escritos

independentemente de todos os outros. Dispositivos de caractere envia ou recebe fluxo

de caracteres sem se limitar ao tamanho do bloco de dados e não faz nenhuma operação

de posicionamento. Geralmente nos dispositivos de bloco o sistema operacional

implementa buffer e no de caracter não implementa, fazendo a leitura e escrita

diretamente no dispositivo. Alguns dispositivos não se encaixam nessa classificação, por

exemplo o relógio que não possui fluxo de entrada nem saída. Os sistemas operacionais

baseado em Unix, como é o caso do Mac OS, fazem uso também de pseudo-dispositivos

que são dispositivos com nenhum dispositivo físico assossiado como o /dev/null (aceita

e descarta toda entrada e não produz saída), o /dev/random ( produz um fluxo de

tamanho variável contendo caracteres pseudo-aleatórios) e o /dev/zero (produz um fluxo

contínuo de nulls ).

A gerência de dispositivos é implementada por uma estrutura de camada de

software e hardware. Na camada de hardware estão os dispositivos com seus respectivos

controladores e os barramentos que fazem a ligação entre os componentes

possibilitando a transferência de informação. O controlador do dispositivo faz a ligação

entre a parte física do dispositivo e a parte eletrônica, e é responsável pela codificação

do fluxo de bits em blocos de bytes, e a verificação de autenticidade dessa informação.

Alguns controladores podem manipular mais de um dispositivo simultaneamente.

O acesso do sistema operacional ao dispositivo se dá pela manipulação dos

registradores existentes nos controladores desses dispositivos e a forma como o

processador se comunica com esses registradores pode variar. Existem duas formas de

acesso do dispositivo pelo processador: mapeamento em espaço de entrada/saída e

mapeamento em memória.

O mapeamento em espaço de entrada/saída era usado na maioria dos

primeiros computadores. Cada registrador de controle é associado a um numero de porta

de E/S, e utiliza instruções especiais de acesso ( comandos IN e OUT ).

23

No mapeamento em espaço de memória cada registrador de controle é

associado a um endereço de memória único.

Há também um esquema híbrido onde os registradores são associados na

porta de E/S e buffers do dispositivos são armazenados na memória

Devido o processador estar em constante desenvolvimento e sua velocidade

ser muitas vezes mais rápido que os dispositivos externos foi criado a tecnologia DMA.

Isso tira do processador a tarefa de tratar diretamente os dispositivos de E/S e faz com

que o processador fique livre para executar outras tarefas.

Existem três maneiras de realizar E/S: E/S programada, E/S orientada a

interrupções e E/S que usa DMA. Na E/S programada o processador possui total

controle sobre as operações de entrada e saída. O processador continuamente verifica se

o dispositivo está pronto (espera ocupada ou pooling). Na E/S usando interrupção

enquanto o dispositivo de E/S executa a sua tarefa o processador consegue realizar

outras tarefas sem ter que esperar pelo dispositivo de E/S pois quando o dispositivo

termina a sua execução ele envia uma interrupção para o processador indicando que

terminou. Na E/S por DMA o processador encarrega o controlador de DMA a fazer toda

a interação com o dispositivo, e esse dispositivo irá realizar a E/S programada.

7.1. Drivers

É possível criar drivers para dispositivos usando a ferramenta de

desenvolvimento XCode da Apple. Os sistemas operacionais da Apple utilizam a

biblioteca opensource I/O Kit. Biblioteca escrita em C++ que foi criada pela empresa

Next ( empresa fundada por Steve Jobs na sua saída da Apple) para ser usada no sistema

operacional Nextstep.

24

Figura 7.1.1: Tela do Xcode, usado para criação de driversFonte: Junior, Jodoval

7.2. HDs

O Mac OS dá suporte a alguns padrões de redundancia conhecidos no

mercado como RAID 0 (Conjunto RAID com Gravação Múltipla) e RAID 1 (Conjunto

RAID Espehado), e também dá suporte a um Conjunto de Discos Concatenado que

agrupa vários discos como se fossem um.

25

Figura 7.1.1: Tela do Utilitário de DiscoFonte: Junior, Jodoval

O Fusion Drive foi uma tecnologia desenvolvida pela Apple que utiliza 2

HDs para armazenamento. Um HD com tecnologia SSD e outro HD com capacidade

maior, com isso ele aumenta a capacidade de armazenamento e aproveita as vantagens

de desempenho do SSD. O sistema operacional, de forma transparente, faz o

balanceamento dos arquivos mais utilizados para o HD com mais velocidade.

Figura 7.1.1: Fusion Drive e Máquinas com esse recursoFonte: Xataka

26

7.3. Conexões

Thunderbolt

Thunderbolt é um protocolo duplo de Entrada/Saída que possibilita

transferência bi-direcional de 10Gbps de velocidade e é capaz de enviar dados no

padrão PCIe e DisplayPort por um único cabo.

Figura 7.1.1: Padrão ThunderboltFonte: Intel

USB 3.0

Interface de comunicação que alcança taxa de transferência de 5Gbps. Uma

atualização recente ( USB 3.1 ) tem capacidade d 10Gbps ( mesma da thunderbolt )

porém ainda não foi adicionada aos dispositivos.

Figura 7.1.1: Conectores no padrão USB 3.0Fonte: Toshiba

27

8. SISTEMA DE ARQUIVOS

Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas que

permitem ao sistema operacional controlar o acesso ao disco rígido. Melhorando assim,

a estrutura de localização dos arquivos no disco.

É a forma de organização de dados em algum meio de armazenamento

secundários físicos, o sistema operacional pode decodificar os dados armazenados e lê-

los ou gravá-los.

Armazena o MBR, arquivo interligado a BIOS, cuja sua importância é o

reconhecimento do sistema de arquivos e a inicialização do sistema operacional.

Diferentes sistemas operacionais usam diferentes sistemas de arquivos, dentre eles:

FAT,NTFS,Ext4,Swap,HFS,HFS+.

8.1. MFS (Macintosh File System)

O MFS foi criado pela Apple Computer em 1984, de forma notável, para

que fosse permitido o armazenamento de dados estruturados e para apoiar a interface

gráfica do Mac OS. O MFS foi chamado de sistema de arquivo plano, já que não

suportava hierarquia de diretório. Apesar de atualmente o seu volume superior a 20mb

de tamanho parecer pequeno, na época em que os disquetes tinham 400kb, seu volume

parecia expansivo.

8.2. HFS (Hierarchical File System)

No ano seguinte, a Apple apresentou Hierarchical File System parar suprir

as necessidades do usuário, criando arquivos com estrutura de árvore (hierarquias não

permitidas no MFS). O HFS trabalha com endereços de bloco de arquivos de 16 bits,

nomes de até 31 caracteres e formato de nome de arquivo MacRoman. Nos Macs OS

7.6.1 já não suportavam gravar volumes MFS, e no OS 8.1, esse volume foi retirado

completamente, tendo que ser criado posteriormente o MFSLives, um plug-in que dá

acesso somente leitura para volume MFS.

28

8.3. HFS+ (Hierarchical File System)

Atualmente o HFS foi estendido, sendo criado o HFS+, tendo como

diferencial de seu antecessor que pode trabalhar com endereços de bloco de arquivos de

até 32bits, aceita nomes de arquivos de até 255 caracteres, com formato de nome de

arquivo Unicode e a possibilidade de ter arquivos com até 8EB (exabytes), sendo um

dos motivos principais para a evolução do produto da Apple.

9. CONCLUSÃO

XXXXXXXXXXXXXXXXX

REFERÊNCIAS

Faria, Gustavo. Gerenciamento de Memória no Mavericks. Disponível em: <http://cocatech.com.br/gerenciamento-de-memoria-no-mavericks>. Acesso em: maio de2014.

Durham, Alan. Mac OS X: MAC 424 – Sistemas Operacionais. Disponível em: <http://www.ime.usp.br/~durham/cursos/mac422/pub/doc/2004/Mac%20OS%20X%20anotacoes.pdf>. Acesso em: maio de 2014.

Campos, Augusto. Como a memória compactada do OS X Mavericks vai acelerarseu Mac atual. Disponível em: <http://br-mac.org/2013/06/como-a-memoria-compactada-do-os-x-mavericks-vai-acelerar-seu-mac-atual.html>. Acesso em: junho de2014.

29

Godoy, Leandro e Pereira, Walter. Trabalho sobre o sistema operacional Mac OS X.Disponível em: <http://pt.slideshare.net/dnxwit/mac-osx-9949164>. Acesso em: junhode 2014.

Apple, Suporte. Como usar o Monitor de Atividade para ler a Memória do Sistemae determinar a quantidade de RAM sendo usada (OS X Mountain Lion e anterior).Disponível em: <http://support.apple.com/kb/HT1342?viewlocale=pt_BR>. Acesso em:junho de 2014.

Fontes:Site Hardware: (Acessado no dia 18/05/14)http://www.hardware.com.br/termos/sistema-de-arquivosSite Kiskea: (Acessado no dia 18/05/14)http://pt.kioskea.net/contents/repar/filesys.php3Site Macifícos: (Acessado no dia 18/05/14)http://macnificos.wordpress.com/sistemas-de-arquivos-mac-os/Site Mac Rumors: (Acessado no dia 18/05/14)http://guides.macrumors.com/File_systems

Referencias

Site: Slideshare

http://pt.slideshare.net/dnxwit/mac-osx-9949164. Acessado em: 24/05/14

Site: Slideshare

http://www.slideshare.net/Evandromadeira/apple-macosx. Acessado em: 24/05/14

Site: Slideshare

http://pt.slideshare.net/guestf2a4bc5/apresentao-mac-os. Acessado em: 24/05/14

Site: Wikipedia

http://pt.wikipedia.org/wiki/XNU. Acessado em: 24/05/14

Site: Wikipedia

http://pt.wikipedia.org/wiki/N%C3%BAcleo_(software)#N.C3.BAcleos_monol.C3.ADticos. Acessado em: 24/05/14

Site: Oficinadanet

30

http://www.oficinadanet.com.br/post/10330-kernel-dos-sistemas-operacionais. Acessadoem: 24/05/14

Site: Youtube

https://www.youtube.com/watch?v=-7GMHB3Plc8. Acessado em: 24/05/14

Site: HowStuffWorks

http://computer.howstuffworks.com/macs/mac-os-x2.htm. Acessado em: 24/05/14

Site: Osxbook

http://osxbook.com/book/bonus/ancient/whatismacosx/arch_xnu.html. Acessado em:24/05/14

Site: PureDarwin

http://www.puredarwin.org/developers/xnu#TOC-What-is-XNU. Acessado em:24/05/14

Site: Netgreat

http://www.netgreat.com.br/disciplinas/so/3/mcxmo2.pdf. Acessado em: 24/05/14

Site: Xataka

http://www.xataka.com/componentes-de-pc/que-es-apple-fusion-drive. Acessado em:24/05/14

Site: Intel

http://intel.adrenaline.uol.com.br/tecnologia/artigos/206/o-que-e-o-thunderbolt.html.Acessado em: 25/05/14

Site: Toshiba

http://www.toshiba.com/us/accessory/USB3SAUB3BK. Acessado em: 26/05/14