400 likes | 520 Views
Introdução aos Sistemas de Computadores. Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2006/2007. Apresentação da Disciplina. Objectivos / Programa Introdução aos Sistemas de Computadores Introdução à Algoritmia
E N D
Introdução aos Sistemas de Computadores Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2006/2007 Introdução aos Sistemas de Computadores
Apresentação da Disciplina • Objectivos / Programa • Introdução aos Sistemas de Computadores • Introdução à Algoritmia • Familiarização com uma linguagem imperativa (Octave/MATLAB) • Aplicação a problemas de engenharia • Introdução à programação reactiva (folha de cálculo) • Responsável: • Jorge Cruz ( jc@di.fct.unl.pthttp://ssdi.di.fct.unl.pt/~jc) • Assistentes: • Alexandre Pinto (amp@di.fct.unl.pthttp://centria.di.fct.unl.pt/~amp) • Luís Soares (Luizsoarez@gmail.com) • Fausto Mourato (fausto.mourato@gmail.com) • Página de ICP: • http://ssdi.di.fct.unl.pt/cursos/icp/ Introdução aos Sistemas de Computadores
Avaliação • Componente Prática (em grupos de 2): • 1º Trabalho de Octave • 2º Trabalho de Octave • Teste de Excel • Frequência • Presenças 20 aulas práticas (de +25 previstas) • Nota em cada componente prática >= 7.5 • Nota Prática >= 9.5 (média aritmética das componentes) • Têm frequência os alunos que a obtiveram em 2005/06 • Exame: • Individual, nas datas oficiais da FCT • Nota Final: • 25% Nota Prática + 75% Nota Exame Introdução aos Sistemas de Computadores
Introdução aos Computadores • Um computador é uma máquina capaz de executar determinadas tarefas. • Um programa é a materialização para uma dada máquina (computador e linguagem de programação) de um algoritmo. • Para uma máquina poder executar uma determinada tarefa é necessário: • Um algoritmo adequado para executar essa tarefa • Uma representação do algoritmo compreensível pela máquina • Um algoritmo é um conjunto ordenado de passos que definem como uma tarefa deve ser executada. Introdução aos Sistemas de Computadores
Exemplo Tarefa: Calcular o maior divisor comum de dois inteiros positivos x e y Algoritmo: 1º Passo: atribuir a M o maior valor entre x e y; 2º Passo: atribuir a N o menor valor entre x e y; 3º Passo: chamar R ao resto da divisão inteira de M por N; 4º Passo: se R=0 então o maior divisor comum é N; senão atribuir a M o valor de N; atribuir a N o valor de R; voltar ao 3º Passo; Introdução aos Sistemas de Computadores
Exemplo Tarefa: Calcular o maior divisor comum de dois inteiros positivos x e y Programa (Octave): x=input(“Qual o valor de x?”); y=input(“Qual o valor de y?”); M = max(x,y); N = min(x,y); do R = mod(M,N); if (R <> 0) M = N; N = R; endif; until (R == 0); disp(“O maior divisor comum é:”); disp(N); Introdução aos Sistemas de Computadores
Introdução aos Computadores • Os programas e os algoritmos que eles representam são genéricamente denominados por software. • A máquina e os seus componentes físicos são genéricamente denominados por hardware. Introdução aos Sistemas de Computadores
Representação da Informação • Toda a informação necessária ao funcionamento de um computador é representada por conjuntos de bits. • Um bit (binary digit) é um valor simbólico (0/1) que fisicamente é armazenado em componentes (circuitos) que podem estar num de dois estados (ex: ligado → 1; desligado → 0). Introdução aos Sistemas de Computadores
Armazenamento de Dados Memória Principal Memória Secundária Disco Rígido Disquetes CDs DVDs ... Memória Principal A memória principal é organizada numa sequência de células (palavras), cada uma com um tamanho típico de 8 bits (byte) e que pode ser acedida individualmente especificando o seu endereço (RAM → random access memory) Introdução aos Sistemas de Computadores
Armazenamento de Dados Memória Principal endereço células 0: 01101101 1: 10101110 2: 00001111 3: 01011100 4: 10110011 ... ... ??: 00110011 O número de células da memória principal é geralmente grande, variando de computador para computador, e expressa-se normalmente em potências de 2: 210 bytes = 1024 bytes = 1 Kilobyte = 1 KB 220 bytes = 1024 KB = 1 Megabyte = 1 MB 230 bytes = 1024 MB = 1 Gigabyte = 1 GB Introdução aos Sistemas de Computadores
0 0 0 0 1 1 1 1 bit mais significativo bit menos significativo Armazenamento de Dados Memória Principal endereço células 0: 01101101 1: 10101110 2: 00001111 3: 01011100 4: 10110011 ... ... ??: 00110011 Em cada célula os bits são ordenados. A memória principal pode ser considerada uma longa sequência de bits, permitindo representações com um tamanho arbitrário de bits. (ex: uma sequência de 16 bits pode ser representada por 2 células consecutivas) Introdução aos Sistemas de Computadores
Armazenamento de Dados Memória Secundária A memória secundária (discos rígidos, disquetes, CDs, DVDs, ...) complementa a memória principal, proporcionando num meio menos volátil (não se apaga quando se desliga o computador): • mais espaço de armazenamento; • possibilidade de separação física da máquina. A maior desvantagem destes sistemas relativamente à memória principal é a velocidade de acesso (usa meios mecânicos muito mais lentos). Introdução aos Sistemas de Computadores
memória principal ... Representação de Texto 01000010 B 01101111 o Cada símbolo é normalmente representado por 1 byte de acordo com o código ASCII (American Standard Code for Information Interchange). B o m d i a 01101101 m 00100000 01100100 d i 01101001 01100001 a ... Representação da Informação como Sequência de bits 01000010011011110110110100100000011001000110100101100001 Introdução aos Sistemas de Computadores
239 11101111 9×100 = 9 1×20 = 1 3×101 = 30 1×21 = 2 2×102 = 200 1×22 = 4 239 1×23 = 8 0×24 = 0 1×25 = 32 1×26 = 64 1×27 = 128 Sequência de números binários: 239 0, 1, 10, 11, 100, 101, 110, 111, 1000, ... Representação da Informação como Sequência de bits Representação de Valores Numéricos Sistema Decimal Sistema Binário Introdução aos Sistemas de Computadores
Mapas de bits Uma imagem é um conjunto de pontos (pixel – picture element) representado por uma longa sequência de bits: Representação da Informação como Sequência de bits Representação de Imagens • imagens a preto e branco (pixel→1 bit): 1→preto ; 0→branco • imagens a cores (pixel→3 bytes): vermelho+verde+azul (RGB) Os mapas de bits ocupam muito espaço pelo que se usam frequentemente técnicas de compressão (ex: GIF e JPEG). Uma desvantagem adicional é a dificuldade de aumentar ou diminuir as imagens. Introdução aos Sistemas de Computadores
Representação da Informação como Sequência de bits Representação de Imagens Técnicas de Vectores As técnicas de vectores representam uma imagem como um conjunto de linhas e curvas deixando os detalhes do seu desenho para a componente que produz a imagem (monitor, impressora). Uma característica destas técnicas é a facilidade de aumentar ou diminuir as imagens. As técnicas de vectores são usadas frequentemente para representar tipos de letra (escaláveis) e em aplicações de desenho (ex: CAD – Computer-Aided Design). Introdução aos Sistemas de Computadores
Manipulação da Informação O computador, além de ser capaz de armazenar os dados, tem também que os saber manipular para poder executar os algoritmos. A manipulação dos dados requer um mecanismo para executar operações sobre os dados e coordenar a sequência dessas operações. Num computador típico este mecanismo é denominado unidade central de processamento (CPU – Central Processing Unit). Introdução aos Sistemas de Computadores
Arquitectura Básica de um Computador • CPU (Central Processing Unit) • Lê instruções • Executa instruções • Memória • Guarda Dados • Guarda Instruções • Dispositivos de Entrada/Saída • Teclado, rato, placa gráfica, placa de som, discos rígido, diskettes, flash disks, impressoras, placa de rede, ...) • Permitem a comunicação com o “exterior” (utilizador, periféricos, outros computadores...) • Vias de Comunicação (Buses) Introdução aos Sistemas de Computadores
Manipulação da Informação Unidade Central de Processamento (CPU) A unidade central de processamento é constituida por: • Uma unidade lógica/aritmética que contém os circuitos que executam a manipulação de dados; • Uma unidade de controle que contém os circuitos para a coordenação da actividade da máquina; • Um conjunto de registos gerais que servem para armazenar temporariamente os dados que são manipulados na CPU; • Dois registos especiais: • Um contador (program counter) que contém o endereço da próxima instrução a ser executada; • Um registo de instrução (instruction register) que contém a instrução que está a ser correntemente executada. Introdução aos Sistemas de Computadores
CPU RAM 0: 01101101 Unidade Lógica/Aritmética Unidade de Controle 1: 10101110 registos contador 2: 00001111 0: 10100100 00000010 BUS 3: 01011100 1: 00000000 registo de instrução 4: 10110011 2: 00000000 0110110110101110 ... ... A CPU está ligada com a memória principal (RAM) por um circuito (BUS) através do qual é capaz de transferir dados entre a RAM e os seus registos. Manipulação da Informação Unidade Central de Processamento (CPU) Actualmente quase todos os CPUs contêm uma memória de alta velocidade (semelhante à dos registos) denominada Memória Cache. Nestes casos, a máquina tenta manter na Memória Cache uma cópia da parte da RAM que esteja correntemente a ser utilizada. Introdução aos Sistemas de Computadores
A unidade de controle repete continuamente o seguinte ciclo (machine cycle): Decode Fetch Execute Manipulação da Informação Execução de Programas Um programa para poder ser executado tem que ser codificado e armazenado na memória principal. A unidade de controle é responsável pela extração do programa da memória principal, descodificação das suas instruções e sua execução. Descodificar o conteúdo do registo de instrução, identificando a operação requerida e os respectivos operandos. Transferir da RAM a instrução indicada pelo contador para o registo de instrução e incrementar o contador. Executar a operação requerida pela instrução activando os circuitos apropriados. Introdução aos Sistemas de Computadores
Exemplo de Funcionamento • Executar a (instrução de) atribuição: Z X +Y • Assume-se • O dado X na posição de memória 5001 • O dado Y na posição de memória 5002 • O dado Z a ser colocado na posição de memória 5003 • Programa em Assembly (≈Linguagem Máquina): • 2001: LDA 5001 (5001) (Registo A) • 2003: LDB 5002 (5002) (Registo B) • 2004: ADD (Reg. A) + (Reg. B) (Reg. O) • 2005: STO 5003 (Registo O) (5003) Introdução aos Sistemas de Computadores
BUS CPU RAM Controlador Controlador Disco Rígido Monitor Manipulação da Informação Comunicação com os Periféricos A memória principal (RAM) conjuntamente com a unidade de processamento central (CPU) constituem o núcleo do computador que comunica com os periféricos através de dispositivos intermediários denominados controladores. Nos PCs os controladores correspondem às placas que se podem inserir na placa principal (motherboard) e às quais se ligam os periféricos. Cada controlador trata da comunicação com determinado tipo de periférico. O controlador está electronicamente ligado ao BUS que liga a CPU à RAM. A comunicação entre a CPU e um controlador é feita de um modo idêntico à comunicação da CPU com a RAM (o endereço identifica o controlador). Introdução aos Sistemas de Computadores
LDA 5001 LDB 5002 2004: ADD 2005: STO 2006: 5003 2007: 2001: 2002: 2003: Linguagens de Programação • Os computadores (mais especificamente os processadores) executam programas. • Estes programas podem ser escritos em linguagens com vários graus de abstração: • desde a linguagem ASSEMBLY (linguagem máquina com algumas mnemónicas) directamente relacionada com o funcionamento de um determinado processador • até às linguagens de alto nível (Pascal, C, Java, ...), independentes do processador Z X+Y Introdução aos Sistemas de Computadores
Compiladores • A consideração de diferentes níveis de abstração é extremamente útil para se entender os programas executados pelos computadores. • Por exemplo, se “inicialmente” (anos 50) os programas eram escritos em linguagem máquina, essa situação alterou-se rapidamente por razões óbvias de eficiência de programação e manutenção de programas. • Em particular, são muito importantes os programas que • recebem como input um texto correspondente a um programa escrito numa linguagem de alto nível (por exemplo C); e • produzem como output um programa escrito em linguagem máquina. Introdução aos Sistemas de Computadores
Programa Pascal Programa Máquina Compilador (de Pascal) sqrt 5 25 Compiladores • Estes programas são os chamados “compiladores”, naturalmente dependentes da linguagem de alto nível e da linguagem máquina pretendidas e que são comparáveis conceptualmente a funções Introdução aos Sistemas de Computadores
Sistemas de Operação • A consideração de vários níveis de abstração é útil não só para se entenderem os programas executados pelos computadores, mas também para se entender a organização e encadeamento dos vários programas utilizados. • Um Sistema de Operação (Windows, UNIX, Linux, Mac OS, ...) é um conjunto de programas que permitem operar um computador em “alto nível”. • Por exemplo, em vez de se especificarem todas as instruções necessárias para ler um ficheiro chamado (texto.txt) do disco para a memória, bastará utilizar uma “instrução” do tipo, read(“texto.txt”) disponibilizada pelo sistema de operação às aplicações Introdução aos Sistemas de Computadores
Folha de Cálculo Editor de Texto Browser Compilador C Bases de Dados de Operação Sistema Processador Compilador Pascal Read(file) Jogos Aplicações • Uma vez estabelecidas as primitivas disponibilizadas por um sistema de operação, vários programas de aplicação podem ser escritos de uma forma independente do computador / processador. Introdução aos Sistemas de Computadores
Sistemas de Operação - Shell • As principais componentes de um sistema de operação são • Interface com o utilizador (shell – user interface), que interpreta as instruções dadas pelo utilizador. • O Núcleo (kernel) composto por programas de mais baixo nível, que permitem executar essas instruções. • Normalmente, a shell disponibiliza uma interface gráfica (GUI – Graphical User Interface) cujos objectos (ficheiros, programas...), são representados e manipulados graficamente no monitor como ícones. • Uma componente importante das interfaces gráficas é o gestor de janelas, responsável pela divisão do ecrã em espaços denominados janelas e pela sua associação com as respectivas aplicações. Introdução aos Sistemas de Computadores
Sistemas de Operação - Kernel • O Núcleo é composto por um conjunto de programas que executam várias funções: • Gestão de Ficheiros: Organizam os ficheiros em hierarquias, e provê instruções para a sua criação, alteração e apagamento. • Gestão de Periféricos: Disponibilizam instruções de alto nível para aceder aos dispositivos periféricos (discos, placa gráfica, placa de som, etc...) • Gestão de Memória: Organizam a memória para que as zonas de memória (programa e dados) dos vários programas concurrentes (processos) não se confundam. • Gestão de Processos: Divide o tempo entre os vários processos, interrompendo-os e retomando-os quando apropriado. Introdução aos Sistemas de Computadores
C:\ A:\ Program Files Ficheiro_1 Ficheiro_2 Directoria ... . . . Ficheiro_3 Programa_1.exe A:\Directoria\Ficheiro_3 C:\Program Files\Programa_1.exe Sistemas de Operação – Gestão de Ficheiros • A função do Gestor de Ficheiros é a coordenação das capacidades de armazenamento da máquina. • A informação é armazenada em ficheiros que normalmente são agrupados em directorias organizadas hierarquicamente: Introdução aos Sistemas de Computadores
Sistemas de Operação – Gestão de Periféricos • Os gestores de periféricos (device drivers) são as unidades de software que comunicam com os controladores dos periféricos. • Cada device driver é especializado num determinado periférico (uma impressora, um disco rígido, um monitor, ...). • Assim, através um qualquer computador (genérico) pode ser configurado para um conjunto particular de periféricos com a instalação dos respectivos device drivers. Introdução aos Sistemas de Computadores
Sistemas de Operação – Gestão de Memória • O gestor de memória é responsável pela coordenação da utilização da memória principal (RAM). • Vários programas e blocos de dados podem estar simultaneamente na memoria principal. • Por exemplo: • Um processador de texto com vários ficheiros abertos • Uma folha de cálculo • O browser para aceder à Internet • Um gestor de correio electrónico • É necessário coordenar a utilização do espaço disponível, e eventualmente, criar a ilusão de um espaço de memória maior (memória virtual) usando por exemplo espaço do disco rígido. Introdução aos Sistemas de Computadores
Sistemas de Operação – Gestão de Processos • Um processo é um programa em execução. • Os computadores actuais possibilitam a execução de vários processos concurrentemente, isto é, o tempo de CPU é partilhado (time-sharing) pelos respectivos processos. • Os gestores dos processos são componentes do sistema operativo responsáveis, pela manutenção • De uma lista dos processos em execução. • Dos respectivos estados (em execução, suspenso, ...) • Da prioridade dos processos. • Dos tempos de CPU atribuidos a cada processo. Introdução aos Sistemas de Computadores
Sistemas de Operação – Arranque • Quando o computador é ligado um pequeno programa de inicialização é executado automaticamente. • Este programa está armazenado permanentemente numa parte não volátil da memória principal (ROM – Read Only Memory). • O objectivo do programa de inicialização é fazer a transferência para a memória principal do sistema operativo que se encontra armazenado numa zona prédeterminada do disco rígido (ou outro periférico) e iniciar a sua execução. • Uma vez iniciada a sua execução, o sistema operativo passa a controlar todas as actividades da máquina. Introdução aos Sistemas de Computadores
Impressora Mainframe Discos Discos Sistemas Multi-Utilizadores • Até aos anos 70/80 a tecnologia não permitia a construção de computadores pessoais de forma económica. Nessa altura, a arquitectura habitual de um sistema computacional era de um computador “mainframe”, que incluia vários periféricos comuns (discos, impressora, ..) ao qual estavam ligados vários utilizadores através de terminais. Introdução aos Sistemas de Computadores
Impressora Mainframe Discos Discos Sistemas Multi-Utilizadores • Nesses sistemas multi-utilizador o sistema operativo geria os vários utilizadores, dando-lhes, à vez, tempo de CPU, zonas separadas de memória, acesso concorrente aos periféricos, ... • Com o aparecimento nos anos 80 de computadores pessoais, houve a possibilidade de substituir os terminais individuais por esses computadores pessoais (terminais inteligentes), que permitiam executar de uma forma autónoma várias tarefas. Introdução aos Sistemas de Computadores
PC PC “Servidor” PC PC Impressora Base de Dados Redes Locais de Computadores • Esta mudança deu origem ao aparecimento de redes locais de computadores em que vários computadores pessoais comunicavam entre si (ficheiros, mensagens, ...). • Salvo em organizações “grandes”, os mainframes foram substituídos por computadores menos potentes. • Estes “servidores”, mantêm serviços e periféricos comuns (bases de dados, impressoras, etc...). Introdução aos Sistemas de Computadores
PC PC PC PC Servidor Servidor PC PC PC PC Redes de Computadores • Por outro lado, a tecnologia de comunicações permitiu ligar os servidores em redes de computadores não locais, em que uma infraestrutura de nós intermédios garantia o encaminhamento das mensagens entre servidores e utilizadores finais. Introdução aos Sistemas de Computadores
Redes de Computadores • As redes de computadores foram evoluindo ao longo do tempo desde a ARPANET (rede militar, com acesso a universidades) até à actual INTERNET. • Os utilizadores ligam-se a servidores internet (ISPs) tornando-se seus “clientes” e acedendo a vários tipos de serviços através de programas apropriados, tais como: • Browsers, dando acesso a páginas e outros serviços Web (suportados no protocolo HTTP) • Transferência de ficheiros (protocolo FTP) • Correio Electronico (por ex. Eudora, Netscape, Outlook) • Voz (VoIP) por exemplo disponível no MSN Messenger Introdução aos Sistemas de Computadores