/BMB311_OS

NKÜ Bilgisayar Mühendisliği BMB311 Isletim Sistemleri Dersi Uygulama Notları, Projeleri ve Ödevleri

BMB311 Uygulama Notları, Projeleri ve Ödevleri

Bu repo'da uygulama derslerine ait materyallere (ders notlari, odev bilgileri, proje bilgileri, duyurular vb.) ulasabilirsiniz.

DUYURU

Proje 0 (Ekstra Proje) ilan edilmistir.

Detaylar

Iletisim

Ars. Gor. Güvenç Usanmaz

Oda: B207

Bolum: Bilgisayar Muhendisligi

Email: gusanmaz <att< nku nokta edu nokta tr

Onerilen Kaynaklar

Isletim Sistemleri

Komut Satiri ve Kabuk Programlama

C Programlama

Onerilen Linux Dagitimlari

Linux Kurulumu

  • Dual-boot
  • Single-boot
  • Sanal makine (Virtual Box, WMvare)
  • Windows Subsystem for Linux (WSL)
  • Virtual Private Server (VPS)
  • B205 (?)
  • Cygwin (?)
  • Repl.it

AWS'de Linux Istance'i Olusturma

https://github.com/Mona-Roza/Notes/tree/main/About%20Server%20%26%20About%20Linux

Oracle VM VirtualBox Üzerine Debian Linux Kurulumu

https://medium.com/@zeynepssasmaz953/oracle-vm-virtualbox-u%CC%88zerine-debian-linux-kurulumu-2c87dbe64aa9

Kurulumda Dikkat Edilecekler

  • Onemli Verilerin Yedeklenmesi
  • BIOS Boot Oncelikleri
  • Disk Bicimlendirme (Gparted vb.)
  • Once Windows, sonra Linux Kurulumu (?)
  • USB ISO Creator (Etcher, UnetBootin)
  • Legacy boot vs. UEFI
  • Secure boot

Beklentiler

  • Github hesabi acmak
  • Bilgisayara Linux dagitimi kurmak
  • Github Discussion sayfasinda aktif olmak
  • Bu sayfayi duzenli araliklarla kontrol etmek
  • Bu sayfada ilan edilecek proje ve odevlerde istenilenleri yapmak
  • Universite email hesabinizi duzenli araliklarla kontrol etmek.

Proje Notlandirmalari

  • Proje 1

  • Proje 2

  • Proje 3

  • Proje 4

  • Tablolarda her satirda odev gonderen bir ogrencinin o projedeki testlerdeki basari durumu gorulebilir.

  • REPO URL'sinden o ogrencinin proje icin gonderdigi main.c dosyasina ve uygulanan testlerle ilgili detayli bilgiler iceren json dosyasina erisilebilmektedir.

  • Kodlari test etmek icin kullanilan programin kodlarina https://github.com/gusanmaz/gracode baglantisindan erisebilirsiniz.

Proje Test Dosyalari

  • Proje 1

  • Proje 2

  • Proje 3

  • Proje 4

  • Test dosyalari commands.sh isimli Bash scripti dosyalarina yazilmistir.

  • gracode.json isimli dosyada testlerin puan bilgisi, her test icin ogrencinin kodunun, referans kod ile karsilastirmasi icin hangi Python fonksiyonunun kullanilacagi gibi bilgiler yer almaktadir.

  • Referans kod ile ogrenci kodunun ciktilarinin (stdout ve stderr) karsilastirilmasi icin kullanilan Python fonksiyonlarini funcs.py dosyasindan erisebilirsiniz.

Referans Proje Kodlari

Performans Analizi

  • Her odev icin perf komutu ile performans analizi yapilmistir. Bu komutun kodunuz icin urettigi ciktiya ilgili json dosyasindan erisebilirsiniz.
  • Kodlarin notlandirilmasinda kodlarin performansi kriter olarak kullanilmamistir.
  • Bununla birlikte her testin belli bir surede tamamlanmasi beklenmektedir. Her test icin ayri belirlenen bu sureleri commands.sh dosyalarini inceleyerek gorebilirsiniz. Eger JSON dosyasinda bir test icin timeout degeri True gozukuyorsa ilgili kodun testte verilen maksimum sure icinde calismasini bitiremedigi anlasilmalidir.

Tablo Okuma

  • Mouse imlecini tablolarin basligindaki testlerin uzerine getirerek referans kodun o test icin urettigi ciktiyi (stdout, stderr) gorebilirsiniz.
  • Ayni sekilde belirli bir sekilde ogrenci icin mouse imlecini testlerin uzerine getirerek ilgili kodun o test icin urettigi ciktiyi (stdout, stderr) gorebilirsiniz.
  • stdout ve stderr ciktilarinin cok uzun olmasi durumunda bu ciktilari tablo uzerinde goremeyebilirsiniz. Bu durumda ilgili ciktilara ilgili JSON dosyasindan erisebilirsiniz.
  • Tablolarda sadece kurallara uygun gonderim yapan ogrencilerin isimleri gozukmektedir.
  • Tablolardaki satirlar ogrenci numarasina gore siralidir.
  • Tablolardaki son test aslinda bir test degildir! Ilk proje disindaki projelerde son testte perf komutu calistirilmaktadir. Tablodaki butun ogrenciler icin bu test basarili gozukmektedir. Bu test basarili olmanin projeden alinan toplam puana katkisi 0'dir.

JSON

  • https://github.com/gusanmaz/BMB311_OS/blob/main/docs/codes/masked/ altindaki bir json dosyasini incelemek istiyorsaniz bu dosyayi once bilgisayariniza indirmeniz veya JSON verisinin tamamini bilgisayarinizda bir metin editorune kopyalayip, json uzantisiyla kaydetmeniz tavsiye edilir.
  • Daha sonra bilgisayarindaki bu JSON dosyasini bir JSON Goruntuleyici program yardimiyla daha rahat goruntuleyebilirsiniz.
  • Pek cok ucretsiz JSON Goruntuleyici (JSON Viewer) program bulunmaktadir.
  • JSON dosyalarinin goruntulemek icin Mozilla Firefox internet tarayicisini da kullanabilirsiniz.

Beklenilenden Dusuk Not Alma Nedenleri

  • Olusturulan repoya ogrenci_no.txt isimli dosya eklememek
  • Olusturulan repodaki kodlari main.c isimli dosya haricinde bir dosyaya yazmak.
  • Proje aciklamalarinda argumanlarin komut satirindan alinacagi belirtilmesine ragmen scanf gibi fonksiyonlarla kullanicidan input almaya calismak
  • Her bir proje icin ayri bir repo davet linki verilmesine ragmen butun proje kodlarini tek bir repoya yuklemek
  • Gonderilen kodun derlenmemesi

Proje Notlandirma Detaylari

  1. proje 100
  2. proje 130
  3. proje 145
  4. proje 120

puan uzerinden degerlendirilmistir.

  1. proje https://github.com/gusanmaz/BMB311_OS/tree/main/proje3-test-dosyalari baglantisindaki metin dosyalari kullanilarak test edilmistir.
  • Otomatik degerlendirme programi Fedora Linux 37 uzerinde gcc 12.2.1 kullanilarak calistirilmistir.