quinta-feira, 20 de março de 2014

LABORATÓRIO 3 - SIMULADOR - SOSIM

LABORATÓRIO 3 - SIMULADOR - SOSIM

LABORATÓRIO 3
Execute os seguintes passos:
1. Execute o simulador SOsim e identifique as quatro janelas que são abertas na inicialização. Para esta experiência você pode fechar ou minimizar a janela da Gerência de Memória
2. Crie um processo: janela Gerência de Processos / Criar.
Analise o seguinte:
1. Na janela Gerência de Processos, observe algumas informações sobre o contexto de software do processo como PID, prioridade, estado do processo e tempo de processador.
2. Na janela Gerência de Processador, observe o processo transicionando entre estados.
3. Na janela Gerência de Processador, movimente a barra de Clock de UCP e observe as variações ocorridas.
Tendo feito isto, você seria capaz de responder, com base na observação do comportamento do processo criado, se o processo é I/O-bound ou CPU-bound? Justifique a resposta.
____________________________________________________________________________________________________
____________________________________________________________________________________________________
____________________________________________________________________________________________________
____________________________________________________________________________________________________
Execute os seguintes passos:
1. Reinicialize o simulador.
2. Crie um processo do tipo CPU-bound: janela Gerência de Processos / Criar | janela Criação de Processos / Criar (tipo de processo deve ser CPU-bound).
3. Crie outro processo do tipo I/O-bound: janela Gerência de Processos / Criar | janela Criação de Processos / Criar (tipo de processo deve ser I/O-bound).
Analise o seguinte:
1. Na janela Gerência de Processos, observe as mudanças de estado dos dois processos.
2. Na janela Gerência de Processador, observe o comportamento dos processos e as mudanças de contexto em função do tipo I/O-bound e CPU-bound.
3. Na janela Gerência de Processos, compare a taxa de crescimento do tempo de processador dos dois processos.
Tendo feito isto, você seria capaz de analisar os efeitos gerados no caso de redução do tempo gasto na operação de E/S pelo processo I/O-bound.
____________________________________________________________________________________________________
____________________________________________________________________________________________________

Melhore esta experiência refazendo-a com mais um processo, que seja misto, tanto CPU-Bound como IO-Bound.

EXERCÍCIOS SISTEMAS OPERACIONAIS

1. Liste 5 (cinco) serviços, oferecidos por um sistema operacional, que são projetados para tornar o sistema de computação mais conveniente para os usuários.


2. O que são System Calls, cite 4 exemplos.


3. Os sistemas operacionais podem ser construídos de diferentes maneiras. Descreva as principais arquiteturas existentes.


4. Descreva as ações tomadas pelo kernel para fazer a troca de contexto entre processos.

5. O que são processos, e quais os estados que podem assumir?


6. O que são threads? Em que diferem de processos convecionais?

7. Qual a diferença de threads em nível de usuário e em nível de SO

EXERCÍCIOS ALGORITMOS - PARTE I

1. Faça o algoritmo para calcular a área (AREA) e o perímetro (P) de uma sala retangular, sendo que as dimensões da sala (L e C) são fornecidas pelo usuário. Apresente a área e o perímetro depois de calculados.

 2. Faça o algoritmo que calcule a idade de uma pessoa, sendo que o ano atual (AA) e o ano do nascimento da pessoa (AN) são fornecidos pelo usuário. (considere que a pessoa já fez aniversário nesse ano). Apresentar a idade da pessoa depois de calculada.

 3. Faça o algoritmo que calcule o valor em Reais (VAL_REAL), correspondente aos dólares que um turista possui no cofre do hotel. O programa deve solicitar os seguintes dados: Quantidade de dólares guardados no cofre (VAL_DOLAR) e cotação do dólar naquele dia (COT).

 4. Faça o algoritmo para calcular o valor monetário do desconto (D), sendo que o preço do produto (PR) é fornecido pelo usuário e o desconto é de 5%. Apresentar o valor do desconto.

 5. Faça o algoritmo para calcular quanto será pago por um produto (PAG), sendo que o preço do produto (PR) e o desconto (D), em porcentagem, são fornecidos pelo usuário. Apresentar o valor a ser pago pelo produto.

 6. Faça o algoritmo para calcular qual foi a porcentagem de desconto dada em um determinado produto (DESC), (PRECO) e o preço que foi cobrado por ele depois do desconto (PRECOF) são fornecidos pelo usuário.

 7. Faça o algoritmo que receba do usuário uma temperatura em graus Farenheit (F) e a transforme em graus Celsius (C). A fórmula é C = 5/9 (F – 32).

 8. Faça o algoritmo que calcule a quantidade de tijolos iguais (QTD) necessários para construir uma determinada parede. São dados de entrada do programa: dimensões do tijolo (altura – AT e largura – LT) e dimensões da parede a ser construída (altura – AP e largura – LP).

quinta-feira, 6 de março de 2014

ATIVIDADE DE LABORATÓRIO 2

APLICAÇÕES NA NUVEM 
TRABALHANDO COM O CLOUDO


1) O QUE É CLOUDO?
2) PROCURE O LINK NA NET PARA ENTRAR NO CLOUDO
3) CRIE UM LOGIN E SENHA E ENTRE NO CLOUDO
4) ABRA O CALENDÁRIO E NO HORÁRIO ATUAL CRIE A ATIVIDADE: TRABALHANDO COM O CLOUDO
5)CRIE UMA PASTA DENTRO DE DESKTOP-> MY DOCUMENTS COM O TÍTULO : TEXTOS
6) ABRA O EDITOR DE TEXTOS E DIGITE : Computação em nuvem (cloud computing) é um conjunto de serviços acessíveis pela internet que visam fornecer os mesmos serviços de um sistema operacional, ou parte deles(WIKIPEDIA). AGORA SALVE NA PASTA TEXTOS QUE VOCÊ CRIOU.
7) INSTALE E ABRA O JOGO CONNECT-FOUR - VEJA SE VOCÊ CONSEGUE VENCER !!!

segunda-feira, 24 de fevereiro de 2014

PRÁTICA DE LABORATÓRIO 1

LABORATÓRIO DE SISTEMAS OPERACIONAIS
1) Os sistemas monoprogramáveis ou monotarefas tem quais características?
2) Abra o windows no modo prompt de comando. - Digitando CMD
3) Veja o conteúdo das pastas no diretório atual. - pesquise o comando na internet
5) limpe a tela.
6) Crie uma pasta com o seu nome - pesquise
7) apague a pasta com o seu nome e saia do interpretador de comandos.
8) Conforme visto em sala, veja o conceito de processamento em lote (Batch).
9) Abra o editor de textos e crie um job em lote.
Digite os seguintes comandos:
@echo off 
vol >tmpvol.tmp 
find "volume" tmpvol.tmp /i >nul 
if errorlevel 0 if errorlevel 1 goto english 
echo. 
echo Seu Windows e em Portugues 
goto fim 
:english 
echo. 
echo Your Windows is in English 
goto fim 
:fim 
del tmpvol.tmp
Salve seu documento com o nome: verifica.bat - depois execute-o no modo de comando.
9)Sistemas de tempo compartilhado foram desenvolvidos para fornecer o uso interativo de um sistema de computação a preços razoáveis. Como este sistema funciona?
10)Dê um exemplo de um sistema de tempo real.

domingo, 1 de dezembro de 2013

UMA SOLUCÃO PARA O PALINDROMO

#include
#include
using namespace std;


int main(){
    char palavra1[50],palavra2[50];
    int tamanho;
    cout<< "digite uma palavra"<  
     cin>>palavra1;
    cout<<"palavra digitada:"< palavra1;

    tamanho = strlen (palavra1);
    cout << "tamanho da palavra : "<   tamanho;

// se o tamanho da palavra digitada fosse 5 faríamos o seguinte:
    /*palavra2[0]=palavra1[4];
    palavra2[1]=palavra1[3];
    palavra2[2]=palavra1[2];
    palavra2[3]=palavra1[1];
    palavra2[4]=palavra1[0];
    */
//generalizando para palavras de qualquer tamanho temos:
    for (int i=0;i  < tamanho; i++)         

 palavra2[i]=palavra1[tamanho-1-i];
    }

    for (int i=0;i  < tamanho; i++)  
        if (palavra2[i]==palavra1[i])
        {
        cout<<"'e palindromo"<        }
        else
        cout<<"nao eh palindromo"<    }
 
    //cout<<"palavra2"< 
    system ("pause>null");
    return 0;

OBS: Você pode acrescentar um contador ao programa que incrementa toda vez que o caractere do vetor palavra1 for igual ao caractere do vetor palavra2. Ao final, se o contador for igual a variável tamanho, mostra é palindromo, caso contrário mostra não é palindromo. Dessa forma evita de mostrar varias vezes se é palindromo ou não. 

TRABALHANDO COM STRING

Strings

Agora que já vimos vetores, o próximo passo é entender as strings. Strings em C são tratados como vetores de tamanho determinado que podem armazenar qualquer caracter. Diferentemente de declarar apenas uma variável do tipo char (que armazena apenas um caracter) a string é uma cadeia de caracteres, ou seja, pode guardar quantos caracteres nós determinarmos.
Portanto, para declararmos uma string, basta nós criarmos um vetor de caracteres dessa forma:
char minhaString [50];
O único problema das strings são o seu consumo de recursos. Por exemplo, se levarmos em conta o vetor de caracteres que acabamos de criar, apesar dele conter 50 posições, nós só poderemos digitar até 49 letras. Isso ocorre porque toda string deve ter um caracter terminal, que geralmente é indicado pelo NULL (nulo). Isso quer dizer que um vetor de caracteres (string) de 50 posições terá 49 caracteres efetivos e um NULL indicando seu final.

Entrada de String

Para entrarmos com uma String no sistema usamos a mesma função de entrada padrão - cin.
Ou seja, se quisermos que o usuário digite seu nome faríamos da seguinte forma:
01.#include
02.using namespace std;
03. 
04.int main (void){
05.char minhaString [50];
06.cout << "Digite seu nome: "<
07.cin >> minhaString;
08.system("cls");
09.cout << "Seu nome e: " << minhaString << endl;
10.system("pause");
11.return EXIT_SUCCESS;
12.}
Agora, outro problema ao tratarmos de strings em C/C++. Embora a função cin consiga obter a string, ela sempre termina assim que pressionarmos o espaço a primeira vez, ou seja, ele só consegue pegar uma palavra por vez.
Então, como vamos obter uma linha inteira?
Bem, para obtermos uma linha inteira nós devemos fazer uso de um dos métodos encontrados dentro de cin - o método getline.
O método getline obtém uma linha de acordo com o tamanho definido no método. Então, o método getline utiliza dois parâmetros: 1°. O nome da string; 2°. O tamanho máximo que será preenchido.
Então, usando o mesmo exemplo, apenas mudaríamos a 6ª linha. Vejamos:
01.#include
02.using namespace std;
03. 
04.int main (void){
05.char minhaString [50];
06.cout << "Digite seu nome: "<
07.cin.getline (minhaString, 50);
08.system ("cls");
09.cout << "Seu nome e: " << minhaString << endl;
10.system("pause");
11.return EXIT_SUCCESS;
12.}

Funções de String

Podemos fazer muitas coisas com Strings, como por exemplo, ver ser tamanho, juntar mais de uma palavra, comparar duas palavras diferentes, etc. Para isso, basta incluirmos uma biblioteca para tratamento de strings em C chamado - string.h.

Obter o tamanho de uma String

Para obter o tamanho de uma string usamos a função strlen (que é a junção do inglês String Length, que quer dizer, largura de string). Essa função retorna o número de caracteres utilizados (incluindo os espaços se houver). Ela recebe como argumento apenas a string que deve ser verificada e retorna o número de caracteres encontrados.
01.#include
02.#include
03.// ou também #include
04.using namespace std;
05. 
06.int main (void){
07.int tamanho;
08.char nome [100];
09.cout << "Digite seu nome: "<
10.cin.getline (nome, 100);
11.system ("cls");
12.tamanho = strlen (nome);
13.cout << "Seu nome tem " << tamanho << " caracteres." << endl;
14.system("pause");
15.return EXIT_SUCCESS;
16.}

Comparar duas strings

Há também uma forma de compararmos duas strings para ver ser ambas são iguais. A função que determina isso é strcmp. Embora C/C++ é case sensitive, ou seja, diferencia maiúsculas de minúsculas, isso não irá influenciar nessa função. Essa função retorna 0 se há igualdade entre as strings ou um número diferente de zero se não houver igualdade. Portanto, se quisermos fazer uma comparação de duas strings, procedemos da seguinte forma: strcmp (string1, string2). Vejamos o exemplo:
01.#include
02.#include
03.using namespace std;
04. 
05.int main (void){
06.char palavra1 [25], palavra2 [25];
07.cout << "Digite uma palavra: "<
08.cin >> palavra1;
09.cout << "Digite outra palavra: "<
10.cin >> palavra2;
11.system ("cls");
12.if (strcmp (palavra1, palavra2) == 0)
13.cout <" e igual a "<
14.else
15.cout <" e diferente de "<
16.system ("pause");
17.return EXIT_SUCCESS;
18.}

Copiar uma String

Para copiar uma string para outra string usamos strcpy (que vem de String copy). Essa função recebe dois argumentos: 1°. a string para onde será armazenada a cópia; 2°. a string que será copiada. Resumidamente, ele copia a segunda string para a primeira. Exemplo:
01.#include
02.#include
03.using namespace std;
04. 
05.int main (void){
06.char palavra1 [25], palavra2 [25];
07.cout << "Digite uma palavra: "<
08.cin >> palavra1;
09.strcpy (palavra2, palavra1);
10.system ("cls");
11.cout<<"palavra1 = "<
12.cout<<"palavra2 = "<
13.system("pause");
14.return EXIT_SUCCESS;
15.}

Concatenar uma String

Concatenar uma String que dizer juntar. De uma forma mais simplória, é como se disséssemos que a junção da palavra passa mais a palavra tempo é igual a passatempo. Ou seja, essa função - strcat - pega duas strings e junta o que tiver na primeira com o que tiver na segunda.
Tome cuidado: Se concatenarmos duas strings e uma delas ou ambas forem vazias ocorrerá um erro.
No exemplo abaixo, faremos o seguinte: vamos obter o valor de duas strings e concatená-las formando uma nova string.
01.#include
02.#include
03.using namespace std;
04. 
05.int main (void){
06.char str1 [25], str2 [25];
07.cout << "Digite uma palavra: "<
08.cin >> str1;
09.cout << "Digite outra palavra: "<
10.cin >> str2;
11.strcat (str1, str2);
12.system ("cls");
13.cout << "A juncao dessas duas strings ";
14.cout << " e igual a "<
15.system("pause");
16.return EXIT_SUCCESS;
17.}
Lidar com strings é extremamente importante para a programação, pois a string é a base de qualquer arquivo e principalmente controles de rotina (por exemplo: rotinas e procedimentos de banco de dados, o SQL; endereçamento de arquivos; modificação de configurações...).
Abaixo esta um exemplo com todas as funções básicas de manipulação de string vistas até aqui. Faça o download e bom estudos.
01.#include
02.#include
03.using namespace std;
04. 
05.int main (void){
06.char palavra1 [75], palavra2 [25], palavraConcatenada [100];
07.cout << "Digite outra palavra ou uma pequena frase: "<
08.cin.getline (palavra1, 75);
09.cout << "Digite uma palavra: "<
10.cin >> palavra2;
11.system ("cls");
12.cout << "String-1"<
13.cout << "-> "<
14.cout << "tem "<<strlen(palavra1)<<" caracteres"<
15. 
16.cout << "String-2"<
17.cout << "-> "<
18.cout << "tem "<<strlen(palavra2)<<" caracteres"<
19.if (strcmp (palavra1, palavra2) == 0)
20.cout << palavra1<<" e igual a "<
21.else
22.cout << palavra1<<" e diferente de "<
23.strcpy (palavraConcatenada, palavra1);
24. 
25.strcat (palavraConcatenada, palavra2);
26. 
27.cout << "\nA concatenacao de "<" com "<
28.cout << " resulta em "<
29.system("pause");
30.return EXIT_SUCCESS;
31.}
 
Visitas