Você está na página 1de 4

Universidade Federal de Ouro Preto UFOP DECEA Departamento de Cincias Exatas e Aplicada Campus de Joo Monlevade CEA437 Sistemas

mas Operacionais Data: 26/03/2012 Professor: Alex Damiany Assis. (damianybr@yahoo.com.br) Atividade prtica: Objetivo: Identificar o hardware do computador pessoal, listar as chamadas de sistemas executadas na execuo dos cdigo em C e Java. 1) Quais as duas principais funes de um Sistema Operacional? 2) O que multiprogramao? Cite duas razes para se ter multiprogramao? 3) Liste os hardwares do sistema de computao do seu computador e informe qual o nmero de interrupo atribudo a cada dispositivo. lista o barramento: lspci nmero de interrupes arquivo: /proc/interrupts 4) Liste e explique as chamadas de sistema (system calls) ocorrida na execuo do programa de copia de arquivo feitos na linguagem Java e C. Associe quais foram as chamadas de sistemas geradas pelos mtodos/procedimentos dos programas. Destaque as diferenas geradas pelos programas feitos em Java e C.. Dicas de comandos: strace-chamadas de sistemas e sinais utilizado pelo programa; diff-compara o contedo de dois arquivos Referncias: O manual de comandos linux podem ser acessados com: #man <comando> ex.: #man strace http://www.cplusplus.com/reference/clibrary http://linux.die.net/man/2/ http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Deployment_Guide/s2-procinterrupts.html

Anexos
copiaArquivo1.c
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]){ char nome_arquivo_entrada[50]; char nome_arquivo_saida[50]; FILE *fp_entrada, *fp_saida; int caractere; /* Verifica se o nome do arquivo foi passado como parmetro */ if (argc != 1){ printf("\n%s\n\n", argv[0]); exit(1); } // Recebe nome do arquivo de ORIGEM printf("\nDigite o nome do arquivo de ORIGEM: "); scanf("%s", nome_arquivo_entrada); // Recebe nome do arquivo de DESTINO printf("Digite o nome do arquivo de DESTINO: "); scanf("%s", nome_arquivo_saida); // Define os ponteiros de arquivo para o arquivo de leitura e escrita fp_entrada = fopen(nome_arquivo_entrada, "r"); fp_saida = fopen(nome_arquivo_saida, "w"); // Verifica se o arquivo de entrada foi aberto corretamente if (fp_entrada == NULL){ printf("\nArquivo no pode ser aberto.\n"); exit(1); } // Verifica se o arquivo de saida foi criado corretamente if (fp_saida == NULL){ printf("\nArquivo SAIDA no foi criado.\n"); exit(1); } // L os caracteres do arquivo de entrada e grava no arquivo de sada caractere = fgetc(fp_entrada); while(caractere != EOF){ fputc(caractere, fp_saida); caractere = fgetc(fp_entrada); } // Fecha os arquivos de entrada e sada fclose( fp_saida ); fclose( fp_entrada ); return 0; }

copiaArquivo2.c

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ char *nome_arquivo_entrada, *nome_arquivo_saida; FILE *fp_entrada, *fp_saida; int caractere; /* Verifica se o nome do arquivo foi passado como parmetro */ if (argc != 3){ printf("\n%s <arquivo ORIGEM> <arquivo DESTINO >\n\n", argv[0]); exit(1); } nome_arquivo_entrada = argv[1]; nome_arquivo_saida = argv[2]; /* Define os ponteiros de arquivo para o arquivo de leitura e escrita */ fp_entrada = fopen(nome_arquivo_entrada, "r"); fp_saida = fopen(nome_arquivo_saida, "w"); /* Verifica se o arquivo de entrada foi aberto corretamente */ if (fp_entrada == NULL){ printf("\nArquivo no pode ser aberto.\n"); exit(1); } /* L os caracteres do arquivo de entrada e grava no arquivo de sada */ caractere = fgetc(fp_entrada); while(caractere != EOF){ fputc(caractere, fp_saida); caractere = fgetc(fp_entrada); } /* Fecha os arquivos de entrada e sada */ fclose( fp_saida ); fclose( fp_entrada ); return 0; }

copiaArquivo.java

import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException; import java.util.Scanner; public class copiaArquivo { public static void main (String[] args){ File arquivo_entrada, arquivo_saida; FileWriter arquivo_escrita; BufferedWriter escritor; Scanner leitura; String linha; linha = ""; // Define arquivo de entrada e sada arquivo_entrada = new File("arquivoTexto"); arquivo_saida = new File("saida1"); try{ arquivo_escrita = new FileWriter(arquivo_saida); escritor = new BufferedWriter(arquivo_escrita); leitura = new Scanner( arquivo_entrada ); while( leitura.hasNext() ){ linha = leitura.nextLine() + "\n"; escritor.write(linha); } leitura.close(); escritor.close(); arquivo_escrita.close(); }catch (IOException e){ e.printStackTrace(); } } }

Você também pode gostar