Você está na página 1de 12

Mac OS X

MAC 424 Sistemas Operacionais


2004

Prof. Alan Durham


Fernando Augusto de Carvalho Rogrio Manente

Introduo
Lanado em 2001 Consiste de duas partes: Darwin e Aqua GUI Conhecido pela alta performance multimedia Benefcios UNIX Incorporao do Mach kernel e BSD ao NeXTSTEP

-Darwin o ncleo do sistema. Aqua a GUI -Muito usado pelos profissionais de multimedia -Benefcios UNIX: estabilidade e compatibilidade com muitos softwares UNIX -Histria do Steve Jobs: O Mac OS X a incorporao do Mach kernel e BSD ao NeXTSTEP. O NeXTSTEP era um sistema operacional orientado a objetos desenvolvido pela empresa do Steve Jobs depois que ele saiu da Apple em 85. Depois disso Steve Jobs foi recontratado pela Apple e chefiou o projeto conhecido como Rhapsody que evoluiu ao Mac OS X.

Arquitetura do kernel

-Cocoa uma coleo bibliotecas orientada a objetos -Carbon uma coleo de bibliotecas em C compatveis com as verses anteriores do Mac OS e que tiram proveito das funes avanadas do Mac OS X -Darwin um SO completo que integra as partes de BSD e kernel (Mach) do Mac OS X. Open Source. Ele existe para as plataformas Apple PowerPC e Intel, embora existam muito poucos drivers para a architetura Intel

XNU
Microkernel: Kernel com responsabilidade reduzida Demais responsabilidades ficam com BSD Essa estrutura tende a ser lenta pelas trocas de contexto Soluo um kernel hbrido baseado numa mistura de Mach e FreeBSD funcionalidades do BSD so inseridas no kernel

-XNU = Sigla recusriva para XNU is not Unix -Microkernel: Ao invs de ter todo o cdigo do SO num grande programa (kernel) a maior parte do cdigo fica localizada em programas menores chamados servidores que rodam como qualquer outro programa. O trabalho do kernel reduzido de ser o SO para administrar os servidores e escalonar seu acesso ao hardware. -XNU um kernel hbrido porque ele inclui muitas das funes do BSD (que roda como um servidor) ao prprio kernel. Isso feito porque um microkernel geralmente muito lento. Isso porque toda chamada de uma aplicao de usurio requer que a mensagem seja enviada ao kernel (uma operao custosa chamada mudana de contexto), que ento seria enviada biblioteca Unix com outra mudana de contexto. Essa operao seria ainda repetida para a resposta! -Histria: Quando o Mach foi desenvolvido, ao invs de desmembrar o BSD em pedaos e criar diversos servidores, eles simplesmente rodaram o BSD inteiro como um nico servidor. Isso funcionou, embora fosse muito lento.

Memory Managment
Paginao sob demanda External Memory Managment Interface (EMMI) Named Memory Entries Lazy Evaluation de Memria Copiada. (Shadows Objects) Memory Maps Herana de Named Regions UPLs

-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-anonima. 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 mapea-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, basadas 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. -Memory Maps: Lista ordenada Duplamente Ligada. Cada objeto contm lista de pginas e shadowreferences 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: Qdo 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 cham-se Shadow-chain . -Como fork normalmente vem seguido de exec, cadeias longas so raras (todo o material substitudo). -Existe garbage-collector para os shadow objects no mais referenciados.

Mach Scheduling
Suporta time-sharing e fixed-priority Prioridades: Normal, System high-priority, Kernel mode only e Real-time threads Threads de prioridade Real-time geralmente so de prioridade fixa

-Prioridades: Normal ; System high-priority ; Kernel Mode only (I/O por exemplo) e Real Time Threads -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) -Real-Time Threads: 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. bviamente, longo ciclos contnuos podem ser custosos, mas tambm necessrios. -Se uma thread real-time 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

Interprocess Communication
Tasks clientes acessam servios de tasks servidoras por um canal de comunicao (ports). Tasks 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 tasks podem manter o direito de enviar(write) mensagens para filas, mas s uma pode ter o direito de l-la. Mensagnes podem ser dados puros, copias de memory ranges, direitos de ports, e mais... (so assncronas). -Semforos suportam wait, post e post all. -Lock Sets: mutex sobre uma seo crtica.

File system
O Mac OS X consegue bootar dos file systems suportados de forma nativa (HFS+, UFS, ISO, NFS e UDF) Pode suportar qualquer file system atravs de kernel extensions e do VFS (Mac Virtual File System) Suporta Journaling no VFS (portanto para qualquer file system)

-Kernel extensions so os servidores que rodam sobre o Mach -VFS um modo genrico do Mac enxergar qualquer File system -HFS+: -Estrutura de representao de diretrios e arquivos vnode -32 bits usados para representar um allocation block -Tamanho mximo de nome de arquivo 255 caracteres -Tamanho mximo de arquivo 2 a 63 bytes Journaling Gravao de um arquivo (jornal) que contm as transaes feitas no disco. Atualizaes no disco so comitadas automaticamente

I/O Framework
Do ponto de vista do programador orientado a objetos Open source Diferente dos modelos do Mac OS 9 e BSD

-Chamado I/O Kit -O kit todo de cdigo aberto, ajudando os desenvolvedores de drivers -OS modelos de drivers do BSD e Mac OS 9 no eram ricas o suficiente para as necessidades do Mac OS X -Ele precisava administrar Proteo memria, preempo, multiprocessamento, e outras funcionalidades no presentes ou no to pervasivas nos outros sistemas -Memria virtual no era parte fundamental do Mac OS 9 (cada desenvolvedor de driver precisava saber da VM e escrever especificamente para a VM). VM uma parte integrante do Mac OS X -A idia reutilizar o mximo cdigo possvel na programao de drivers

BSD e kernel extensions


BSD derivado do FreeBSD Funcionalidades do BSD implementadas no kernel ou num kernel extension (KEXT) Um cdigo de um KEXT pode ser alocado dinamicamente no kernel, sem necessidade de recompilao KEXTs oferecem modularidade

-Motivos para usar o BSD como base: -O BSD proporciona multitasking preemptivo com ajuste dinmico de prioridades. Assim como diviso suave e justa dos recursos entre os usurios, mesmo com muita carga no sistema -Acesso multi-usurio com compartilhamento dos recursos (como impressoras ou discos rgidos) -Suporte robusto a redes e a diversos protocolos (como HTTP, FTP etc.). Assim como recursos como Firewall -Proteo de memria -Memria virtual. No Mac OS X cada aplicativo tem acesso a uma memria mxima de 4 GB -Cdigo aberto e licena BSD -O BSD oferece as seguintes funcionalidades ao Mac OS X -Processos e proteo (criao e trmino de processos etc.) -Gerenciamento da memria (controle de paginao etc.) -Timing e estatsticas (real time, interval time) -Descritores (arquivos, pipes, sockets) -Controle de recursos (prioridade de processos, controle e limitao do uso de recursos, quotas) -Controle de arquivos -Rede -Comunicao entre processos -Operaes de entrada e sada -KEXTs so uma escolha natural a servios no essenciais que requerem acesso s interfaces internas do kernel. Geralmente so precisos nos seguintes casos: -Um programa precisa pegar uma interrupo primria (algo no hardware precisa interromper a CPU) -Um cliente primrio de um programa est dentro do kernel (por exemplo um dispositivo de bloco cujo cliente o sistema de arquivos) -Um programa precisa de acesso especial que no est disponvel fora do kernel

10

Concluso Mac OS X
Excelente documentao Muito flexvel (KEXTs) Muito robusto (BSD) Eficiente (Funcionalidades embutidas no microkernel) Compatibilidade com as verses anteriores mantida

-SO bem documentado. Existe documentao para criar qualquer componente do SO (assim como boas prticas). Existe at o cdigo fonte da maior parte do kernel -SO muito flexvel por causa das Kernel Extensions. Suporte a diversos file systems. Suporte a muitos programas j escritos para Unix -SO muito robusto porque herda as funcionalidades j muito testadas do BSD -SO muito eficiente porque muitas das funcionalidades do BSD foram embutidas no kernel

11

Bibliografia
Wikipedia
http://en.wikipedia.org/wiki/Mac_os_x http://en.wikipedia.org/wiki/Apple_Darwin http://en.wikipedia.org/wiki/XNU http://en.wikipedia.org/wiki/Mach_kernel http://en.wikipedia.org/wiki/NeXTSTEP http://en.wikipedia.org/wiki/Mac_OS http://en.wikipedia.org/wiki/Cocoa_%28software%29 http://en.wikipedia.org/wiki/OPENSTEP

Apple
http://developer.apple.com/documentation/Darwin/ http://developer.apple.com/documentation/Cocoa/Cocoa.html http://developer.apple.com/documentation/Carbon/Carbon.html http://developer.apple.com/documentation/CoreFoundation/CoreFoundation.html

Outros
http://www.kernelthread.com/mac/osx/

12