Projeto C++

Softwares e sistemas

  • Status do projeto

    Fechado
  • Interessado

    1
  • Postado em

  • Localização

    FORMOSA, Goiás, BR
  • O projeto deve ser concluído no local
  • Orçamento

    R$ 50 - R$ 1.000
  • Depósito pago

    R$ 0,00
  • Bônus total por indicação

    R$ 20,00
  • Na contratação

    R$ 20,00
  • postado por

    Glezio

Descrição do Projeto

Os processadores Intel da família x86 costumam dar a possibilidade e o programador criar sub-rotinas em Assembly (procedimentos ou funções). Para isso, o programador deve conhecer muito bem a arquitetura e organização do computador. A programação de computadores em linguagem de baixo nível exige que saibamos como manipular dados em memória respeitando as regras de inserção e remoção impostas pela estrutura de dados conhecida como pilha. Segundo Silberchartz (2011), um programa possui quatro áreas principais, em memória, a saber: seção de texto, seção e dados, heap e pilha. A figura abaixo ilustra a estrutura de um processo em memória principal.



SILBERSCHATZ, Abraham. Fundamentos de Sistemas Operacionais. 8. ed. Rio de Janeiro: LTC, 2011.

Considere que você é um desenvolvedor Open Source e está ajudando a comunidade de Sistema Operacional de Código aberto a desenvolver um algoritmo de gerenciamento da pilha em memória. Assim sendo, você decide criar um programa que simule condições semelhantes às de um Sistema Operacional que manipula a pilha.

Os dados a serem armazenados na pilha devem simular processos, sendo que cada elemento a empilhar/desempilhar deve possuir:

- O PID do cada processo (Process ID, é um código gerado automaticamente pelo sistema – cada processo tem seu próprio PID);
- O nome do programa/comando que gerou o processo.

O programa deve ter um menu principal em forma de laço de repetição que atenda aos seguintes requisitos:

- O menu sempre deve imprimir o conteúdo da pilha (da base em direção ao topo);
- Após a impressão do conteúdo da pilha, o usuário deve ser informado de que pode realizar as seguintes operações:
1) Inserir um elemento na pilha;
2) Remover um elemento da pilha;
3) Esvaziar a pilha;
0) Encerrar o programa.

A operação “Inserir um elemento na pilha” deve pedir para que o usuário informe o nome do programa ou comando que será empilhado. O programa deve associar um PID a esse nome automaticamente, e empilhar ambos os dados: PID + nome. Caso a pilha esteja cheia, o usuário deve receber uma mensagem informando: “Pilha cheia, impossível empilhar mais elementos.”.

A operação “Remover um elemento da pilha” tentar remover um elemento da pilha. Caso haja elemento para ser removido, o PID e o nome do elemento desempilhado devem ser impressos na tela. Caso não seja possível desempilhar elementos, o programa deve imprimir a mensagem “Pilha vazia, impossível desempilhar elementos.”, na tela.

A operação “Esvaziar a pilha” deve remover todos os elementos da pilha.

A operação “Encerrar programa” deve finalizar o processo.

Observação 1: o código-fonte deve ser escrito de forma a implementar estruturas de dados estáticas. Nesse caso, nossa pilha deverá ter, no máximo, 5 posições para armazenar elementos (tamanho igual a 5).
Observação 2: a correção será feita em ambiente de desenvolvimento Bloodshed Dev C++, portanto garanta que seu código-fonte esteja de acordo com a sintaxe do padrão C ANSI e, além disso, que seu programa compile em ambiente Dev C++. Os agentes de correção não farão modificações no código-fonte para que ele compile. Essa é uma responsabilidade do aluno!

Freelancers interessados

    {{ item.displayName }} {{ item.displayName }}

    {{ item.displayDisciplines }}

    • {{ item.hourlyRate || '-' }} por hora
    • {{ item.cityName }}
      {{ item.stateName }}, {{ item.countryName }}
    • {{ item.nrSharedConnections }} conexões compartilhadas

Nenhum freelancer interessado ainda

Operação falhou!
Por favor, tente novamente mais tarde. Se o problema persistir entre em contato com o suporte.