/proc bir sanal dosya sistemi olduğu için çok özeldir. İşlem bilgisi psüdo-dosya sistemi olarak da anılır. 'Gerçek' dosyalar bulundurmaz fakat sistem bilgisi (örn. sistem hafızası, bağlı cihazlar, donanım konfigürasyonu, vs.) bulundurur. Bu sebepten dolayı çekirdek için bir kontrol ve bilgi merkezi olarak düşünülebilir. Aslında, bir çok sistem bu dizindeki dosyalara çağrı yapar. Örneğin; 'lspci' komutu 'cat/proc/pci' komutunun eş anlamlısıyken, 'lsmod' komutu 'cat/proc/modules' ile aynıdır. Bu dizindeki dosyaları düzenleyerek sistem çalıştığı anda çekirdeğin parametereleri okunup düzenlenebilir.
Bu dizindeki dosyaların en ayırt edici özelliği, hepsinin dosya boyutunun 0 olmasıdır(kcore, mtrr ve self hariç.)
Dört İşlem Yapan Proc Uygulaması
Sistem proglamlama dersinde aldığımız bu grup ödevinde bizdenen istenenler aşağıdaki gibidir:
"Ödevde toplama, çıkarma, çarpma, bölme işlemlerini, işleme alınacak sayıları parametre olarak alan ve sonucu loga yazan bir proc uygulaması yapılacak. Örneğin uygulama ismi dortislem olsun ve terminale;
echo 3 + 5 > dortislem
girildiğinde 3 + 5 = 8 sonucunu log’a yazmış olacak."
proc.c Dosyası
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <asm/uaccess.h>
Makefile Dosyası
Uygulama
1-) İlk olarak terminal
açılır , Makefile ve c uzantılı kaynak kodun bulunduğu dizine girilir.
2-) $ make à komutuyla Makefile dosyası içinde belirtilen objeler oluşturulur.
3-) Makefile dosyası derlendikten
sonra modülü eklemek için aşağıdaki komut kullanılır.
$ sudo insmod proc.ko
4-) Modülün
eklenip,eklenmediğini kontrol etmek için aşağıdaki komut ile loga bakılır.
$ dmesg
c uzantılı
kaynak kod dosyanızda modül eklemenin başarılı olduğu durumda dosyadaki ilgili printk komutlarının içerdiği metinler log dosyasının sonuna eklenir.
5-) ‘home’ dizinine gittikten
sonra
$ su à komutuyla root’a giriş
yapılır.
6-) ‘proc’ ların bulunduğu dizine
gidilir.
7-) Ödevde istendiği gibi aşağıdaki
komutla sayıları ve işlemi parametre olarak alıp ; dortislem ‘e gönderir.
# echo 4 + 5 > dortislem
# dmesg komutuyla loglara bakılır.
Ve
görüldüğü gibi parametreleri ve sonuç loga yazılmış olur.
8-) Diğer 3 aritmetik işlemi
(çıkarma, çarpma, bölme) de test etmek için adım 7 aşağıdaki gibi
tekrarlanır.
Çıkarma
işlemi:
Çarpma
işlemi:
Bölme
işlemi:
Geçersiz
parametre girildiğinde ise:
9-) Aşağıdaki komutla modül
kaldırılır.
# sudo rmmod proc.ko
Modulün
kaldırıldığından emin olmak içinde, kaldırmanın başarılı olduğu durumda
yazdırdığınız herhangi bir metin varsa ‘dmesg’ komutuyla log’a bakılıp
anlaşılabilir.
Ödev Grup Arkadaşlarım:
İlyas Tunç Aşlamacı (Grup lideri)
Hiç yorum yok:
Yorum Gönder