Skip to content

CachePulse/cachepulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💓 CachePulse

CachePulse Version License

Belleğin Nabzını Tut

Bellek Hiyerarşisi Simülatörü

KurulumKullanımAPIEkip


📖 Proje Hakkında

CachePulse, 3 Seviyeli Cache (L1/L2/L3), RAM ve Disk bileşenlerini içeren interaktif bir bellek hiyerarşisi simülatörüdür. Her katman için gerçekçi erişim süreleri ve isabet oranları (hit ratio) hesaplanır, modern web arayüzü ile görselleştirilir.

✨ Özellikler

Özellik Açıklama
Bellek Simülasyonu Cache, RAM ve Disk katmanları
📊 Gerçek Zamanlı İstatistikler Hit/Miss oranları, AMAT hesaplama
🔄 Replacement Politikaları LRU, FIFO, Random
📈 Benchmark Politika karşılaştırması
🎨 Modern Arayüz Cyberpunk/Terminal teması
🌓 Tema Desteği Karanlık ve Aydınlık mod
🌍 Çoklu Dil TR, EN, FR, DE, ES
📥 Dışa Aktarma JSON ve CSV formatları
⌨️ Klavye Kısayolları Hızlı erişim tuşları

🏗️ Mimari

┌─────────────────────────────────────────────────────────────────┐
│                     🌐 Vue.js Frontend                          │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐    │
│   │   💾 Cache  │  │   🧠 RAM    │  │      💿 Disk        │    │
│   │  L1/L2/L3   │  │   Görsel    │  │      Görsel         │    │
│   └─────────────┘  └─────────────┘  └─────────────────────┘    │
│                          ↕ REST API                             │
└─────────────────────────────────────────────────────────────────┘
                           ↕ HTTP :8080
┌─────────────────────────────────────────────────────────────────┐
│                    ⚙️ C Backend (REST API)                      │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │             3-Seviyeli Memory Hierarchy                    │  │
│  │  ┌────┐  ┌────┐  ┌────┐  ┌─────────┐  ┌─────────┐        │  │
│  │  │ L1 │→│ L2 │→│ L3 │→│   RAM   │→│  Disk   │        │  │
│  │  │1ns │  │10ns│  │25ns│  │  75ns   │  │ 100μs   │        │  │
│  │  └────┘  └────┘  └────┘  └─────────┘  └─────────┘        │  │
│  └───────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

📁 Proje Yapısı

cachepulse/
├── 📂 backend/                    # C Backend
│   ├── 📂 src/
│   │   ├── 📂 modules/
│   │   │   ├── 📂 cache/         # 💾 Cache modülü
│   │   │   ├── 📂 ram/           # 🧠 RAM modülü
│   │   │   └── 📂 disk/          # 💿 Disk modülü
│   │   ├── 📂 core/              # 🔧 Entegrasyon
│   │   │   ├── memory_hierarchy.c
│   │   │   ├── config.c
│   │   │   ├── statistics.c
│   │   │   └── types.h
│   │   ├── 📂 api/               # 🌐 REST API
│   │   │   ├── server.c
│   │   │   └── handlers.c
│   │   └── main.c
│   ├── 📂 bin/                   # 🎯 Çalıştırılabilir
│   ├── 📂 lib/                   # 📚 Kütüphaneler
│   └── Makefile
│
├── 📂 frontend/                   # Vue.js Frontend
│   ├── 📂 src/
│   │   ├── 📂 locales/           # 🌍 Dil dosyaları
│   │   ├── 📂 composables/       # 🔌 API bağlantısı
│   │   ├── App.vue               # 🎨 Ana bileşen
│   │   └── main.js
│   └── package.json
│
└── 📂 docs/                       # 📖 Dokümantasyon

🚀 Kurulum

📋 Gereksinimler

Bileşen 🐧 Linux 🍎 macOS 🪟 Windows
C Derleyici GCC Clang / GCC MinGW-w64
Build Tool make make mingw32-make
Node.js v18 veya üzeri
npm v9 veya üzeri

🐧 Linux Kurulumu

1️⃣ Bağımlılıkları Yükle

# Ubuntu / Debian
sudo apt update
sudo apt install build-essential libmicrohttpd-dev nodejs npm

# Fedora
sudo dnf install gcc make libmicrohttpd-devel nodejs npm

# Arch Linux
sudo pacman -S gcc make libmicrohttpd nodejs npm

2️⃣ Backend'i Derle ve Çalıştır

cd backend
make clean
make
./bin/cachepulse

3️⃣ Frontend'i Çalıştır (Yeni Terminal)

cd frontend
npm install
npm run dev

4️⃣ Tarayıcıda Aç

http://localhost:5173

🍎 macOS Kurulumu

1️⃣ Homebrew ile Bağımlılıkları Yükle

# Homebrew yoksa kur
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Bağımlılıkları yükle
brew install gcc libmicrohttpd node

2️⃣ Backend'i Derle ve Çalıştır

cd backend
make clean
make
./bin/cachepulse

3️⃣ Frontend'i Çalıştır (Yeni Terminal)

cd frontend
npm install
npm run dev

4️⃣ Tarayıcıda Aç

http://localhost:5173

🪟 Windows Kurulumu

1️⃣ MinGW-w64 Kurulumu

Seçenek A: MSYS2 (Önerilen)

# 1. MSYS2'yi indir ve kur: https://www.msys2.org/

# 2. MSYS2 terminalinde:
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make

# 3. Ortam değişkenine ekle:
# C:\msys64\mingw64\bin

Seçenek B: Doğrudan MinGW

# https://www.mingw-w64.org/ adresinden indir
# Kurulum sonrası PATH'e ekle

2️⃣ Node.js Kurulumu

# https://nodejs.org/ adresinden LTS versiyonu indir ve kur
# Veya winget ile:
winget install OpenJS.NodeJS.LTS

3️⃣ Backend'i Derle ve Çalıştır (PowerShell)

cd backend

# Temizle ve derle
mingw32-make clean
mingw32-make

# Çalıştır
.\bin\cachepulse.exe

⚠️ Önemli: Windows'ta make yerine mingw32-make kullanın!

4️⃣ Frontend'i Çalıştır (Yeni PowerShell Penceresi)

cd frontend
npm install
npm run dev

5️⃣ Tarayıcıda Aç

http://localhost:5173

📖 Kullanım

🖥️ Hızlı Başlangıç (Tüm Platformlar)

Terminal 1 (Backend) Terminal 2 (Frontend)

Linux / macOS:

cd backend
make && ./bin/cachepulse

Windows:

cd backend
mingw32-make
.\bin\cachepulse.exe

Tüm Platformlar:

cd frontend
npm install
npm run dev

✅ Başarılı Başlatma

Backend başarıyla çalıştığında şu çıktıyı görmelisiniz:

╔═══════════════════════════════════════════════════════════════╗
║                                                               ║
║   💓 CachePulse - Belleğin Nabzını Tut                       ║
║                                                               ║
║   Bellek Hiyerarşisi Simülatörü                              ║
║   İşletim Sistemleri Dersi Projesi                           ║
║                                                               ║
╚═══════════════════════════════════════════════════════════════╝
[MAIN] Bellek hiyerarşisi başlatılıyor...
[CACHE] 3-Seviyeli Cache Hiyerarşisi Başlatıldı:
  L1: 512 satır x 64 byte = 32 KB
  L2: 4096 satır x 64 byte = 256 KB
  L3: 131072 satır x 64 byte = 8 MB
[RAM] Başlatıldı: 4096 sayfa, sayfa boyutu: 4096 byte
[DISK] Başlatıldı: 262144 block, block boyutu: 4096 byte
[SERVER] CachePulse API Server başlatıldı: http://localhost:8080
╔═══════════════════════════════════════════════════════════════╗
║  Server hazır! Frontend'den bağlanabilirsiniz.               ║
║  http://localhost:8080                                        ║
║                                                               ║
║  Durdurmak için Ctrl+C tuşlarına basın.                      ║
╚═══════════════════════════════════════════════════════════════╝

⌨️ Klavye Kısayolları

Tuş İşlev
Enter Okuma erişimi yap
R İstatistikleri sıfırla
S Simülasyonu başlat
E Dışa aktarma menüsü
B Benchmark modalı
T Tema değiştir
L Dil değiştir
C Ayarlar modalı
? Kısayollar yardımı
Esc Modalları kapat

📡 API Endpoints

Method Endpoint Açıklama
GET /api/health Sunucu sağlık kontrolü
GET /api/statistics İstatistikleri getir
GET /api/config Yapılandırmayı getir
PUT /api/config Yapılandırmayı güncelle
POST /api/access Tekil bellek erişimi
POST /api/simulate Toplu simülasyon
POST /api/reset Sıfırla
POST /api/benchmark Politika karşılaştırması
GET /api/export Dışa aktar

🧪 API Test Örnekleri

# Sağlık kontrolü
curl http://localhost:8080/api/health

# Tekil bellek erişimi
curl -X POST http://localhost:8080/api/access \
  -H "Content-Type: application/json" \
  -d '{"address": 4096, "is_write": false}'

# Toplu simülasyon (1000 erişim, rastgele pattern)
curl -X POST http://localhost:8080/api/simulate \
  -H "Content-Type: application/json" \
  -d '{"count": 1000, "pattern": "random", "max_address": 65536, "write_ratio": 20}'

# İstatistikleri sıfırla
curl -X POST http://localhost:8080/api/reset

📊 Bellek Erişim Süreleri

Katman ⏱️ Erişim Süresi 📏 Göreceli Hız 💾 Tipik Boyut
L1 Cache 1-4 ns 1x (referans) 32 KB
L2 Cache 4-14 ns ~5x yavaş 256 KB
L3 Cache 15-40 ns ~15x yavaş 8 MB
RAM (DDR4) 50-100 ns ~40x yavaş 8-32 GB
Disk (SSD) 50-150 μs ~50.000x yavaş 256 GB+

📐 AMAT Formülü

AMAT = Cache_Hit_Time + Cache_Miss_Rate × (RAM_Hit_Time + RAM_Miss_Rate × Disk_Time)

🐛 Sorun Giderme

🪟 Windows: "make" komutu bulunamadı

Çözüm: Windows'ta make yerine mingw32-make kullanın:

mingw32-make clean
mingw32-make
🪟 Windows: "Permission denied" hatası

Çözüm: Çalışan backend sürecini durdurun:

taskkill /F /IM cachepulse.exe
mingw32-make clean
mingw32-make
🌐 Frontend backend'e bağlanamıyor

Çözümler:

  1. Backend'in http://localhost:8080 adresinde çalıştığından emin olun
  2. Firewall ayarlarını kontrol edin
  3. Tarayıcı konsolunda CORS hatası varsa backend'i yeniden başlatın
🐧 Linux: libmicrohttpd bulunamadı

Çözüm:

# Ubuntu/Debian
sudo apt install libmicrohttpd-dev

# Fedora
sudo dnf install libmicrohttpd-devel
🍎 macOS: Command Line Tools eksik

Çözüm:

xcode-select --install

🎯 Geliştirme

Branch Stratejisi

main                    ← Stabil versiyon
├── feat/cache         ← Cache modülü
├── feat/ram           ← RAM modülü
├── feat/disk          ← Disk modülü
├── feat/core          ← Entegrasyon
└── feat/frontend      ← Frontend

Commit Formatı

[MODÜL] Açıklama

Örnekler:
[CACHE] LRU algoritması eklendi
[RAM] Page table yapısı oluşturuldu
[DISK] Block okuma fonksiyonu yazıldı
[CORE] Modül entegrasyonu tamamlandı
[FRONTEND] Tema desteği eklendi
[DOCS] API dokümantasyonu güncellendi
[FIX] MinGW uyumluluk düzeltmesi

📚 Kaynaklar


📄 Lisans

Bu proje eğitim amaçlı geliştirilmiştir.


💓 CachePulse

Belleğin Nabzını Tut

Bellek Hiyerarşisi Simülatörü

About

CachePulse is a memory hierarchy simulator designed to analyze access latency and hit ratios across cache, RAM, and disk layers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors