Periféricos e Interfaces had. 1.1 Conceitos elementares Um sistema computacional pode ser dividido de um modo abstracto em 4 componentes:

Tamanho: px
Começar a partir da página:

Download "Periféricos e Interfaces had. 1.1 Conceitos elementares Um sistema computacional pode ser dividido de um modo abstracto em 4 componentes:"

Transcrição

1 1 Introdução 1.1 Conceitos elementares Um sistema computacional pode ser dividido de um modo abstracto em 4 componentes: 1. Hardware (processador também designado por CPU - Central Processing Unit, memória, dispositivos de entrada-saída ou periféricos): disponibilizam recursos computacionais básicos. 2. Sistema operativo: controla e coordena o acesso aos recursos do sistema computacional, que incluem o hardware, pelas várias aplicações e utilizadores, de modo que estes tenham acesso eficiente, padronizado e transparente. 3. Aplicações ou programas (concha do sistema operativo, compiladores, sistemas de bases de dados, aplicações financeiras, de escritório, jogos, etc..): Definem o modo como os recursos do sistema são usados pelos utilizadores. 4. Utilizadores (pessoas, outros computadores, sistemas embebidos, outros dispositivos electrónicos): usam os recursos do sistema computacional. utilizador 0 utilizador utilizador utilizador n compilador editor shell SGBD Aplicações ou programas Sistema Operativo Hardware Fig. 1-1: Componentes de um sistema computacional multi-tarefa De um modo geral a operação de um sistema computacional consiste em transferências de dados entre componentes do sistema, com uma sequência determinada por um programa. No âmbito desta disciplina define-se entrada-saída como: Transferência de dados entre a CPU ou a memória principal e um periférico. PIN T01-1/26

2 1.1.1 Arquitectura simplificada de um PC Na figura seguinte está representada esquematicamente a arquitectura simplificada de um PC, do ponto de vista da conectividade entre componentes. Esta arquitectura não é única, variações podem incluir velocidades de relógio superiores para os barramentos, outros tipos de barramentos, e mesmo mais que uma única CPU. É no entanto próxima da original para PCs com barramento AGP e baseados numa só CPU de 32 bits. Fig. 1-2: Arquitectura PCI 32 bits. Um barramento ou bus consiste, na sua forma mais simples, num número de linhas eléctricas através das quais sinais, e desta forma também dados, são transferidos. Um PC tem 3 barramentos: de dados, de endereços e de controlo. Estes barramentos permitem que a CPU comunique com a memória e os periféricos. O barramento entre a CPU e a memória é chamado de barramento do sistema ou system bus. O barramento entre a CPU e os outros componentes (os periféricos) é chamado de barramento de entrada-saída ou I/O bus. Este barramento tem uma velocidade de transferência de dados inferior ao barramento do sistema. Alguns tipos de barramentos de entrada-saída são: - ISA (Industry Standard Architecture) paralelo de 8 e 16 bits - EISA (Extended Industry Standard Architecture) paralelo de 32 bits - PCI (Peripheral component interconnect) paralelo de 32 ou 64 bits - VME (Versa Module Eurocard) paralelo de 32 bits. - AGP (Accelerated Graphics Port) para o adaptador gráfico. Paralelo de 32 bits. - USB (Universal serial bus) série. PIN T01-2/26

3 Os barramentos actuais são muito mais velozes que o padrão original. Por exemplo AGP (8X) permite velocidades de transferência de dados 8 X mais rápida que a original, cerca de 2.1 GB/s. O barramento PCI Express (1X), uma evolução do PCI, permite velocidades de transferência de dados de 500 MB/S. O barramento PCI Express (16X) têm vindo a ser usado para conectar o adaptador de vídeo com uma velocidade de transferência de dados de 8 GB/s, sendo gradualmente abandonado o AGP. O acesso à memória SDRAM (synchronous dynamic Random Access Memory) tipo DDR2 (double data rate) PC a 1066 MHz é efectuado a uma velocidade de transferência de dados de 8.5 GBytes/s, como indica a descrição PC Por outro lado é comum que motherboards actuais não incluam slots ISA ou Extended ISA. Como já foi referido, no caso geral o barramento de sistema é o mais rápido na arquitectura, e serve a CPU, a memória Cache a memória RAM. Os barramentos de entrada-saída podem ser vistos como uma extensão do barramento do sistema. Na motherboard o barramento de sistema termina em controladores que fazem uma ponte com os barramentos de E/S. Normalmente estes controladores são agrupados em chips chamados chipset. Uma arquitectura comum consiste em dois chips chamados north e south bridge como mostrado no diagrama acima. Ao barramento de entrada saída podem ser conectados adaptadores de periféricos Periférico Pode-se assim definir periférico como um equipamento electrónico conectado por um cabo ou barramento de E/S à CPU e que é usado para transferir informação de ou para este. Também chamado de dispositivo de entrada saída e na literatura anglo-saxonica por I/O device. De acordo com esta definição, a memória não é considerada um periférico pois está ligada ao barramento de sistema e não a um barramento de E/S Interface A conecção do periférico ao barramento é efectuada através de um interface, que como o substantivo em Inglês indica constituí uma ligação física, lógica ou funcional entre dois sistemas distintos. O interface adapta as carácterísticas do periférico às do computador, sendo por isso também designado por adpatadores de E/S e na literatura anglo-saxonica por I/O adpaters. Os interfaces podem ser compostos não apenas por hardware mas também por software. Um adaptador pode ser constituído por um ou mais controladores ligados por barramentos ou cabos à motherboard e aos periféricos e pode incluir também firmware num chipset. Impressora Teclado Disco rígido Monitor Periféricos interfaces Interface IDE ou SCSI Adaptador de vídeo (SVGA, XGA) Adaptador de rede Tabela 1-1: Exemplos de periféricos e interface PIN T01-3/26

4 Na figura seguinte têm-se esquematizado o interface IDE (Integrated Drive Electronics). Este é composto pelo controlador IDE, normalmente integrado na unidade de disco rigído, o cabo ATA (Advanced Technology Attachment) ou Serial ATA para conecção com a motherboard e a ligação à ponte Sul que pode ser via barramento ISA ou PCI, ou directamente a um porto ATA/SATA disponibilizado pela ponte sul. Unidade de Disco (HDD) interface IDE motherboard Disco rígido Controlador IDE buffer socket IDE socket IDE south bridge periférico cabo IDE/ATA/SATA Fig. 1-3: Diagrama simplificado de interface IDE O interface IDE comunica com o controlador IDE dando-lhe a informação necessária para que coloque as cabeças numa determinada posição e que tansfira a informação desse sector do disco para o buffer, de modo que esta seja enviada pelo interface IDE à CPU ou á memória RAM. Para operar o interface IDE é necessário enviar-lhe comandos que indiquem qual a posição do disco que se pretende ler ou escrever. Normalmente existe um programa executado no núcleo do sistema operativo que serve de intermediário entre o adaptador e uma aplicação que pretenda aceder ao periférico: o device driver Driver (ou device driver) Pode ser definido como um programa que determina como o computador comunica com um periférico, ou mais exactamente como operar o adaptador do periférico. Num sistema operativo multi-utilizador, por questões de preservar a integridade de informação, o utilizador comum não tem acesso directo ao hardware. A única forma que uma aplicação lançada por este tem de aceder aos recursos de hardware é através das funções disponibilizadas pelo sistema e que são implementadas nos drivers específicos. Para periféricos diferentes os interfaces ou os controladores poderão ser diferentes, de modo que em termos de programação, os drivers podem ser usados para padronizar o acesso aos diferentes periféricos. Deste modo é possível que a escrita num dado periférico, através do seu driver, siga um padrão: abrir canal para dispositivo X escrever uma string para o dispositivo X fechar o canal Assim o driver deve disponibilizar um conjunto de primitivas de entrada saída comuns a qualquer periférico, tais como: PIN T01-4/26

5 canal = open(dispositivo X) write(canal, uma string ) close (canal) de modo que o mesmo código permitirá escrever uma string no dispositivo X, seja este uma impressora ou um disco rígido. Deve ser salientado no entanto que nem todos os periféricos podem implementar todo o conjunto de funções de entrada saída. Não é normal, por exemplo enviar dados para um microfone BIOS e processadores de 32 bits A ROM (Read Only Memory) consiste num chip que contém os programas e dados que o PC necessita quando arranca, visto que o conteúdo da RAM desaparece totalmente quando o PC é desligado. Na ROM existem vários drivers genéricos para o teclado, monitor, etc, que são colectivamente conhecidos como BIOS (Basic Input Output System). Estes drivers são codificados em código assembler de 16 bits, possivelmente para que o chip seja compatível com uma maior parte de CPUs, no entanto torna-os pouco eficientes ao serem executados em processadores de 32 ou 64 bits. Deste modo um sistema operativo puro de 32 ou 64 bits, apenas usa os drivers da BIOS para carregar na memória principal o núcleo do sistema operativo e os drivers de 32 ou 64 bits que os substituirão. O foi o primeiro processador INTEL que pode ser considerado puro de 32 bits, isto é internamente tem registos de 32 bits e o endereçamento da memória exterior é efectuado por um bus de dados de 32 bits e um bus de endereços também de 32 bits, o que permite um endereçamento linear de 2 32 bytes = 4 GBytes. Além disso incluí uma unidade de gestão de memória com suporte para segmentação e paginação. Deste modo não é apenas o limite de 2 16 bytes = 64 KBytes para cada segmento de memória de um processador de 16 bits que é extendido mas também o modo de acesso a esses segmentos. Numa arquitectura segmentada de 16 bits, o endereço de memória lógico é composto por um par segmento:offset, ambos de 16 bits: 0000H-FFFFH : 0000H-FFFFH segmento offset O endereço físico, é obtido deslocando o valor do segmento 4 bits para a esquerda e adicionando o offset, como mostra o exemplo seguinte: endereço lógico: 1234H:0234H 12340H (segmento deslocado 4 bits para a esquerda = x16) H 12574H (endereço físico de 20 bits) Repare-se que o valor do segmento é assim multiplicado por 16, daí que o inicio do segmento coincida com um endereço físico múltiplo de PIN T01-5/26

6 Numa arquitectura segmentada de 32 bits, como o INTEL 80386, o endereço de memória lógico é composto por um par selector de 16 bits e offset de 32 bits: Fig. 1-4: Cálculo do endereço físico num segmento em modo protegido (32 bits) O selector indica um índice numa tabela de descritores de segmentos, onde se pode encontrar o endereço base (32 bits) de um dado segmento. O endereço físico é obtido somando ao endereço base o offset. Isto bastaria para impedir que um processador de 32 bits executasse os drivers da BIOS, pois o endereçamento de 16 bits desse código não é compatível com o endereçamento de 32 bits. No entanto é normal que processadores de 32 bits emulem processadores de 16 bits, mais precisamente o 8086, permitindo assim a execução de código 16 bits. Quanto ao acesso aos registos de 32 bits, manteve-se compatibilidade com os processadores de 16 bits: 8 bits 8 bits ah al par de registos de 8 bits ax registo de 16 bits eax registo de 32 bits ordem do bit Fig. 1-5: Modos de acesso aos bit de um registo do De modo que é possível aceder a um registo, segundo a sintaxe AT&T mov $34, %al ; %eax = mov $12, %ah ; %eax = mov $7890, %ax ; %eax = mov $ , %eax ; %eax = e segundo a sintaxe INTEL: PIN T01-6/26

7 mov al, 34 ; eax= mov ah, 12 ; eax= mov ax, 7890 ; eax= mov eax, ; eax= Camada de entrada-saída do sistema operativo Como já foi referido, o sistema operativo é o responsável por gerir os acessos aos recursos do sistema computacional, incluindo o hardware, padronizando-os e simplificando-os. Um sistema operativo pode ser dividido em camadas (ou níveis) de abstracção sucessivas, cada uma construída no topo das inferiores. Deste modo cada camada disponibiliza funções para as camadas acima, de modo que à medida que se sobe de nível se aumenta a abstracção em relação ao hardware. Este constituí assim a camada mais abaixo neste modelo, sendo a camada superior o interface com o utilizador. Este interface poderá ser o interpretador de comandos (shell) ou um ambiente de exploração gráfico como KDE ou Gnome. A partir desta camada superior poderão ser lançadas aplicações ou executados comandos de utilizador. Na figura seguinte é apresentada a decomposição em camadas de um sistema operativo genérico. Repare-se que alguns sistemas operativos podem implementar variações deste modelo. Aplicações User Interface (shell) Sub-sistema de ficheiros Sub-sistema de E/S Interface de sistema (API, system-calls) Device drivers Comunicação e sincronização entre tarefas (semáforos, mem. partila,...) adaptadores de periféricos (HDD, DVD,... ) Gestão de memória (alocação, bloqueio) Gestão de processos (Interrupções, escalonamento,...) Hardware (CPU, memória, HDD, ) Fig. 1-6: Camadas de um sistema operativo genérico Nesta disciplina vai ser estudado com mais detalhe o sub-sistema de entrada-saída, isto é como o sistema operativo comunica com o hardware. PIN T01-7/26

8 1.2 Chamadas ao sistema e interrupções da BIOS As chamadas ao sistema ou System Calls consistem nos serviços disponibilizados pelo núcleo do sistema operativo. O principio é semelhante para chamadas à BIOS, ou interrupções da BIOS, e consiste em colocar argumentos necessários à execução da chamada em registos apropriados da CPU e chamar um interrupção para que o núcleo a execute. De certo modo assemelha-se a uma chamada a uma função, embora a tecnologia envolvida seja diferente Interrupções da BIOS Assumindo que se dispõe de um sistema baseado num CPU da família x86 ou compatível, como exemplo de uma função da BIOS, pode-se apresentar a escrita de um carácter na consola na posição corrente do cursor em modo de texto. A interrupção da BIOS usada para os serviços de vídeo é a 10H. No registo AH é colocado o número da função, neste caso será a função 9 escrita de carácter e atributo. Os argumentos são: Registo AL BH BL CX Descrição do argumento código ASCII do carácter Nº da página de vídeo (a memória de vídeo é dividida em páginas correspondentes a um ecran. Só uma é no entanto apresentada) Atributo do carácter (basicamente a côr) Nº de vezes que repete o carácter Assim um programa em assembler que efectue esta operação seria: movb $65, %al ; código ASCII de A movb atr, %bh ; atr contém as cores do carácter (fore and background) movb $0, %bl ; página de vídeo 0 movw $1, %cx ; imprime uma só vez movb $9, %ah ; função que escreve o carácter na posição corrente do cursor int $10h ; serviços da BIOS para vídeo Neste caso não foram devolvidos valores. Mas se se pretender o inverso, isto é ler o carácter e atributo na posição corrente do cursor, função 8 da interrupção 10H, ter-se-ia como argumentos apenas a página de vídeo: Registo BH Descrição do argumento Nº da página de vídeo e após execução da interrupção seriam devolvidos: Registo AL BL Descrição do argumento código ASCII do carácter Atributo do carácter O programa em assembler que efectua esta operação é: movb $0, %bl ; página de vídeo 0 movb $8, %ah ; função que lê o carácter na posição corrente do cursor int $10h ; serviços da BIOS para vídeo Como já foi referido sistemas operativos de 32 bits não usam a BIOS pois esta consiste num conjunto de rotinas de 16 bits. Assim para executar as chamadas os programas acima num PIN T01-8/26

9 sistema operativo de 32 bits, como por exemplo o Linux, ter-se-ia de usar o modo virtual 8086 ou vm86 da CPU Chamadas ao sistema Linux As chamadas ao sistema operativo, Linux incluído, seguem uma abordagem semelhante ao referido no ponto anterior. Por exemplo a impressão de uma cadeia de caracteres na consola, pode ser efectuada com uma chamada ao sistema, programada em assembler embebido em código C: /*Variáveis globais*/ char msg[]="hello, world!\n"; int cnt, len=15; //incluí o terminador '\0' no fim da cadeia int main() { asm ( "movl len, %edx #comprimento da mensagem \n" "movl $msg, %ecx #ponteiro para mensagem escrever \n" "movl $1, %ebx #descritor do ficheiro ou file handle (stdout)\n" "movl $4, %eax #número da chamada ao sistema (sys_write) \n" "int $0x80 #transfere o controlo para o núcleo ou kernel \n" "movl %eax, cnt #Retorna o nº de bytes transferidos ou -1 em caso de erro \n" ); return 0; } A interrupção que dá acesso aos serviços do Linux é a 80H. No registo EAX é colocado o numero da chamada, ou a função a executar. Nos registos EBX, ECX e EDX são colocados os argumentos. Quando se programa em C é frequente usar as funções definidas na biblioteca libc. Esta biblioteca disponibiliza funções que efectuam muitas das chamadas ao sistema. Este tipo de funções são chamadas de wrappers pois o que fazem é passar os argumentos para registos e chamar a interrupção 80H. O código assembler acima poderia ter sido substituído simplesmente por: write (1, msg, len); O protótipo de write é: onde: ssize_t write(int fd, const void *buf, size_t count); fd msg len é o descriptor do ficheiro, que é colocado no registo EBX. o ponteiro para mensagem escrever, que é colocado no registo ECX. o comprimento da mensagem, que é colocado no registo EDX. Adicionalmente a função retorna o número de bytes escritos ou -1 em caso de erro. A biblioteca glibc também disponibiliza uma função geral para chamadas ao sistema, o que permite evitar segmentos de código em assembler: syscall (fnc_no, arg1, arg2, ) PIN T01-9/26

10 Onde o primeiro argumento é o número da função da interrupção 80H a executar, e seguidamente os argumentos. Repare-se que fnc_no é sempre colocado no registo EAX, e os argumentos nos registos EBX, ECX, EDX, ESI, EDI e EBP, pela ordem de declaração. Observando a função da libc: write, cujo prótótipo foi apresentado acima verifica-se que os argumentos também seguem a mesma ordem: o primeiro será colocado no registo EBX, o segundo no ECX e assim sucessivamente. Algumas chamadas ao sistema necessitam de mais de 6 argumentos. Neste caso é necessário colocá-los no stack e passar um ponteiro para o bloco de argumentos. Assim poder-se-ía reescrever o exemplo acima ainda de outra forma, substituindo a função write por: syscall (SYS_write, 1, msg, len); /* SYS_write = 4 */ Repare-se que o número da função foi identificado pelo seu nome: write. A correspondência entre os números das funções e os seus nomes está definida em <syscall.h> Chamadas ao sistema comuns Tabela com as chamadas ao sistema Linux mais comuns podem-se encontrar em (He) ou (Swanepoel 2002b) Nestas encontram-se chamadas para acesso ao sistema de ficheiros: open, create, read, write, dup, close, Manipulação de processos: getpid, nice, kill,. Particularmente interessante é a chamada sysinfo, que permite retornar informação sobre o sistema na estrutura sysinfo, definida em linux/kernel.h: int sysinfo(struct sysinfo *info); Se ocorrer um erro é retornado -1 e a variável errno indica o código de erro. Em caso de sucesso retorna 0. A estrutura sysinfo está definida como: struct sysinfo { long uptime; }; /* segundos desde a inicialização do sistema*/ unsigned long loads[3]; /* media de carga computacional em 1, 5, e 15 minutos*/ unsigned long totalram; /* Capacidade total da memória RAM */ unsigned long freeram; /* Memória RAM livre */ unsigned long sharedram; /* Quantidade de memória partila */ unsigned long bufferram; /* Memória usada pelos buffers do sistema*/ unsigned long totalswap; /* Capacidade da memória virtual (swap) */ unsigned long freeswap; /* Quantidade de memória virtual livre */ unsigned short procs; /* Número de processos */ unsigned long totalhigh; /* Capacidade total da memória alta */ unsigned long freehigh; /* Quantidade de memória alta livre */ unsigned int mem_unit; /* Unidade de memória em bytes */ char _f[20-2*sizeof(long)-sizeof(int)]; /* reservado */ PIN T01-10/26

11 As quantidades acima referidas são apresentadas na unidade especificada pelo campo mem_unit. O seguinte segmento de código permite ler a informação actual do sistema e apresentá-la: #include <linux/kernel.h> int main () { struct sysinfo s_info; int error; error = sysinfo(&s_info); /* imprimir os campos de s_info */ return 0; } Acesso a periféricos através de chamadas ao sistema. Em Linux é possível aceder a periféricos como se acede a ficheiros a partir do directório /dev. Se se pretender enviar um ficheiro de áudio, como por exemplo um *.au ou *.wav, para o dispositivo de som, ter-se-ia de abrir o ficheiro correspondente /dev/sound, /dev/dsp ou /dev/audio, com a função open da libc, que retorna o descritor do ficheiro, e usar esse descritor na chamada write. Na linha de comandos é possível efectuar todas estas operações com o comando cat: cat arquivo.au > /dev/audio este comando abre o dispositivo, envia o arquivo e volta a fechá-lo. O código em C de cat pode ser programado usando as funções da libc que permitem abrir, criar e fechar ficheiros: open, create e close. Estas são wrappers para chamadas ao sistema: libc Chamada ao sistema Kernel: Sistema de ficheiros open(), create(), close() int 80H executa as operações OPEN, CREATE, CLOSE apropriadas para o dispositivo No nível superior têm-se as funções da libc, que simplesmente passam os argumentos para registos da CPU e invocam a interrupção 80H, isto é efectuam uma chamada ao sistema. O controlo é então passado de um processo no espaço de utilizador para o kernel. No espaço do kernel, serão efectuadas as operação, no caso de OPEN ou CREATE, que retornam um descritor de ficheiro. Este descritor é um inteiro positivo e indica uma entrada numa tabela a partir da qual é possível identificar a que dispositivo se refere o ficheiro. Aberto o ficheiro é possível escrever ou ler deste. De modo que a operação seja independente do dispositivo de E/S, o sistema de ficheiros acede à operação WRITE implementada pelo driver adequado, que se encarregará da transferência de dados entre o processo de utilizador e o dispositivo ou periférico. PIN T01-11/26

12 Espaço Nível Processo utilizador write (1, msg, len) syscall (write, 1, msg, len) utilizador kernel libc Sistema de ficheiros device driver movl len, %edx #Passagem dos argumentos movl $msg, %ecx #da função libc para os movl $1, %ebx #registos da CPU movl $4, %eax int 0x80 #Chamada ao sistema acede à operação WRITE implementada pelo driver adequado Transfere a informação pretendida com o processo, acedendo directamente aos registos do controlador Fig. 1-7: Acesso a periféricos usando chamadas ao sistema 1.3 Modelo de Entrada saída do Linux Neste ponto será apresentado o modelo de entrada saída de um sistema operativo. Será pois abordado principalmente a programação de dispositivos de entrada-saída, de modo a efectuar transferências de dados com periféricos. Estes dispositivos podem ser divididos em duas categorias: - Dispositivos de carácter - Dispositivos de bloco Um dispositivo de carácter comunica através de fluxos contínuos de caracteres, sejam bytes ou words. Estes fluxos são referidos na literatura anglo-saxónica por streams. Não é possível endereçar e aceder a dado carácter isoladamente, isto é ter-se-á que receber todo o stream de caracteres até se chegar ao pretendido. Exemplos de dispositivos de carácter são impressoras, interfaces de rede, rato, teclado. Um dispositivo de bloco guarda informação em blocos de tamanho fixo, cada um num endereço próprio. O que os carácteriza é a possibilidade de acesso a um bloco independentemente de todos os outros blocos, ao contrário dos dispositivos de carácter em que para se aceder a uma peça de informação, isto é um carácter, é necessário aceder a todos os que o antecedem no stream. Como exemplos deste tipo de dispositivos tem-se os disco rígidos, flexíveis, compactos, etc. A leitura de um bloco, também chamado sector de disco, a cabeça de leitura poderá ser posicionada para ler qualquer outro sector. O tamanho dos blocos nos discos é normalmente 512 bytes, no entanto outros dispositivos podem ter blocos de tamanho muito superior. Existem no entanto alguns dispositivos que não se enquadram nesta classificação, como por exemplo: Timers Não são endereçáveis por blocos nem geram ou aceitam streams. A única coisa que fazem, em intervalos bem definidos, é gerar uma interrupção. PIN T01-12/26

13 No entanto este modelo de dispositivos de carácter e bloco é suficientemente geral para servir de base à implementação do software do sistema operativo que lide com os dispositivos de E/S independentemente. Por exemplo o sistema de ficheiros lida apenas com dispositivos de bloco num sentido abstracto, deixando para camadas inferiores a gestão dependente do dispositivo Controladores de dispositivo Os dispositivos de E/S têm normalmente componentes de 2 categorias Componentes mecânicos Componentes electrónicos Normalmente a parte electrónica consiste no controlador do dispositivo e a parte mecânica é o próprio dispositivo. A tarefa do controlador é operar o dispositivo. No caso de unidades de disco, embora os discos sejam divididos em sectores ou blocos de 512 bytes, o que é transferido entre a unidade e o controlador consiste num stream sequencial de bits com um preâmbulo com informação do nº sector e cilindro, os 512 bytes de dados, e um checksum. No caso de leitura, o controlador é o responsável por converter o stream de bits num bloco de 512 bytes de dados, num buffer do controlador e verificar, usando a checksum se não houve erro, na leitura dos dados. Após estar formado no buffer o bloco pode ser copiado para a memória principal. Disco dividido em sectores Controlador Registos de controlo stream de bits buffer 512 bytes socket IDE Fig. 1-8: Leitura de um bloco do disco Noutro periférico muito diferente dos discos, um monitor CRT, o controlador deste acede a uma série de bytes indicando o que deve ser apresentado e onde, gerando os sinais necessários para modelar o feixe do CRT. Se não existisse o controlador, o programador de sistemas teria de explicitamente programar o varrimento do tubo do monitor. Algumas das responsabilidades do controlador poderão ser: Converter streams de bits para blocos de bytes ou streams de caracteres Efectuar a detecção e correcção de erros Transferir bytes entre a memória principal e o dispositivo O controlador pode fazer parte de uma interface. Num PC comum o acesso a discos pode ser efctuado por dois interfaces IDE, cada um deles capaz de operar dois discos. Estes dispositivos de bloco podem ser acedidos através do directório /dev. Se listar as entradas para os dois discos do IDE1, com: PIN T01-13/26

14 obtém-se: ls /dev/hd[ab] -l brw-rw root disk 3, 0 Nov /dev/hda brw-rw root disk 3, 64 Nov /dev/hdb Repare-se que o primeiro carácter de cada linha é um b, a indicação de um dispositivo de bloco, um dispositivo de carácter seria indicado por um c. Depois das permissões e do owner o grupo indica o tipo de dispositivo, neste caso disk. Seguidamente tem-se o major e minor numbers. O major indica o interface, e o minor identifica um dos dispositivos controlados. Assim o controlador IDE1 é referenciado pelo major 3, e os dois discos pelos minors 0 e 64. No casos dos discos rígidos, mesmo as partições de cada disco são distinguidas pelos minor numbers.: brw-rw root disk 3, 1 Nov /dev/hda1 brw-rw root disk 3, 2 Nov /dev/hda2 brw-rw root disk 3, 65 Nov /dev/hdb1 brw-rw root disk 3, 66 Nov /dev/hdb2 Já o major number para o segundo controlador IDE é 22: brw-rw root disk 22, 0 Nov /dev/hdc brw-rw root disk 22, 64 Nov /dev/hdd Assim pode-se visualizar na consola o conteúdo de um disco ou particão a partir da sua entrada no directório /dev. O comando cat pode ser usado para esse efeito, mas mostra apenas os dados em ASCII como se todo o disco fosse um ficheiro de texto. Por exemplo: cat /dev/hda Para editar o mesmo disco sector por sector, visualizando o conteúdo formatado em ASCII e também hexadecimal, pode ser usado o comando: hexedit /dev/hda Comunicação com o controlador Cada controlador tem um conjunto de registos que são usados para comunicar com a CPU. Escrevendo nestes registos o sistema operativo pode indicar ao periférico um transferência de dados. Lendo destes registo é possível conhecer o estado do dispositivo, como por exemplo se está pronto a receber dados. Além dos registos de controlo, alguns controladores de periféricos têm buffers onde o sistema operativo pode ler ou escrever, como por exemplo o controlador de monitor. Assim um modo de apresentar pixels ou caracteres no ecrã consiste em escrever dados neste buffer. Um meio da CPU comunicar com os registos de controlo consiste em assignar a cada registo do controlador um número de porto de E/S. Neste caso temos dois espaços de endereçamento separados: um para a memória e outro para os portos de E/S, como mostra a figura seguinte a). Esta estratégia costuma ser referida por E/S isolada ou isolated I/O. PIN T01-14/26

15 Quando é necessário transferir uma palavra entre a CPU e a memória principal ou um porto de E/S, é colocado o endereço no bus de endereços e enviado um sinal de READ ou WRITE no bus de controlo e um outro sinal que indica se o acesso pretendido é à memória ou ao espaço de E/S. isolated I/O memory mapped I/O Memory buffers I/O ports Fig. 1-9: Estratégias de comunicação com o controlador (in Tanenbaum 2001) Outra alternativa consiste em mapear os registos na memória principal, normalmente na parte alta, tendo-se apenas um espaço de endereçamento como mostra a figura acima b). Este modo é chamada de E/S mapeada na memória ou Memory-Mapped I/O. Se existir mapeamento de E/S na memória, cada módulo de memória principal e cada dispositivo de E/S comparam as linhas de endereço com a faixa de endereços que lhe está atribuído e se for esse o caso responde ao pedido. Não existe conflito pois o mesmo endereço não é assignado à memória principal e a um dispositivo. Nas arquitecturas x86 usa-se um método híbrido, como mostra a figura c). Os buffers mapeados na memória e os portos de E/S assignados aos registos de controlo do dispositivo. Os endereços 640 K a 1 M estão reservados para buffers de dados, embora estes possam estar também noutra zona de memória, e estão disponíveis 64 K portos de E/S Vantagens do mapeamento de E/S na memória 1. Se os registos forem mapeados na memória, podem ser acedidos em código C, como a qualquer variável. Se não for esse o caso é necessário um conjunto de macros que podem tomar a forma genérica: value <- inb(i/o port) outb(value, I/O port) Estas macros implementam as operações em assembler: IN I/O port, %ah ; o valor de 8 bits pode ser transferido de OUT %ah, I/O port ; um registo qualquer como por exemplo o ah O tempo de acesso a um porto de E/S é aproximadamente 1 Micro segundo. 2. Não é necessário nenhum método especial para evitar que processos de utilizador acedam aos registos do controlador. O sistema operativo simplesmente não mapeia a área de registos na memória virtual do processo. PIN T01-15/26

16 3. Qualquer instrução da CPU que acede à memória pode aceder aos registos de controlo. Por exemplo, se a CPU suportar a instrução TEST, que testa se um endereço de memória é nulo, pode usá-la para testar um registo do controlador. Se o valor nulo lido do endereço de memória correspondente ao registo de controlo indicar que o dispositivo está pronto a receber dados, uma rotina que espera pela disponibilidade do dispositivo pode ser implementada como: wait: TEST ADR ; ADR é o endereço de memória correspondente JZ ready ; ao registo do controlador JMP ready: wait # Transfere dados Se o registo do controlador não for mapeado na memória, terá de ser carregado num registo do processador e testado, de modo que a 1ª linha de código acima deve ser substituída por duas, sendo assim o acesso mais lento: wait: IN PORT, %AH ; PORT é o porto de E/S correspondente CMP %AH, 0 ; ao registo do controlador A implementação dos dois casos acima descritos na linguagem C, considerando um sistema operativo sem memória virtual, poderá ser: #define ADR 0xCF000 #define PORT 0x3FF char *mem=0; //... //... while (mem[adr]!=0); //wai t while (inb(port)!=0); //wait //transfere dados //transfere dados Desvantagens do mapeame nto de E /S na memória 1. Por questões de eficiência no tempo de acesso à memória, a maior parte dos computadores actuais tem um meio de guardar numa memória de acesso muito rápido, denominada de cache, a informação da memória principal mais recentemente acedida. Assim no exemplo acima, a primeira referência a TEST ADR, fará com que o valor do endereço de memória ADR seja colocado na cache. Nas iterações seguinte será acedido o valor guardado na cache, e não o da memória principal, não sendo assim testado o registo de controlo do dispositivo. Deste modo não existe forma da CPU saber quando o dispositivo está pronto para receber informação, caindo-se num ciclo infinito. Para lidar com este problema o hardware terá de ser capaz de desligar o processo de caching para as páginas de memória onde estão mapeados os registos dos controladores, tornando também o sistema operativo mais complexo. 2. Nos sistemas com um único barramento, como já foi referido, os módulos de memória principal e os dispositivos de E/S verificam o bus de endereços e respondem se o endereço for na sua gama de endereçamento, como mostra a figura seguinte a). No entanto nos actuais PCs, mesma figura b), existe um barramento dedicado de alta velocidade entre a memória e a CPU, e outro para acesso ao registos e buffers dos controladores, por exemplo o bus PCI ou o ISA. O problema é que os dispositivos não conseguem ver os endereços que são colocados no bus de sistema, entre a memória e a CPU. Deste modo não sabem se os endereços são na sua gama e não podem responder dando essa indicação. PIN T01-16/26

17 Uma forma de resolver esta problema consiste em testar o mesmo endereço por todos os barramentos, até que algum dispositivo ou a memória respondam. Este processo requer no entanto maior complexidade de hardware. Fig. 1-10: Acesso aos portos de E/S (in Tanenbaum 2001) Outra solução adoptada nos sistemas x86 consiste em filtrar os endereços no chipset. Assim a north bridge en caminha os endereços que correspondem aos registos e buffers dos controladores para a south bridge, e esta para os barramentos PCI ou ISA. Isto obriga no entanto que na inicialização do PC, seja necessário determinar quais os endereços que correspondem a mapeamento dos controladores e quais se referem a endereços da memória principal. Fig. 1-11: Filtragem de endereços no chipset Acesso a portos de E/S Como já foi referido, para se aceder aos portos de entrada saída na linguagem C podem ser usadas macros definidas em <asm/io.h> ou <sys/io.h>, que tomam a forma: inx (IOPORT); outx (value, IOPORT); O sufixo X indica o número de bits do porto, que podem ser: PIN T01-17/26

18 X bits do porto E/S b 8 w 16 l 32 Para que as macros sejam correctamente executadas o programa deve ser compilado com optimização O ou O2: gcc O programa.c o programa Se bem que estas macros possam ser directamente usadas em espaço do kernel, em espaço utilizador, e apenas como supervisor, também é possível usá-las, desde que seja pedido acesso a os portos de E/S, com a função definida em <unistd.h> ou <sys/io.h>, dependendo da versão da libc utilizada, que se apresenta a seguir: int ioperm(unsigned long ioport, unsigned long count, int access); Esta função dá permissão de acesso a count portos a partir do porto número ioport se access= 1. Se access=0 retira a permissão. Esta função é um wrapper para a chamada 0x65 ao sistema de modo que caso de erro retorna -1 e 0 se sucesso. Com esta função apenas é possível dar acesso a portos de 0x0000 até 0x03FF, o acesso ao todos os 64K portos, i.e. 0x0000-0xFFFF, pode ser pedido com a função definida em <sys/io.h>: int iopl(int level); Esta função altera o nível de privilégio do processo corrente como especificado em level. O nível normal para um processo é 0, o máximo é 3. A um nível de privilégio mais elevado é possível desligar as interrupções, no entanto tal poderá levar o sistema a ficar instável ou bloquear. Esta função é também um wrapper para a chamada 0x6E ao sistema, que em caso de erro retorna -1 e 0 se sucesso. No sistema operativo Linux, para se identificar os portos de E/S pode-se listar o ficheiro: /proc/ioports. Este directório embora faça parte do sistema de ficheiros está definido na memória. Será abordado com mais detalhe no capítulo sobre programação de módulos do kernel. cat /proc/ioports f : dma : pic f : timer f : keyboard f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 01f0-01f7 : ide : w83627hf 02f8-02ff : serial a : parport0 PIN T01-18/26

19 037b-037f : parport0 03c0-03df : vga+ 03f6-03f6 : ide0 03f8-03ff : serial (...) Como indicado acima, os portos correspondentes ao teclado são: 0060H-006FH. Se uma tecla for pressionada o registo de status, mapeado no porto 0x64, indica-o assinalando o seu bit 0. O scancode da tecla pressionada pode ser então lido a partir do registo de input, mapeado no porto 0x60. O scancode corresponde à posição da tecla no teclado e não ao código ASCII. Tecla Scancode <ESC> 1 <1> 2 <2> 3 (...) O programa seguinte aguarda que uma tecla seja pressionada e imprime o seu scancode: # include <stdio.h> #include <stdlib.h> #include <asm/io.h> #define SCAN 0x60 #define STATUS 0x64 //Keyboard Input buffer (scan code) //Keyboard status register int main () { unsigned char s; //Dá permissão de ac esso aos portos 0x60-0x64 ao utilizador root if(ioperm(scan, 5,1)) { perror("accessing keyboard registers"); exit(1); } for (;;) { //Aguarda que seja pressionada tecla s=inb(status); if(s & 0x01) break; // Tecla pressionada } printf ("%d\n", inb(scan)); //imprime scan code da tecla pressionada return 0; } O tratamento do teclado será discutido com maior detalhe num capítulo posterior Acesso a buffers mapeados na memória No modo virtual 86, ou vm86 basta aceder à posição de memória física, no entanto no modo protegido é necessário saber o endereço da memória virtual que corresponde à memória física. Ou dito de outro modo o endereço de memória válido para a CPU, referente ao endereço de barramento. Dependendo do código ser executado em espaço de utilizador ou espaço do kernel, a determinação da área de memória virtual correspondente à área de memória física é efectuada por métodos diferentes. Neste capítulo será abordado apenas o método usado no espaço de utilizador ficando o método para o espaço do kernel para um capítulo posterior. Em espaço de utilizador pode-se usar a função mmap ( ) definida em <sys/mman.h>, para obter o endereço de memória virtual correspondente ao endereço de memória fisica de um PIN T01-19/26

20 dispositivo. No sistema operativo Linux o dispositivo de memória: /dev/mem pode ser usado para esse fim. Para isso é necessário primeiro abrir esse dispositivo: int open ("/dev/mem", O_RDWR); A partir deste dispositivo indica-se qual o endereço físico offset que se pretende: void* mmap(start, len, prot, flags, fd, offset); Os argumentos de mmap ( ) são: start len prot flags fd offset Inicio da memória. Deve ser zero comprimento da zona de memória a mapear protecção das páginas de memória. Para que se possa ler e escrver deve ser definido como: PROT_READ PROT_WRITE modo de acesso. Se MAP_PRIVATE a escrita não é enviada para o ficheiro /dev/mem, i.e., não é escrita nos endereços físicos. Para que o seja deve ser MAP_SHARED. descritor do dispositivo endereço inicial a mapear. A função retorna o endereço virtual, correspondente ao endereço físico offset, do dispositivo fd, dando acesso a len bytes. Para eliminar o mapeamento deve ser usada a função seguinte onde o argumento é o endereço virtual retornado por mmap(): void iounmap(void* virt_addr); Passando-lhe o endereço virtual virt_addr, retornado por ioremap. No sistema operativo Linux, para se identificar os endereços físicos dos buffers mapeados ou da memória de E/S pode-se listar o ficheiro: /proc/iomem: cat /proc/iomem fbff : System RAM 0009fc ffff : reserved 000a bffff : Video RAM area 000c ccfff : Video ROM 000f fffff : System ROM ff2ffff : System RAM fff0 : Kernel code 0029fff f : Kernel data 7ff ff3ffff : ACPI Tables 7ff ffeffff : ACPI Non-volatile Storage 7fff0000-7fffffff : reserved ff : 0000:00:1f.1 d7f00000-f7efffff : PCI Bus #01 Como indicado acima, a memória correspondentes ao sub-sistema de video, considerando apenas 128 MBytes de video RAM, é: 000A0000H-000BFFFFH. PIN T01-20/26

21 Em modo de texto a área de video inicia-se no endereço fisíco: 0xB8000. Cada carácter é representado por um conjunto de dois bytes: O primeiro o código ASCII e o segundo o atributo da cor. Assim no modo 80 colunas x 25 linhas cada ecrã ocupa 4000 bytes. O inicio da memória de video representa o canto superior esquerdo do ecrã, enquanto não for efectuado scroll. Considerando modo 80x25, se for efectuado scroll de uma linha, esta é ocultada de modo que o primeiro endereço de memória apresentado será: 0xB *2, e assim sucessivamente. O programa seguinte lê as primeira 5 linhas no topo da memória de video, em modo de texto 80x25 e imprime-as: #include <sys/mman.h> # include <stdio.h> #include <fcntl.h> #define cols 80 #define rows 5 #define len rows* cols unsigned char * vad dr; // mmap munmap // mapeia as primeiras 5 linhas da memória de video int main() { int i, f; unsigned int paddr=0xb8000; unsigned char str[len+1]; f=open ("/dev/mem", O_RDWR); if (f<0) { printf("file not found\n"); exit(1); } vaddr=(unsigned char*)mmap(0, len*2, PROT_READ PROT_WRITE, MAP_SHARED, f, paddr); printf("\nendereço virtual %p, correspondente ao físico: %p\n\n", vaddr, paddr); for (i=0; i<len; i++) str[i] = vaddr [i*2]; //evita atributos de cor str[i]='\0'; puts(str); } munmap(vaddr, close(f); return 0; len); Programação de transferências de dados Exista ou não uma estratégia de mapeamento de E/S na memória, a CPU necessita de aceder aos controladores de dispositivo para transferir informação. Neste ponto vão ser abordados vários métodos de efectuar as transferências de dados, sendo indicadas quais as vantagens e desvantagens de cada um deles E/S programada ou ( Programmed Input Output - PIO) Uma forma de o periférico indicar que está pronto para transferir dados consiste em assinalar um bit n um registo de status do controlador. Como exemplo assuma-se que o controlador do periféricos forma os dados num buffer, como é o caso das unidades de disco rígido referidas em A CPU pode verificar continuamente o registo de status até que a informação esteja disponível e então executar um ciclo para transferir palavra por palavra o conteúdo do buffer do controlador para a memória principal: PIN T01-21/26

22 wait: IN STATUS, %AX #Aguarda que o registo do controlador no porto CMP %AX, 0 # STATUS seja nulo o que indica que JZ ready # está informação disponível JMP wait ready: loop: ; transfere dados entre o buffer e a memória principal MOV $LENGHT, %EDX #EDX guarda o número de bytes a transferir MOV (%ECX), %EAX #buffer do controlador apontado por ECX MOV %EAX, (%EBX) #para a memória apontada por EBX INC %EBX INC %ECX DEC %EDX JNZ loop Assim a transferência é efectuada no ciclo loop:. O problema está no primeiro ciclo o wait:, pois enquanto o registo é testado a CPU não pode fazer mais nada. Esta situação é normalmente referida por pooling ou busy waiting. Num sistema operativo multitarefa a tarefa em busy waiting poderá ser retirada da CPU para que esta execute outra, minimizando assim este atraso, no entanto não existe garantia de que o periférico é atendido para transferência de dados assim que estes estiverem disponíveis. Isto pode ser garantido com o mecanismo de interrupções como será visto mais adiante E/S usando acesso directo à memória (Direct memory access - DMA) Uma forma de libertar a CPU da transferência de dados consiste em utilizar um controlador de DMA, para gerir as transferências de dados directamente entre um dispositivo e a memória principal. Para que esta estratégia seja possível, é necessário que no sistema computacional exista um controlador de DMA. Fig. 1-12: Transferência de dados usando DMA (in Tanenbaum 2001) De um modo simplificado, considerando apenas um periférico, um disco, a operação de transferência de dados usando DMA, segue o esquema acima: 1. A CPU programa o controlador de DMA, escrevendo nos registos deste o endereço de memória, o número de palavras e a direcção da transferência. PIN T01-22/26

23 2. 5. Envia também um sinal ao controlador do disco para iniciar a leitura do disco, montar a informação no seu buffer e verificá-la. A partir deste ponto a CPU deixa de estar envolvida na transferência de dados, podendo efectuar outras tarefas. Após o existir informação válida no buffer do controlador do disco, o controlador de DMA envia um pedido de transferência da primeira palavra no buffer do controlador de disco para o endereço de memória especificado no registo do controlador de DMA, do mesmo modo que a CPU o faria. 3. O controlador do disco transfere a palavra do seu buffer para o endereço de memória especificado num ciclo. 4. Quando a transferência é concluída o controlador de disco envia um sinal ao controlador de DMA. Este incrementa o registo de endereço de memória, decrementa o contador de palavras transferidas e volta ao passo 2 enquanto o contador não for 0. Quando o contador for zero o controlador de DMA assinala a conclusão da transferência de dados à CPU gerando uma interrupção. Isto mostra que a operação de DMA é semelhante à de E/S efectuada pelo controlador de DMA e não pela CPU. programada, simplesmente é A operação de DMA pode executar-se em 2 modos diferentes, que têm a ver com a capacidade do barramento transferir informação palavra por palavra ou em blocos: Cycle stealing: Neste caso as transferências de dados ocorrem palavra por palavra como já foi descrito. Quando o controlador de DMA pede uma transferência de dados esta é efectuada adquirindo e ocupando o barramento. Se a CPU precisar de aceder ao barramento tem de esperar. Daí o nome do modo pois a transferência poderá roubar um ciclo à CPU, atrasando-o. Burst: Neste caso o barramento é adquirido, sendo efectuadas uma séries de transferências, i. e. um bloco, e só depois o barramento é libertado. Até que o barramento seja liberto, o acesso a este pela CPU, ou por outro controlador de periférico, está bloqueado. No entanto como a aquisição do barramento pelo controlador do periférico demora tanto tempo como a transferência de várias palavras, este modo é mais eficiente que o anterior. Existem no entanto argumentos contra a utilização do DMA: Os CPUs actuais são normalmente muito mais rápidos que os controladores de DMA, logo podem efectuar as transferências muito mais rapidamente, desde que a velocidade do dispositivo de E/S não seja um factor limite. No entanto as unidades de disco actuais são capazes de efectuar transferências de dados directamente para a memória sem necessidade de um controlador de DMA, tomando para si todo o barramento e por isso sendo este método chamado de bus mastering ou first-party DMA pois não existe um controlador de DMA envolvido (third-party). Num sistema mono tarefa, onde a CPU só executa uma tarefa em simultâneo, não vale a pena esperar pelo controlador de DMA. Em sistemas embebidos, eliminando o controlador de DMA, e deixando todo o trabalho para a CPU, torna o sistema menos eficiente mas também menos dispendioso. PIN T01-23/26

24 I/O por interrupção (Interrupt driven I/O) Considere-se um sistema composto de vários periféricos. Muitos dos dispositivos operam assincronamente de modo que não é possível prever quando requerem atendimento. A verificação se os periféricos estão prontos para uma transferência de dados por polling, pode ser efectuada periodicamente e ciclicamente, mas como já foi visto implica a suspensão de qualquer outra tarefa enquanto se procede à verificação. O mecanismo de interrupções permite que o controlador do periférico indique à CPU que está pronto para transferir dados, sem que esta efectue pooling, eliminando assim o ciclo de busy waiting. Deste modo quando ocorre a interrupção a CPU suspende o processo corrente, e executa uma rotina de atendimento do periférico que efectuará a transferência de dados entre o buffer do dispositivo e a memória principal. Fig. 1-13: Ocorrência de interrupção (in Tanenbaum 2001) Periféricos difere ntes geram interrupções diferentes, isto é um sinal numa linha ligada ao controlador de interrupções, como mostra a figura acima. Dado que se deve permitir interrupções simultâneas, e uma interrupção de mais alta prioridade deve ser servida antes de um de mais baixa prioridade, interrupções de mais baixa prioridade podem ser inibidas, isto é mascaradas, quando necessário. Existem no entanto controladores de interrupções que têm vários níveis de prioridade. Assim, periféricos mais lentos, como o teclado podem gerar uma interrupção de mais baixa prioridade. O atendimento de um processo após uma interrupção é apresentado na figura seguinte. Durante a execução de um processo (a), se um periférico necessita de atendimento gera um sinal de interrupção (b) e assinala uma flag correspondente à identificação desse periférico. Seguidamente é consultado um vector de interrupção, onde cada posição constitui um ponteiro que indica a rotina de tratamento para o periférico correspondente. O Program Counter ou PC é guardado na pilha (d) e carregado com o endereço da rotina de tratamento de interrupção n (e). Após esta ser concluída, o PC é lido da PILHA o endereço onde o processo deve continuar a ser executado (f). Antes de ser executada a rotina de atendimento do periférico, além do PC ser colocado na Pilha é também guardado nesta o contexto de execução prévio à interrupção (basicamente os registos da CPU, e os descritores de ficheiros abertos pelo processo interrompido), para que PIN T01-24/26

3 Introdução às chamadas ao sistema

3 Introdução às chamadas ao sistema 3 Introdução às chamadas ao sistema 3.1 Chamadas ao sistema e à BIOS As chamadas ao sistema ou System Calls consistem nos serviços disponibilizados pelo núcleo do sistema operativo. O principio é semelhante

Leia mais

Periféricos e Interfaces had. 1.1 Conceitos elementares Um sistema computacional pode ser dividido de um modo abstracto em 4 componentes:

Periféricos e Interfaces had. 1.1 Conceitos elementares Um sistema computacional pode ser dividido de um modo abstracto em 4 componentes: 1 Introdução 1.1 Conceitos elementares Um sistema computacional pode ser dividido de um modo abstracto em 4 componentes: 1. Hardware (processador também designado por Central Processing Unit, memória,

Leia mais

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger O controle da entrada e saída (E/S ou I/O, input/output) de dados dos dispositivos é uma das funções principais de um sistema operacional.

Leia mais

Entradas/Saídas. Programação por espera activa Programação por interrupções

Entradas/Saídas. Programação por espera activa Programação por interrupções Entradas/Saídas Programação por espera activa Programação por interrupções Programação por espera activa 1. O programa lê o estado do periférico: CPU pede ao controlador (IN) o valor no registo ESTADO

Leia mais

Sistemas Operacionais 2014 Sistema de E/S. Alexandre Augusto Giron

Sistemas Operacionais 2014 Sistema de E/S. Alexandre Augusto Giron Sistemas Operacionais 2014 Sistema de E/S Alexandre Augusto Giron ROTEIRO Introdução Hardware de E/S Interface de E/S Subsistema de E/S Desempenho Introdução Gerenciar dispositivos de Entrada e Saída (E/S)

Leia mais

Motherboard Significado

Motherboard Significado Motherboard Significado Motherboard, também m designada por mainboard ou Placa-mãe, é uma placa de circuito impresso, que serve como base para a instalação dos componentes do computador, tais como processador,

Leia mais

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for

1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através da codificação ASCII (American Standard Code for FICHA DE TRABALHO Nº 1 MÓDULO: EQUIPAMENTOS ACTIVOS DE REDES DATA: / 03 / 2010 FORMADOR: EDUARDO SEQUEIRA FICHA LABORATORIAL 1. Os caracteres (p.ex: a, A, 8,!, +, etc) são representados no computador através

Leia mais

Sistemas Operativos I

Sistemas Operativos I Arquitectura de um Computador Maria João Viamonte / Luis Lino Ferreira Fevereiro de 2006 Sumário Arquitectura de um Computador Estrutura de I/O Estrutura de Armazenamento Hierarquia de Armazenamento Protecção

Leia mais

Apontamentos do livro de AI Linux. 1.5 Modo texto e modo gráfico

Apontamentos do livro de AI Linux. 1.5 Modo texto e modo gráfico Apontamentos do livro de AI Linux 1.5 Modo texto e modo gráfico 1 Modo texto e modo gráfico O sistema operativo Linux possui duas formas de acesso: modo texto e modo gráfico No modo gráfico, o utilizador

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

Leia mais

Introdução à estrutura e funcionamento de um Sistema Informático

Introdução à estrutura e funcionamento de um Sistema Informático Introdução à estrutura e funcionamento de um Sistema Informático Elementos que constituem o Computador O funcionamento do computador é possível devido aos vários elementos interligados que o constituem:

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação

Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação Universidade do Algarve Faculdade de Ciências e Tecnologia Área Departamental de Engenharia Electrónica e Computação Periféricos e Interfaces 2003/2004 Cursos de Informática e Ensino de Informática Exame

Leia mais

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO 4 CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO CONCEITOS BÁSICOS MS-DOS MICROSOFT DISK OPERATION SYSTEM INSTALAÇÃO E CONFIGURAÇÃO DE UM SISTEMA OPERATIVO LIGAÇÕES À INTERNET O que é um sistema operativo?

Leia mais

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº

Turno/Horário Noturno PROFESSOR : Salomão Dantas Soares AULA Apostila nº UNIDADE 1I: SISTEMA COMPITACIONAL Elementos hardware e periféricos Um sistema computacional consiste num conjunto de dispositivos eletrônicos (hardware) capazes de processar informações de acordo com um

Leia mais

Um retrospecto da aula passada... Um retrospecto da aula passada... Principais Aspectos de Sistemas Operacionais. Gerência de E/S

Um retrospecto da aula passada... Um retrospecto da aula passada... Principais Aspectos de Sistemas Operacionais. Gerência de E/S Um retrospecto da aula passada... Principais Aspectos de Sistemas Operacionais Laboratório de Sistemas Operacionais Aula 2 Flávia Maristela (flavia@flaviamaristela.com) Romildo Martins (romildo@romildo.net)

Leia mais

Trabalho Prático Nº2 Escrita e Leitura em Portos IO

Trabalho Prático Nº2 Escrita e Leitura em Portos IO Trabalho Prático Nº2 Escrita e Leitura em Portos IO 1. OBJECTIVOS - Saber efectuar a escrita e leitura em portos de entrada saída num PC num com operativo DOS e Windows. 2. INTRODUÇÃO Para este trabalho

Leia mais

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos, 2014 2015

implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Fernando Ramos, Nuno Neves, Sistemas Operativos, 2014 2015 Sistemas de ficheiros: implementação Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Objetivos da aula Descrever algunsdetalhes daimplementação deumsistema de ficheiros Discutir algoritmos

Leia mais

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA 8 CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA A porta paralela, também conhecida por printer port ou Centronics e a porta serial (RS-232) são interfaces bastante comuns que, apesar de estarem praticamente

Leia mais

Barramento - Significado

Barramento - Significado Barramento - Significado Barramento é um conjunto de linhas de comunicação que permitem a ligação entre dispositivos, como a CPU, as memórias e outros periféricos. ricos. Barramento - Significado O Barramento,

Leia mais

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32 Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 CHIP Ano MHz Transistors Mem 8086 1978 5

Leia mais

DRAM. DRAM (Dynamic RAM) É a tecnologia usada na fabricação das memória de 30, 72 e 168 pinos. Divide-se em:

DRAM. DRAM (Dynamic RAM) É a tecnologia usada na fabricação das memória de 30, 72 e 168 pinos. Divide-se em: DRAM DRAM (Dynamic RAM) É a tecnologia usada na fabricação das memória de 30, 72 e 168 pinos. Divide-se em: FPM RAM (Fast Page Mode) EDO RAM (Extended Data Output RAM) BEDO RAM (Burst Extended Data Output

Leia mais

Visão geral das placas-mãe

Visão geral das placas-mãe IDENTIFICAÇÃO DOS PRICIPAIS COMPONENTES DA PLACA-MÃE Professor Marlon Marcon Visão geral das placas-mãe Conhecida como: Motherboard Mainboard Responsável pela interconexão de todas as peças que formam

Leia mais

SISTEMAS INFORMÁTICOS

SISTEMAS INFORMÁTICOS SISTEMAS INFORMÁTICOS Nesta apresentação, aprenderá a distinguir Hardware de software, identificar os principais componentes físicos de um computador e as suas funções. Hardware e Software Estrutura de

Leia mais

Tecnologia - Conjunto de instrumentos, métodos e processos específicos de qualquer arte, ofício ou técnica.

Tecnologia - Conjunto de instrumentos, métodos e processos específicos de qualquer arte, ofício ou técnica. TIC Conceitos Básicos Técnica - Conjunto de processos que constituem uma arte ou um ofício. Aplicação prática do conhecimento científico. Tecnologia - Conjunto de instrumentos, métodos e processos específicos

Leia mais

Barramentos 17/10/2011. Redes de Computadores. Arquitetura de Computadores FACULDADE PITÁGORAS DE TECNOLOGIA FACULDADE PITÁGORAS DE TECNOLOGIA.

Barramentos 17/10/2011. Redes de Computadores. Arquitetura de Computadores FACULDADE PITÁGORAS DE TECNOLOGIA FACULDADE PITÁGORAS DE TECNOLOGIA. Redes de Computadores Arquitetura de Computadores Agenda Introdução Tipos de Aplicações 1 Barramento é uma via de comunicação. Temos vários tipos de barramentos em um computador devido a aspectos históricos;

Leia mais

Aspectos de Sistemas Operativos

Aspectos de Sistemas Operativos Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho Serviços de um sistema operativo Interface com o utilizador Chamadas ao sistema Programas de sistema

Leia mais

Componentes de um Sistema de Operação

Componentes de um Sistema de Operação Componentes de um Sistema de Operação Em sistemas modernos é habitual ter-se os seguintes componentes ou módulos: Gestor de processos Gestor da memória principal Gestor da memória secundária Gestor do

Leia mais

Projeto 1 - Bootloader

Projeto 1 - Bootloader Projeto 1 - Bootloader IF677 - Infra-Estrutura de Software Centro de Informática - UFPE Autor: Thyago Porpino (tnp) Objetivos Desmistificar o processo de inicialização de um computador. Entender como um

Leia mais

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba Questão 01 Assumindo um registrador de 10 bits e utilizando-se de representação binária, com valores negativos representados em código de 2, os valores em representação decimal 235, -189 possuem, respectivamente,

Leia mais

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 2-1. PRINCÍPIOS DE SOFTWARE DE ENTRADA E SAÍDA (E/S) As metas gerais do software de entrada e saída é organizar o software como uma série de camadas, com as mais baixas preocupadas em esconder as

Leia mais

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo. http://www.dei.isep.ipp.pt/~orlando/so2/processos.

Processos. Estados principais de um Processo: Contexto de um Processo. Nível de um Processo. http://www.dei.isep.ipp.pt/~orlando/so2/processos. Página 1 de 5 Processos Consiste num método de descrição das actividades de um sistema operativo; Todo o software incluído no sistema operativo é organizado num grupo de programas executáveis. Cada um

Leia mais

Componentes de um Sistema de Computador

Componentes de um Sistema de Computador Componentes de um Sistema de Computador HARDWARE: unidade responsável pelo processamento dos dados, ou seja, o equipamento (parte física) SOFTWARE: Instruções que dizem o que o computador deve fazer (parte

Leia mais

2. A influência do tamanho da palavra

2. A influência do tamanho da palavra 1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de

Leia mais

1. SINTAXE DA LINGUAGEM ASSEMBLY

1. SINTAXE DA LINGUAGEM ASSEMBLY 1. SINTAXE DA LINGUAGEM ASSEMBLY Antes de se escrever em assembly, é conveniente construir um fluxograma do programa. Um fluxograma não faz referência à linguagem a utilizar, pelo que pode ser utilizado

Leia mais

Barramentos - BUS. Professor Especialista: Airton Ribeiro de Sousa

Barramentos - BUS. Professor Especialista: Airton Ribeiro de Sousa Professor Especialista: Airton Ribeiro de Sousa É o percurso principal dos dados entre dois ou mais componentes de um sistema de computação, neste caso são os caminhos arquitetados na PLACA MÃE até o ponto

Leia mais

Arquitetura dos Sistemas Operacionais

Arquitetura dos Sistemas Operacionais Arquitetura dos Sistemas Operacionais Arquitetura de um Sistema Operacional Basicamente dividido em shell é a interface entre o usuário e o sistema operacional é um interpretador de comandos possui embutido

Leia mais

Arquitetura de Computadores Arquitetura de entrada e saída

Arquitetura de Computadores Arquitetura de entrada e saída Arquitetura de Entrada e Saída Arquitetura de Computadores Arquitetura de entrada e saída Barramento Meio de transmissão de dados entre a CPU, a memória principal e os dispositivos de entrada e saída.

Leia mais

E/S PROGRAMADA E/S PROGRAMADA E/S USANDO INTERRUPÇÃO

E/S PROGRAMADA E/S PROGRAMADA E/S USANDO INTERRUPÇÃO E/S PROGRAMADA QUANDO A CPU FAZ TODO O TRABALHO RELACIONADO A UMA OPERAÇÃO DE E/S, NO CASO DO PROCESSO QUERER IMPRIMIR (NA IMPRESSORA) ABCDEFGH : ESTES CARACTERES SÃO COLOCADOS EM UMA ÁREA DE MEMÓRIA DO

Leia mais

Modos de entrada/saída

Modos de entrada/saída Arquitectura de Computadores II Engenharia Informática (11545) Tecnologias e Sistemas de Informação (6621) Modos de entrada/saída Fonte: Arquitectura de Computadores, José Delgado, IST, 2004 Nuno Pombo

Leia mais

Introdução à Engenharia de Computação

Introdução à Engenharia de Computação Introdução à Engenharia de Computação Tópico: Organização Básica de um Computador Digital Introdução à Engenharia de Computação 2 Componentes de um Computador Computador Eletrônico Digital É um sistema

Leia mais

11- Tornar transparente para o processador os detalhes de operação e controle dos dispositivos periféricos.

11- Tornar transparente para o processador os detalhes de operação e controle dos dispositivos periféricos. 1- O componente principal e chamado de célula de bit. 2- A célula de bit é um circuito eletrônico que armazena um bit de informação. 3- O menor conjunto de células de bits que é acessado pelo processador

Leia mais

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1 Entrada e Saída Interface entre periféricos, processador e memória Fonte: Minho - Portugal 1 Ligação Processador/Memória - Periférico Processador Memória Controlo Dados Controlador Fonte: Minho - Portugal

Leia mais

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios CURSO - TADS TURMA 2008.1 2 PERÍODO 3 MÓDULO AVALIAÇÃO MP2 DATA 02/10/2008 SISTEMAS OPERACIONAIS 2008/2 GABARITO COMENTADO SISTEMAS OPERACIONAIS PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida,

Leia mais

Introdução aos Computadores

Introdução aos Computadores Os Computadores revolucionaram as formas de processamento de Informação pela sua capacidade de tratar grandes quantidades de dados em curto espaço de tempo. Nos anos 60-80 os computadores eram máquinas

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Introdução a Organização de Computadores Aula 4

Introdução a Organização de Computadores Aula 4 1 Subsistemas de Memória 4.1 Introdução A memória é o componente de um sistema de computação cuja função é armazenar as informações que são (ou serão) manipuladas por esse sistema, para que as informações

Leia mais

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Interrupções. As interrupções são casos especiais de chamadas de procedimentos. Interrupções Uma interrupção é equivalente a uma chamada de procedimento. A chamada é equivalente a um CALL gerado pela execução de uma instrução. As interrupções são casos especiais de chamadas de procedimentos.

Leia mais

Dispositivos de Entrada e Saída

Dispositivos de Entrada e Saída SEL-0415 Introdução à Organização de Computadores Dispositivos de Entrada e Saída Aula 9 Prof. Dr. Marcelo Andrade da Costa Vieira ENTRADA e SAÍDA (E/S) (I/O - Input/Output) n Inserção dos dados (programa)

Leia mais

Escola Secundária de Emídio Navarro

Escola Secundária de Emídio Navarro Escola Secundária de Emídio Navarro Curso Secundário de Carácter Geral (Agrupamento 4) Introdução às Tecnologias de Informação Correcção da ficha de trabalho N.º 1 1. Refere algumas das principais áreas

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Curso de Sistemas de Informação Karla Donato Fook karladf@ifma.edu.br DESU / DAI 2016 Linguagem de Programação C 2 1 Linguagem de Programação C Os programas em C consistem em

Leia mais

Escola Secundária de Emídio Navarro

Escola Secundária de Emídio Navarro Escola Secundária de Emídio Navarro Curso Secundário de Carácter Geral (Agrupamento 4) Introdução às Tecnologias de Informação Ficha de trabalho N.º 1 1. Refere algumas das principais áreas das Tecnologias

Leia mais

Gestor de Processos Núcleo do Sistema Operativo

Gestor de Processos Núcleo do Sistema Operativo Alínea do 1º teste 2015/16: Considere a linha: for (i=0;i

Leia mais

FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado. Memória Armazenamento Sistema de Arquivos

FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado. Memória Armazenamento Sistema de Arquivos FACENS Engenharia Mecatrônica Sistemas de Computação Professor Machado Memória Armazenamento Sistema de Arquivos 1 Hierarquia de Memórias 2 Partes físicas associadas à memória Memória RAM Memória ROM Cache

Leia mais

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum

SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum SOP - TADS Sistemas de Arquivos Cap 4 Tanenmbaum Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Introdução

Leia mais

UPGRADES. Uma das melhores características do PC é o facto de ser uma arquitectura aberta, que permite a substituição de componentes com facilidade.

UPGRADES. Uma das melhores características do PC é o facto de ser uma arquitectura aberta, que permite a substituição de componentes com facilidade. IMEI UPGRADES Prof. Luís Moreira UPGRADES Uma das melhores características do PC é o facto de ser uma arquitectura aberta, que permite a substituição de componentes com facilidade. Do velho se faz novo.

Leia mais

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador

Linguagem C Tipos de Dados. void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Linguagem C Tipos de Dados void; escalares; sizeof Vectores; strings em C Estruturas Introdução ao pré-processador Funções void void pode ser usado em lugar de um tipo, para indicar a ausência de valor

Leia mais

ARQUITECTURA DO WINDOWS

ARQUITECTURA DO WINDOWS ARQUITECTURA DO WINDOWS MS DOS No sistema operativo MS-DOS, a BIOS (Basic Input Output System), disponibilizava os drivers para o hardware por meio de: Interrupções de software O próprio MS-DOS exportava

Leia mais

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES 1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula

Leia mais

Figura 1 - Memória 1. OBJETIVO. Conhecer os principais tipos de memórias entendendo suas funcionalidades e características.

Figura 1 - Memória 1. OBJETIVO. Conhecer os principais tipos de memórias entendendo suas funcionalidades e características. MEMÓRIA Memória Principal BIOS Cache BIOS ROOM Cache Externo HD DVD DRIVE DE DISQUETE DE 3 1/2 1/2 DISQUETE DE 3 DISQUETE DE 5 1/4 Figura 1 - Memória MP 1. OBJETIVO Conhecer os principais tipos de memórias

Leia mais

Acetatos de apoio às aulas teóricas

Acetatos de apoio às aulas teóricas Microprocessadores e Aplicações Acetatos de apoio às aulas teóricas Ana Cristina Lopes Dep. Engenharia Electrotécnica http://orion.ipt.pt anacris@ipt.pt Ana Cristina Lopes, 24 de Outubro de 2004 Microprocessadores

Leia mais

Estrutura de um Computador

Estrutura de um Computador Estrutura de um Computador Tratando-se o computador de uma máquina complexa a sua estrutura pode ser apreciada a diferentes níveis de detalhe, duma forma hierárquica. AC1 Arquitectura e Organização de

Leia mais

Organização de Computadores Como a informação é processada?

Organização de Computadores Como a informação é processada? Curso de ADS/DTEE/IFBA Organização de Computadores Como a informação é processada? Prof. Antonio Carlos Referências Bibliográficas: 1. Ciência da Computação: Uma visão abrangente - J.Glenn Brokshear 2.

Leia mais

Prof. Sandrina Correia

Prof. Sandrina Correia Tecnologias de I informação de C omunicação 9º ANO Prof. Sandrina Correia TIC Prof. Sandrina Correia 1 Objectivos Definir os conceitos de Hardware e Software Identificar os elementos que compõem um computador

Leia mais

TI Aplicada. Aula 03 Componentes Básicos Hardware e Rede. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com http://www.edilms.eti.

TI Aplicada. Aula 03 Componentes Básicos Hardware e Rede. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com http://www.edilms.eti. TI Aplicada Aula 03 Componentes Básicos Hardware e Rede Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com http://www.edilms.eti.br Principais Componentes Barramentos Placa Mãe Processadores Armazenamento

Leia mais

AULA: Introdução à informática Computador Digital

AULA: Introdução à informática Computador Digital Campus Muriaé Professor: Luciano Gonçalves Moreira Disciplina: Informática Aplicada AULA: Introdução à informática Computador Digital Componentes de um computador digital : Hardware Refere-se às peças

Leia mais

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 1 2 Revisão de Hardware 2.1 Hardware O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware 2.1.1 Processador O Processador

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 5 CONJUNTO DE INSTRUÇÕES Prof. Luiz Gustavo A. Martins Introdução O que é um conjunto de instruções? Coleção completa das instruções que a CPU é capaz de executar (entende).

Leia mais

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho

Processos. Paulo Sérgio Almeida 2005/2006. Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2005/2006 Conceito de processo Operações sobre processos Conceito de processo Conceito de processo

Leia mais

UNIDADE 2: Sistema Operativo em Ambiente Gráfico

UNIDADE 2: Sistema Operativo em Ambiente Gráfico UNIDADE 2: Sistema Operativo em Ambiente Gráfico Ambiente de trabalho Configurações Acessórios O Sistema Operativo (SO) é o conjunto de programas fundamentais que permitem que o computador funcione e comunique

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Sistemas de Entrada/Saída Princípios de Hardware Sistema de Entrada/Saída Visão Geral Princípios de Hardware Dispositivos de E/S Estrutura Típica do Barramento de um PC Interrupções

Leia mais

LINGUAGEM C. Estrutura básica de um programa

LINGUAGEM C. Estrutura básica de um programa LINGUAGEM C Estrutura básica de um programa Um programa em linguagem C é constituído por uma sequência de funções (módulos) que em conjunto irão permitir resolver o problema proposto. Estas funções contêm

Leia mais

Entradas/Saídas. 1. Princípios de hardware/software de E/S 2. Camadas de software de E/S 3. Relógios (Temporizadores) 4. Gestão de consumo de potência

Entradas/Saídas. 1. Princípios de hardware/software de E/S 2. Camadas de software de E/S 3. Relógios (Temporizadores) 4. Gestão de consumo de potência Entradas/Saídas 1. Princípios de hardware/software de E/S 2. Camadas de software de E/S 3. Relógios (Temporizadores) 4. Gestão de consumo de potência Organização de um Sistema Operativo System Call Handler

Leia mais

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO O que é a Informática? A palavra Informática tem origem na junção das palavras: INFORMAÇÃO + AUTOMÁTICA = INFORMÁTICA...e significa, portanto, o tratamento da informação

Leia mais

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores. Tipos de Instruções Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada

Leia mais

MICROPROCESSADORES. Unidade de Entrada/Saída (I/O) Nuno Cavaco Gomes Horta. Universidade Técnica de Lisboa / Instituto Superior Técnico.

MICROPROCESSADORES. Unidade de Entrada/Saída (I/O) Nuno Cavaco Gomes Horta. Universidade Técnica de Lisboa / Instituto Superior Técnico. MICROPROCESSADORES (I/O) Nuno Cavaco Gomes Horta Universidade Técnica de Lisboa / Instituto Superior Técnico Sumário Introdução Unidade de Processamento Unidade de Controlo Conjunto de Instruções Unidade

Leia mais

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle. Introdução Os principais elementos de um sistema de computação são a unidade central de processamento (central processing unit CPU), a memória principal, o subsistema de E/S (entrada e saída) e os mecanismos

Leia mais

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

Sistemas Operacionais Entrada / Saída. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br)

Sistemas Operacionais Entrada / Saída. Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Sistemas Operacionais Entrada / Saída Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Tópicos Princípios do hardware de E/S Princípios do software de E/S Camadas do software

Leia mais

Nível da Arquitetura do Conjunto das Instruções

Nível da Arquitetura do Conjunto das Instruções Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Fluxo Seqüencial de Controle e Desvios (1) Fluxo de Controle: É a seqüência na qual instruções são dinamicamente executadas Isto

Leia mais

Gerenciamento Básico B de Memória Aula 07

Gerenciamento Básico B de Memória Aula 07 BC1518-Sistemas Operacionais Gerenciamento Básico B de Memória Aula 07 Prof. Marcelo Z. do Nascimento marcelo.nascimento@ufabc.edu.br Roteiro Introdução Espaço de Endereçamento Lógico vs. Físico Estratégias

Leia mais

DISPOSITIVOS DE BLOCO. Professor: João Paulo de Brito Gonçalves

DISPOSITIVOS DE BLOCO. Professor: João Paulo de Brito Gonçalves DISPOSITIVOS DE BLOCO Professor: João Paulo de Brito Gonçalves INTRODUÇÃO Periférico Dispositivo conectado a um computador de forma a possibilitar sua interação com o mundo externo. Conectados ao computador

Leia mais

BARRAMENTO DO SISTEMA

BARRAMENTO DO SISTEMA BARRAMENTO DO SISTEMA Memória Principal Processador Barramento local Memória cachê/ ponte Barramento de sistema SCSI FireWire Dispositivo gráfico Controlador de vídeo Rede Local Barramento de alta velocidade

Leia mais

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO Capítulo 2. VARIÁVEIS DO TIPO INTEIRO OBJETIVOS DO CAPÍTULO Conceitos de: variáveis do tipo inteiro, atribuição, avisos e erros de compilação, erros de execução, comentários dentro do programa-fonte Operadores

Leia mais

Linguagem de Montagem

Linguagem de Montagem Linguagem de Montagem Organização do PC Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1 Processador Pentium Lançado em 1993 Versão melhorada

Leia mais

INFORMÁTICA PARA GESTÃO I Curso Superior de Gestão de Marketing

INFORMÁTICA PARA GESTÃO I Curso Superior de Gestão de Marketing INFORMÁTICA PARA GESTÃO I Curso Superior de Gestão de Marketing Docente (Teóricas): Contacto: vmnf@yahoo.com ou vmnf@ipam.pt Web: http://www.vmnf.net/ipam/ig1 Aula 3 Sumário Introdução à Informática (2/2)

Leia mais

Simulado Informática Concurso Correios - IDEAL INFO

Simulado Informática Concurso Correios - IDEAL INFO Simulado Informática Concurso Correios - IDEAL INFO Esta prova de informática é composta por 20 (vinte) questões de múltipla escolha seguindo o molde adotado pela UnB/CESPE. O tempo para a realização deste

Leia mais

Introdução à Organização de Computadores Entrada e Saída. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores Entrada e Saída. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Introdução à Organização de Computadores Entrada e Saída Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007 Tópicos Processadores Memória Principal Memória Secundária

Leia mais

Algoritmos DCC 119. Introdução e Conceitos Básicos

Algoritmos DCC 119. Introdução e Conceitos Básicos Algoritmos DCC 119 Introdução e Conceitos Básicos Sumário Sistemas de Numeração Sistemas Computacionais Estrutura de um Computador Digital Sistemas Operacionais Algoritmo Introdução Formas de representação

Leia mais

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática

Leia mais

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Componentes básicos de um sistema computacional. Cap. 1 (Stallings) Componentes básicos de um sistema computacional Cap. 1 (Stallings) 1 Sistema de Operação Explora recursos de hardware de um ou mais processadores Provê um conjunto de serviços aos utilizadores Gerencia

Leia mais

Como enviar e receber correio eletrónico utilizando o Gmail

Como enviar e receber correio eletrónico utilizando o Gmail Como enviar e receber correio eletrónico utilizando o Gmail Este módulo pressupõe que que já tenha criado uma conta de correio eletrónico no Gmail (caso já não se recorde como deve fazer, consulte o nosso

Leia mais

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy) Capítulo 4 João Lourenço Joao.Lourenco@di.fct.unl.pt Faculdade de Ciências e Tecnologia Universidade Nova de Lisboa 2007-2008 MARIE (Machine Architecture Really Intuitive and Easy) Adaptado dos transparentes

Leia mais

Memória cache. Prof. Francisco Adelton

Memória cache. Prof. Francisco Adelton Memória cache Prof. Francisco Adelton Memória Cache Seu uso visa obter uma velocidade de acesso à memória próxima da velocidade das memórias mais rápidas e, ao mesmo tempo, disponibilizar no sistema uma

Leia mais

Aula 04 A. Barramentos. Prof. Ricardo Palma

Aula 04 A. Barramentos. Prof. Ricardo Palma Aula 04 A Barramentos Prof. Ricardo Palma Definição Em ciência da computação barramento é um conjunto de linhas de comunicação que permitem a interligação entre dispositivos, como o CPU, a memória e outros

Leia mais

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA X Índice Traduzindo e iniciando uma aplicação Compiladores Assembladores Linkers Loaders DLLs Iniciando um programa em Java Após toda a matéria abordada nesta

Leia mais

ENTRADA E SAÍDA DE DADOS

ENTRADA E SAÍDA DE DADOS ENTRADA E SAÍDA DE DADOS Os dispositivos de um computador compartilham uma única via de comunicação BARRAMENTO. BARRAMENTO Elétrica/Mecânica + Protocolo. GERENCIAMENTO DE E/S O controle da troca de dados

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução à gestão de memória Programação de Sistemas Gestão de memória : 1/16 Introdução (1) A memória central de um computador é escassa. [1981] IBM PC lançado com 64KB na motherboard,

Leia mais

Computador. 1982: os computadores são ferramentas que nos permitem fazer cálculos rápida e comodamente

Computador. 1982: os computadores são ferramentas que nos permitem fazer cálculos rápida e comodamente Computador Algumas definições 1982: os computadores são ferramentas que nos permitem fazer cálculos rápida e comodamente 1985: calculador electrónico usado na investigação espacial e actualmente já noutros

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais