Projeto de Bloco: Arquitetura de Computadores, Sistemas Operacionais e Redes
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.).
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.
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
- Informações associadas à memória
- Informações associadas ao Disco
- Informações associadas ao IP
- 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)
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
- Informações associadass a processos em execução no computador
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
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
- Informações sobre as portas dos diferentes IPs obtidos nessa sub rede
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
- Informações associadass ao uso de dados de rede por interface
- Informações associadass ao uso de dados de rede por processos
Para conseguir utilizar ou visualizar o projeto, seja através do Visual Studio Code ou outro editor de código, siga os passos abaixo:
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
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
# 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 a aplicação
$ python3 socket-server.py
# O servidor inciará na porta: 9008
# Rode a aplicação
$ python3 socket-client.py
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.
- Faça um Fork do projeto
- Crie uma Branch para sua Feature (
git checkout -b feature/FeatureIncrivel
) - Adicione suas mudanças (
git add .
) - Comite suas mudanças (
git commit -m 'Adicionando uma Feature incrível!
) - Faça o Push da Branch (
git push origin feature/FeatureIncrivel
) - Abra um Pull Request
👤 Matheus Evangelista