Essa disciplina faz parte da grade do quarto ano do curso de Informática da EM Dr. Leandro Franceschini. No ano de 2017, o componente curricular terá como foco o estudo de Sistemas Operacionais.
AULA 1 – 16/03/17
Introdução aos Sistemas Operacionais
Definição: Um Sistema Operacional é um software que precisa compreender todos os componentes de um dispositivo computacional, o mesmo podendo ser de grande ou pequeno porte. Ele precisa compreender cada “pedaço” de hardware a fim de otimizar o seu uso. Os SO’s podem ter diferentes finalidades, uma vez que serão empregados em dispositivos diversos.
Tipos
Monotarefa: processam apenas uma instrução por vez. Não são aceitos comandos simultâneos, ou seja, dois programas não podem rodar ao mesmo tempo
Multitarefa: recebem diversas instruções ao mesmo tempo. Vários programas podem ser executados ao mesmo
tempo. Além de diversos comando e tarefas, são aceitos multiusuários.
Multi processadores: Sistemas que gerenciam mais de um processador por vez. Conseguem administrar melhor o desempenho de cada processador.
Atividades
- Levante exemplos de sistemas monotarefa, multitarefa e multi processadores
- Dos sistemas mencionados acima, quais ainda estão em operação?
- Em que modelos de negócios esses sistemas foram ou ainda são aplicados?
Entrega:
Data: 23/03/2017
AULA 2 – Visão de um Sistema Operacional – 23/03/2017
Máquina de Camadas
O computador pode ser compreendido como uma máquina de níveis, é o que chamamos de visão modular. Dessa forma, um computador possui tantos níveis quanto forem necessários para adequar o usuário às suas diversas aplicações:
- Hardware: nível 0
- Software: nível 1
Histórico
AULA 3 – ANÁLISE APROFUNDADA – 23/03/2017
Monoprogramável/Monotarefa
Características:
- Primeiros Sistemas Operacionais (1960)
- Executam um único programa
- Permitem que o processador, a memória e os periféricos fiquem dedicados à execução de um único programa
Funcionamento: enquanto um programa aguarda por um evento (exemplo, digitação de um dado), o processador permanece ocioso. A memória é subutilizada caso o programa não a preencha totalmente e os periféricos estão dedicados a um único usuário, nem sempre utilizados de forma integral.
Vantagens:
- Simples implementação;
- Sem problemas decorrentes do compartilhamento de recursos (memória, processador e periféricos).
Desvantagens:
- Subutilização de recursos (memória, processador e periféricos)
MULTIPROGRAMÁVEIS / MULTITAREFA
Características:
- Evolução dos Monoprogramáveis;
- Recursos computacionais compartilhados entre os usuários e aplicações.
Gerência de acesso concorrente: enquanto um programa espera por uma operação de leitura ou gravação em disco, outros programas podem estar sendo processados nesse mesmo intervalo de tempo (memória e processador).
Vantagens:
- redução custos pelo compartilhamento de recursos entre as diferentes aplicações;
- redução total do tempo de execução das aplicações.
Desvantagem:
- apesar de mais eficientes que os monoprogramáveis, são de implementação muito mais complexa
AULA 4 – VISÃO APROFUNDADA PARTE II
Multiprogramáveis (Monousuário/Multiusuário)
Tipos de sistemas multiprogramáveis em função do número de usuários:
- Monousuário:
₋Apenas um usuário interage com o sistema;
₋Encontrados em computadores pessoais e estações de trabalho (Workstation1).
- Multiusuário:
₋Ambientes interativos que possibilitam a diversos usuários conectarem-se ao sistema simultaneamente.
Classificação dos Sistemas Multiprogramáveis
SISTEMAS BATCH
- Primeiros sistemas multiprogramáveis a serem implementados na década de 1960;
- Usavam cartão perfurado para execução dos programas (Jobs) e armazenavam o resultado em discos ou fitas para posterior execução;
- Não exigiam a interação do usuário com a aplicação;
- Aplicados a cálculos numéricos, compilações, ordenações e backups;
- Atualmente, Sistemas Operacionais implementam ou simulam o processamento em batch, não existindo sistemas exclusivamente dedicados a este tipo de processamento.
Sistemas de Tempo Compartilhado (time-sharing)
- Permitem que diversos programas sejam executados a partir da divisão do tempo do processador em fatias de tempo (time-slice)
- Cada usuário tem um ambiente de trabalho, dando a impressão de que o sistema é dedicado
- Permitem interação dos usuários através de terminais (vídeo, teclado, mouse, etc)
- Linguagem de controle (comunicação através de comandos – sistemas online)
- A maioria das aplicações comerciais é processada em sistemas time-sharing (tempo de resposta curto menores custos devido ao compartilhamento de recursos)
Sistemas de Tempo Real (Real Time)
- Critério de execução: prioridade
- Um programa utiliza o processador o tempo que for necessário ou até que apareça outro mais prioritário, no entanto, a importância ou prioridade de execução é definida pela própria aplicação
- Presentes em controle de processos (monitoramento de refinarias de petróleo, controle de tráfego aéreo, de usinas termoelétricas, ou em qualquer aplicação onde o tempo de processamento é fator fundamental
AULA 4 – 03/04
Sistemas com Múltiplos Processadores
- Duas ou mais UCPs (Unidades Centrais de Processamentos) interligadas e trabalhando em conjunto
- Vantagem: permite que vários programas sejam executados ao mesmo tempo ou que um mesmo programa seja subdividido em partes para serem executadas simultaneamente em mais de um processador
- Aplicações: processamento científico (desenvolvimento aeroespacial, prospecção de petróleo, simulações, processamento de imagens e CAD)
- Vantagens:
- Escalabilidade: capacidade de ampliar o poder computacional do sistema apenas adicionando novos processadores
- Disponibilidade: capacidade de manter o sistema em operação mesmo em casos de falhas. Se um processador falhar, outro assume suas funções de maneira transparente ao usuário e suas aplicações
- Balanceamento de carga: distribuição do processamento entre os processadores
Atividade 17/04/2017
De acordo com exposto a respeito de Sistemas de Múltiplos Processadores, levante:
- Principais Sistemas com esse perfil
- Apresente onde a escalabilidade, disponibilidade e o balanceamento de cargo auxiliam o funcionamento do Sistema.
2º Bimestre
Aula 1 – 08/05
Introdução ao Linux
O Linux é um UNIX de distribuição livre para PCs baseados em processadores 386/486/Pentium. Ele foi primeiramente desenvolvido para PCs baseados em 386/486/Pentium, mas atualmente também roda em computadores Alpha da DEC, Sparcs da SUN, máquinas M68000 (semelhantes a Atari e Amiga), MIPS e PowerPCs.
O Linux está disponível na forma de código objeto, bem como em código fonte, sendo distribuído nos termos da GNU General Public License. O Linux possui todos as características que você pode esperar de um UNIX moderno, incluindo:
- Multitarefa real
- Memória virtual
- Biblioteca compartilhada
- “Demand loading”
- Gerenciamento de memória próprio
- Rede TCP/IP (incluindo SLIP/PPP/ISDN)
- X Windows
HISTÓRIA DO LINUX
O Kernel do Linux foi originalmente escrito por Linus Torvalds do Departamento de Ciência da Computação da Universidades de Helsinki, Finlândia, com a ajuda de vários programadores voluntários através da Internet.
No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versão “oficial” do Linux, versão 0.02. Desde então muitos programadores têm respondido ao seu chamado, e têm ajudado a fazer do Linux o Sistema Operacional que é hoje.
CONCEITOS BÁSICOS
PARTIÇÕESPode-se desejar instalar o Linux em um computador que não contenha nenhum sistema operacional instalado. Neste caso, pode-se usar o sistema de instalação do Linux para criar as partições necessárias.
pode-se instalar o Linux em um disco rígido que já contenha softwares instalados ou com dados de um sistema operacional distinto. Neste caso a criação de partições depende do sistema operacional já instalado.
Usando espaço livre não particionadoNesta situação, as partições definidas não ampliam o disco rígido inteiro, utilizando-se espaço não alocado, o qual não faz parte de qualquer partição definida. Neste caso, você pode simplesmente criar a partição proveniente do espaço sem uso.
Usando uma partição sem usoSe já existe uma partição em seu disco mas que nunca foi usada, você pode usar o espaço atribuído à partição em desuso. Você precisará deletar a partição, e criar as partições Linux no seu lugar.
Usando espaço livre de uma partição ativaVocê tem um disco rígido que já tem um sistema rodando ou alguma tarefa à ela atribuída. Você pode Recriar Partições de Forma Destrutiva ou não Destrutiva
Atividade 1
- O que quer dizer Recriar Partições de Forma Destrutiva e de Forma Não-Destrutiva?
- O que são partições de swap, root e usr?
Aula 2 – 15/05
Nessa aula, serão estudados os componentes de um computador desde sua estrutura física até sua parte lógica.
SO_AULA_02
Atividade 2 – 29/05/2017
Faça um levantamento do perfil de três modelos atuais de processadores das seguintes famílias:
- Intel
- AMD
- Processadores para dispositivos móveis
Analise os seguintes aspectos:
- Registradores
- Memória Cache
- GPU/CPUQuestões de fixação
1.Quais são as unidades funcionais de um sistema computacional?2.Quais os componentes de um processador e quais são suas funções?3.Como a memória principal de um computador é organizada?4.Descreva os ciclos de leitura e gravação da memória principal.5.Qual o número máximo de células endereçadas em arquiteturas com MAR de 16, 32 e 64 bits?
3° Bimestre
Aula 1
Nessa aula serão abordados os conceitos de Concorrência em Sistemas Operacionais Mono e Multiprogramáveis. Os créditos da presente aula são do Professor André Luis Alves que gentilmente cedeu suas apresentações.
SO_AULA_03
4º Bimestre
Compiladores
O compilador é um software que tem a função de traduzir o código-fonte desenvolvido pelo programador em um software que possa ser executado diretamente pelo usuário, ou seja, você escreve todo o código-fonte e depois pede para o compilador convertê-lo em um programa. Uma vez tendo o programa em mãos, você pode distribuí-lo aos amigos, instalá-lo em uma empresa etc.
Quando um programador desenvolve um software por meio de um códigofonte, ele necessita converter esse código para uma linguagem de máquina, ou seja, que a máquina entenda. Para isso, usa-se um tradutor, que é um utilitário com a função de facilitar a vida do programador, convertendo o código desenvolvido em uma linguagem de alto nível (entendida mais facilmente pelo programador) em uma linguagem de máquina (entendida pelo computador). Dependendo da linguagem utilizada pelo programador, o tradutor pode ser de um destes dois tipos:
• Montador
• Compilador:
Atividade
Diferencie um montador de um compilador e dê dois exemplos de cada um deles.
SO_AULA_04