30 Nisan 2008 Çarşamba

JK Flip Flop ile 4 bit sayaç devresi..



Yanda 555 entegresi ile yapılan sinyal üretecinden giriş tetiği alan 7476 JK Flip Flop entegresi ile yapılmış 16 lık sayaç görülüyor. Sayaç çıkışında 4 adet led sürülürken bir yandan da BCD çıkış 7446 entegresi ile 7 segmentli displaye aktarılıyor..

Ferhat Umut Dizdar

24 Nisan 2008 Perşembe

MakeFile...

Linux konsolundan make komutu verildiğinde içinde bulunulan dizin içerisinde makefile dosyası aranır ve bulunur ise çalıştırılır.
Compiler kaynak dosyaları alır ve hedef dosyaları üretir
Linker ise hedef dosyaları alıp çalıştırılabilir dosyaları üretir.
Temel makefile şöyledir;

hedef:bağımlılıklar
[tab]sistem komutları

g++ yi düşündüğümüzde -c parametresi "compile et ve birleştir ama link etme" derken -o parametresi "çıktı dosyasın bu olacak" demektir.

Örnek olarak üç dosyamız olduğunu düşünelim: merhaba.h merhaba.cc ve program.cc..
---merhaba.h---
void merhabaDeBize();
void hoscakalDeBize();

---merhaba.cc---
#include "merhaba.h"
#include iostream // bunu küçük büyük işareti içine al

using namespace std;

void merhabaDeBize(){
cout << "Merhaba" << style="color: rgb(255, 102, 102);">---ana.cc---
#include "merhaba.h"
#include iostream // bunu küçük büyük işareti içine al

int main(){
merhabaDeBize();
hoscakalDeBize();
return 0;
}

Eğer ana.cc dosyasını "g++ ana.cc" şeklinde derlemeye çalışırsanız olmayacaktır. Çünkü ana.cc içerisinde kullanılan merhabaDeBize ve hoscakalDeBize fonksiyonları merhaba.h header dosyasında tanımlanmış ve merhaba.cc dosyasında da ne yapacakları belirlenmiştir. Ancak ana.cc yi derlemeye kalkan compiler ın bundan haberi yoktur. Derleyebilmek için ise "g++ ana.cc merhaba.cc" dememiz a.out isimli çalıştırılabilir dosyayı üretmemizi sağlar. a.out dosyasını çalıştırabilmek için ise konsolda "./a.out" yazmalıyız.
Burada ki "./" a.out dosyasının içinde bulunulan klasörde olduğunu ifade eder.

Tekrar makefile a dönelim;
Temel olarak makefile içerisindeki hedefler karşılaşılma sıralarına göre çalıştırılırlar. Programımızı derleyecek makefile şöyle olmalıdır;

---makefile---
all: tumunuDerle
# "all" makefile dosyaları için temel hedeftir.

# (1) tumunuDerle ye gidecek

# (2) ana.o ve merhaba.o hedeflerine git
tumunuDerle: ana.o merhaba.o
g++ ana.o merhaba.o -o selamPrg
# (5) merhaba.o ve ana.o yu kullanarak
#slmPrg çalıştırılabilirini oluştur..

ana.o: ana.cc
g++ -c ana.cc
# (3) sadece ana.cc yi compile et


merhaba.o: merhaba.cc
g++ -c merhaba.cc
# (4) sadece merhaba.cc yi compile et


22 Nisan 2008 Salı

Random Drop..

Random Drop : Düşürülmesi için rastgele seçilen paketlerin, yoğun olarak paket gönderen kullanıcılara ait olma olasılığının daha yüksek olması fikrine dayanır. Son gelen paket değil, kuyrukta mevcut olan paketlerden rastgele birisi atılır. Slow-Start kullanmayan göndericilerin, kullananlara göre çok daha fazla kaynak kullanmaları ile sonuçlanır. Kuyruk boyu 2000 ve drop olasılığı 0,001 ise 200 de 1 oranında düşürme yüzdesi vardır.

Early Random Drop..

Early Random Drop – Hashem – Kuyruk boyu önceden belirlenen bir drop level değerini aşarsa, gelen paketler yine önceden belirlenen bir drop probability ye göre düşürülür. İleri ki uygulamalarda drop level ve drop probability ağ yoğunluğuna göre otomatik olarak ayarlanabilecektir. Gücünün temelinde, Drop Tail gatewaylerde kuyruk boyu aşıldığında bütün paketlerin düşürülmesi sonucu paket gönderimi yapan kaynakların, window boyutlarını toplu halde düşürmeleri ve bu nedenle az önce sıkışıklık yaşanan gateway de bu kez de büyük bir kaynak israfı yaşanacağı fikri vardır. ERD de ise, sadece rastgele seçilerek düşürülen paketlerin göndericiler window boyutlarını yeniden düzenleyecek ve böylece kaynak israfının önüne geçilecektir.

Queue vesaire..

Round-Robin : First Come First Served tersidir. Farklı kuyruklara ayrılmış paketlerin dönüşümlü olarak aktarılmasını sağlar. Boyutları farklı paketlerden oluşan kuyruklar için iyi değildir çünkü paket boyutu gözetilmeksizin önceden belirlenen N adet paket gönderilir..

Fair Queueing : Paketler gönderici-alıcı çiftine göre ayrı kuyruklara alınır. Round robin ilkesi ile paketler gönderilir. Çakışma olursa, en uzun kuyruktaki paketler düşürülür. Uzun boylu paketlerin daha çok bant genişliği kullanması ile sonuçlanır. Örneğin birim zamanda bir paket gönderilmesine izin veriliyor ise, uzun paketlerin göndericileri daha uzun süre hat sahibi olmuş olurlar.

Bit-Round Fair Queueing : Round robin yerine bit-by-bit round robin kullanılır. Böylece paket boyutları arasındaki farklılıkların yarattığı sorunlar ortadan kaldırılır.

MDRR

Her turda kuyruklardan belirlenen miktarda byte gönderilir. Quantum değeri ayarlanan byte miktarıdır yani bir turda kuyruktan gönderilmesine izin verilecek ortalama byte miktarıdır. Deficit counter ise her kuyruktan sırası geldiğinde gönderilen byte miktarını tutar. Bunun nedeni eğer gönderilen byte miktarı bir turda aşılırsa öteki turda daha az veri göndererek ortalamayı yani quantumu tutturmaktır.

Bandwidth Broker ve NS2

Bu konuda söyleyecek bir şeyim yok valla..
Ne işmiş bu yaw.
Neyse linux ta, iki dosya arasındaki farkları merak ettiğinizde dosyaları yan yana iki pencere halinde açıp "ehe, ööö, iiih" şeklinde gözlerinizi kısa kısa aramanıza gerek yokmuş. Ben de bir süre böyle yaptıktan sonra farkettim ki bu linuxun diff diyen bir uygulaması var. Arkadaş sizin için nerede ne değişmiş, hangi satır silinmiş, hangisi eklenmiş söylüyor. Hatta arkadaşlar sağ olsunlar arayüzünü bilem yapmışlar;
kompare -caption "%c" %i %m -o %U yazın konsola ne güzel açılıyor valla..
İşimi çok kolaylaştırdı çoook.
Da, ben şu bandwidth broker olayını bir anlayamadım gitti...