Bruno Ribeiro da Silva A adaptação de um sistema operacional para a execução em uma diferente arquitetura Universidade Federal de Santa Catarina Florianópolis, Fevereiro de 2007 1 Bruno Ribeiro da Silva A adaptação de um sistema operacional para a execução em uma diferente arquitetura. Proposta inicial ao trabalho de conclusão de curso apresentado ao curso de Ciências da Computação da Universidade Federal de Santa Catarina como requisito na obtenção do título de Bacharel. ___________________________________ Orientador: Luís Fernando Friedrich Florianópolis, 2007 2 RESUMO Os sistemas operacionais são peças chave na utilização de um computador, são eles que nos fornecem o acesso aos dispositivos contidos no mesmo. O principal componente de um computador é sua unidade central de processamento. É ela que executa todas as instruções lógicas de um sistema operacional. Este trabalho aborda a adaptação de um sistema operacional e sua reprogramação para a execução sobre um diferente processador. Tratando dos segmentos de código de um sistema operacional que são extremamente dependentes do conjunto de instruções do processador. Palavras­chave: sistemas operacionais; processador. 3 SUMÁRIO 1. INTRODUÇÃO ............................................. 4 2. MOTIVAÇÃO .............................................. 5 3. OBJETIVOS .............................................. 7 3.1 Objetivos gerais ....................................... 7 3.2 Objetivos específicos .................................. 7 4. METODOLOGIA ............................................ 8 5. CRONOGRAMA ............................................. 9 6. REFERÊNCIAS BIBLIOGRÁFICAS ............................ 10 4 1. Introdução Os computadores hoje são ferramentas indispensáveis, tanto para trabalhos que necessitem da interação humana como para trabalhos que precisem de autonomia. A maneira de como os computadores operam segue um determinado padrão, é necessário um hardware1 específico e uma camada de software2 que nos permite a execução de softwares terceiros. Esta camada intermediária de software que nos possibilita a utilização de todos os componentes de hardware contidos em um computador é chamada de sistema operacional. Um sistema operacional fornece um ambiente no qual o usuário possa executar seus programas de maneira que ele não precise se preocupar em como manipular os componentes de hardware. Seu objetivo principal é, então, prover a utilização de um computador de forma mais eficiente e mais conveniente, Oliveira (2004, p. 2). Por advento da arquitetura de um computador permitir que possamos agregar novos componentes, sejam eles de diferentes fabricantes, modelos e com suas características próprias, surge um problema no desenvolvimento dos sistemas operacionais que é: como fazer para que um sistema operacional possa lidar com os diferentes dispositivos e até mesmo os que no futuro possam vir a ser construídos? O principal componente em um computador é a sua unidade central de processamento (UCP) vulgarmente chamado de processador, é ele quem executa todas as operações lógicas e é sobre ele que um sistema operacional executa suas instruções. Com foco na pergunta anteriormente feita, levanta­se uma outra questão, como é que um sistema operacional então pode ser desenvolvido de forma que ele possa executar suas instruções em um diferente processador? Como é que isto pode ser feito de maneira eficiente? De que maneira é possível estruturar o sistema de modo que ele possa ser reprogramado facilmente para outro processador? Estes são os objetivos fundamentais deste projeto. 1 Hardware: conjunto de componentes físicos (material eletrônico, placas, monitor, equipamentos periféricos e etc.) de um computador. Houaiss (2001). 2 Software: programa, rotina ou conjunto de instruções que controlam o funcionamento de um computador. Houaiss (2001). 5 2. Motivação Com a rápida evolução no campo da informática a todo tempo novas tecnologias são criadas e consequentemente não é possível sempre seguir um padrão, já que os mesmos se tornam obsoletos e fonte de impedimento a novas abordagens. Os processadores por toda sua história sempre tiveram características diferentes entre si, no entanto entre um mar de diferentes modelos, fabricantes e modos de operação, em sua maioria estiveram separados em duas distintas filosofias de design, os Reduced Instruction Set Computer (RISC), esses com um conjunto de intruções reduzidas de maneira a simplificar a sua operação e obter maior velocidade no cômputo das operações, e os Complex Instruction Set Computers (CISC), que como no nome possuem um conjunto complexo de instruções. Desde a criação dos primeiros computadores o ser humano já pensava em como tornar sua utilização eficaz, seja através da criação de novos dispositivos, como os de armazenamento e memória, ou então através de softwares que automatizassem processos que eram necessários toda a vez que algum usuário quisesse executar algum software. Da evolução destes softwares de automação dos computadores que surgiram os sistemas operacionais. Responsáveis pelo controle de todos os dispositivos de um computador e por permitir de maneira fácil a sua utilização, os sitemas operacionais rapidamente ganharam popularidade. Eles foram desenvolvidos para as mais diversas finalidades e para diferentes computadores. Definido então por Silberschatz (2000, p. 4) Um sistema operacional é semelhante a um governo. Os componentes de um sistema de computação são seu hardware, software e dados. O sistema operacional fornece o meio para o uso adequado desses recursos na operação do sistema de computador. Como um governo, o sistema operacional não executa nenhuma função útil por si mesma. Simplesmente forncece um ambiente no qual outros programas podem realizar tarefas úteis. Os sistemas operacionais atuais são desenvolvidos em linguagens de programação de alto nível focando o rápido desenvolvimento e maior portabilidade3, no entanto, algumas partes sensíveis do sistema operacional precisam ser programadas diretamente em linguagem de máquina (assembly) para que não haja uma perda muito grande no desempenho do sistema. 3 Portabilidade: capacidade de ser portável, no âmbito da computação portar um software significa adaptá­ lo/reprogramá­lo de maneira que o mesmo possa ser executado em um diferente ambiente computacional. 6 Ainda que os sistemas operacionais sejam grandes apenas uma pequena parte é crítica quanto ao desempenho, o gerenciador de memória e o escalonador de processos são provavelmente as rotinas mais críticas, Silberschatz (2000, p.57). Um outro conjunto de rotinas que necessitam em parte de programação em linguagem assembly são os drivers de dispositivos, são eles que fazem a comunicação direta com os periféricos de um computador: placa de vídeo, webcam, mouse, teclado, etc. Este projeto então se baseia na escolha de um sistema operacional e um hardware o qual o sistema não possua suporte à execução, e adaptar as partes sensíveis à linguagem de um processador específico de modo que o sistema possa adquirir uma maior portabilidade. Como prova de conceito após a adaptação do sistema escolhido realizar sua reprogramação para o hardware escolhido. Os resultados desejados do projeto se justificam na suma importância das partes diretamente dependentes de hardware apontadas no decorrer dos estudos realizados no sistema escolhido, e que os mesmos resultados possam ser adotados na busca de estratégias em uma atividade de adaptação de um sistema operacional qualquer. 7 3. Objetivos 3.1 Objetivos gerais O principal objetivo do projeto é prover a adaptação de um sistema operacional para que o mesmo possa ser reprogramado para um hardware ainda não suportado pelo sistema. Em busca deste objetivo principal serão estudadas as partes do sistema que dependem diretamente do hardware do computador, serão também estudadas as melhores abordagens para a adaptação dessas partes de maneira que elas ganhem portabilidade. 3.2 Objetivos específicos – Estudar todo o funcionamento do sistema escolhido e realizar análise sobre as partes dependentes do hardware selecionado para a prova de conceito. – Estudar o conjunto de instruções e a arquitetura do processador escolhido. – Adaptar o sistema escolhido. – Reprogramar o sistema escolhido para o conjunto de intruções específicas ao processador escolhido. 8 4. Metodologia Através do sistema operacional Minix em sua versão 3, para arquitetura x86 (CISC), serão realizados os estudos necessários à sua adaptação e sua posterior reprogramação para uma outra arquitetura. A arquitetura em questão a ser suportada pelo Minix em conclusão do projeto é o processador OpenSPARC, que é de filosofia RISC, possuindo um conjunto de instruções reduzidas e que possui em disponibilidade uma gama de ferramentas no auxílio do processo de programação, tanto quanto em documentação sobre sua arquitetura. Será então realizada a adaptação e reprogramação de um sistema operacional de uma máquina CISC para uma máquina RISC. Necessariamente serão utilizadas ferramentas específicas referentes aos processos de geração e execução do sistema. Essas ferramentas supra­citadas constituem­se de compiladores, ligadores, emuladores de arquitetura, depuradores, etc. O sistema operacional adotado como ferramenta de pesquisa e execução do projeto é um sistema GNU/Linux, este por fornecer a estrutura necessária ao desenvolvimento do projeto. 9 5. Cronograma 1. Março­Abril de 2007 ● Estudo do sistema operacional Minix. 2. Maio­Junho de 2007 ● Estudo da arquitetura e conjunto de instruções do OpenSPARC. 3. Julho­Agosto de 2007 ● Adaptação do Minix. 4. Setembro­Outubro de 2007 ● Reprogramação do Minix para a arquitetura do OpenSPARC. ● Finalização do projeto. 10 6. Referências bibliográficas OLIVEIRA, R. S.; CARISSIMI, A. S.; TOSCANI, S. S. Sistemas Operacionais. 3. ed. Porto Alegre: Instituto de Informática da UFRGS: Sagra Luzzatto, 2004. 274 p. SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas operacionais: conceitos e aplicações. Tradução de Adriana Ceschin Rieche. 1. ed. Rio de Janeiro: Campus, 2000. 585 p. Título original: Applied operating system concepts. INSTITUTO ANTÔNIO HOUAISS. Dicionário eletrônico Houaiss da língua portuguesa. Versão 1.0. Editora Objetiva, 2001. 1 CD­ROM.