İçeriğe atla

Kontrol akış çizelgesi

Kontrol Akış Çizelgesi (Control Flow Graph (CFG)), bir program yürütülürken içinden geçebilecek bütün yolların çizelge simgeleri kullanılarak gösterimidir.

Çizelgedeki her boğum bir temel bloğu gösterir. Kontrol akışındaki atlamaları göstermek için yönlendirilmiş ayrıtlar kullanılır.

İki özel olarak belirlenmiş blok vardır:

  • Giriş bloğu (kontrol, akış grafiğine giriş bloğundan geçerek girer.)
  • Çıkış bloğu (bütün kontrol akışları, çıkış bloğundan geçerek çıkar.)

CFG, birçok derleyici eniyilemesinin ve statik analiz gereçlerinin özüdür. Ulaşılabilirlik, eniyilemede kullanışlı olan başka bir çizelge özelliğidir.

Ulaşılabilirlik

Eğer bir blok / alt, giriş bloğunu bulunduran alt çizgeyle bağlantılı değilse, o blok herhangi bir yürütüm boyunca ulaşılmazdır ve ulaşılamaz kod güvenli bir şekilde kaldırılabilir. Eğer çıkış bloğu, giriş bloğundan ulaşılamaz ise, bu sonsuz döngüyü belirtir.

Programcı kodu açık olarak o yolla yazmazsa da, yine de ölü kodlar ve sonsuz döngüler mümkün olabilir. Sabit yayılım ve sabit katlama gibi atlama izleğiyle takip edilen eniyilemeler, çoklu temel bir bloğa çökertebilir. Bu da ayrıtların CFG'den kaldırılmasına neden olur.

Terminoloji

Bu terimler, kontrol akış çizelgelerini anlatırken çokça kullanılır:

Bloklar

  • Giriş bloğu: Bütün kontrol akışlarının akış çizelgesinin içinden geçerek girdiği blok
  • Çıkış blogu: Bütün kontrol akışlarının akış çizelgesinin içinden geçerek çıktığı blok

Ayrıtlar

  • Arka ayrıt: Grafiğin derinliğine geçmesinde bir atayı işaret eden ayrıt.
  • Kritik ayrıt: Hem kaynak bloğundan çıkan, hem e hedef bloğuna giren ayrıt. Bu ayrıtlar, ayrıta hesaplama yerleştirmek için bölünmüş olmalı (ayrıtın ortasında yeni bir blok yaratılmalı)
  • Olağan dışı ayrıt: Hedefi bilinmeyen ayrıt. Bu ayrıtlar eniyilemeyi katlamaya eğilimlidir. Ayrıklık giderimi yapıları bu ayrıtları üretebilir.
  • Olanaksız ayrıt: (Sahte ayrıt olarak da bilinir) Çizelgeye yalnızca çıkış bloğunun ütün blokları sonradan bastırma özelliğini korumak için eklenen ayrıttır. Bu ayrıtın içinden geçilemez.

Baskılayıcı

  • Baskılayıcı: Eğer girişten blok N'ye ulaşan her yol, M'den geçmek zorunda ise, M bloğu N bloğunu baskılıyor demektir. Giriş bloğu bütün blokları baskılar.
  • Anlık baskılayıcı: M bloğu, N bloğunu baskılıyorsa ve M'nin baskıladığı N'yi baskılayan müdahaleci bir P bloğu yoksa, M bloğu N bloğunu anlık baskılıyor demektir. Başka bir deyişle M bloğu N bloğuna giriş yolundaki son baskılayıcıdır. Her bloğun tek bir anlık baskılayıcısı vardır.
  • Anlık sonradan baskılayıcı: Anlık baskılayıcının bir benzeridir.
  • Baskılayıcı ağaç: Baskılayıcı bağlantıları gösteren yardımcı veri yapısı. Eğer M, N'nin anlık baskılayıcısı ise M bloğundan N bloğuna bir ark vardır. Her bloğun tek bir anlık baskılayıcısı olduğundan bu çizelge bir ağaçtır. Ağacın kökü giriş bloğundadır. Lengauer-Tarjan algoritması kullanılarak etkin bir biçimde kullanılabilir.
  • Sonradan baskılayıcı ağaç: Baskılayıcı ağacın bir benzeridir. Bu ağacın kökü çıkış bloğundadır.

Döngü

  • Döngü başlığı: Döngü oluşturan arka ayrıtın hedefi olan baskılayıcı bazen döngünün giriş noktası olarak kullanılır. Döngüdeki bütün blokları baskılar.
  • Döngü ön başlığı: Farzedelim ki M bloğu birçok gelen ayrıtla baskılayıcı, bazıları arka ayrıtla (böylece M döngü başlığı olur). M bloğunu Mpre ve Mloop olarak iki bloğa ayırmak birçok eniyilemenin geçişi için faydalıdır. M'nin ve arka ayrıtların içeriği Mloop'a aktarılır, geri kalan ayrıtlarda Mpre'ye aktarılır ve Mpre'den Mloop'a yeni bir ayrıt yerleştirilir (Mpre'nin Mloop'un anlık baskılyıcısı olması için). Başta Mpre boş olur ama döngü-değişimsiz kod devinimi gibi geçişler Mpre'yi doldurabilir.

Örnek

Aşağıdaki kod parçasını ele alalım:

  • 0: (A) t0 = read_num
  • 1: (A) if t0 mod 2 == 0 goto 4
  • 2: (B) print t0 + " is odd."
  • 3: (B) goto 5
  • 4: (C) print t0 + " is even."
  • 5: (D) end program

Yukarıda 4 tane temel blok var: 0'dan 1'e A, 1'den 3'e B, 4'te C, 5'te D. Bu örnekte; A giriş bloğu, D çıkış bloğu ve 4 ve 5 satırları aklama hedefleri. Bu kod parçası için çizilecek çizelge A'dan B'ye, A'dan C'ye, B'den D'ye ve C'den D'ye ayrıtlara sahiptir.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">IPv4</span> İnternet Protokolünün 4. sürümü

İnternet Protokol Versiyon 4 (IPv4), İnternet Protokolü'nün (IP) dördüncü versiyonudur.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">Mikrodenetleyici</span>

Mikrodenetleyici bir VLSI entegre devre çipinde küçük bir bilgisayar'dır. Mikrodenetleyici, bellek ve programlanabilir giriş/çıkış çevre birimleri ile birlikte bir veya daha fazla CPU kapsar.

<span class="mw-page-title-main">DRAM (bilgisayar)</span>

Dinamik Rastgele Erişimli Bellek, dinamik rastgele erişimli bellek bir tümleşik devre içinde her bir veri bitini ayrı bir kapasitör içinde saklayan Rastgele Erişimli Bellek türüdür. Kapasitörler yapıları gereği bir süre sonra boşalacağından yenileme/tazeleme (refresh) devresine ihtiyaçları vardır. Bu yenileme ihtiyacından dolayı DRAM, SRAM ve diğer statik belleklerin zıddı durumundadır. DRAM’in SRAM üzerindeki avantajı onun yapısal basitliğidir: 1 bit için 1 transistör ve 1 kapasitör DRAM için yeterliyken SRAM için 6 transistör gerekir. DRAM, yenileme devresinden dolayı çok yer kaplar. Güç kaynağı açık olduğu durumda DRAM ve SRAM sakladığı verileri korur bu nedenle her iki bellek aygıtı da volatiledir.

<span class="mw-page-title-main">Stratonikeia (Muğla)</span>

Stratonikeia, Muğla'nın Yatağan ilçesinde bulunan, Karya ve Roma dönemine ait antik yerleşimdir.

Internet Control Message Protocol (ICMP), hata mesajları ve TCP/IP yazılımının bir takım kendi mesaj trafiği amaçları için kullanılır. ICMP RFC 792'de tanımlanmış ve RFC 950'de revize edilmiştir. Hataları raporlamak için kullanılan, kontrol amaçlı bir protokoldür. Bu şekilde normal kullanımının yanında, uzak sistem hakkında bilgi toplamak için sıkça kullanıldığından çok önemlidir. Genel olarak sistemler arası kontrol mesajları IP yerine ICMP üzerinden aktarılır. ICMP, IP ile aynı düzeyde olmasına karşın aslında kendisi de IP’yi kullanır. ICMP' nin hata raporlamak için kullanılması, IP'yi güvenli yaptığı anlamına gelmez. Datagram, yerine ulaşmayabilir ve bununla ilgili bir hata mesajı da gelmeyebilir. ICMP mesajlarındaki hataları raporlamak için ICMP kullanılmaz. ICMP, TCP/IP' nin işlemesine yardımcı olan bir protokoldür. Her hostta mutlaka ICMP protokolü çalışır. Hata durumunda host tarafından geri bilgilendirmeyi sağlar.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

Temel blok, programlamada atlamasız veya hedef atlamasız-hedef atlamaları bloğu başlatır, atlamalar bloğu bitirir-düz çizgi kod parçalarıdır. Genelde temel bloklar, derleyici kuramda derleyici eniyilemelerin uygulandığı temel birimlerdir. Temel bloklar, kontrol akış çizelgesinde köşeleri ya da düğümleri oluştururlar.

Dolby Digital, Dolby Laboratuvarları tarafından geliştirilen veri ve ses sıkıştırma teknolojilerinin ismidir. Orijinal ismi, 1994'e kadar Dolby Stereo Digital olarak kullanılmıştır.

Yedi kalite aracı, toplam kalite yönetiminde sorun çözme tekniğine temel oluşturan yedi temel araç. Kalite yönetim araçları kişilere ve gruplara, kalite kontrol süreçlerini uygulamak, uygulanan bu süreçleri görüntülemek ve herhangi bir süreçten kaynaklanan bir problemi çözmek için destek sağlar. Yedi kalite aracı, iş problemleri analizlerine ve çözümlerine yapısal yaklaşım dolayısıyla da analizler ve çözümlerde gelişmeyi sağlar. Bu araçlar imalat süreçlerinde olduğu gibi hizmet odaklı süreçlerde de uygulanabilir. Yedi kalite aracı, takım veya gruplar tarafından uygulandığında en fazla getiri elde edilir. Böylece en kullanışlı, yani yönetim için tasarlanmış bilgiler ortaya çıkar. Bu araçlar, ürün geliştirmeden, pazarlamaya ve müşteri ilişkilerine kadar bütün üretim süreçlerinde süreç geliştirme ve müşteri memnuniyetini artırmak için uygulanabilir. Bir işletmenin ya da bir sürecin performansını geliştirmek amacıyla atılacak adımların, verilecek kararların verilere dayanması gerekir. 'Gerçeklere Dayalı Yönetim' ve 'Sürekli Gelişme' ancak; doğru, anlaşılabilir ve güvenilir veriler ile gerçekleştirilebilir.

<span class="mw-page-title-main">Erişilmez kod</span>

Erişilmez kod bilgisayar programlamada programın başka yerlerinden kontrol akışı olmayan kaynak koduna verilen addır.

<span class="mw-page-title-main">Dizi şifresi</span> simetrik anahtar şifreleme metodu

Kriptografide, bir kesintisiz şifreleme, dizi şifresi veya akış şifresi bir simetrik anahtardır. Düz metin bitlerinin bir exclusive-or (XOR) işlemi kullanılarak bir sözde rastgele şifre bit akışı ile birleştirildiği şifrelemedir. Bir akış şifresinde düz metin sayısal basamakları her seferinde bir tane şifrelenir ve ardışık basamakların dönüşümü şifreleme durumu sırasında değişir. Her bir basamağın şifrelenmesi mevcut duruma bağlı olduğundan alternatif bir isim durum şifresidir. Pratikte, basamaklar tipik olarak tek bitler veya baytlardır.

<span class="mw-page-title-main">Kriptografik özet fonksiyonu</span>

Kriptografik özet fonksiyonu çeşitli güvenlik özelliklerini sağlayan bir özet fonksiyonudur. Veriyi belirli uzunlukta bir bit dizisine, (kriptografik) özet değerine, dönüştürür. Bu dönüşüm öyle olmalıdır ki verideki herhangi bir değişiklik özet değerini değiştirmelidir. Özetlenecek veri mesaj, özet değeri ise mesaj özeti veya kısaca özet olarak da adlandırılır.

<span class="mw-page-title-main">Roket motoru</span>

Roket motoru, genellikle yüksek sıcaklıktaki gaz olan yüksek hızlı itici bir sıvı jeti oluşturmak için tepkime kütlesi olarak depolanmış roket itici gazlarını kullanır. Roket motorları, Newton'un üçüncü yasasına göre kütleyi geriye doğru fırlatarak itme üreten tepki motorlarıdır. Çoğu roket motoru, gerekli enerjiyi sağlamak için reaktif kimyasalların yanmasını kullanır, ancak soğuk gaz iticileri ve nükleer termal roketler gibi yanmayan biçimleri de mevcuttur. Roket motorları tarafından tahrik edilen araçlara genellikle roket denir. Roket araçları, çoğu yanmalı motorun aksine kendi yükseltgen taşır, bu nedenle roket motorları, uzay aracını ve balistik füzeleri itmek için bir boşlukta kullanılabilir.

<span class="mw-page-title-main">İşlev modeli</span>

Sistem ve yazılım mühendisliğindeki işlev modeli modellenen sistem veya konu alanının işlevlerinin yapısal temsilidir.

YAFFS Yeni Zelanda'daki Whitecliffs şehrinden Charles Manning tarafından Aleph One şirketi için tasarlanmış ve yazılmış bir dosya sistemi türüdür.

<span class="mw-page-title-main">Iasos</span> Antik Karya şehri

Iasos Antik Kenti, Muğla ili, Milas ilçesi, Kıyıkışlacık Mahallesi sınırları içinde, Milas ilçesinin yaklaşık 26 km batısında Ege Denizi'ne kıyısı olan Güllük Körfezi'ndeki küçük bir koyun bitiminde yer almaktadır. Antik yerleşim Iasos birçok Yunan şehri gibi kökenleriyle övünmüştür. Şehrin sakinleri iasos’un Peloponnesos’taki Argos’tan deniz yoluyla gelenler tarafından kurulduğuna inanıyordu.

Merdiven mantığı, imalat ve proses kontrolde kullanılan röle raflarının tasarımını ve yapımını belgelemek için yazılı bir yöntemdi. Röle rafındaki her cihaz, gösterilen cihazlar arasındaki bağlantılarla birlikte merdiven diyagramında bir sembolle gösterilir. Ayrıca, pompa, ısıtıcı vb röle rafının dışındaki diğer öğeler de merdiven şemasında gösterilir.