TAIOS (Türkçe ARM64 İşletim Sistemi), eğitim amaçlı geliştirilmiş sıfırdan bir ARM64 tabanlı işletim sistemi projesidir. Bu proje, işletim sistemi mimarisi ve düşük seviye programlama konularını öğrenmek isteyen öğrenciler için tasarlanmıştır.
- Eğitim Odaklı: İşletim sistemi kavramlarını öğrenmek için pratik deneyim
- ARM64 Mimarisi: Modern ARM64 işlemci mimarisini anlama
- Sıfırdan Geliştirme: Bootloader'dan kernel'e kadar her şeyi sıfırdan yazma
- Türkçe Dokümantasyon: Türkçe açıklamalar ve kod yorumları
- İşlemci: ARM64 (AArch64)
- Mimari: Cortex-A72
- Emülatör: QEMU virt machine
- Bellek: 1GB RAM
- Boot Adresi: 0x40000000
- Exception Level Geçişleri: EL3 → EL2 → EL1
- Exception Vector Table: 16 vektörlü ARM64 exception sistemi
- Stack Kurulumu: 2MB stack alanı
- FP/SIMD Desteği: Floating Point ve SIMD işlemleri
- Boot Sequence: Adım adım sistem başlatma
- Console Management: ANSI renk desteği ile terminal kontrolü
- Logo System: ASCII art ile görsel boot ekranı
- Heartbeat: Sistem çalışma durumu göstergesi
Fiziksel Bellek Yönetimi (memory.c/h)
- Bellek haritası tespiti ve yönetimi
- RAM, MMIO, Reserved, ACPI bölge tanımları
- Bellek kopyalama, sıfırlama ve karşılaştırma işlemleri
Sayfa Ayırıcı (page.c/h)
- 4KB, 2MB, 1GB sayfa boyutları
- Sayfa çerçevesi yönetimi
- Sayfa rezervasyonu ve serbest bırakma
- İstatistik takibi
Dinamik Bellek (heap.c/h)
kmalloc/kfreebenzeri API- Buddy allocator mantığı
- Heap bozulma tespiti (magic number)
- Otomatik defragmentation
- 4 Seviyeli Page Table: PGD → PUD → PMD → PTE
- Sanal Bellek: Virtual-to-physical adres çevirisi
- Memory Attributes: Normal, Device, Cacheable/Non-cacheable
- TLB Management: Translation Lookaside Buffer yönetimi
- QEMU Virt UART: PL011 UART controller desteği
- Terminal I/O: Karakter ve string giriş/çıkış
- Format Desteği: Hex, decimal, binary çıktı
- Device Management: UART cihaz tespiti ve bağlantısı
- Temel String İşlemleri: strlen, strcpy, strcmp, vs.
- Memory İşlemleri: memcpy, memset, memcmp
- Format İşleme: printf benzeri format string desteği
# ARM64 cross-compiler
sudo apt-get install gcc-aarch64-linux-gnu
# QEMU ARM64 emülatörü
sudo apt-get install qemu-system-arm# Projeyi derle
make
# Temizleme
make clean
# Yardım
make help# Normal mod
make run
# Verbose debug modu
make run-verboseÇıkış: QEMU'da Ctrl+A sonra X tuşlarına basın.
taios/
├── src/ # Kaynak kodlar
│ ├── boot.S # ARM64 bootloader
│ ├── kernel.c # Ana kernel kodu
│ ├── memory.c/h # Fiziksel bellek yönetimi
│ ├── page.c/h # Sayfa ayırıcı
│ ├── heap.c/h # Dinamik bellek yönetimi
│ ├── mmu.c/h # Memory Management Unit
│ ├── uart.c/h # UART driver
│ └── string.c/h # String yardımcı fonksiyonlar
├── build/ # Derleme çıktıları (otomatik oluşur)
├── Makefile # Derleme sistemi
├── linker.ld # ARM64 linker script
└── README.md # Bu dosya
- Cross-compilation: aarch64-elf-gcc kullanımı
- Freestanding: Standart kütüphane bağımsız
- Optimization: Cortex-A72 için optimize edilmiş
- Debug Support: Debug sembolleri ve verbose mod
- Memory Layout: QEMU virt machine için optimize edilmiş
- Section Alignment: 4KB hizalama
- Stack Allocation: 2MB stack alanı
- Symbol Export: Kernel için gerekli semboller
-
ARM64 Assembly Programlama
- Register kullanımı
- Exception level yönetimi
- Memory barrier'lar
-
Bootloader Geliştirme
- CPU initialization
- Memory setup
- C runtime hazırlığı
-
Kernel Geliştirme
- Interrupt handling
- Memory management
- Device drivers
-
Bellek Yönetimi
- Physical memory management
- Virtual memory systems
- Page tables ve MMU
-
System Programming
- Hardware abstraction
- Device driver development
- System call interface
- Tüm kodlar Türkçe yorumlarla açıklanmıştır
- Eğitim amaçlı debug fonksiyonları mevcuttur
- Adım adım boot sequence takibi
- Bellek layout görselleştirme
// Bellek yönetimi testi
test_memory_management();
// Heap testleri
heap_get_stats();
heap_defrag();
// MMU debug
mmu_print_page_tables();- UART Debug Output: Serial console üzerinden debug
- Memory Layout Print: Bellek haritası görüntüleme
- Page Table Dump: MMU page table içeriği
- Heap Statistics: Dinamik bellek kullanım istatistikleri
- ASCII art logo
- Renkli terminal çıktısı (8 temel renk)
- Progress indicators
- System ready bildirimi
- ANSI escape sequences
- Color management
- Cursor control
- Screen clearing
- Operating Systems: Three Easy Pieces
- Modern Operating Systems (Tanenbaum)
- The Design and Implementation of FreeBSD
Bu proje eğitim amaçlıdır ve öğrencilerin katkılarını beklemektedir:
- Bug Reports: Hataları bildirin
- Feature Requests: Yeni özellik önerileri
- Documentation: Türkçe dokümantasyon iyileştirmeleri
- Code Improvements: Kod kalitesi artırımı
Bu proje eğitim amaçlı olarak geliştirilmiştir. Öğrenme ve araştırma amaçlı kullanım serbesttir.
make run-verboseile detaylı çıktı alın- UART üzerinden debug mesajlarını takip edin
- Memory layout'u sık sık kontrol edin
- Heap corruption için magic number'ları kullanın
TAIOS - Türkçe ARM64 İşletim Sistemi ile ARM64 işletim sistemi geliştirmenin temellerini öğrenin!