Valuable insights
1.Estrutura e Avaliação do Curso: O curso utiliza metodologia assíncrona com vídeoaulas e slides semanais, complementada por aulas síncronas quinzenais. A avaliação é composta por IPs (50%), questionários (20%) e seminários (30%), com possibilidade de recuperação para notas específicas.
2.Papel Central do Sistema Operacional: O SO atua como intermediário essencial entre o usuário/programas e o hardware, abstraindo a complexidade do gerenciamento de recursos. Essa abstração permite que os programadores se concentrem na lógica da aplicação, e não nos detalhes intrínsecos do hardware.
3.Hierarquia e Otimização da Memória: A memória é organizada em uma hierarquia de velocidade (registradores, cache, RAM, disco, fita), impactando diretamente o desempenho. O SO gerencia essa hierarquia, e entender seu funcionamento, especialmente o cache, é crucial para otimizar algoritmos e programas.
4.Processamento Concorrente e Gerenciamento: O SO simula o processamento concorrente em máquinas com um único processador, gerenciando a alocação de recursos entre múltiplos programas. Essa capacidade é fundamental para a multitarefa e o uso eficiente do hardware moderno, apesar da sobrecarga inerente.
5.Interação com Dispositivos e Drivers: A comunicação com dispositivos de E/S é feita por meio de controladores e drivers. Os drivers, fornecidos pelos fabricantes, traduzem as requisições do SO para comandos de hardware, tornando a interação padronizada e simplificando o desenvolvimento de software.
6.Processo de Inicialização (Boot): A inicialização do computador é uma sequência complexa que envolve a BIOS e a CMOS para testes de hardware e leitura da ordem de boot. O setor de boot carrega o kernel do SO, que assume o controle da máquina, permitindo seu funcionamento pleno.
Regras do Jogo - Avaliação
O curso de Sistemas Operacionais adota uma metodologia de ensino predominantemente assíncrona. Semanalmente, serão disponibilizadas videoaulas acompanhadas de seus slides correspondentes. Adicionalmente, a cada duas semanas, ocorrerão aulas síncronas dedicadas à discussão e ao esclarecimento de dúvidas, utilizando a plataforma e-disciplinas da USP como principal canal de comunicação e interação. É fundamental que os alunos acessem a plataforma regularmente para verificar avisos, materiais e tarefas.
Livros e Materiais
Os materiais didáticos do curso foram elaborados para serem autocontidos, o que significa que as aulas e transparências (slides) são suficientes para o aprendizado. Embora não seja estritamente necessário adquirir livros, a disciplina utilizou como base principal o livro Modern Operating Systems, de Andrew S. Tanenbaum. Outra referência complementar e de acesso gratuito, que aborda pontos relevantes sobre sistemas operacionais, é Operating System Concepts, de Abraham Silberschatz. Recomenda-se consultá-lo para aprofundar a curiosidade e auxiliar nos estudos.
Comunicação e Dúvidas
A plataforma e-disciplinas serve como o canal oficial de comunicação, com fóruns de discussão específicos para dúvidas sobre IPs e um fórum geral para questões diversas. É fortemente incentivada a participação nos fóruns, pois dúvidas individuais frequentemente são compartilhadas por outros colegas. Para questões específicas sobre a implementação de um trabalho individual que não devem ser expostas publicamente, os alunos podem enviar um e-mail diretamente ao professor ou usar o serviço de mensagens da plataforma.
A média final do curso é calculada com base nos pesos atribuídos a cada componente. Para aprovação direta, a média final deve ser maior ou igual a 5. Alunos com média final inferior a 3 são reprovados. Aqueles com média entre 3 e 4.999... têm a oportunidade de realizar uma Recuperação (REC), que consiste em um trabalho adicional. A nota da REC é então combinada com a média anterior para determinar a nova média final, oferecendo uma segunda chance para o aluno alcançar a aprovação.
Minha gente, isso daí não é de fogo. Eu não quero ficar corrigindo REC, então, por favor, sigam as coisas.
Sistema Computacional
Um sistema computacional abrange um ou mais processadores, memória principal, e uma vasta gama de dispositivos de entrada e saída, como discos, impressoras, teclados e monitores. No passado, programadores eram responsáveis por toda a interação com o hardware, o que tornava tarefas simples, como exibir um "Olá, mundo" na tela, extremamente complexas. Isso exigia um conhecimento aprofundado dos detalhes do hardware, como a taxa de atualização do monitor ou suas dimensões, e a necessidade de reescrever o código para cada configuração de hardware diferente.
- Programar a interação direta com a tela e outros dispositivos de entrada/saída.
- Lidar com especificidades de hardware, como a taxa de atualização e dimensões do monitor.
- Necessidade de adaptar ou reescrever o código para diferentes configurações ou trocas de hardware.
A complexidade crescente das máquinas tornou inviável que os programadores continuassem a gerenciar diretamente todos esses detalhes de hardware. Assim, surgiu a necessidade de terceirizar essa parte do gerenciamento, dando origem ao sistema operacional. O SO permitiu que os desenvolvedores focassem na lógica e nas funcionalidades de suas aplicações, sem se preocupar com as minúcias de como o hardware funciona, ganhando em portabilidade e simplificando o desenvolvimento de software.
Camadas de Software e Hardware
O sistema computacional moderno é uma construção em camadas. Na base, estão os dispositivos físicos, com sua microarquitetura que reconhece a linguagem de máquina. Acima disso, atua o sistema operacional, que por sua vez, suporta componentes básicos (como editores e compiladores) e, finalmente, as aplicações do usuário, como navegadores e sistemas de banco de dados. O sistema operacional serve como um intermediário essencial, gerenciando recursos e provendo uma interface para que o usuário e os programas possam interagir com o hardware de forma eficiente e abstrata.
O sistema operacional é um programa ou conjunto de programas inter-relacionados, cuja finalidade é agir como um intermediário entre o usuário e o hardware, e como um gerenciador de recursos.
Vantagens do SO
O sistema operacional proporciona uma máquina mais flexível, capaz de múltiplas utilizações e um controle eficiente do hardware, mesmo em cenários de múltiplos programas ou usuários. Ele permite o uso compartilhado e protegido dos recursos de hardware, assegurando que diferentes componentes ou programas não interfiram uns nos outros. Além disso, o SO deve fornecer uma interface clara aos programas, informando sobre os recursos disponíveis e gerenciando interações por meio de chamadas ao sistema.
- Prover uma interface aos programas, permitindo que solicitem serviços de hardware.
- Gerenciar recursos de hardware, otimizando seu uso entre múltiplos usuários e aplicações.
- Facilitar a interação direta do usuário com o sistema, seja por interpretadores de comandos ou interfaces gráficas.
Interfaces de Usuário
O sistema operacional oferece duas principais formas de interação ao usuário: a interface textual, via interpretador de comandos (como Bash no Linux ou Command Prompt no Windows), que, embora mais antiga, é a forma mais rápida para usuários experientes; e a interface gráfica (GUI), que é mais intuitiva e amigável. Ambas permitem que o usuário execute comandos e interaja com o sistema operacional de forma abstrata.
Chamadas ao Sistema
Programas de usuário interagem com o sistema operacional por meio de chamadas ao sistema (system calls), que são requisições para que o SO execute tarefas de baixo nível relacionadas ao hardware. Isso permite que o programa se concentre em sua lógica de aplicação, abstraindo os detalhes do hardware e ganhando portabilidade. Embora as chamadas ao sistema gerem uma sobrecarga de desempenho, elas são essenciais para o gerenciamento de recursos e a conveniência do usuário, como as barras de progresso, que, apesar de custosas, são importantes para a experiência do usuário.
Processamento
Historicamente, o processamento de programas podia ser feito de duas maneiras principais: serial ou concorrente. No processamento serial, um programa alocava todos os recursos e rodava exclusivamente até ser concluído ou por um tempo limitado, com a máquina sendo "sua" até que o SO determinasse o contrário. Já no processamento concorrente, múltiplos programas parecem rodar simultaneamente, mesmo em sistemas com um único processador físico. O sistema operacional gerencia essa concorrência de forma a simular a execução paralela, garantindo o uso eficiente dos recursos.
- Serial: Programas executados um por vez, com alocação exclusiva de recursos.
- Concorrente: Múltiplos programas executados de forma aparente e simultânea, com o SO gerenciando a alocação de recursos e a troca de contexto entre eles.
O SO desempenha um papel crucial no gerenciamento de recursos em um ambiente concorrente. Ele determina quantos programas podem ser executados, realoca recursos como memória e dispositivos de E/S, e decide qual programa pode acessá-los e por quanto tempo, otimizando o uso do hardware. A sua complexidade e a variedade de serviços dependem do ambiente de uso, desde sistemas embarcados até máquinas de uso geral.
Memória
A memória em um sistema computacional é organizada em uma hierarquia de velocidade e custo, sendo crucial para o desempenho geral. No topo, encontram-se os registradores, os mais rápidos e caros, controlados por software. Em seguida, a memória cache, mais rápida e cara que a RAM, que pode estar no processador. Depois, a memória RAM, seguida pelo disco rígido e, por fim, a fita magnética e discos óticos, que são os mais lentos e baratos. Essa pirâmide reflete um trade-off: quanto mais rápido, menor a capacidade e maior o custo.
Otimização com Cache
A eficiência do sistema é fortemente influenciada pela forma como a memória cache é utilizada. Quando um endereço de memória é acessado, os dados vizinhos também são trazidos para o cache, uma memória mais rápida. Isso explica por que a leitura de uma matriz por linha (acessando elementos contíguos) é significativamente mais rápida do que por coluna. A localidade da referência, ou seja, o acesso a dados próximos na memória, maximiza os 'cache hits' (dados encontrados no cache), resultando em menor tempo de execução. Para o programador, compreender esse mecanismo e a forma como o compilador organiza os dados na memória é crucial para otimizar o desempenho de seus algoritmos.
- Compreender o funcionamento do cache para otimizar o acesso à memória, especialmente em estruturas de dados como matrizes.
- Entender como o compilador organiza os dados na memória, aproveitando a localidade da referência.
- Conhecer a hierarquia de memória e o funcionamento do hardware para escrever programas mais eficientes e adaptados ao sistema.
Memória Não Volátil e Boot
A memória não volátil, como a ROM (Read-Only Memory) e a CMOS (Complementary Metal-Oxide-Semiconductor), é fundamental para o processo de inicialização do computador. A ROM armazena a BIOS (Basic Input/Output System), um conjunto de programas essenciais para configurar o hardware e executar testes de inicialização (POST - Power-On Self-Test). A CMOS, por sua vez, armazena configurações do sistema e é alimentada por uma bateria para manter os dados mesmo quando o computador está desligado.
Processo de Boot
O processo de boot é uma sequência complexa de eventos. Ao ligar o computador, o processador executa o código da BIOS na ROM. A BIOS realiza o POST para verificar os componentes de hardware e, em seguida, lê a sequência de boot armazenada na CMOS para determinar de onde carregar o sistema operacional (HD, USB, CD). Ela acessa o primeiro setor do dispositivo de boot, conhecido como setor de boot, que contém um programa que localizará e carregará o kernel (núcleo) do sistema operacional na memória, passando o controle da máquina para o SO. Essa cadeia de confiança é um ponto crucial para a segurança do sistema.
O Kernel é o núcleo, a parte básica do sistema operacional que faz a máquina ligar. Ele toma conta da máquina a partir de então.
Dispositivos de E/S
Dispositivos de entrada e saída (E/S) possuem um componente mecânico, como as cabeças de leitura de um disco rígido, e um componente eletrônico, a placa controladora. A controladora é uma parte programável do circuito que contém registradores. O sistema operacional se comunica com esses registradores, inserindo valores específicos para gerar um determinado comportamento no dispositivo. Essa interação entre o software (SO) e o hardware (dispositivo) é essencial para o funcionamento do sistema.
A Função dos Drivers
Como o sistema operacional não pode conhecer todos os hardwares possíveis, os fabricantes de dispositivos fornecem programas chamados drivers. Um driver da controladora ou de um dispositivo é um software que sabe como interagir com os registradores específicos daquele hardware para executar determinadas funções. O driver é carregado como parte do núcleo do sistema operacional e define uma interface padronizada, permitindo que o SO envie comandos genéricos, e o driver os traduza para as ações específicas que o hardware deve realizar, como imprimir um documento ou exibir algo na tela.
- Permitem que o sistema operacional interaja com uma vasta gama de hardwares sem a necessidade de conhecer seus detalhes internos.
- Oferecem uma interface padronizada entre o SO e o dispositivo, simplificando o desenvolvimento de software.
- Podem ser carregados dinamicamente (em sistemas como Linux) ou exigir reinicialização (em versões mais antigas do Windows) para que o novo hardware seja reconhecido.
A complexidade dos sistemas computacionais modernos é imensa, envolvendo processadores, memória, diversas controladoras, monitores, teclados, mouses e impressoras. Essa complexidade torna inviável que um programador lide diretamente com todos esses detalhes. É nesse ponto que o sistema operacional se torna indispensável. Ele é o software encarregado de gerenciar todos esses dispositivos e facilitar a interação entre o usuário (seja o usuário final ou o programador) e o hardware, abstraindo a complexidade subjacente e garantindo que as operações ocorram de forma eficiente e controlada.
Useful links
These links were generated based on the content of the video to help you deepen your knowledge about the topics discussed.