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.
| Ö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ı |
┌─────────────────────────────────────────────────────────────────┐
│ 🌐 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 │ │ │
│ │ └────┘ └────┘ └────┘ └─────────┘ └─────────┘ │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
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
| 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 | ||
# 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 npmcd backend
make clean
make
./bin/cachepulsecd frontend
npm install
npm run devhttp://localhost:5173
# 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 nodecd backend
make clean
make
./bin/cachepulsecd frontend
npm install
npm run devhttp://localhost:5173
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\binSeçenek B: Doğrudan MinGW
# https://www.mingw-w64.org/ adresinden indir
# Kurulum sonrası PATH'e ekle# https://nodejs.org/ adresinden LTS versiyonu indir ve kur
# Veya winget ile:
winget install OpenJS.NodeJS.LTScd backend
# Temizle ve derle
mingw32-make clean
mingw32-make
# Çalıştır
.\bin\cachepulse.exe
⚠️ Önemli: Windows'tamakeyerinemingw32-makekullanın!
cd frontend
npm install
npm run devhttp://localhost:5173
| Terminal 1 (Backend) | Terminal 2 (Frontend) |
|---|---|
|
Linux / macOS: cd backend
make && ./bin/cachepulseWindows: cd backend
mingw32-make
.\bin\cachepulse.exe |
Tüm Platformlar: cd frontend
npm install
npm run dev |
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. ║
╚═══════════════════════════════════════════════════════════════╝
| 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 |
| 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 |
# 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| 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 = Cache_Hit_Time + Cache_Miss_Rate × (RAM_Hit_Time + RAM_Miss_Rate × Disk_Time)
🪟 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:
- Backend'in
http://localhost:8080adresinde çalıştığından emin olun - Firewall ayarlarını kontrol edin
- 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 --installmain ← Stabil versiyon
├── feat/cache ← Cache modülü
├── feat/ram ← RAM modülü
├── feat/disk ← Disk modülü
├── feat/core ← Entegrasyon
└── feat/frontend ← Frontend
[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
- 📖 Computer Architecture: A Quantitative Approach
- 📖 Operating Systems: Three Easy Pieces
- 📖 Vue.js 3 Documentation
- 📖 libmicrohttpd Documentation
- 📖 Chart.js Documentation
Bu proje eğitim amaçlı geliştirilmiştir.