Pergunta

A criação de um sistema operacional parece um maciça projeto.Como que alguém poderia mesmo começar?

Por exemplo, quando eu abro o Ubuntu em meu disco, como pode o meu computador só executar ele? (Isso, eu acho, é o que eu realmente gostaria de saber.)

Ou, olhando por outro ângulo, qual é a menor quantidade de bytes que pode estar em um disco e ainda ser "executar" como um sistema operacional?

(Me desculpe se isso é vago.Eu só tenho sem ideia sobre este assunto, então eu não posso ser muito específico.Eu finjo saber um bocado sobre como os computadores funcionam, mas eu sou totalmente ignorante sobre este assunto).

Foi útil?

Solução

Bem, a vida de respostas em livros: Sistemas operacionais modernos - Andrew S. Tanenbaum é muito bom. A ilustração da capa abaixo.

O kernel mais simples ainda completa do sistema operacional, adequado para aprender ou apenas curiosidade, é Minix .
Aqui você pode navegar na código fonte

Sistemas operacionais modernos
(fonte: cs.vu.nl )

Outras dicas

Sistemas operacionais é um tópico enorme, a melhor coisa que posso recomendar-lo se você quiser ir realmente em profundidade sobre a forma de sistemas operacionais são projetados e construced é um bom livro:

Conceitos de Sistema Operacional

Conceitos de Sistema Operacional

Se você está realmente curioso que eu iria encaminhá-lo para Linux from Scratch como um bom lugar para aprender o completo prós e contras de um sistema operacional e como todas as peças se encaixam. Se isso é mais informação do que você está procurando, então este artigo Wikipedia em sistemas operacionais pode ser uma boa lugar para começar.

A PC sabe olhar para um setor específico do disco para as instruções de arranque. Estas instruções, então, dizer o processador que em dadas as interrupções do processador, o código específico deve ser chamado. Por exemplo, em um carrapato periódica, chame o código programador. Quando eu conseguir alguma coisa a partir de um dispositivo, ligue para o código do driver de dispositivo.

Agora, como é que um OS configurar tudo com o sistema? Poço de hardware têm API também. Eles são escritos com o programador de sistemas em mente.

Eu vi um monte de nu-ossos OS e este é realmente o núcleo absoluto. Há muitos incorporado home-grown OS do que isso é tudo o que eles fazem e nada mais.

As características adicionais, como a exigência aplicações de pedir ao sistema operacional para a memória, ou exigindo privilégios especiais para determinadas acções, ou mesmo processos e os próprios tópicos são realmente opcional embora implementado na maioria das arquiteturas de PC.

O sistema operacional é, simplesmente, o que habilita o seu software para gerenciar o hardware. Claramente alguns sistemas operacionais são mais sofisticados do que outros.

Na sua essência, um computador começa a executar em um endereço fixo, o que significa que quando o computador é iniciado, ele define o contador de programa para um endereço pré-definido, e apenas começa a executar o código de máquina.

Na maioria dos computadores, este processo "bootstrapping" inicializa imediatamente periféricos conhecidos (como, por exemplo, uma unidade de disco). Uma vez inicializado, o processo de inicialização irá utilizar uma sequência pré-definida para alavancar esses periféricos. Usando o driver de disco novo, o processo pode ler o código do primeiro setor do disco rígido, colocá-lo em um espaço de saber dentro de RAM, e depois saltar para esse endereço.

Estes sequência predefinida (o início da CPU, o carregamento do disco) permite que os programadores para estrelar adicionando mais e mais código nas partes iniciais do arranque do CPU, que ao longo do tempo pode, no final, arranque de programas muito sofisticados .

No mundo moderno, com periféricos sofisticados, arquiteturas de CPU avançados, e vastas, vastos recursos (GBs ou RAM, TB de disco e CPUs muito rápido), o sistema operacional pode suportar abstrações bastante poderosas para o desenvolvedor (múltiplos processos , memória virtual, motoristas carregáveis, etc.).

Mas para um sistema simples, com constrangidos recursos, você realmente não precisa de um lote inteiro para um "OS".

Como um exemplo simples, muitos computadores de controlador pequenos têm muito pequenas "os" es, e alguns podem simplesmente ser considerado um "monitor", oferecendo pouco mais de fácil acesso a uma porta serial (ou um terminal, ou o visor LCD) . Certamente, não há um monte de necessidades para um grande OS nestas condições.

Mas também considerar algo como um sistema de Forth clássico. Aqui, você tem um sistema com um "OS", que lhe dá disco I / O, consolar I / O, gerenciamento de memória, além da linguagem de programação real, bem como um montador, e isso se encaixa em menos de 8K de memória em um 8-Bit máquina.

ou os antigos dias de CP / M com o BIOS e BDOS.

CP / M é um bom exemplo de onde um simples sistema operacional funciona bem como uma camada de abstração para permitir que programas portáteis para executar em uma vasta gama de hardware, mas mesmo assim o sistema levou menos de 8K de memória RAM para o arranque e funcionamento .

A far cry a partir dos MBs de memória usados ??por sistemas operacionais modernos. Mas, para ser justo, temos MB de memória, e as nossas vidas são muito muito mais simples (principalmente), e muito mais funcional, por causa disso.

Escrevendo um sistema operacional é divertido porque é interessante fazer a impressão HARDWARE "Olá Mundo" empurrando dados 1 byte de cada vez para fora algum porto I / O obscura, ou enchê-lo para algum endereço de memória mágica.

Obter um emulador x86 e Party Down obter um sector de arranque para dizer seu nome. É um deleite giggly.

Basicamente ... o computador pode simplesmente executar o disco porque:

O BIOS inclui o dispositivo de disco na ordem de inicialização.

Na inicialização, o BIOS verifica todos os dispositivos de arranque de forma, como a unidade de disquete, o disco rígido, e o CD ROM. Cada dispositivo acessa seus meios de comunicação e cheques de uma localização hard-coded (tipicamente um setor, em um dispositivo de disco ou cd) para uma impressão digital que identifica a mídia e listas o local para saltar para no disco (ou mídia), onde instruções começar. O BIOS informa o dispositivo para mover a cabeça (ou qualquer outro) para o local especificado na mídia, e ler um pedaço grande de instruções. O BIOS mãos essas instruções fora da CPU.

A CPU executa as instruções. No seu caso, estas instruções vão iniciar o Ubuntu OS. Eles poderiam muito bem ser instruções para parar, ou para adicionar 10 + 20, etc.

Normalmente, um sistema operacional vai começar tomando um grande pedaço de memória (mais uma vez, directamente a partir da CPU, uma vez comandos de biblioteca como 'GlobalAlloc' etc não estão disponíveis como eles são fornecidos pela a ainda-ser- -carregado oS) e começa a criar estruturas para o sistema operacional em si.

Um sistema operacional fornece um monte de 'recursos' para aplicações: gerenciamento de memória, sistema de arquivos, entrada / saída, agendamento de tarefas, de rede, gestão de gráficos, acesso a impressoras, e assim por diante. Isso é o que está fazendo antes de 'obter o controle':. Criar / iniciar todos os serviços para que os aplicativos posteriores podem correr juntos, não pisar na memória de cada um, e ter uma boa API para os serviços do sistema operacional fornecido

Cada 'recurso' fornecer pelo sistema operacional é um tema de grande porte. Um sistema operacional fornece todos eles para que os aplicativos só tem que se preocupar em ligar para a biblioteca OS direita, eo sistema operacional gerencia situações como se dois programas tentam imprimir ao mesmo tempo.

Por exemplo, sem o sistema operacional, cada aplicativo teria que lidar com uma situação onde outro programa está tentando imprimir, e 'fazer algo' como a cópia de qualquer maneira, ou cancelar outro trabalho, etc. Em vez disso, apenas o sistema operacional tem para lidar com isso, as aplicações apenas dizer para o sistema operacional 'imprimir essas coisas' eo oS garantir uma impressão de aplicativos, e todos os outros aplicativos só tem que esperar até que a primeira acabamentos ou o usuário cancela-lo.

A menor quantidade de bytes para ser um sistema operacional não faz muito sentido, como um "OS" poderia implicar muitos, ou muito poucos, apresenta. Se tudo que você queria era para executar um programa a partir de um CD, isso seria muito, muito poucos bytes. No entanto, isso não é um sistema operacional. O trabalho de um sistema operacional é a prestação de serviços (eu estive chamando-os de recursos) para permitir que muitos outros programas para executar e gerenciar o acesso a esses serviços para os programas. Isso é difícil, e os recursos mais comuns que você adicionar (redes e wi-fi, e gravadores de CD e joysticks e vídeo iSight, e dois monitores, etc, etc), mais difícil fica.

Um dos projectos mais recente do sistema operacional que eu vi que tem um apoio sério foi um projeto MS Research chamado Singularity , que é inteiramente escrito em C # .NET a partir do zero.

Para se ter uma idéia de quanto trabalho é preciso, há 2 devs principais, mas eles têm até uma dúzia de estagiários, em determinado momento, e ainda levou dois anos antes que poderia mesmo começar o OS para um ponto em que seria bootup e exibir imagens BMP (é como eles usam para fazer suas apresentações). Demorou muito mais trabalho antes que eles poderiam até mesmo chegar a um ponto onde havia uma linha de comando (como sobre 4yrs).

Basicamente, existem muitos argumentos sobre o que um sistema operacional realmente é . Se você tem todos concordaram sobre o que um sistema operacional é especificamente (é apenas o kernel? Tudo o que é executado no modo kernel? É a parte shell de OS? É X parte do sistema operacional? É navegador da Web uma parte do sistema operacional?), Sua pergunta é respondida! Caso contrário, não há nenhuma resposta específica para sua pergunta.

Você pode querer obter o livro A concepção e implementação do sistema FreeBSD operacional para uma resposta muito detalhada. Você pode obtê-lo de Amazon ou neste link para o FreeBSD.org aparência do site, como o livro como eu me lembro: texto do link

Eu não posso acreditar que isso não foi mencionado ... mas um livro clássico para uma visão geral do design de sistema operacional é Sistemas Operacionais - desenho e Implementação escrito por Andrew S Tanenbaum, o criador do MINIX. Muitos dos exemplos no livro são voltados diretamente para MINIX também.

Se você gostaria de aprender um pouco mais, OS Dev é um ótimo lugar para começar. Especialmente o wiki. Este site está cheio de informações, bem como os desenvolvedores que escrevem sistemas operacionais pessoais para um projeto pequeno / hobby. É um grande recurso de aprendizagem também, pois há muitas pessoas no mesmo barco que você em OSDev que querem aprender o que entra em um sistema operacional. Você pode acabar tentando-se, eventualmente, também!

o sistema operacional (OS) é a camada de software que controla o hardware. Quanto mais simples o hardware, quanto mais simples o sistema operacional, e vice-versa; -)

Se os primeiros dias de microcomputadores, você poderia caber o sistema operacional em uma ROM 16K e hard-wire a placa-mãe para iniciar a execução instruções de código de máquina no início do espaço de endereço ROM. Este processo de 'inicialização', então, carregar o código para os drivers para outros dispositivos como o teclado, monitor, drive de disquetes, etc., e dentro de alguns segundos sua máquina iria ser inicializado e pronto para uso.

Hoje em dia ... mesmo princípio, mas muito mais e mais complexo hardware; -)

Oh, este é um divertimento. Eu fiz a coisa toda em um ponto ou outro, e estive lá através de uma grande parte da evolução.

Em geral, você começar a escrever um novo sistema operacional ao começar pequeno. A coisa mais simples é um carregador de inicialização, que é um pequeno pedaço de código que puxa um pedaço de código e executa-lo. Era uma vez, com os computadores Nova ou PDP, você poderia entrar no bootstrap loader através do painel frontal: você digitou o número instruções hex pelo número hexadecimal. O carregador de inicialização do que lê algum meio para a memória, e definir o contador de programa para o endereço de início desse código.

Esse pedaço de código cargas usualy outra coisa, mas ele não tem que: você pode escrever um programa que está destinado a ser executado no bare metal. Esse tipo de programa faz alguma coisa útil por conta própria.

Um sistema operacional real é maior e tem mais peças. você precisa carregar programas, colocá-los na memória, e executá-los; você precisa fornecer o código para executar as unidades IO; à medida que cresce, você precisa gerenciar a memória.

Se você quiser realmente aprender como ele funciona, encontrar livros Xinu Doug de Comer , e Andy livro Tannenbaum 's mais novo sistema operacional em Minix .

Tente Como Computadores Boot Up , O Processo Kernel e outros artigos relacionados a partir do mesmo blog por um breve resumo do que um computador faz quando botas.

O que um computador faz quando seu início é fortemente dependente (talvez óbvio?) Na o design CPU e outras "coisas de baixo nível"; portanto, é uma espécie de difícil antecipar o que o computador faz quando botas.

Bem, você tem algo que liga a inicialização do chip a um "bios", em seguida, para um sistema operacional, que normalmente é uma tarefa muito complicada feito por uma série de serviços de código.

Se você REALMENTE quer saber mais sobre este eu recomendo a leitura de um livro ... sobre microcontrllers, especialmente aquele em que você criar um pequeno sistema operacional em c para um 8051 ou similar .. ou aprender alguma x86 montagem e criar uma muito pequena "bootloader OS".

Você pode querer verificar para fora esta questão .

Um sistema operacional é um programa, assim como qualquer outra aplicação que você escreve. O principal objectivo deste programa é que ele permite que você execute outros programas. SOs modernos tirar proveito do hardware moderno para garantir que os programas não se chocam uns com os outros.

Se você estiver interessado em escrever o seu próprio sistema operacional, consulte a minha própria pergunta aqui:

Como começar no desenvolvimento do sistema operacional

Você pergunta como bytes poucos poderiam você colocar no disco e ainda correr como um SO ? A resposta depende do que você espera do seu sistema operacional, mas o menor útil OS que eu saiba se encaixa em 1,7 Megabytes. É disco Root Bota de Tom e é um muito bom se pequeno OS com aplicações de "resgate" que cabe em um disquete . Voltar nos dias em que cada máquina tinha uma unidade de disquete e não cada máquina tinha uma unidade de CD-ROM, eu costumava usá-lo com frequência.

A minha opinião sobre isso é que ele é como a sua própria vida.EM primeiro lugar, você sabe muito pouco - apenas o suficiente para se dar bem.Isso é semelhante ao que o BIOS fornece - ele sabe o suficiente para olhar para uma unidade de disco e ler informações a partir dele.Em seguida, você aprende um pouco mais quando você ir para a escola elementar.Isto é como o sector de arranque de ser lidas para a memória e a ser determinado controle.Em seguida, você ir para a escola, que é como o kernel do sistema operativo a carregar.Em seguida, você ir para a faculdade (drivers e outros aplicativos). Claro, este é o ponto em que são passíveis de FALHA. HE HE.

A linha inferior é que as camadas de mais e mais capacidade estão lentamente carregado.Não há nada mágico sobre um sistema operacional.

Leitura por aqui lhe dará uma idéia do que levou para criar Linux https://netfiles.uiuc.edu/rhasan/linux/

Outro sistema operacional muito pequeno que se encaixa em um disco é QNX (quando eu última olhou para ele há muito tempo, o sistema operacional inteiro, com interface gráfica, navegador web, o acesso ao disco e construído em um servidor web, ajuste em um unidade de disquete).

Eu não ouvi muito sobre isso desde então, mas é um sistema operacional de tempo real para que ele é projetado para ser muito rápido.

Na verdade, algumas pessoas visitar uma faculdade de 4 anos para ter uma idéia sobre isso ..

Na sua essência, OS é extremamente simples. Aqui está o guia do iniciante ao QUE OS sucesso são feitas para fazer: 1. gerir CPU usando programador que decide qual processo (instância em execução do programa) a ser agendada. 2. gerir memória para decidir qual todos os processos de usá-lo para armazenar instruções (código) e de dados (variáveis). 3. Gerenciar I / O interfaces, como unidades de disco, alarmes, teclado, mouse. Agora, acima de 3 requisitos dão origem a necessidade de processos para se comunicar (e não lutar!), Para interagir com o mundo exterior, aplicações de ajuda para fazer o que eles querem fazer. Para aprofundar como ele faz isso, livro Dinosaur leitura:)

Assim, você pode fazer OS tão pequeno quanto você quiser, desde que você consiga lidar com todos os recursos de hardware. Quando você inicialização, BIOS diz CPU para começar bootloader leitura (que carrega primeira função de OS que reside no endereço fixo na memória - algo como main () de pequeno programa C). Então isso cria funções e processos e threads e inicia o big bang!

Em primeiro lugar, lendo leitura e ler sobre, o que é OS; então o que são as utilizações / Tipos / natureza / Objective / necessidades / dos diferentes OS do. Alguns dos links são os seguintes; novato apreciará estes links:

Modern OS - o que dá idéia sobre OS geral.

Start of OS -. isso dá noções básicas do que é realmente necessário para fAZEM OS, como podemos fazê-lo e como se pode modificar um presente código-fonte aberto do sistema operacional por si mesmo

Wiki OS - Dá ideia sobre os diferentes sistemas operacionais utilizados em diferentes campos e usos da mesma (Objetos / recursos do OS.)

Vamos ver, em geral, o que OS contém (não o sophisticatedLinux ou Windows)

OS precisa de uma CPU e para despejar um código em que você precisa de um bootloader. OS deve ser ter os objetivos a fullfill e esses objectivos mustbe definido em um invólucro que é chamado Kernel Dentro de você poderia ter scheduling time e ISR's (depende do OS objetiva e você precisa fazer)

desenvolvimento OS é complicado. Existem alguns sites como osdev ou lowlevel.eu (alemão) dedicados ao tema. Existem também alguns livros, que outros já mencionados.

Eu não posso ajudar, mas também referência a série de vídeos "Escreva seu próprio sistema operacional" no youtube, como eu sou o único que fez: -)

https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top