Anda di halaman 1dari 23

Universidade do Vale do Rio dos Sinos UNISINOS

Trabalho sobre o sistema operacional Mac OS X

Leandro da Rocha Godoy Walter Luiz Andriola Pereira

Conceitos de Sistemas Operacionais

Prof. Tlio C. Bender

So Leopoldo, Novembro de 2008.

SUMRIO

Por qu Mac OS X? Caractersticas do Mac OS X Gerncia de processos do MAC OS X Gerncia de memria do MAC OS X Gerncia de arquivos do MAC OS X Conceitos da disciplina no implementados no Mac OS X Outras tecnologias e inovaes do Mac OS X Anlise crtica do Mac OS X Referncias bibliogrficas

3 6 8 12 16 20 21 22 23

POR QU MAC OS X? Mac Em meio a uma grande quantidade de fabricantes de computadores pessoais, a Apple permanece a nica a desenvolver um sistema operacional exclusivo para o uso em seu hardware. Por este motivo, natural que o software se molde ao hardware em que ser executado, criando um conjunto mais uniforme e, espera-se, menos propenso a falhas e incompatibilidade. Jef Raskin, empregado da Apple, foi o responsvel por delinear, no incio dos anos 80, as primeiras caractersticas do que viria a ser o projeto Macintosh, anteriormente chamado projeto Annie, e que advm 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 desejveis para um sistema de uso individual, nota-se um desejo de tornar o computador algo simples do usar, acessvel financeiramente e, em suas palavras, projetado para a Pessoa Comum (PITS - Person in the Street), desprovidas de conhecimento tcnico acerca de programao e manuteno de computadores. Contrapondo outras plataformas da poca, como a IBM PC, ele pregava que o resultado do projeto teria que ser um produto leve e integrado, e no algo dividido em peas a ser montado, e que deveria ser trivial adicionar outras partes a ele. Cabos, possuiria apenas o de fora, e se possvel, nem ele. No possuiria partes internar expostas, e deveria ser desnecessrio abri-lo, a no ser para reparos. Porm, aquilo que demonstrou mais claramente sua extraordinria viso de futuro, tratava da maneira que os manuais deveriam ser, mnimos e escritos em linguagem leiga, o que atualmente resume perfeitamente a proposta de produto que a empresa entrega ao usurio.

Mac OS Alm do foco no usurio final, leigo, que tem pouca disposio para o aprendizado do complexo sistema de linha de comandos, os produtos da marca Apple possuem um tal refinamento que, mesmo custando mais caro que a concorrncia, vem aumentando em vendas atualmente. O sistema operacional padro para computadores Machintosh possui basicamente duas encarnaes. A primeira durou at a verso 9 e foi o sistema criado junto com a plataforma. Inicialmente era chamado de System, nas ltimas duas verses passou para Mac OS e, com o advento da verso X, passou a ser referido como Mac OS Classic. Em seu lanamento junto a plataforma, em 1984, tornou-se o primeiro sistema comercialmente vivel dotado de interface grfica dentre computadores pessoais, ocupando impressionantes 216KB em disco. Em anos anteriores, outros sistemas com interface grfica foram desenvolvidos, inclusive o Lisa da Apple, mas eram de quatro a doze vezes mais caros do que o Machintosh no seu lanamento, no obtendo vendas expressivas. Apenas um ano depois, Steve Jobs, um dos fundadores da empresa, deixaria a Apple e, pouco tempo depois, fundaria a NeXT, algo que teria relevncia no apenas neste momento, mas seria de grande importncia para o futuro do Mac OS. Na NeXT novamente hardware e software eram desenvolvidos 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 era baseado no Display PostScript, unio da linguagem de descrio de pgina PostScript e tecnologias de sistema de janelas. Para rodar em vrias plataformas, 68K, x86, PA-RISC e SPARC, suas aplicaes eram criadas numa nica verso contendo todas elas, chamadas de "fat" binaries, ou binrios gordos numa traduo literal. Anos mais tarde a companhia abandonaria a produo de hardware em prol do foco no software. A NeXT ainda chegaria a lanar uma plataforma aberta em parceria com a Sun, composta de vrias APIs e frameworks, de onde qualquer um poderia criar sua prpria implementao de sistema operacional orientado a objeto sobre o ncleo de outro sistema operacional. Mac OS X Uma das caractersticas que diferenciam os produtos da Apple que so sempre dotados de inovaes visveis aos olhos do cliente. Com a interface grfica foi assim. Com os desktops coloridos tambm. Em 2001, o foco est novamente no sistema operacional. O Mac OS X no seria esta a primeira vez que a Apple utiliza um sistema do tipo Unix. Em 1988 ela lanou o A/UX, baseado no 4.2BSD (substitudo em seguida pelo 4.3BSD) e no Unix System V Release 2 da AT&T, e era usado em combinao com recursos do System 6 e 7 em verses posteriores. Foi descontinuado em 1995. Desta vez, porm, a empresa no estava desenvolvendo apenas mais um sistema operacional, mas aquele que ajudaria a colocar novamente a empresa em uma posio de inovao e, principalmente, lucratividade. Depois de fracassar por meia dcada em modernizar seus sistema operacional, a Apple especulava vrias direes a seguir. Haviam vrios projetos internos, a possibilidade de compra outras empresas, como a negociao para a compra da Be Inc. e da NeXT e mesmo a parceria com a IBM, uma subsidiria chamada Taligent. A alternativa escolhida foi a NeXT e fez do seu sistema operacional o ponto de partida para o que viria a ser o Mac OS X. Para tornar a transio entre sistemas mais suave foram implementadas um conjunto de APIs chamada Carbon, uma interface para desenvolvimento em C procedural cujas aplicaes podem ser executadas nas verses 8,9 e X do Mac OS. Carbon tambm prov funcionalidade para outras APIs, como a Cocoa, um conjunto de APIs para desenvolvimento orientado a objetos que incorpora s suas aplicaes o modelo visual da interface grfica Aqua. O ncleo de cdigo aberto do sistema foi chamado de Darwin, uma coleo de pacotes como GCC e X11 do qual destaca-se o kernel xnu, baseado em Mach e FreeBSD, mas com pequenas partes advindas de diversos outros projetos como o MkLinux da prpria Apple, NetBSD e OpenBSD e trabalho feito na universidade de Utah sobre o Mach. O kernel xnu possui multi-tarefa preemptiva, proteo de memria verdadeira e suporte a multiprocessamento simtrico.

Verses do Mac OS X

At o presente momento, o sistema operacional conta com seis verses, excetuando-se a verso Mac OS X Public Beta, codinome Kodiak. So elas as verses, 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 verso 10.6, conhecida como Snow Leopard, que ter como objetivos principal melhorar a performance do sistema, reduzindo o consumo de memria e tirando melhor proveito de CPU de mltiplos ncleos. Esta pode ser a primeira verso a no suportar a plataforma PowerPC. O Mac OS X 10.0, internamente chamado de Cheetah, era um sistema lento e incompleto, com freqentes kernel panics e poucos aplicativos. Porm, dado o tempo que havia sendo desenvolvido, e com o histrico da empresa de fracassos na definio da sua nova gerao de sistema operacional, sua liberao como produto comercial demonstrou que a empresa de fato seguiria o desenvolvendo. Mas apenas aps o lanamento da verso posterior, 10.1, que a Apple anunciaria que o Mac OS X seria o sistema operacional padro para todos os seus produtos. Esta verso foi vista como uma correo de bugs, e o fato de ser liberada sem custo aos clientes que haviam adquirido a verso anterior refora esta impresso. A terceira e quarta verses do sistema foram novamente um esforo para melhorar performance e estabilidade, trazendo algumas novas aplicaes. A quinta verso, Tiger, iniciou o suporte aos processadores x86. Na sexta verso, Leopard, no conta com o ambiente Classic, no suportando aplicaes escritas para Mac OS 9 e anteriores, j que estas no teriam como rodar sob a plataforma x86. Alm disso, o sistema ganhou algumas melhoras interessantes, em especial na segurana, como a alocao aleatria de algumas das bibliotecas na memria, protegendo o sistema de certos ataques de injeo de cdigo que esperam encontr-las em endereos especficos, e sandboxes atravs de RBAC (controle de acesso baseado em regras, do ingls role-based access control) suportado em nvel de kernel, prevenindo que aplicaes alterem parmetros que no lhe dizem respeito. Esta verso foi considerada Open Brand UNIX 03 na plataforma Intel, sendo o primeiro sistema operacional baseado em BSD a receber esta certificao.

CARACTERSTICAS DO MAC OS X Mac OS X um sistema operacional de uso pessoal, domstico ou profissional, para propsito geral, como o de criao de contedo grfico, digital para reas de produo de filmes, internet e rea impressa, acesso a rede local ou internet, produo de contedo atravs de suites de escritrio, jogos, multimidia, etc. A sua desenvolvendora, Apple Inc., conta ainda com um sistema para servidores, chamado Mac OS X Server, com caractersticas similares e que no ser levado em considerao, pois foge ao foco deste estudo. Os requisitos bsicos de hardware para sua utilizao so um processador Intel x86, PowerPC G5 ou PowerPC G4, todos com frequncia de operao acima de 867MHz, 512MB de memria RAM instalada e 9GB de espao de armazenamento. Por exigncia contratual, permitido utilizar o sistema operacional Mac OS X apenas em computadores produzidos pela prpria Apple. Em 2007 foi concedido pelo Open Group ao Mac OS X, na sua verso 10.5 para arquitetura x86, a certificao UNIX 03, em conformidade com as especifcaes SUSv3 e POSIX 1003.1, cobrindo bibliotecas, chamadas de sistema, interfaces de terminal, comandos, utilitrios, internacionalizao e a API C. Como acima referido, atualmente o Mac OS X roda sobre duas plataformas, Intel x86 e PowerPC. At 2005, a nica arquitetura usada pela Apple era a PowerPC, criada em 1991 num esforo conjunto de Apple, IBM e Motorola, e que foi baseada no processador POWER (Performance Optimized With Enhanced RISC) que combina tecnologia RISC com alguns conceitos tradicionais advindos da tecnologia CISC, como o grande nmero de instrues, 184. A PowerPC suporta tanto 32 quanto 64 bits, tem um design superescalar simplificado e suporta sistemas de multiprocessamento simtrico (SMP), sendo produzida at hoje pela IBM. Em 2005, no entanto, a Apple anunciou que passaria a utilizar os mesmos processadores que equipam mquinas da plataforma PC, mudando para a plataforma x86, com exclusividade de fornecimento da fabricante Intel. Uma vez que possui o mesmo processador presente em PCs, a Apple precisou adicionar componentes de hardware e software que no apenas trariam beneficio ao usurio, mas preveniriam o uso de seus produtos livremente, principalmente quanto a instalao de seu sistema operacional em computadores mais baratos fabricados por concorrentes. Para tal, ela adotou o uso de componentes como o EFI (Extended Firmware Interface) em seu hardware, o faz com que o sistema operacional tenha rotinas diferentes em seu boot loader para cada arquitetura, e o torna incompatvel com um PC comum dotado de BIOS. No tocante ao software, outro aspecto importante foi a utilizao de binrios universais encriptados para algumas aplicaes chave. Os binrios universais so uma herana dos fat-binaries (binrio-gordo) do NEXTSTEP, um nico arquivo da aplicao que contm binrios para todas as arquiteturas suportadas, implementados a partir do Mac OS X. Esta medida visava o suporte simultneo a aplicaes de 32 e 64 bits na plataforma PowerPC, e posteriormente, com a mudana para plataforma x86, foi usada para garantir uma transio suave entre arquiteturas. Executveis de aplicativos com o Finder e o Dock, porm, tem um ou mais segmentos encriptados por AES, o que lhes garante certa proteo contra o uso indevido.

A manuteno da retro-compatibilidade do Mac OS X na plataforma PowerPC com aplicativos do Mac OS 9 ficou a cargo do ambiente chamado Classic, cujo ncleo consiste numa mquina virtual chamada truBlueEnvironment. O ambiente prov uma camada de abstrao de hardware, virtualizando chamadas de sistema e interrupes, executa em espao de memria protegida com mltiplos processos Mac OS 9 consistindo em um nico processo Mac OS X, e compartilha alguns recursos, sendo possvel copiar/colar e arrastar entre aplicativos de ambos os sistemas, comunicao de scripts dentro do ambiente 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 no implementado, uma vez que so necessrias instrues presentes apenas em processadores PowerPC. Muito em razo disso, a ltima verso do sistema operacional, de codinome Leopard, j no possui mais o Classic entre seus recursos. Para a tarefa de rodar executveis da plataforma PowerPC, tanto CFM (Code Fragment Manager, parte das antigas verses do Mac OS) quanto Mach-O, a verso x86 do Mac OS X incluem uma tecnologia chamada Rosetta. Mach-O (Mach Object File Format) o ambiente de tempo de execuo (runtime) nativo do sistema operacional Mac OS X, seu responsvel nico para execuo de binrios. Curiosamente, seu nome pode causar confuso, uma vez que, por princpio, o componente Mach no 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 aplicao, e seu cdigo reside no mesmo processo do executvel da da mesma. Rosetta age alternando entre a traduo e execuo de blocos de cdigo de PowerPC para cdigo de x86 de forma dinmica, fazendo cache de cdigo traduzido para aumentar a performance.

GERNCIA DE PROCESSOS DO MAC OS X Kernel O kernel do sistema operacional Mac OS X, criado a partir do sistema operacional 4.4BSD e do microkernel Mach 3.0, considerado um kernel hbrido em seu projeto, por possuir diferentes partes (monoltico e microkernel) interagindo na utilizao do sistema. Em termos de estrutura de interao entre os subsistemas, ele considerado um kernel em camadas. Para ilustrar esse comportamento, a Figura 1 e a Figura 2 podem ser usadas para comparao.

Figura 1 Organizao de um Sistema Operacional em kernel e microkernel

Como mostrado na Figura 1, na organizao de um sistema operacional em kernel e microkernel existe uma estrutura mnima que interage com o hardware, provendo mecanismos necessrios para interao com os outros subsistemas. Neste caso, o kernel localiza-se acima da estrutura bsica do sistema operacional, agindo como sendo um conjunto de servios disponibilizados ao microkernel para atender as requisies (chamadas de sistema) das aplicaes de usurios. Sendo um sistema operacional em camadas, nota-se que o sistema operacional possui diversas vantagens sobre um sistema operacional monoltico. Interface padronizada; Extensibilidade; Flexibilidade no suporte de novos subsistemas; Portabilidade; Confiabilidade (isolamento dos subsistemas). Um projeto baseado em camadas impe uma interface padronizada para requisies feitas por um processo. Os processos no precisam distinguir entre servios de espao de usurio ou servio do kernel, visto que todos os servios utilizam troca de mensagens para comunicao.

Figura 2 Organizao das camadas do Mac OS X Qualquer sistema operacional ir, inevitavelmente, adicionar novos servios que no so suportados pela sua atual estrutura. Uma organizao em camadas facilita esta extensibilidade, permitindo a adio de novos servios como tambm a opo de ter mltiplos servios numa mesma rea. Por exemplo, podem haver muitos tratadores de IDE, como simples servios isolados em espao de usurio, ao invs de vrios servios no kernel. Sendo assim, usurios podem escolher entre uma variedade de opes a que melhor se adapta a sua atual necessidade (podendo um processo suportar UDMA, e outro suportar PATA). Alm disso, como os subsistemas so explicitamente delimitados, podem haver reestruturas dentro de um determinado subsistema sem haver a necessidade de afetar todo o kernel, sendo inclusive possvel descarregar, atualizar e recarregar um servio do kernel sem ter a necessidade de recompilar todo o kernel.

Relacionado a extensibilidade est a flexibilidade no suporte de novos subsistemas. O conceito de mdulos dos kernels Linux e FreeBSD utilizam o conceito de mdulos para permitir uma flexibilizao na manuteno de novos subsistemas, o que no caso do Mac OS X ocorre naturalmente dado o seu projeto baseado em camadas. No sistema operacional Mac OS X, todo o cdigo especfico de arquitetura est no microkernel. Portanto, a questo de portabilidade se torna muito simples, pois apenas se torna necessrio a traduo para outra arquitetura (ou a adio de uma otimizao de um processador especfico) no microkernel que praticamente todo o sistema operacional (salvo as aplicaes que possuem cdigo especfico de uma arquitetura) suportado em uma nova arquitetura. Embora o conceito de mdulos ajude no aumento da confiabilidade no sistema, ganhos ainda maiores podem ser obtidos com uma organizao em camadas. Fazendo testes de estresse no microkernel podem ser detectados problemas que causariam instabilidade em todo o sistema. Como existe apenas trocas de mensagens assncronas entre os subsistemas, caso um subsistema seja danificado, o sistema operacional como um todo no necessariamente afetado, visto que os subsistemas esto em espao de usurio. Escalonamento de Processos O escalonador de processos do Mac OS X _e derivado do escalonador OSFMK, porm vrias modificaes 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 X escalona os processos baseado numa variante do algoritmo de mltiplas filas com realimentao, porm divide as filas de prioridades em 4 grupos de processos, agrupados de acordo com suas caractersticas, conforme descrito na Tabela 1. Grupo de Filas Normal Sistema Caractersticas Prioridade das aplicaes normais do usurio Prioridade das aplicaes do sistema, com prioridade superior as threads normais de usurio Classe reservada para threads em espao de kernel que necessitam rodar 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 uma frao pr-definida de ciclos de clock, independente de outras atividades sendo executadas no sistema

Kernel

Tempo Real

Tabela 1 Grupos de Filas de Processos no Escalonador do Mac OS X No caso de tarefas de tempo real, feito um controle forte pela aplicao no nmero de ciclos do processador a serem utilizados. Assim, o programador utiliza chamadas de sistema para requisitar ao sistema rodar por A ciclos nos prximos B ciclos. Por exemplo, um processo de tempo real pode

requisitar ao kernel que, para que ele possa executar corretamente dentro dos seus padres mnimos aceitveis, ele necessite, a cada 7000 ciclos, 3000 ciclos reservados a ele. Caso a aplicao no respeite o nmero de ciclos requisitados, ou seja, no faa uma operao de E/S ou use a chamada de sistema sched yield, um processo de tempo real ser penalizado dentro de sua fila de prioridades, sendo inclusive possvel a migrao para o grupo de processos Normal, visando um maior desempenho e justia no sistema. A escolha do processo a ser executado obedece o algoritmo de Mltiplas Filas com realimentao, sendo executados os grupos de filas de maior prioridade (Tempo real) e por ltimo o grupo de filas de prioridade de usurio (Normal). A migrao entre os diferentes grupos de threads e feita atravs do nvel de prioridade explicitada pelo usurio. A migrao entre as filas de prioridade dentro do grupo de tarefas de usurio 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 so de prioridade Fixa; Threads de prioridade fixa executam por um pr-determinado perodo de tempo ou at que uma thread de prioridade maior queira executar. Ento 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 prximos 7000, alm de dizer se precisam ser contnuos ou no. Obviamente, longo ciclos contnuos podem ser custosos, mas tambm necessrios; Se uma thread de tempo-real no 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. Comunicao Interprocessos Tarefas clientes acessam servios de tarefas servidoras por um canal de comunicao (ports); Tarefas mantm, repassam e obtm direitos sobre os ports; As pontas destes canais so chamadas ports. Os port-rights denotam as permisses para usar estes canais. Eles so o mecanismo fundamental de segurana no Mach. Ter um right, ter a capacidade de acessar ou manipular um objeto. Comunicao por: filas de mensagens, semforos, notificaes, lock sets e RPCs (Remote Procedure Calls). Vrias 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, cpias de memory ranges, direitos de ports, e mais... (so assncronas). Semforos suportam wait, post e post all. Lock Sets: mutex sobre uma seo crtica.

GERNCIA DE MEMRIA DO MAC OS X Caractersticas principais Paginao sob demanda; External Memory Management Interface (EMMI); Named Memory Entries; Lazy Evaluation de Memria Copiada (Shadows Objects); Memory Maps; Herana de Named Regions; UPLs. Conceitos Memory Objects: Dados potencialmentes persistentes. Contm named entrys e regions. Paginao sob demanda: Mapeamento de Memria Virtual para real na primeira tentativa de acesso. Todo tipo de data no espao de memria provido atravs dos Memory Objects. Mach pede ao owner do M.O. (um pager) pelo contedo e retorna a ele possveis modificaes nos dados. Pagers: Existem os default-pagers (lida com memria no-persistentes, ou memria-annima. 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 contribuio de varias tarefas modo-usurio em seu contedo.(EMMI) Named Entries: Handle para objetos compartilhados ou submapas. Permite ao owner mapear o objeto de memria virtual, ou ento, passar o direito de mape-lo. Mapear uma Named Entry em 2 tasks diferentes resulta em Memria Compartilhada. Quando se cria uma nova task, elas so clonadas do pai, e sua poro mapeada da memria pode ser herdada como uma cpia, como compartilhada, ou nenhum desses, baseadas nos atributos associados ao mapeamento. Lazy Evaluation: A copia protegida com read-only access para as duas task que compartilham memria. Quando ambas tentam acessar a mesma poro, esta copiada nessa hora. Isso permite simplificaes em diversas reas, notavelmente nas messagings APIs. MemoryMaps: Lista ordenada Duplamente Ligada. Cada objeto contm lista de pginas e shadow references a estes objetos. Named Regions podem ser herdadas, no s como um grupo de objetos de memria, mas tambm toda a relao de mapeamento entre eles. Named Region como uma named entry, mas ao invs de conter virtual mem. objects, contm um fragmento de mapa virtual. UPLs: Universal Page Lists. (Data structure) Informaes de caching, permisses, mapeamentos, e etc.. Shadow Objects: Quando um objeto de memria virtual duplicado, (e.g. Um processo chamou fork), criado um Shadow Object. Ele inicialmente vazio, apenas com uma referncia a outro

objeto. Quando uma pgina modificada, ele copiada do pai (referncia) pra ele, e ento modificado. Ao ler dados, se ela no existe no Shadow Object l do pai. Isto chama-se Shadow-chain. Overview No Mac OS X, cada processo tem o seu prprio conjunto (32bits ou 64 bits) de espao de endereo virtual. Para processos de 32 bits, cada processo tem um espao que pode enderear dinamicamente chegando ao limite de 4gb. Para processo de 64 bits, cada processo pode enderear dinamicamente at o limite de 18 exabytes. O espao de endereo virtual de um processo constitudo por regies de memria mapeada.!Cada regio de memria no processo representa um conjunto especfico de pginas de memria virtual.!A regio tem atributos especficos controlando coisas como herana (pores da regio podem ser mapeadas a partir de "pai" das regies), escreve-proteco, e se "wired" (isto , no pode ser paginada out).!Porque regies contm um determinado nmero de pginas, eles esto!pagealinhados,!significando o endereo inicial da regio tambm est iniciando o endereo de uma pgina e terminando o endereo tambm define o fim de uma pgina. Memria fsica um recurso precioso no computador. Uma caracterstica dos Sistemas Operacionais Modernos a Memria Virtual (Virtual Memory VM), que implementa a iluso de um largo espao de endereos para cada programa sem sobrecarregar o programador com detalhes, como quais partes do programa so residentes na memria fsica, em determinado momento, ou onde na memria fsica as pores residentes esto localizadas. Memria Virtual normalmente implementada atravs de paginao (paging). Quando residente cada pgina da memria virtual carregada em alguma parte da memria fsica. Esta poro, normalmente chamada de page frame. Alm do VM Subsystem baseado no Core-Mach, o gerenciamento de memria do Mac OSX engloba diversos outros mecanismos, alguns dos quais no so partes estritamente do sistema VM, mas esto intimamente relacionados. O Subsistema VM do kernel Mach consiste do mdulo machine-dependent phisical map (pmap) e outros mdulos machine-independent para gerenciar a estrutura de dados, tais como os virtual address space maps (VM maps). O Kernel exporta diversas rotinas para o Espao do Usurio (user space) como parte de Mach VM API. O kernel usa o UPL (Universal Page List), Estrutura de Dados para descrever como delimitar um conjunto de pginas fsicas. O UPL criado baseado na associao das pginas (pages) com o Objetos VM (objects VM). UPLs incluem vrios atributos das pginas que descrevem. Subsistemas do Kernel, particularmente o File System, usam UPLs para se comunicar com o subsistema VM. O UBC (Unified Buffer Cache) constitui um conjunto de pginas para armazenar (caching) o contedo dos arquivos e as pores annimas do espao de endereos. Memria annima no sustentada por arquivos regulares, dispositivos, ou mesmo alguma outra fonte de memria e o exemplo mais comum a memria alocada dinamicamente. O Kernel inclui 3 paginadores internos, a saber: o paginador padro (annimo), o paginador para dispositivos e o paginador para vnode. Eles tratam operaes de entrada e sada sobre regies da

memria. Os paginadores comunicam-se com o Subsistema Mach-VM utilizando interfaces UPL e derivadas do paginador do Mach. A figura 3 ilustra o VM e componentes relacionados no Mac OSX.

Figura 3
Nota:!Ao contrrio da maioria dos sistemas operacionais baseados em UNIX, o Mac OS X no usa um prpartio swap para a memria virtual.!Em vez disso, ele usa todo o espao disponvel na mquina da partio de boot.

Memria Compartilhada Memria compartilhada a memria que pode ser escrita ou lida a partir de dois ou mais processos.!Memria partilhada pode ser herdada!a partir de um processo-me, criado por um servidor de memria compartilhada, ou explicitamente criado por um pedido de exportao para outras aplicaes.!O uso da memria compartilhada/partilhada incluem: compartilhando grandes recursos, como cones ou sons rpida a comunicao entre um ou mais processos A Memria compartilhada frgil.!Se um programa corrompe uma seo de memria compartilhada, os programas que tambm usam esta mesma memria acabam acessando dados corrompidos. Wired Memory Wired memory (tambm chamado de memria!residente) armazena cdigo kernel e estruturas de dados, que nunca deve ser paginada para o disco. Aplicaes, frameworks e outros softwares da camada de usurio (user level) no podem ser alocados na wired memory. No entanto eles podem afetar a quantidade de Wired memory existente num dado momento. H um overhead de memria associada com cada recurso despendido pelo kernel em nome de um programa. Recursos Process Fio Mach porto Mapeamento Biblioteca Memria regio Wired memria utilizada pelo kernel 16 kilobytes bloqueados em uma continuao-5 kilobytes; bloqueou-21 kilobytes 116 bytes 32 bytes 2 kilobytes acrescido de 200 bytes para cada tarefa que usa-lo 160 bytes Tabela 2!- Wired memria gerado pelo usurio a nvel de software
Nota: Estas!medidas mudam a cada nova verso do Mac OS X.!Elas so fornecidas aqui para te dar uma estimativa aproximada do custo relativo do sistema de uso do recurso.

Como pode-se ver, cada thread criada, cada subprocesso bifurcado, e cada biblioteca ligada contribui para a ocupao da memria residente do sistema. Alm das solicitaes de Wired-Memory geradas no nvel do usurio, as seguintes entidades do kernel utilizam wired-memory: VM objetos a memria virtual buffer cache I / O buffer caches condutores

GERNCIA DE ARQUIVOS DO MAC OS X Antes de tratar da forma como o sistema lida com seus vrios dispositivos de armazenamento, necessrio mencionar brevemente o EFI (Extensible Firmware Interface, ou Interface de Firmware Extensvel). O seu firmware inclui uma aplicao chamada boot manager, que pode rodar bootloaders, drivers e outras aplicaes EFI. Assim, diferente da plataforma PC, atualmente o master boot record (MBR) localizado no incio do disco ali est apenas para fins de compatibilidade. O EFI acionado durante o processo de boot, aps o POST, e a partir dele definida a partio que ser carregada, atravs de arquivos de configurao .EFI, como por exemplo boot.efi para o sistema operacional Mac OS X ou elilo.efi para sistemas Linux. Entra em ao, ento, o Apple partitioning scheme (Esquema de Particionamento da Apple), usado para manejar discos e que tm layouts especficos para discos rgidos chamado UNIVERSAL HD e para CDs e DVDs, chamado UNIVERSAL CD. A primeira partio do UNIVERSAL HD o mapa de parties que contm meta-dados relacionados s parties. Os meta-dados consistem de referncias ao mapa de partio, cada um descrevendo uma partio. O tamanho do mapa de 63 blocos, cada um com 512 bytes. Os primeiros dois bytes do primeiro bloco contm a assinatura do esquema de particionamento da Apple. Os dois bytes seguintes representam o tamanho do bloco fsico do disco. O nmero total de blocos no disco se localiza nos quatro bytes posteriores. Assim, os 63 blocos seguintes so o mapa de parties, cada bloco representando uma entrada do mapa que descreve uma partio. Aps os dois bytes iniciais identificadores seguem as informaes de incio da partio, tamanho e tipo. Por padro do sistema operacional, 16 parties o mximo suportado em um nico disco, mas esta no uma limitao tcnica, apenas um limite proposto, devido a limitaes existentes em algumas aplicaes. Ferramentas do prprio sistema permitem a adio de um nmero maior de parties. HFS+ O sistema de arquivos padro do Mac OS X o HFS+ (Hierarchical File System Plus, ou Sistema de Arquivos Hierrquico Mais). Sua instncia fundamental o volume, que pode estar em um disco, uma parte deste ou vrios discos em conjunto. Os blocos de alocao so a unidade elementar onde so alocados os arquivos, e seu tamanho corresponde a um mltiplo do tamanho do setor do dispositivo utilizado, sendo o mais comum 512 bytes, o que contrasta com o bloco de alocao padro do Mac OS X, que de 4KB, sendo que este pode chegar a 1MB (tamanho definido artificialmente no arquivo /sys/param.h). O espao de armazenamento usa nmeros de bloco de alocao de 32 bits com alocao postergarda de blocos fsicos. Quanto a fragmentao, a implementao do UFS herdada do sistema BSD presente no HFS+ emprega uma unidade adicional, complementando o bloco, chamado fragmento, que uma frao deste a ser compartilhada entre arquivos. Isto traz benefcios quanto ao aproveitamento de espao de disco s custas de uma lgica de sistema de arquivos muito mais complexa. Para mitigar os seus efeitos, aumentando o desempenho no acesso a arquivos pequenos e frequentemente acessados, so

empregados um sistema de clustering adaptativo chamado Hot File Clustering, e a realocao dinmica destes pequenos arquivos para promover sua continuidade. O HFS+ um sistema de arquivos que suporta nomes de arquivos e diretrios at 255 caracteres codificados em Unicode UTF-8 (em formato cannico, em forma totalmente decomposta), arquivos de at 8 exabytes e mltiplos mecanismos de referenciao atravs de aliases, hard links e links simblicos. E embora seja por padro um sistema case-insensitive com case-preserving (preserva a caixa-alta quando presente), o que quer dizer que nomes de diretrios e arquivos que sejam iguais, mesmo diferindo quanto a caixa-alta e caixa-baixa em um ou mais caracteres, no podem co-existir num mesmo diretrio, h suporte no sistema de arquivos para case-sensitivity. Controle de Acesso e Permisses A partir da verso 10.4 do sistema operacional, so suportados pelo sistema de arquivos simultaneamente ACLs (listas de controle de acesso), que so armazenadas como atributos estendidos, permisses 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, so subsidiadas pelo subsistema BSD, que como qualquer Unix-Like no que diz respeito a proteo de escrita, no prov nenhum lock para arquivos abertos por mltiplas aplicaes. Os frameworks Carbon, Cocoa e Java tem a capacidade de adicionar o recurso de acesso exclusivo a arquivos atravs dos chamados advisory locks, mas este recurso depende da implementao do desenvolvedor. Existe aprovisionamento ainda para o armazenamento de mltiplos timestamps para cada objeto do sistema de arquivos. Bundles e Fork de Arquivo Alm do tradicional arquivo, o sistema operacional suporta um tipo especial, chamado File Fork (Ramificao de Arquivo, em traduo livre) que encapsula vrios arquivos dentro de um nico, tendo dois sempre presentes, o data fork e o resource fork, armazenados em rvores-B separadas. Outro conceito particular do Mac OS X so os Bundles. Estes so uma coleo de recursos relacionados empacotados como numa hierarquica de diretrios. Alguns exemplos de recursos que utilizam esta abordagem so os executaveis, as bibliotecas compartilhadas, plug-ins, imagens, entre outros, encontrando at mesmo bundles dentro de bundles. Seu uso visa facilitar a distribuio, manuteno e uso de software. O gerenciador de arquivos do sistema operacional trata estes pacotes como sendo arquivos nicos. Um bundle de aplicao (sufixo .app) contm, no entanto, muito mais que apenas o seu executvel, mas sim seus icones, imagens e sons da interface de usurio, alm do arquivo de lista de propriedades (sufixo .plist), uma representao em disco de dados organizados que, quando em memria estruturado usando tipos de dados nativos do framework Core Fundation (API de C do Mac OS X, mistura de rotinas de baixo nvel e funes de encapsulamento). Um exemplo simples de bundle pode ser visto na figura 4:

Figura 4 - Aplicao Otimizaes Desfragmentao On-the-Fly Quando um arquivo de usurio aberto em um volume HFS+, o kernel verifica se ele est qualificado para ser desfragmentado on-the-fly. Uma srie de condies, como j no estar aberto e no ser um arquivo apenas-para-leitura, ser parte de um sistema de arquivos com journaling, ter o fork fragmentado em oito ou mais partes, entre outros, devem ser cumpridas para que o arquivo se torne elegvel para esta ao. Zona de meta-dados Na verso 10.3 do Mac OS X o sistema HFS+ introduziu uma poltica de alocao que reserva espao para vrias estruturas de meta-dados do volume chamado de Zona de meta-dados, localizando-as, se possvel, prximo ao incio do volume. Isto acontecer apenas caso o espao em disco no seja escasso. Do contrrio, o espao reservado para este recurso ser ocupado ao seu mximo, buscando reduzir os

tempos de busca de dados no contiguos. Esta poltica valida apenas em volumes com journaling e maiores de 10 GB. Camada VFS A camada vfs/vnode uma interface virtual do sistema de arquivos derivada do FreeBSD com pequenas alteraes, implementada inicialmente pela Sun e largamente usada em sistemas operacionais atuais, que permite que diversos sistemas de arquivos coexistam de forma transparente. Um vnode (virtual node, ou n virtual) uma representao do interna do kernel de um arquivo, enquanto que o vfs (virtual file system, ou sistema de arquivos virtual) representa o sistema de arquivos. A camada VFS se situa entre o cdigo de sistema de arquivos independente e do sistema de arquivos dependente do kernel, abstraindo suas diferenas, de forma que o kernel usar suas funes para executar o I/O. nesta camada que est implementado o mecanismo de journaling do sistema de arquivos. Atravs dele o HFS+ suporta journaling de meta-dados, incluindo estruturas de dados de volumes. A figura 5 demonsta como se conectam as APIs do Mac OS X camada VFS:

Figura 5

CONCEITOS DA DISCIPLINA NO IMPLEMENTADOS NO MAC OS X Podemos enumerar alguns poucos conceitos expostos na disciplina que no esto implementados no Mac OS X, mas como um sistema operacional moderno para computadores pessoais, estes no sero muitos. Quanto a ausncia de preveno de deadlocks, j era esperado, pois como foi explicado em aula, nenhum sistema comercial moderno o implementa. O sistema de arquivos HFS+ no suporta sparse files (em traduo livre, arquivos dispersos), que a tcnica de preencher com zeros espaos em branco que ficam entre arquivos de sistema, para que sejam vistos como um nico arquivo, sem com isso ocupar mais espao em disco. Sistemas de arquivos alternativos podem, porm, ser utilizados, resultando na adio deste e outros recursos e a possvel subtrao de outros tantos. Um exemplo seria o uso do UFS, onde um dos efeitos colaterais seria a diviso dos forks em tantos arquivos quanto o compusesse (data fork e resource fork, obrigatoriamente, e quantos mais houvessem).

OUTRAS TECNOLOGIAS E INOVAES DO MAC OS X Como uma empresa conhecida por ser inovadora, a Apple pouco traz de novo em relao aos componentes internos do sistema. As inovaes em software mais conhecidas da empresa ultimamente se referem mais a interfaces com usurio, j famosas, e com aplicativos que trazem facilidade para os mesmos. Atualmente, devido ao desenvolvimento de novas formas de interao com aparelhos mveis, mais notadamente o telefone celular iPhone, a Apple tem rumado em direo a interfaces de apontamento direto, conhecidos no mercado como touch-screen, e que comearam a ser inseridas em outros aparelhos da sua linha de computadores pessoais, como notebooks lanados no segundo semestre de 2008. Em se tratando de componentes internos, pode-se dizer que o desempenho das mquinas virtuais que executam o servio de manter a compatibilidade do sistema com aplicaes de sistemas e plataformas antigas so bastante otimizadas, de forma a pouco notar-se em termos de perda de desempenho e causando alguns, mas raros, casos de incompatibilidade. Mas a ferramenta de maior brilho certamente o Spotlight, que tornou-se central ao sistema e mudou a maneira como muitos usurios do sistema armazenam e recuperam arquivos e informaes. Enquanto o crescimento da capacidade de dispositivos de armazenamento incessante, a oferta a oferta de arquivos de conhecimento e mdia acompanharam de perto essa tendncia, principalmente atravs da internet. Assim, a forma tradicional de organizar arquivos em vrias pastas e memoriz-las tornou-se em certos casos impraticvel, e a soluo de maior viabilidade hoje em dia so os motores de busca, vide o sucesso do Google. Acompanhando esse caminho o Mac OS X disponibilizou nas suas verses mais recentes o Spotlight. O Spotlight uma coleo de mecanismos de ambos os nveis de kernel e de usurio. Entre eles encontramos o servidor spotlight, um ndice de contedo por cada volume, um armazenador de metadados tambm por volume, um mecanismo de notificao de alteraes chamado fsevents, as interfaces de usurio, alm de muitos outros.

ANLISE CRTICA DO MAC OS X Enquanto sistema operacional para desktop, o Mac OS X tm atrativos bem ao gosto de seu pblico-alvo. esteticamente agradvel, possui um nmero razovel de aplicativos e perifricos compatveis, similar aos sistemas concorrentes quanto ao desempenho e estabilidade e herda do seu desenvolvedor um fator-cool, que como a mdia se refere fora que a marca empresta aos seus produtos, no apenas por ser seletiva, mas pelo design e inovao. Mesmo assim, o sistema ainda apresenta problemas de desempenho e instabilidade, de tal forma que o desenvolvimento da sua prxima verso tem como foco a melhora destes em detrimento de novos recursos e aplicativos. E h de se considerar que, ser a nica fabricante do hardware que roda o Mac OS X deve implicar em muitos benefcios, em especial quanto ao controle e otimizao, j que sabe-se de antemo em que peas rodar o sistema, e quanto a preciso e simplificao, uma vez que o limitado nmero de variaes 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 levada em considerao a gigantesca fauna de fabricantes de peas para PCs. Visto sob perspectiva de maior interesse do grupo, a segurana, o sistema operacional possui tanto recursos especficos da plataforma Mac como herdados do mundo Unix-Like, como ID de usurio e de grupo (UID e GID), alocao aleatria de bibliotecas de sistema na memria, trilhas de auditoria, ACLs e Mach port rights. at mesmo possvel utilizar encriptao da memria virtual com AES, certamente um recurso diferenciado. No entanto, o seu sistema de arquivos j demonstra estar defasado em relao a outras solues, apesar de seu desempenho e confiabilidade estarem dentro dos padres do restante da indstria. Algumas tecnologias presentes em sistemas como NTFS ainda no esto presentes no HFS+, notadamente: Suporte a sparse files Compresso nativa Encriptao nativa Suporte a volumes tolerantes a falhas H ainda os problemas advindo da necessidade em se manter compatvel com sistemas legados da empresa e suas aplicaes, como a necessidade de reparar permisses, uma estratgia criada para que aplicativos escritos com APIs antigas possam rodar num sistema atual, mesmo no estando de acordo com mtodo de permisses do estilo Unix. A ausncia de uma poltica de segurana com regras mais duras para o sistema tambm poder trazer problemas na medida que ele tome uma fatia maior de mercado, o que uma tendncia na atualidade. Os usurios normalmente so mais leigos dos que os da plataforma PC quanto a segurana e h um falso mito de que no existem cdigos maliciosos para o Mac OS X. De modo geral, uma analise prtica mostra um sistema mais responsivo que o seu concorrente mais direto, o Windows, mas com um consumo de memria considerado alto.

REFERNCIAS BIBLIOGRFICAS

SINGH, Amit. Mac OS X Internals : A Systems Approach. EUA, Editora Addison-Wesley, 1641 pgs. HIMANEN, Pekka. A tica dos hackers e o esprito da era da informao. Brasil, 2001. Editora Campus. 200 pgs.

WEBSITES Mac 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.com Kernelthread.com: http://www.kernelthread.com heise 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_normalization Developer Connection: Memory Management in Mac OS X: http://developer.apple.com/ DOCUMENTATION/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

Anda mungkin juga menyukai