Você está na página 1de 7

MAC OS1

Eric Farias dos Santos2 <eric.farias@rede.ulbra.br>


Guilherme Magnus Neto3 < cromehair@rede.ulbra.br>
Robson Felipe Legremante Nunes4 <robson.nunes@rede.ulbra.br>

Plataforma Computacionais

Universidade Luterana do Brasil (Ulbra)

01 de julho de 2022

RESUMO
Este artigo descreve as funcionalidades e característica do sistema operacional da empresa Apple, chamado de
MAC OS. O trabalho em questão contém um resumo detalhado de como funciona o processamento de tal sistema,
trazendo informações sobre gerência de memória, de processos e de arquivos, além de um breve resumo de quais são
as configurações de hardware do mesmo.
Palavras-chave: Apple, MAC OS.

1 INTRODUÇÃO
Sistemas operacionais são o conjunto de programas que gerenciam recursos, processadores,
armazenamento, dispositivos de entrada e saída e dados da máquina e seus periféricos. Saber como que o
mesmo faz a gestão de seus serviços não é algo simples e comum de se saber, entretanto de extrema importância
para saber como melhor usá-lo.
O MAC OS é um sistema operacional proprietário desenvolvido e distribuído pela empresa Apple Inc.
desde 2001 e destinado exclusivamente aos computadores Mac. E são características do mesmo que estão
contidas no artigo a seguir.
A Seção 2 descreve as configurações do hardware do MAC OS. A seguir, a Seção 3 apresenta as
especificações do gerenciamento de memória, a Seção 4 do gerenciamento de processos, a Seção 5 do
gerenciamento de arquivos, e a 6 do gerenciamento de dispositivos de entrada e sáida. Por fim, são
apresentadas as conclusões.

2 HARDWARE
• Processador M1;
• 8 GB de memória;
• 512 Gb de armazenamento.

3 GERENCIAMENTO DE MEMÓRIA
3.1 Características
• Paginação sob demanda
• External Memory Management Interface (EMMI),
• Named Memory Entries;
• Lazy Evaluation de Memória Copiada (Shadows Objects);
• Memory Maps;

1 Artigo elaborado sobre o sistema operacional MAC OS.


2 Aluno do curso Ciência da Computação da ULBRA
3 Aluno do curso Ciência da Computação da ULBRA
4 Aluno do curso Ciência da Computação da ULBRA

1
• Herança de Named Regions;
• UPLs

3.2 Conceitos
Memory Objects: Dados potencialmente persistentes. Contém names 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, pelo conteúdo e retorna a ele possíveis modificações nos dados.
Pagers: Existem os defaults pagers (ida coma 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 Mack exporta uma interface para esse Memory Objects, permitindo contribuição de várias tarefas
modo-usuário em seu conteúdo (EMMI).
Named Entries: Handle para objetos compartilhados ou submapas. Permite ao owner mapear o objeto
de memória virtual, ou então, passar o direito de mapeá-lo. Mapear uma Named Entry em 2 tasks diferentes
resulta em Memória Compartilhada. Quando se cria uma nova task, classes são clonadas do pai, e sua posição
mapeada da memória pode ser herdada como uma cópia, como compartilhada, ou nenhum desses, baseadas
nos atributos associados ao mapeamento.
Lazy Evaluacion: A cópia é protegida com read-only access para as duas tasks que compartilham
memória. Quando ambas tentam acessar a mesma posição, esta é copiada. Isso permite simplificações em
diversas áreas.
MemoryMaps: Lista ordenada Duplamente Ligada. Cada objeto contém lista de páginas e shadow
references à estes objetos.
Named Regions: podem ser herdadas, não só como um grupo de objetos de memória, mas também
toda a relação de mapeamento entre eles. É como uma named entry, mas ao invés de conter virtual mem.
objects, contém um fragmento de mapa virtual.
UPLs: Universal Page Lists (Data structure) Informações de caching, permissões, mapeamentos, etc.
Shadow Objects: Quando um objeto de memória virtual é duplicado, é criado um Shadow Object, Ele
é inicialmente vazio, apenas com uma referência a outro objeto. Quando uma página é modificada, ele é
copiado do pai e então modificado. Ao ler dados, se ela não existe no Shadow Object lé do pai e isto chama-
se Shadow-chain.

3.3 Resumo
No Mac OS X, cada processo tem a seu próprio conjunto (32bits ou 64 bits) de espaço de endereço
virtual. Para processos de 32 bit, cada processo tem um espaço que pode endereçar dinamicamente chegando
ao limite de 4gb. Para processo de 64 bis, cada processo pode endereçar dinamicamente até o limite de 18
exabyres.
O espaço de endereço virtual de um processo constituído por regiões de memória mapeada. Cada
região de memória no processo apresenta um conjunto específico de páginas de memória virtual.
Memória física é um recurso precioso no computador. Uma característica dos Sistemas Operacionais
Modernos é a Memória Virtual, que implementa ilusão de um largo espaço de endereços para cada programa
sem sobrecarregar o programador com detalhes, como quais partes do programa são residentes na memória
física, em determinado momento, ou onde na memória física as porções residentes estão localizadas, Memória
Virtual é normalmente implementada, através de paginação. Quando residente, cada página da memória virtual
é carregada em alguma parte da memória física. Esta porção, normalmente é chamada de “page frame”.
Além do VM Subsystem baseado no Core Mach, o gerenciamento de memória do Mac OSX engloba
diversos outros mecanismos, alguns dos quais não são partes estritamente do sistema VM, mas estão
intimamente relacionados.
O Subsistema VM do kernel Mach consiste do módulo phisical map (pmmap) e outros módulos para
gerenciar a estrutura de dados, tais como os virtual 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.

2
O kernel usa o UPL, Estrutura de Dados para descrever como delimitar um conjunto de páginas físicas.
O UPL é criado baseado na associação das páginas com os Objetos VM. UPLs incluem vários atributos das
páginas que descrevem. Subsistemas do Kernel, particularmente o File System, usam UPLs para se comunicar
com o subsistema VM.
O UBC constitui um conjunto de páginas para armazenar o conteú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 exemplo mais comum é a memória alocada dinamicamente.
O Kernel inclui 3 paginadores internos, a saber: O paginador padrão, o paginador para 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 interface UPL e derivadas do paginador do Mach

Figura 1 – Fluxograma Memória

3.4 Memória compartilhada


Memória compartilhada é a memória que pode ser escrita ou lida a partir de dois ou mais processos,
Memória partilhada pode ser herdada a partir de um processo mãe, criado por um servidor de memória
compartilhada, ou explicitamente criado por um pedido de exportação para outras aplicações. O uso da
memória compartilhada/partilhada inclui:
• Compartilhando grandes recursos, como ícones ou sons.
• Rápida a comunicação este um ou mais processos
A memória compartilhada é frágil. Se um programa corrompe uma seção de memória compartilhada,
os programas que também usam esta mesma memória acabam acessando dados corrompidos

3
3.5 Wired Memory
Wired Memory (também chamado de memória residente) armazena código kernel e estruturas de
dados, que nunca deve ser paginada para o disco. Aplicações, frameworks e outros softwares da camada de
usuário não podem ser alocados na wired memory. No entanto eles podem afetar a quantidade de wierd
memory existente num dado momento. Há um overhead de memória associada com cada recurso despendido
pelo kernel em nome de um programa.

Figura 2 – Tabela de Recursos Wired Memory


Como pode-se ver, cada thread criado, cada subprocesso bifurcado, e cada biblioteca ligada contribui
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 do kernel
utilizam wierd memory:
• VM objetos
• a memória virtual buffer cache
• I/O buffer caches
• condutores

4 GERENCIAMENTO DE PROCESSOS
4.1 Kernel
O kernel do sistema operacional Mac OS X, é 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 em camadas.

Figura 3 - Organização de um Sistema Operacional em kernel e microkernel


Na organização do sistema operacional em kernel e microkernel existe uma estrutura mínima que
interage com o hardware, provendo mecanismos necessários para interação com os outros subsistemas. O
kernel localiza-se acima da estrutura básica do sistema operacional, atuando como um conjunto de serviços
disponibilizados ao microkernel para suprir as requisições das aplicações de usuários.

4
Sendo um sistema operacional em camadas, é notável que o sistema operacional possui diversas
vantagens 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 por um
processo. Os processos não precisam distinguir entre serviços de espaço de usuário ou serviço do kernel, uma
vez que todos os serviços utilizam uma troca de mensagens para comunicação.
Qualquer sistema operacional irá, inevitavelmente, adicionar novos serviços que não são suportados
pela sua atual estrutura. Quando há uma organização em camadas, permite a adição de novos serviços e 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ço de usuário, ao invés de vários serviços no kernel. Sendo assim, usuários
podem escolher entre uma variedade de opções a que melhor se adapta a sua atual necessidade. Além disso,
como os subsistemas são explicitamente delimitados, podem haver reestruturas dentro de um determinado
subsistema sem haver a necessidade de afetar todo o kernel, sendo inclusive possível descarregar, atualizar e
recarregar um serviço do kernel sem ter a necessidade de recompilar todo o kernel.
No sistema operacional Mac OS X, todo o código específico da arquitetura está no microkernel.
Portanto, a questão de portabilidade se torna muito simples, pois apenas se torna necessário a tradução
para outra arquitetura no microkernel que praticamente todo o sistema operacional é suportado em uma nova
arquitetura.
Embora o conceito de módulos ajude no aumento da confiabilidade no sistema, ganhos ainda maiores
podem ser obtidos com uma organização em camadas. Fazendo testes de estresse no microkernel podem ser
detectados problemas que podem causar instabilidade em todo sistema. Como existem apenas trocas de
mensagens assíncronas entre os subsistemas, caso um subsistema seja danificado, o sistema operacional como
um todo não necessariamente é afetado, visto que os subsistemas estão em espaço de usuário.

4.2 Escalonamento de Processos


O escalonador de processos do Mac OS X é derivado do escalonador OSFMK, porém várias
modificações foram feitas para o tratamento de interatividade no projeto de escalonador base. Ele escalona os
processos baseado numa variante do algoritmo de múltiplas filas com realimentação, porém divide as filas de
prioridades em 4 grupos de processos, agrupados de acordo com suas características.

Figura 4 – Os 4 Grupos de Processos

5
No caso de tarefas de tempo real é feito um controle pela aplicação no número de ciclos do processador
a serem utilizados. Assim, o programador utiliza chamadas de sistema para requisitar ao sistema 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ínimos aceitá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ção de E/S,
um processo de tempo real será penalizado dentro de sua fila de prioridades, sendo inclusive possível a
migração para o grupo de processos Normal, visando um maior desempenho no sistema.
A escolha do processo a ser executado obedece o algoritmo de Múltiplas Filas com realimentação,
sendo executados os grupos de filas de maior prioridade (Tempo real) e por último o grupo de filas de
prioridade de usuário (Normal).

5 GERENCIAMENTO DE ARQUIVOS
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 Firmware Extensível).
O EFI é acionado durante 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.fi para o sistema operacional
Mac OS X ou clilo.fi para sistemas Linux.
Por padrão do sistema operacional, 16 partições é o máximo suportado em um único disco, mas esta
não é uma limitação técnica, apenas um limite proposto, devido a limitações existentes em algumas aplicações.
Os blocos de alocação são a unidade elementar onde são alocados os arquivos, e seu tamanho
corresponde a um múltiplo do tamanho do setor do dispositivo utilizado, sendo o mais comum 512 bytes, o
que contrasta com o bloco de alocação padrão do Mac OS X, que é de 4KB, sendo que este pode chegar a 1MB
(tamanho definido artificialmente no arquivo /sys/param.h).
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 deste
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âmica destes pequenos arquivos para promover sua continuidade.
HFS+ é um sistema de arquivos que suporta nomes de arquivos e diretórios até 255 caracteres
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 análises, hard links e links simbólicos.
E embora seja por padrão um sistema case-insensitive com case-preserving (preserva a caixa-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 coexistir num mesmo diretório, há
suporte no sistema de arquivos para case-sensitivity.
A partir da versão 10.4 do sistema operacional, são suportados pelo sistema de arquivos
simultaneamente 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
pelo subsistema BSD, que como qualquer Unix-Like no que diz respeito à proteção de escrita, não provê
nenhum lock para arquivos abertos por múltiplas aplicações.
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.
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, tendo dois sempre presentes, o data foré e o resource fork, armazenados em árvores-B separadas.

6
6 GERENCIAMENTO E/S
O coração do Mac OS X é o kernel XNU. O kernel refere-se à parte de um sistema operacional que
carrega primeiro. Ele controla e monitora recursos de hardware como memória, alocação de processador de
CPU e unidades de disco. O kernel XNU inclui código de um antigo sistema de arquitetura de computadores
chamado Mach. Mach é um produto da Carnegie Mellon University e existe desde a década de 1980. Este
código é responsável por algumas funções básicas dentro do computador Mac, incluindo gerenciamento de
memória virtual e multitarefa. O código também dá ao Mac OS a autoridade para reduzir a velocidade de
processamento da CPU caso ela comece a superaquecer.
Outra parte do kernel é o Kit Input-Output (I/O). Ele se baseia em uma versão especializada e limitada
da linguagem de programação C++ para controlar os drivers de dispositivo. Drivers de dispositivo são o que
permitem que dispositivos externos interajam com seu computador. Por exemplo, sua impressora pode exigir
um driver de dispositivo em seu computador para que você possa imprimir de sua máquina. Lidar com todas
as solicitações e informações que se movem do seu computador para outros dispositivos - e vice-versa - é um
trabalho exigente. O Kit de E/S permite que um computador Mac lide com vários dispositivos em diferentes
tecnologias ao mesmo tempo. É por isso que você pode conectar dispositivos a um Mac usando cabos USB,
FireWire e Thunderbolt simultaneamente.

7 CONCLUSÃO
Este artigo apresentou as características do sistema operacional MAC OS, sendo elas configurações
de hardware, gerenciamento de memória, gerenciamento de processos, gerenciamento de arquivos e
gerenciamento de dispositivos de entrada e saída. Os itens contidos no artigo são de extrema importância para
o conhecimento de como funciona o sistema em questão.
Este artigo apresentou as normas básicas para elaboração de artigos para as disciplinas dos cursos da área de
Computação da Ulbra. Os itens não definidos neste artigo devem ser resolvidos aplicando-se as regras
definidas nas obras que fazem parte das referências deste artigo.

REFERÊNCIAS
MacOS Mojave - Especificações técnicas. Disponível em:
<https://support.apple.com/kb/SP777?locale=pt_BR>. Acesso em: 23 de junho.
Recover, Remo. Como é Que OS X Gerenciar Memória do Sistema?.Disponível em:
<https://www.remorecover.com/blog/pt/como-e-que-os-x-gerenciar-memoria-do-sistema> Acesso em: 23 de
junho.
Strickland, Jonathan. How Mac OS X Works. Disponível em:
<https://computer.howstuffworks.com/macs/mac-os-x2.htm> Acesso em: 24 de junho.
MacOS. Disponível em: <http://developer.apple.com/mac> Acesso em: 24 de junho.
MacOS Monterey. Disponível em: <https://www.apple.com/macosx/techspecs/> Acesso em: 25 de junho.

Você também pode gostar