Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Projeto final do Bloco de Arquitetura de Computadores, Sistemas Operacionais e Redes

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages