Mac os-x
Upcoming SlideShare
Loading in...5
×
 

Mac os-x

on

  • 12,566 views

 

Statistics

Views

Total Views
12,566
Views on SlideShare
12,566
Embed Views
0

Actions

Likes
0
Downloads
572
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mac os-x Mac os-x Document Transcript

  • Universidade do Vale do Rio dos Sinos UNISINOSTrabalho sobre o sistema operacional Mac OS X Leandro da Rocha Godoy Walter Luiz Andriola Pereira Conceitos de Sistemas Operacionais Prof. Túlio C. Bender São Leopoldo, Novembro de 2008.
  • SUMÁRIOPor quê Mac OS X? 3Características do Mac OS X 6Gerência de processos do MAC OS X 8Gerência de memória do MAC OS X 12Gerência de arquivos do MAC OS X 16Conceitos da disciplina não implementados no Mac OS X 20Outras tecnologias e inovações do Mac OS X 21Análise crítica do Mac OS X 22Referências bibliográficas 23
  • POR QUÊ MAC OS X?Mac Em meio a uma grande quantidade de fabricantes de computadores pessoais, a Apple permanece a única adesenvolver um sistema operacional exclusivo para o uso em seu hardware. Por este motivo, é natural que o software semolde ao hardware em que será executado, criando um conjunto mais uniforme e, espera-se, menos propenso a falhas eincompatibilidade. Jef Raskin, empregado da Apple, foi o responsável por delinear, no início dos anos 80, asprimeiras características do que viria a ser o projeto Macintosh, anteriormente chamado projeto Annie,e que advém de uma apropriada brincadeira com o nome de uma variedade de maçã, McIntosh. Em “O livro de Macintosh”, documento interno onde Raskin enumera os recursos desejáveispara um sistema de uso individual, nota-se um desejo de tornar o computador algo simples do usar,acessível financeiramente e, em suas palavras, projetado para a “Pessoa Comum” (PITS - Person in theStreet), desprovidas de conhecimento técnico acerca de programação e manutenção de computadores. Contrapondo outras plataformas da época, como a IBM PC, ele pregava que o resultado doprojeto teria que ser um produto leve e integrado, e não algo dividido em peças a ser montado, e quedeveria ser trivial adicionar outras partes a ele. Cabos, possuiria apenas o de força, e se possível, nemele. Não possuiria partes internar expostas, e deveria ser desnecessário abri-lo, a não ser para reparos.Porém, aquilo que demonstrou mais claramente sua extraordinária visão de futuro, tratava da maneiraque os manuais deveriam ser, mínimos e escritos em linguagem leiga, o que atualmente resumeperfeitamente a proposta de produto que a empresa entrega ao usuário.Mac OS Além do foco no usuário final, leigo, que tem pouca disposição para o aprendizado do complexo sistema de linhade comandos, os produtos da marca Apple possuem um tal refinamento que, mesmo custando mais caro que aconcorrência, vem aumentando em vendas atualmente. O sistema operacional padrão para computadores Machintosh possui basicamente duasencarnações. A primeira durou até a versão 9 e foi o sistema criado junto com a plataforma.Inicialmente era chamado de System, nas últimas duas versões passou para Mac OS e, com o adventoda versão X, passou a ser referido como Mac OS Classic. Em seu lançamento junto a plataforma, em 1984, tornou-se o primeiro sistema comercialmenteviável dotado de interface gráfica dentre computadores pessoais, ocupando impressionantes 216KB emdisco. Em anos anteriores, outros sistemas com interface gráfica foram desenvolvidos, inclusive o Lisada Apple, mas eram de quatro a doze vezes mais caros do que o Machintosh no seu lançamento, nãoobtendo vendas expressivas. Apenas um ano depois, Steve Jobs, um dos fundadores da empresa, deixaria a Apple e, poucotempo depois, fundaria a NeXT, algo que teria relevância não apenas neste momento, mas seria degrande importância para o futuro do Mac OS. Na NeXT novamente hardware e software eramdesenvolvidos para uso conjunto. O sistema operacional NEXTSTEP usava um kernel Mach 2.0 da
  • universidade de Carnegie Mellon modificado sob um ambiente 4.3BSD e seus servidor de janelas erabaseado no Display PostScript, união da linguagem de descrição de página PostScript e tecnologias desistema de janelas. Para rodar em várias plataformas, 68K, x86, PA-RISC e SPARC, suas aplicações eram criadasnuma única versão contendo todas elas, chamadas de "fat" binaries, ou binários gordos numa traduçãoliteral. Anos mais tarde a companhia abandonaria a produção de hardware em prol do foco nosoftware. A NeXT ainda chegaria a lançar uma plataforma aberta em parceria com a Sun, composta devárias APIs e frameworks, de onde qualquer um poderia criar sua própria implementação de sistemaoperacional orientado a objeto sobre o núcleo de outro sistema operacional.Mac OS X Uma das características que diferenciam os produtos da Apple é que são sempre dotados de inovações visíveis aosolhos do cliente. Com a interface gráfica foi assim. Com os desktops coloridos também. Em 2001, o foco está novamenteno sistema operacional. O Mac OS X não seria esta a primeira vez que a Apple utiliza um sistema do tipo Unix. Em1988 ela lançou o A/UX, baseado no 4.2BSD (substituído em seguida pelo 4.3BSD) e no Unix SystemV Release 2 da AT&T, e era usado em combinação com recursos do System 6 e 7 em versõesposteriores. Foi descontinuado em 1995. Desta vez, porém, a empresa não estava desenvolvendo apenas mais um sistema operacional,mas aquele que ajudaria a colocar novamente a empresa em uma posição de inovação e, principalmente,lucratividade. Depois de fracassar por meia década em modernizar seus sistema operacional, a Appleespeculava várias direções a seguir. Haviam vários projetos internos, a possibilidade de compra outrasempresas, como a negociação para a compra da Be Inc. e da NeXT e mesmo a parceria com a IBM,uma subsidiária chamada Taligent. A alternativa escolhida foi a NeXT e fez do seu sistema operacionalo ponto de partida para o que viria a ser o Mac OS X. Para tornar a transição entre sistemas mais suave foram implementadas um conjunto de APIschamada Carbon, uma interface para desenvolvimento em C procedural cujas aplicações podem serexecutadas nas versões 8,9 e X do Mac OS. Carbon também provê funcionalidade para outras APIs,como a Cocoa, um conjunto de APIs para desenvolvimento orientado a objetos que incorpora às suasaplicações o modelo visual da interface gráfica Aqua. O núcleo de código aberto do sistema foi chamado de Darwin, uma coleção de pacotes comoGCC e X11 do qual destaca-se o kernel xnu, baseado em Mach e FreeBSD, mas com pequenas partesadvindas de diversos outros projetos como o MkLinux da própria Apple, NetBSD e OpenBSD etrabalho feito na universidade de Utah sobre o Mach. O kernel xnu possui multi-tarefa preemptiva,proteção de memória verdadeira e suporte a multiprocessamento simétrico.
  • Versões do Mac OS XAté o presente momento, o sistema operacional conta com seis versões, excetuando-se a versão MacOS X Public Beta, codinome Kodiak. São elas as versões, de acordo com seus codinomes, Cheetah(10.0), Puma (10.1), Jaguar (10.2), Panther (10.3), Tiger (10.4) e Leopard (10.5). Está por vir a versão10.6, conhecida como Snow Leopard, que terá como objetivos principal melhorar a performance dosistema, reduzindo o consumo de memória e tirando melhor proveito de CPU de múltiplos núcleos.Esta pode ser a primeira versão a não suportar a plataforma PowerPC.O Mac OS X 10.0, internamente chamado de Cheetah, era um sistema lento e incompleto, comfreqüentes kernel panics e poucos aplicativos. Porém, dado o tempo que havia sendo desenvolvido, ecom o histórico da empresa de fracassos na definição da sua nova geração de sistema operacional, sualiberação como produto comercial demonstrou que a empresa de fato seguiria o desenvolvendo. Masapenas após o lançamento da versão posterior, 10.1, que a Apple anunciaria que o Mac OS X seria osistema operacional padrão para todos os seus produtos. Esta versão foi vista como uma correção debugs, e o fato de ser liberada sem custo aos clientes que haviam adquirido a versão anterior reforça estaimpressão.A terceira e quarta versões do sistema foram novamente um esforço para melhorar performance eestabilidade, trazendo algumas novas aplicações. A quinta versão, Tiger, iniciou o suporte aosprocessadores x86.Na sexta versão, Leopard, não conta com o ambiente Classic, não suportando aplicações escritas paraMac OS 9 e anteriores, já que estas não teriam como rodar sob a plataforma x86. Além disso, o sistemaganhou algumas melhoras interessantes, em especial na segurança, como a alocação aleatória dealgumas das bibliotecas na memória, protegendo o sistema de certos ataques de injeção de código queesperam encontrá-las em endereços específicos, e sandboxes através de RBAC (controle de acessobaseado em regras, do inglês role-based access control) suportado em nível de kernel, prevenindo queaplicações alterem parâmetros que não lhe dizem respeito. Esta versão foi considerada Open BrandUNIX 03 na plataforma Intel, sendo o primeiro sistema operacional baseado em BSD a receber estacertificação.
  • CARACTERÍSTICAS DO MAC OS X Mac OS X é um sistema operacional de uso pessoal, doméstico ou profissional, para propósitogeral, como o de criação de conteúdo gráfico, digital para áreas de produção de filmes, internet e áreaimpressa, acesso a rede local ou internet, produção de conteúdo através de suites de escritório, jogos,multimidia, etc. A sua desenvolvendora, Apple Inc., conta ainda com um sistema para servidores,chamado Mac OS X Server, com características similares e que não será levado em consideração, poisfoge ao foco deste estudo. Os requisitos básicos de hardware para sua utilização são um processador Intel x86, PowerPCG5 ou PowerPC G4, todos com frequência de operação acima de 867MHz, 512MB de memória RAMinstalada e 9GB de espaço de armazenamento. Por exigência contratual, é permitido utilizar o sistemaoperacional Mac OS X apenas em computadores produzidos pela própria Apple. Em 2007 foi concedido pelo Open Group ao Mac OS X, na sua versão 10.5 para arquitetura x86,a certificação UNIX 03, em conformidade com as especifcações SUSv3 e POSIX 1003.1, cobrindobibliotecas, chamadas de sistema, interfaces de terminal, comandos, utilitários, internacionalização e aAPI C. Como acima referido, atualmente o Mac OS X roda sobre duas plataformas, Intel x86 ePowerPC. Até 2005, a única arquitetura usada pela Apple era a PowerPC, criada em 1991 num esforçoconjunto de Apple, IBM e Motorola, e que foi baseada no processador POWER (PerformanceOptimized With Enhanced RISC) que combina tecnologia RISC com alguns conceitos tradicionaisadvindos da tecnologia CISC, como o grande número de instruções, 184. A PowerPC suporta tanto 32quanto 64 bits, tem um design superescalar simplificado e suporta sistemas de multiprocessamentosimétrico (SMP), sendo produzida até hoje pela IBM. Em 2005, no entanto, a Apple anunciou quepassaria a utilizar os mesmos processadores que equipam máquinas da plataforma PC, mudando para aplataforma x86, com exclusividade de fornecimento da fabricante Intel. Uma vez que possui o mesmo processador presente em PC’s, a Apple precisou adicionarcomponentes de hardware e software que não apenas trariam beneficio ao usuário, mas preveniriam ouso de seus produtos livremente, principalmente quanto a instalação de seu sistema operacional emcomputadores mais baratos fabricados por concorrentes. Para tal, ela adotou o uso de componentescomo o EFI (Extended Firmware Interface) em seu hardware, o faz com que o sistema operacionaltenha rotinas diferentes em seu boot loader para cada arquitetura, e o torna incompatível com um PCcomum dotado de BIOS. No tocante ao software, outro aspecto importante foi a utilização de binários universaisencriptados para algumas aplicações chave. Os binários universais são uma herança dos fat-binaries(binário-gordo) do NEXTSTEP, um único arquivo da aplicação que contém binários para todas asarquiteturas suportadas, implementados a partir do Mac OS X. Esta medida visava o suportesimultâneo a aplicações de 32 e 64 bits na plataforma PowerPC, e posteriormente, com a mudança paraplataforma x86, foi usada para garantir uma transição suave entre arquiteturas. Executáveis deaplicativos com o Finder e o Dock, porém, tem um ou mais segmentos encriptados por AES, o quelhes garante certa proteção contra o uso indevido.
  • A manutenção da retro-compatibilidade do Mac OS X na plataforma PowerPC com aplicativosdo Mac OS 9 ficou a cargo do ambiente chamado Classic, cujo núcleo consiste numa máquina virtualchamada truBlueEnvironment. O ambiente provê uma camada de abstração de hardware, virtualizandochamadas de sistema e interrupções, executa em espaço de memória protegida com múltiplos processosMac OS 9 consistindo em um único processo Mac OS X, e compartilha alguns recursos, sendo possívelcopiar/colar e arrastar entre aplicativos de ambos os sistemas, comunicação de scripts dentro doambiente Classic com aplicativos Mac OS X e o acesso a qualquer volume suportado pelo Mac OS X,entre outras facilidades. Na plataforma x86 o ambiente Classic não é implementado, uma vez que são necessáriasinstruções presentes apenas em processadores PowerPC. Muito em razão disso, a última versão dosistema operacional, de codinome Leopard, já não possui mais o Classic entre seus recursos. Para a tarefa de rodar executáveis da plataforma PowerPC, tanto CFM (Code FragmentManager, parte das antigas versões do Mac OS) quanto Mach-O, a versão x86 do Mac OS X incluemuma tecnologia chamada Rosetta. Mach-O (Mach Object File Format) é o ambiente de tempo deexecução (runtime) nativo do sistema operacional Mac OS X, seu responsável único para execução debinários. Curiosamente, seu nome pode causar confusão, uma vez que, por princípio, o componenteMach não compreende qualquer formato de objeto de arquivo. Para executar sob Rosetta, todo o software deve ser escrito para a plataforma PowerPC,inclusive itens como plug-ins, add-ons, etc. Neste caso, o kernel inicia Rosetta junto a aplicação, e seucódigo reside no mesmo processo do executável da da mesma. Rosetta age alternando entre a traduçãoe execução de blocos de código de PowerPC para código de x86 de forma dinâmica, fazendo cache decódigo traduzido para aumentar a performance.
  • GERÊNCIA DE PROCESSOS DO MAC OS XKernel O kernel do sistema operacional Mac OS X, criado a partir do sistema operacional 4.4BSD e domicrokernel Mach 3.0, é considerado um kernel híbrido em seu projeto, por possuir diferentes partes(monolítico e microkernel) interagindo na utilização do sistema. Em termos de estrutura de interação entre os subsistemas, ele é considerado um kernel emcamadas. Para ilustrar esse comportamento, a Figura 1 e a Figura 2 podem ser usadas para comparação. Figura 1 – Organização de um Sistema Operacional em kernel e microkernel Como é mostrado na Figura 1, na organização de um sistema operacional em kernel emicrokernel existe uma estrutura mínima que interage com o hardware, provendo mecanismosnecessários para interação com os outros subsistemas. Neste caso, o kernel localiza-se acima daestrutura básica do sistema operacional, agindo como sendo um conjunto de serviços disponibilizadosao microkernel para atender as requisições (chamadas de sistema) das aplicações de usuários. Sendo um sistema operacional em camadas, nota-se que o sistema operacional possui diversasvantagens sobre um sistema operacional monolítico. • Interface padronizada; • Extensibilidade; • Flexibilidade no suporte de novos subsistemas; • Portabilidade; • Confiabilidade (isolamento dos subsistemas). Um projeto baseado em camadas impõe uma interface padronizada para requisições feitas porum processo. Os processos não precisam distinguir entre serviços de espaço de usuário ou serviço dokernel, visto que todos os serviços utilizam troca de mensagens para comunicação.
  • Figura 2 – Organização das camadas do Mac OS X Qualquer sistema operacional irá, inevitavelmente, adicionar novos serviços que não sãosuportados pela sua atual estrutura. Uma organização em camadas facilita esta extensibilidade,permitindo a adição de novos serviços como também a opção de ter múltiplos serviços numa mesmaárea. Por exemplo, podem haver muitos tratadores de IDE, como simples serviços isolados em espaçode usuário, ao invés de vários serviços no kernel. Sendo assim, usuários podem escolher entre umavariedade de opções a que melhor se adapta a sua atual necessidade (podendo um processo suportarUDMA, e outro suportar PATA). Além disso, como os subsistemas são explicitamente delimitados,podem haver reestruturas dentro de um determinado subsistema sem haver a necessidade de afetartodo o kernel, sendo inclusive possível descarregar, atualizar e recarregar um serviço do kernel sem tera necessidade de recompilar todo o kernel.
  • Relacionado a extensibilidade está a flexibilidade no suporte de novos subsistemas. O conceitode módulos dos kernels Linux e FreeBSD utilizam o conceito de módulos para permitir umaflexibilização na manutenção de novos subsistemas, o que no caso do Mac OS X ocorre naturalmentedado o seu projeto baseado em camadas. No sistema operacional Mac OS X, todo o código específico de arquitetura está no microkernel. Portanto, a questão de portabilidade se torna muito simples, pois apenas se torna necessário atradução para outra arquitetura (ou a adição de uma otimização de um processador específico) nomicrokernel que praticamente todo o sistema operacional (salvo as aplicações que possuem códigoespecífico de uma arquitetura) é suportado em uma nova arquitetura. Embora o conceito de módulos ajude no aumento da confiabilidade no sistema, ganhos aindamaiores podem ser obtidos com uma organização em camadas. Fazendo testes de estresse nomicrokernel podem ser detectados problemas que causariam instabilidade em todo o sistema. Comoexiste apenas trocas de mensagens assíncronas entre os subsistemas, caso um subsistema sejadanificado, o sistema operacional como um todo não necessariamente é afetado, visto que ossubsistemas estão em espaço de usuário.Escalonamento de Processos O escalonador de processos do Mac OS X _e derivado do escalonador OSFMK, porém váriasmodificações foram feitas para o tratamento de interatividade no projeto de escalonador base. Assim como o kernel do FreeBSD (5.0BSD), o escalonador de processos do Mac OS Xescalona os processos baseado numa variante do algoritmo de múltiplas filas com realimentação, porémdivide as filas de prioridades em 4 grupos de processos, agrupados de acordo com suas características,conforme é descrito na Tabela 1. Grupo de Filas Características Normal Prioridade das aplicações normais do usuário Prioridade das aplicações do sistema, com prioridade superior as threads Sistema normais de usuário Classe reservada para threads em espaço de kernel que necessitam rodar Kernel em uma prioridade superior as threads de sistema (como a thread de descalonamento de E/S, por exemplo) Threads nas quais a prioridade está baseada na necessidade de reservar Tempo Real uma fração pré-definida de ciclos de clock, independente de outras atividades sendo executadas no sistemaTabela 1 – Grupos de Filas de Processos no Escalonador do Mac OS X No caso de tarefas de tempo real, é feito um controle forte pela aplicação no número de ciclosdo processador a serem utilizados. Assim, o programador utiliza chamadas de sistema para requisitar aosistema rodar por A ciclos nos próximos B ciclos. Por exemplo, um processo de tempo real pode
  • requisitar ao kernel que, para que ele possa executar corretamente dentro dos seus padrões mínimosaceitáveis, ele necessite, a cada 7000 ciclos, 3000 ciclos reservados a ele. Caso a aplicação não respeite o número de ciclos requisitados, ou seja, não faça uma operaçãode E/S ou use a chamada de sistema sched yield, um processo de tempo real será penalizado dentro desua fila de prioridades, sendo inclusive possível a migração para o grupo de processos Normal, visandoum maior desempenho e justiça no sistema. A escolha do processo a ser executado obedece o algoritmo de Múltiplas Filas comrealimentação, sendo executados os grupos de filas de maior prioridade (Tempo real) e por último ogrupo de filas de prioridade de usuário (Normal). A migração entre os diferentes grupos de threads e feita através do nível de prioridadeexplicitada pelo usuário. A migração entre as filas de prioridade dentro do grupo de tarefas de usuário édeterminada pelo determinador de interatividade.Mach Scheduling • Suporta Tempo-Compartilhado e Prioridade-Fixa; • Prioridades: Normal, Alta-Prioridade de Sistema, Somente modo-Kernel e Theads de Tempo-Real; • Theads de prioridade de Tempo-Real geralmente são de prioridade Fixa; • Threads de prioridade fixa executam por um pré-determinado período de tempo ou até que uma thread de prioridade maior queira executar. Então ela é colocada no fim da fila daquela prioridade (normal); • Threads de Tempo-Real: Uma thread pode dizer ao agendador que ela precisa rodar por 3000 ciclos dos próximos 7000, além de dizer se precisam ser contínuos ou não. Obviamente, longo ciclos contínuos podem ser custosos, mas também necessários; • Se uma thread de tempo-real não respeita o tempo de processamento indicada ela é penalizada e pode até ser rebaixada a uma prioridade “normal”; • Threads que usam muito tempo do processador recebem uma prioridade baixa para evitar que threads de prioridade alta monopolizem o processador. As de prioridade alta devem executar rapidamente e liberar o recurso.Comunicação Interprocessos • Tarefas clientes acessam serviços de tarefas servidoras por um canal de comunicação (ports); • Tarefas mantém, repassam e obtém direitos sobre os ports; • As “pontas” destes canais são chamadas ports. Os port-rights denotam as permissões para usar estes canais. Eles são o mecanismo fundamental de segurança no Mach. Ter um right, é ter a capacidade de acessar ou manipular um objeto. • Comunicação por: filas de mensagens, semáforos, notificações, lock sets e RPCs (Remote Procedure Calls). • Várias tarefas podem manter o direito de enviar (write) mensagens para filas, mas só uma pode ter o direito de lê-la. Mensagens podem ser dados puros, cópias de memory ranges, direitos de ports, e mais... (são assíncronas). • Semáforos suportam wait, post e post all. • Lock Sets: mutex sobre uma seção crítica.
  • GERÊNCIA DE MEMÓRIA DO MAC OS XCaracterísticas principais • Paginação sob demanda; • External Memory Management Interface (EMMI); • Named Memory Entries; • Lazy Evaluation de Memória Copiada (Shadows Objects); • Memory Maps; • Herança de Named Regions; • UPLs.Conceitos Memory Objects: Dados potencialmentes persistentes. Contém named entrys e regions.Paginação sob demanda: Mapeamento de Memória Virtual para real na primeira tentativa de acesso.Todo tipo de data no espaço de memória é provido através dos Memory Objects. Mach “pede” ao“owner” do M.O. (um pager) pelo conteúdo e retorna a ele possíveis modificações nos dados. Pagers: Existem os default-pagers (lida com memória não-persistentes, ou “memória-anônima”.Só existem durante a vida de uma task) e os vnode-pagers (Mapeia arquivos em Memory Objects).O interessante, é que o Mach exporta um interface para esse Memory Objects, permitindo contribuiçãode varias tarefas modo-usuário em seu conteúdo.(EMMI) Named Entries: Handle para objetos compartilhados ou submapas. Permite ao owner mapear oobjeto de memória virtual, ou então, passar o direito de mapeá-lo. Mapear uma Named Entry em 2tasks diferentes resulta em Memória Compartilhada.Quando se cria uma nova task, elas são clonadas do pai, e sua porção mapeada da memória pode serherdada como uma cópia, como compartilhada, ou nenhum desses, baseadas nos atributos associadosao mapeamento. Lazy Evaluation: A copia é protegida com read-only access para as duas task que compartilhammemória. Quando ambas tentam acessar a mesma porção, esta é copiada nessa hora. Isso permitesimplificações em diversas áreas, notavelmente nas messagings APIs. MemoryMaps: Lista ordenada Duplamente Ligada. Cada objeto contém lista de páginas eshadow references a estes objetos. Named Regions podem ser herdadas, não só como um grupo de objetos de memória, mastambé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 umfragmento de mapa virtual. UPLs: Universal Page Lists. (Data structure) Informações de caching, permissões,mapeamentos, e etc.. Shadow Objects: Quando um objeto de memória virtual é duplicado, (e.g. Um processochamou fork), é criado um Shadow Object. Ele é inicialmente vazio, apenas com uma referência a outro
  • objeto. Quando uma página é modificada, ele é copiada do pai (referência) pra ele, e então modificado.Ao ler dados, se ela não existe no Shadow Object lê do pai. Isto chama-se Shadow-chain.Overview No Mac OS X, cada processo tem o seu próprio conjunto (32bits ou 64 bits) de espaço deendereço virtual. Para processos de 32 bits, cada processo tem um espaço que pode endereçardinamicamente chegando ao limite de 4gb. Para processo de 64 bits, cada processo pode endereçardinamicamente até o limite de 18 exabytes. O espaço de endereço virtual de um processo constituído por regiões de memóriamapeada. Cada região de memória no processo representa um conjunto específico de páginas dememória virtual. A região tem atributos específicos controlando coisas como herança (porções daregião podem ser mapeadas a partir de "pai" das regiões), escreve-protecção, e se é "wired" (isto é, nãopode ser paginada out). Porque regiões contêm um determinado número de páginas, eles estão page-alinhados, significando o endereço inicial da região também está iniciando o endereço de uma página eterminando o endereço também define o fim de uma página. Memória física é um recurso precioso no computador. Uma característica dos SistemasOperacionais Modernos é a Memória Virtual (Virtual Memory – VM), que implementa a ilusão de umlargo espaço de endereços para cada programa sem sobrecarregar o programador com detalhes, comoquais partes do programa são residentes na memória física, em determinado momento, ou onde namemória física as porções residentes estão localizadas. Memória Virtual é normalmente implementadaatravés de paginação (paging). Quando residente cada página da memória virtual é carregada em algumaparte da memória física. Esta porção, normalmente é chamada de “page frame”. Além do VM Subsystem baseado no Core-Mach, o gerenciamento de memória do Mac OSXengloba diversos outros mecanismos, alguns dos quais não são partes estritamente do sistema VM, masestão intimamente relacionados. O Subsistema VM do kernel Mach consiste do módulo machine-dependent phisical map(pmap) e outros módulos machine-independent para gerenciar a estrutura de dados, tais como osvirtual address space maps (VM maps). O Kernel exporta diversas rotinas para o Espaço do Usuário(user space) como parte de Mach VM API. O kernel usa o UPL (Universal Page List), Estrutura de Dados para descrever como delimitarum conjunto de páginas físicas. O UPL é criado baseado na associação das páginas (pages) com oObjetos VM (objects VM). UPLs incluem vários atributos das páginas que descrevem. Subsistemas doKernel, particularmente o File System, usam UPLs para se comunicar com o subsistema VM. O UBC (Unified Buffer Cache) constitui um conjunto de páginas para armazenar (caching) oconteúdo dos arquivos e as porções anônimas do espaço de endereços. Memória anônima não ésustentada por arquivos regulares, dispositivos, ou mesmo alguma outra fonte de memória e o exemplomais comum é a memória alocada dinamicamente. O Kernel inclui 3 paginadores internos, a saber: o paginador padrão (anônimo), o paginadorpara dispositivos e o paginador para vnode. Eles tratam operações de entrada e saída sobre regiões da
  • memória. Os paginadores comunicam-se com o Subsistema Mach-VM utilizando interfaces UPL ederivadas do paginador do Mach. A figura 3 ilustra o VM e componentes relacionados no Mac OSX. Figura 3Nota: Ao contrário da maioria dos sistemas operacionais baseados em UNIX, o Mac OS X não usa um pré-partição swap para a memória virtual. Em vez disso, ele usa todo o espaço disponível na máquina da partição deboot.
  • Memória Compartilhada Memória compartilhada é a memória que pode ser escrita ou lida a partir de dois ou maisprocessos. Memória partilhada pode ser herdada a partir de um processo-mãe, criado por um servidorde memória compartilhada, ou explicitamente criado por um pedido de exportação para outrasaplicações. O uso da memória compartilhada/partilhada incluem: • compartilhando grandes recursos, como ícones ou sons • rápida a comunicação entre um ou mais processos A Memória compartilhada é frágil. Se um programa corrompe uma seção de memóriacompartilhada, os programas que também usam esta mesma memória acabam acessando dadoscorrompidos.Wired MemoryWired memory (também chamado de memória residente) armazena código kernel e estruturas dedados, que nunca deve ser paginada para o disco. Aplicações, frameworks e outros softwares da camadade usuário (user level) não podem ser alocados na wired memory. No entanto eles podem afetar aquantidade de Wired memory existente num dado momento. Há um overhead de memória associadacom cada recurso despendido pelo kernel em nome de um programa.Recursos Wired memória utilizada pelo kernelProcess 16 kilobytesFio bloqueados em uma continuação-5 kilobytes; bloqueou-21 kilobytesMach porto 116 bytesMapeamento 32 bytesBiblioteca 2 kilobytes acrescido de 200 bytes para cada tarefa que usa-loMemória região 160 bytes Tabela 2 - Wired memória gerado pelo usuário a nível de softwareNota: Estas medidas mudam a cada nova versão do Mac OS X. Elas são fornecidas aqui para te dar umaestimativa aproximada do custo relativo do sistema de uso do recurso. Como pode-se ver, cada thread criada, cada subprocesso bifurcado, e cada biblioteca ligadacontribui para a ocupação da memória residente do sistema. Além das solicitações de Wired-Memory geradas no nível do usuário, as seguintes entidades dokernel utilizam wired-memory: • VM objetos • a memória virtual buffer cache • I / O buffer caches • condutores
  • GERÊNCIA DE ARQUIVOS DO MAC OS X Antes de tratar da forma como o sistema lida com seus vários dispositivos de armazenamento, énecessário mencionar brevemente o EFI (Extensible Firmware Interface, ou Interface de FirmwareExtensível). O seu firmware inclui uma aplicação chamada boot manager, que pode rodar bootloaders,drivers e outras aplicações EFI. Assim, diferente da plataforma PC, atualmente o master boot record(MBR) localizado no início do disco ali está apenas para fins de compatibilidade. O EFI é acionadodurante o processo de boot, após o POST, e a partir dele é definida a partição que será carregada,através de arquivos de configuração .EFI, como por exemplo boot.efi para o sistema operacional MacOS X ou elilo.efi para sistemas Linux. Entra em ação, então, o Apple partitioning scheme (Esquema de Particionamento da Apple), usadopara manejar discos e que têm layouts específicos para discos rígidos chamado UNIVERSAL HD epara CD’s e DVD’s, chamado UNIVERSAL CD. A primeira partição do UNIVERSAL HD é o mapa de partições que contém meta-dadosrelacionados às partições. Os meta-dados consistem de referências ao mapa de partição, cada umdescrevendo uma partição. O tamanho do mapa é de 63 blocos, cada um com 512 bytes. Os primeirosdois bytes do primeiro bloco contém a assinatura do esquema de particionamento da Apple. Os doisbytes seguintes representam o tamanho do bloco físico do disco. O número total de blocos no disco selocaliza nos quatro bytes posteriores. Assim, os 63 blocos seguintes são o mapa de partições, cada bloco representando uma entradado mapa que descreve uma partição. Após os dois bytes iniciais identificadores seguem as informaçõesde início da partição, tamanho e tipo. Por padrão do sistema operacional, 16 partições é o máximo suportado em um único disco, masesta não é uma limitação técnica, apenas um limite proposto, devido a limitações existentes em algumasaplicações. Ferramentas do próprio sistema permitem a adição de um número maior de partições.HFS+ O sistema de arquivos padrão do Mac OS X é o HFS+ (Hierarchical File System Plus, ouSistema de Arquivos Hierárquico Mais). Sua instância fundamental é o volume, que pode estar em umdisco, uma parte deste ou vários discos em conjunto. Os blocos de alocação são a unidade elementaronde são alocados os arquivos, e seu tamanho corresponde a um múltiplo do tamanho do setor dodispositivo utilizado, sendo o mais comum 512 bytes, o que contrasta com o bloco de alocação padrãodo Mac OS X, que é de 4KB, sendo que este pode chegar a 1MB (tamanho definido artificialmente noarquivo /sys/param.h). O espaço de armazenamento usa números de bloco de alocação de 32 bits comalocação postergarda de blocos físicos. Quanto a fragmentação, a implementação do UFS herdada do sistema BSD presente no HFS+emprega uma unidade adicional, complementando o bloco, chamado fragmento, que é uma fração destea ser compartilhada entre arquivos. Isto traz benefícios quanto ao aproveitamento de espaço de disco àscustas de uma lógica de sistema de arquivos muito mais complexa. Para mitigar os seus efeitos,aumentando o desempenho no acesso a arquivos pequenos e frequentemente acessados, são
  • empregados um sistema de clustering adaptativo chamado Hot File Clustering, e a realocação dinâmicadestes pequenos arquivos para promover sua continuidade. O HFS+ é um sistema de arquivos que suporta nomes de arquivos e diretórios até 255caracteres codificados em Unicode UTF-8 (em formato canônico, em forma totalmente decomposta),arquivos de até 8 exabytes e múltiplos mecanismos de referenciação através de aliases, hard links e linkssimbólicos. E embora seja por padrão um sistema case-insensitive com case-preserving (preserva acaixa-alta quando presente), o que quer dizer que nomes de diretórios e arquivos que sejam iguais,mesmo diferindo quanto a caixa-alta e caixa-baixa em um ou mais caracteres, não podem co-existir nummesmo diretório, há suporte no sistema de arquivos para case-sensitivity.Controle de Acesso e Permissões A partir da versão 10.4 do sistema operacional, são suportados pelo sistema de arquivossimultaneamente ACLs (listas de controle de acesso), que são armazenadas como atributos estendidos,permissões de arquivos no estilo Unix-Like e Flags de arquivo no estilo BSD (append-only, immutable,undeletable, etc.). Todas as chamadas do gerenciador de arquivos do Mac OS X, no entanto, são subsidiadas pelosubsistema BSD, que como qualquer Unix-Like no que diz respeito a proteção de escrita, não provênenhum lock para arquivos abertos por múltiplas aplicações. Os frameworks Carbon, Cocoa e Java tema capacidade de adicionar o recurso de acesso exclusivo a arquivos através dos chamados advisory locks,mas este recurso depende da implementação do desenvolvedor. Existe aprovisionamento ainda para oarmazenamento de múltiplos timestamps para cada objeto do sistema de arquivos.Bundles e Fork de Arquivo Além do tradicional arquivo, o sistema operacional suporta um tipo especial, chamado File Fork(Ramificação de Arquivo, em tradução livre) que encapsula vários arquivos dentro de um único, tendodois sempre presentes, o data fork e o resource fork, armazenados em árvores-B separadas. Outro conceito particular do Mac OS X são os Bundles. Estes são uma coleção de recursosrelacionados empacotados como numa hierarquica de diretórios. Alguns exemplos de recursos queutilizam esta abordagem são os executaveis, as bibliotecas compartilhadas, plug-ins, imagens, entreoutros, encontrando até mesmo bundles dentro de bundles. Seu uso visa facilitar a distribuição,manutenção e uso de software. O gerenciador de arquivos do sistema operacional trata estes pacotes como sendo arquivosúnicos. Um bundle de aplicação (sufixo .app) contém, no entanto, muito mais que apenas o seuexecutável, mas sim seus icones, imagens e sons da interface de usuário, além do arquivo de lista depropriedades (sufixo .plist), uma representação em disco de dados organizados que, quando emmemória é estruturado usando tipos de dados nativos do framework Core Fundation (API de C doMac OS X, mistura de rotinas de baixo nível e funções de encapsulamento). Um exemplo simples de bundle pode ser visto na figura 4:
  • Figura 4 - AplicaçãoOtimizaçõesDesfragmentação On-the-Fly Quando um arquivo de usuário é aberto em um volume HFS+, o kernel verifica se ele estáqualificado para ser desfragmentado on-the-fly. Uma série de condições, como já não estar aberto e nãoser um arquivo apenas-para-leitura, ser parte de um sistema de arquivos com journaling, ter o forkfragmentado em oito ou mais partes, entre outros, devem ser cumpridas para que o arquivo se torneelegível para esta ação.Zona de meta-dadosNa versão 10.3 do Mac OS X o sistema HFS+ introduziu uma política de alocação que reserva espaçopara várias estruturas de meta-dados do volume chamado de Zona de meta-dados, localizando-as, sepossível, próximo ao início do volume. Isto acontecerá apenas caso o espaço em disco não seja escasso.Do contrário, o espaço reservado para este recurso será ocupado ao seu máximo, buscando reduzir os
  • tempos de busca de dados não contiguos. Esta política é valida apenas em volumes com journaling emaiores de 10 GB.Camada VFS A camada vfs/vnode é uma interface virtual do sistema de arquivos derivada do FreeBSD compequenas alterações, implementada inicialmente pela Sun e largamente usada em sistemas operacionaisatuais, que permite que diversos sistemas de arquivos coexistam de forma transparente. Um vnode(virtual node, ou nó virtual) é uma representação do interna do kernel de um arquivo, enquanto que ovfs (virtual file system, ou sistema de arquivos virtual) representa o sistema de arquivos. A camada VFSse situa entre o código de sistema de arquivos independente e do sistema de arquivos dependente dokernel, abstraindo suas diferenças, de forma que o kernel usará suas funções para executar o I/O. Énesta camada que está implementado o mecanismo de journaling do sistema de arquivos. Através dele oHFS+ suporta journaling de meta-dados, incluindo estruturas de dados de volumes. A figura 5 demonsta como se conectam as API’s do Mac OS X à camada VFS: Figura 5
  • CONCEITOS DA DISCIPLINA NÃO IMPLEMENTADOS NO MAC OS X Podemos enumerar alguns poucos conceitos expostos na disciplina que não estãoimplementados no Mac OS X, mas como um sistema operacional moderno para computadorespessoais, estes não serão muitos. Quanto a ausência de prevenção de deadlocks, já era esperado, pois como foi explicado em aula,nenhum sistema comercial moderno o implementa. O sistema de arquivos HFS+ não suporta sparse files (em tradução livre, arquivos dispersos), queé a técnica de preencher com zeros espaços em branco que ficam entre arquivos de sistema, para quesejam vistos como um único arquivo, sem com isso ocupar mais espaço em disco. Sistemas de arquivosalternativos podem, porém, ser utilizados, resultando na adição deste e outros recursos e a possívelsubtração de outros tantos. Um exemplo seria o uso do UFS, onde um dos efeitos colaterais seria adivisão dos forks em tantos arquivos quanto o compusesse (data fork e resource fork, obrigatoriamente, equantos mais houvessem).
  • OUTRAS TECNOLOGIAS E INOVAÇÕES DO MAC OS X Como uma empresa conhecida por ser inovadora, a Apple pouco traz de novo em relação aoscomponentes internos do sistema. As inovações em software mais conhecidas da empresa ultimamentese referem mais a interfaces com usuário, já famosas, e com aplicativos que trazem facilidade para osmesmos. Atualmente, devido ao desenvolvimento de novas formas de interação com aparelhos móveis,mais notadamente o telefone celular iPhone, a Apple tem rumado em direção a interfaces deapontamento direto, conhecidos no mercado como touch-screen, e que começaram a ser inseridas emoutros aparelhos da sua linha de computadores pessoais, como notebooks lançados no segundosemestre de 2008. Em se tratando de componentes internos, pode-se dizer que o desempenho das máquinasvirtuais que executam o serviço de manter a compatibilidade do sistema com aplicações de sistemas eplataformas antigas são bastante otimizadas, de forma a pouco notar-se em termos de perda dedesempenho e causando alguns, mas raros, casos de incompatibilidade. Mas a ferramenta de maior brilho é certamente o Spotlight, que tornou-se central ao sistema emudou a maneira como muitos usuários do sistema armazenam e recuperam arquivos e informações.Enquanto o crescimento da capacidade de dispositivos de armazenamento é incessante, a oferta aoferta de arquivos de conhecimento e mídia acompanharam de perto essa tendência, principalmenteatravés da internet. Assim, a forma tradicional de organizar arquivos em várias pastas e memorizá-lastornou-se em certos casos impraticável, e a solução de maior viabilidade hoje em dia são os motores debusca, vide o sucesso do Google. Acompanhando esse caminho o Mac OS X disponibilizou nas suasversões mais recentes o Spotlight. O Spotlight é uma coleção de mecanismos de ambos os níveis de kernel e de usuário. Entre elesencontramos o servidor spotlight, um índice de conteúdo por cada volume, um armazenador de meta-dados também por volume, um mecanismo de notificação de alterações chamado fsevents, as interfacesde usuário, além de muitos outros.
  • ANÁLISE CRÍTICA DO MAC OS X Enquanto sistema operacional para desktop, o Mac OS X têm atrativos bem ao gosto de seupúblico-alvo. É esteticamente agradável, possui um número razoável de aplicativos e periféricoscompatíveis, é similar aos sistemas concorrentes quanto ao desempenho e estabilidade e herda do seudesenvolvedor um fator-cool, que é como a mídia se refere à força que a marca empresta aos seusprodutos, não apenas por ser seletiva, mas pelo design e inovação. Mesmo assim, o sistema ainda apresenta problemas de desempenho e instabilidade, de tal formaque o desenvolvimento da sua próxima versão tem como foco a melhora destes em detrimento denovos recursos e aplicativos. E há de se considerar que, ser a única fabricante do hardware que roda oMac OS X deve implicar em muitos benefícios, em especial quanto ao controle e otimização, já quesabe-se de antemão em que peças rodará o sistema, e quanto a precisão e simplificação, uma vez que olimitado número de variações necessita de uma pequena quantidade de drivers e software, que poderáser testado por mais tempo. Essa vantagem sobre sistemas como Windows e Linux é enorme, se levadaem consideração a gigantesca fauna de fabricantes de peças para PC’s. Visto sob perspectiva de maior interesse do grupo, a segurança, o sistema operacional possuitanto recursos específicos da plataforma Mac como herdados do mundo Unix-Like, como ID deusuário e de grupo (UID e GID), alocação aleatória de bibliotecas de sistema na memória, trilhas deauditoria, ACL’s e Mach port rights. É até mesmo possível utilizar encriptação da memória virtual comAES, certamente um recurso diferenciado. No entanto, o seu sistema de arquivos já demonstra estar defasado em relação a outras soluções,apesar de seu desempenho e confiabilidade estarem dentro dos padrões do restante da indústria.Algumas tecnologias presentes em sistemas como NTFS ainda não estão presentes no HFS+,notadamente:• Suporte a sparse files• Compressão nativa• Encriptação nativa• Suporte a volumes tolerantes a falhas Há ainda os problemas advindo da necessidade em se manter compatível com sistemas legadosda empresa e suas aplicações, como a necessidade de “reparar permissões”, uma estratégia criada paraque aplicativos escritos com API’s antigas possam rodar num sistema atual, mesmo não estando deacordo com método de permissões do estilo Unix. A ausência de uma política de segurança com regras mais duras para o sistema também poderátrazer problemas na medida que ele tome uma fatia maior de mercado, o que é uma tendência naatualidade. Os usuários normalmente são mais leigos dos que os da plataforma PC quanto a segurançae há um falso mito de que não existem códigos maliciosos para o Mac OS X. De modo geral, uma analise prática mostra um sistema mais responsivo que o seu concorrentemais direto, o Windows, mas com um consumo de memória considerado alto.
  • REFERÊNCIAS BIBLIOGRÁFICASSINGH, Amit. Mac OS X Internals : A Systems Approach. EUA, Editora Addison-Wesley, 1641 págs.HIMANEN, Pekka. A ética dos hackers e o espírito da era da informação. Brasil, 2001. EditoraCampus. 200 págs.WEBSITESMac Developer Connection: http://developer.apple.com/mac/Mac OS X Leopard Technical Specifications: http://www.apple.com/macosx/techspecs/Mac OS X Internals : The Book. http://www.osxbook.comKernelthread.com: http://www.kernelthread.comheise Security UK: http://www.heise-online.co.uk/security/Deceptive-file-names-under-Vista--/news/96498/Wikipedia: Unicode equivalence: http://en.wikipedia.org/wiki/Unicode_normalizationDeveloper Connection: Memory Management in Mac OS X: http://developer.apple.com/DOCUMENTATION/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html