Skip to content

Latest commit

 

History

History
269 lines (220 loc) · 12.4 KB

README.md

File metadata and controls

269 lines (220 loc) · 12.4 KB

Graduação em Engenharia de Software

Instituto Infnet

Projeto de Bloco: Arquitetura de Computadores, Sistemas Operacionais e Redes

Tabela de Conteúdo

Sobre o Projeto

design do projeto

A proposta do Projeto de Bloco de Arquitetura de Computadores, Sistemas Operacionais e Redes é um software cliente-servidor em Python que explore conceitos de arquitetura de redes, arquitetura de computadores e/ou de sistemas operacionais, acompanhado de relatório explicativo.
Esse software cliente-servidor possui as seguintes funcionalidades:

  • Capturas das informações dos diretórios, como nome, tamanho, localização, data de criação, data de modificação, tipo, etc.
  • Capturas das informações dos processos do sistema, como PID, nome do executável, consumo de processamento, consumo de memória.
  • Escalonamento das chamadas das funções com o módulo ‘sched’ e medição do tempo total utilizado por cada chamada com o módulo ‘time’.
  • Informações sobre as máquinas pertencentes à sub-rede do IP específico.
  • Informações sobre as portas dos diferentes IPs obtidos nessa sub-rede.
  • Informações de interfaces de redes (exemplos: interfaces disponíveis, IP, gateway, máscara de subrede, etc.).

Feito Com

Abaixo segue o que foi utilizado na criação deste projeto:

  • Visual Studio Code - Um editor de código-fonte desenvolvido pela Microsoft para Windows, Linux e macOS. Ele inclui suporte para depuração, controle Git incorporado, realce de sintaxe, complementação inteligente de código, snippets e refatoração de código.

  • pyhton - Uma linguagem de programação de alto nível, interpretada de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.

  • psutil - Uma biblioteca de plataforma cruzada para recuperar informações sobre processos em execução e utilização do sistema (CPU, memória, discos, rede, sensores) em Python. É útil principalmente para monitoramento de sistema , criação de perfil e limitação de recursos de processo e gerenciamento de processos em execução.

  • py-cpuinfo - Uma biblioteca que obtém informações da CPU com Python puro. O Py-cpuinfo deve funcionar sem quaisquer programas ou bibliotecas extras, além do que o seu sistema operacional oferece. Não requer nenhuma compilação (C / C ++, montagem, etc.) para usar. Funciona com Python 2 e 3.

  • matplotlib - Uma biblioteca de software para criação de gráficos e visualizações de dados em geral, feita para e da linguagem de programação Python e sua extensão de matemática NumPy.

  • netifaces - Uma biblioteca portátil de terceiros em Python para enumerar interfaces de rede na máquina local. O netifaces se encarrega de enumerar interfaces, endereços de rede e também preserva a portabilidade.

  • socket - A programação de soquete é uma forma de conectar dois nós em uma rede para se comunicarem. Um soquete (nó) escuta em uma porta específica em um IP, enquanto outro soquete alcança o outro para formar uma conexão. O servidor forma o soquete do ouvinte enquanto o cliente alcança o servidor.

  • time - Este módulo fornece várias funções relacionadas ao tempo.

  • pickle - É usado para serializar e desserializar estruturas de objetos Python, também chamado de empacotamento ou nivelamento. A serialização se refere ao processo de conversão de um objeto na memória em um fluxo de bytes que pode ser armazenado em disco ou enviado por uma rede.

  • os - Este módulo fornece uma maneira simples de usar funcionalidades que são dependentes de sistema operacional.

  • platform - Este módulo tenta recuperar tantos dados de identificação de plataforma quanto possível.

Linha do tempo

Teste de Performance 3 - TP3
Sobre o entregável:

- Um aplicativo simples de apresentação gráfica do monitoramento e análise do computador. Ele deverá ser implementado em Python usando módulos como psutil (para capturar dados do sistema computacional) e Pygame (para exibir graficamente os dados).

Funcionalidades implementadas no TP3:

- Informações associadas ao processador

cpu_code cpu_graph



- Informações associadas à memória

memory_code memory_graph



- Informações associadas ao Disco

disk_code disk_graph



- Informações associadas ao IP

ip_code



- Informação de nome/modelo da CPU (brand), arquitetura (arch), palavra do processador (bits), frequência total e frequência de uso da CPU e número total de núcleos (núcleo físico) e threads (núcleo lógico)

ip_code

Teste de Performance 4 - TP4
Sobre o entregável:

- No Teste de Performance 4, foram introduzidas informações sobre arquivos e diretório especificados e sobre processos em execução no computador.

Funcionalidades implementadas no TP4:

- Informações associadas a arquivos e diretórios

files-and-directories files-and-directories


- Informações associadass a processos em execução no computador

cpu_code cpu_graph

Teste de Performance 5 - TP5
Sobre o entregável:

- No Teste de Performance 5, foram introduzidas informações associadas ao tempo total utilizado para mostrar resultado

Funcionalidades implementadas no TP5:

- Informações sobre o tempo utilizado para mostrar resultado

tp5

Teste de Performance 6 - TP6
Sobre o entregável:

- No Teste de Performance 6, foram introduzidas informações sobre subrede de um IP especificado e sobre as portas desse IP.

Funcionalidades implementadas no TP6:

- Informações sobre as máquinas pertencentes à sub-rede do IP específico

files-and-directories


- Informações sobre as portas dos diferentes IPs obtidos nessa sub rede

cpu_code

cpu_code

Teste de Performance 7 - TP7
Sobre o entregável:

- No Teste de Performance 7, foram introduzidas informações sobre redes do computador.

Funcionalidades implementadas no TP7:

- Informações associadas ao IP, gateway e máscara de subrede da rede

files-and-directories


- Informações associadass ao uso de dados de rede por interface

cpu_code cpu_graph

- Informações associadass ao uso de dados de rede por processos

cpu_code


Começando

Para conseguir utilizar ou visualizar o projeto, seja através do Visual Studio Code ou outro editor de código, siga os passos abaixo:

Pré-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:

  • É necessário possuir o pyhton instalado no computador
  • É necessário possuir o psutil instalado
  • É necessário possuir o py-cpuinfo instalado
  • É necessário possuir o matplotlib instalado
  • É necessário possuir o netifaces instalado
  • Por fim, é essencial ter o Git instalado e configurado no computador

Instalação

Para instalar esse projeto, o processo é bem simples. Basta utilizar o seguinte comando no terminal:

# Clone este repositório
$ git clone https://github.com/MTevangelista/computer-info-project.git

Instale as bibliotecas

# Rode os seguintes comandos no terminal
$ pip3 install psutil
$ pip3 install py-cpuinfo
$ pip3 install matplotlib
$ pip3 install netifaces

# Após rodar todos esses comandos, estará pronto para rodar o servidor :)

Rode o Server

# Rode a aplicação
$ python3 socket-server.py

# O servidor inciará na porta: 9008

Rode o Client

# Rode a aplicação
$ python3 socket-client.py

Contribuição

Contribuições são o que fazem a comunidade open source um lugar incrível para aprender, inspirar e criar. Qualquer contribuição que você fizer será muito apreciada.

  1. Faça um Fork do projeto
  2. Crie uma Branch para sua Feature (git checkout -b feature/FeatureIncrivel)
  3. Adicione suas mudanças (git add .)
  4. Comite suas mudanças (git commit -m 'Adicionando uma Feature incrível!)
  5. Faça o Push da Branch (git push origin feature/FeatureIncrivel)
  6. Abra um Pull Request

Contato

👤 Matheus Evangelista

Github Badge Linkedin Badge Gmail Badge Instagram Badge