Skip to content

toprakdeviren/taios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TAIOS - Türkçe ARM64 İşletim Sistemi

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.

Proje Hedefleri

  • 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ı

Mimari Özellikler

Hedef Platform

  • İşlemci: ARM64 (AArch64)
  • Mimari: Cortex-A72
  • Emülatör: QEMU virt machine
  • Bellek: 1GB RAM
  • Boot Adresi: 0x40000000

Sistem Bileşenleri

1. Bootloader (boot.S)

  • 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

2. Kernel Core (kernel.c)

  • 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

3. Bellek Yönetimi

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/kfree benzeri API
  • Buddy allocator mantığı
  • Heap bozulma tespiti (magic number)
  • Otomatik defragmentation

4. MMU (Memory Management Unit)

  • 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

5. UART Driver (uart.c/h)

  • 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ı

6. String Utilities (string.c/h)

  • Temel String İşlemleri: strlen, strcpy, strcmp, vs.
  • Memory İşlemleri: memcpy, memset, memcmp
  • Format İşleme: printf benzeri format string desteği

Kurulum ve Çalıştırma

Gereksinimler

# ARM64 cross-compiler
sudo apt-get install gcc-aarch64-linux-gnu

# QEMU ARM64 emülatörü
sudo apt-get install qemu-system-arm

Derleme

# Projeyi derle
make

# Temizleme
make clean

# Yardım
make help

Çalıştırma

# Normal mod
make run

# Verbose debug modu
make run-verbose

Çıkış: QEMU'da Ctrl+A sonra X tuşlarına basın.

Proje Yapısı

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

Build Sistemi

Makefile Özellikleri

  • 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

Linker Script Özellikleri

  • 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

Eğitim İçeriği

Öğrenilecek Konular

  1. ARM64 Assembly Programlama

    • Register kullanımı
    • Exception level yönetimi
    • Memory barrier'lar
  2. Bootloader Geliştirme

    • CPU initialization
    • Memory setup
    • C runtime hazırlığı
  3. Kernel Geliştirme

    • Interrupt handling
    • Memory management
    • Device drivers
  4. Bellek Yönetimi

    • Physical memory management
    • Virtual memory systems
    • Page tables ve MMU
  5. System Programming

    • Hardware abstraction
    • Device driver development
    • System call interface

Kod Yapısı ve Yorumlar

  • 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

Test ve Debug

Built-in Testler

// Bellek yönetimi testi
test_memory_management();

// Heap testleri
heap_get_stats();
heap_defrag();

// MMU debug
mmu_print_page_tables();

Debug Araçları

  • 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

Görsel Özellikler

Boot Screen

  • ASCII art logo
  • Renkli terminal çıktısı (8 temel renk)
  • Progress indicators
  • System ready bildirimi

Console Features

  • ANSI escape sequences
  • Color management
  • Cursor control
  • Screen clearing

Kaynaklar

ARM64 Dokümantasyonu

İşletim Sistemi Kaynakları

  • Operating Systems: Three Easy Pieces
  • Modern Operating Systems (Tanenbaum)
  • The Design and Implementation of FreeBSD

Katkıda Bulunma

Bu proje eğitim amaçlıdır ve öğrencilerin katkılarını beklemektedir:

  1. Bug Reports: Hataları bildirin
  2. Feature Requests: Yeni özellik önerileri
  3. Documentation: Türkçe dokümantasyon iyileştirmeleri
  4. Code Improvements: Kod kalitesi artırımı

Lisans

Bu proje eğitim amaçlı olarak geliştirilmiştir. Öğrenme ve araştırma amaçlı kullanım serbesttir.

Debug İpuçları

  • make run-verbose ile 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!

About

Sıfırdan, eğitim amaçlı Arm64 tabanlı işletim sistemi geliştirme

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published