Asenkron Programlama

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Asenkron Programlama"

Transkript

1 Asenkron Programlama Hazırlayan : Umut Rıza ERTÜRK Tarih : Ekler: asenkronprogramlama_ornek.jar asenkronprogramlama_ornek_kaynak.jar - 0 -

2 Đndex Asenkron Programlama Đndex Tanım Đşletim Dizileri (threads) Monitor Kavramı ve Kullanımı Đşletim Dizileri (threads) ve Asenkron Görevler Bir Senkron Asenkron Programlama Karşılaştırması (Synchronous versus asynchronous programming) JAVA ĐLE PARALEL PROGRAMLAMA ÖRNEĞĐ Program Arayüzü-Tanımı: Programın Çalıştırılması ve Sonuçları Örnek Örnek Örnek Kullanılan programlar: Kullanılan Donanım: Kaynakça, Yararlanılan internet siteleri: Yararlanılan Kitap:

3 Tanım Genel anlamıyla asenkron (asynchronous, okunuşu ay- SIHN-kro-nuhs; yunanca da asyn- olumsuzluk anlamında, chronous ise zaman anlamındadır); zamanlanmamış objeleri veya olayları ifade etmek için kullanılan sıfattır. Bu tanımı biraz daha belirgin bir hale getirecek olursak; zamanlanmamış demekle olay için oluşma anının obje içinse kullanılma/meydana gelme anının belli olmadığı ifade edilmeye çalışmaktadır. Bilgi teknolojilerinde ise asenkron sıfatı farklı çağrışımlar yapmaktadır. 1. Telekomünikasyon da birden çok network arasında veya bir network içinde, asenkron sinyal; başka bir sinyale göre farklı saat aralığında iletilen sinyal anlamındadır. Ancak bu bizim konumuz dışında olduğu için incelenmeyecektir. 2. Bilgisayar programları açısından ise asenkron işlem; diğer işlemlerden bağımsız zamanlamayla çalışan işlem anlamında kullanılmaktadır. Halbuki klasik programlama anlayışı olan senkron programlamaya göre bir işlem ancak bir başka işlemin sonucu veya yolu ile çalışabilmektedir

4 - 3 -

5 Yukarıdaki çizimlerde gösterilen a() ve b() farklı amaçlarla çalışan görevleri temsil etmektedir. Đlk örnekte b() işleminin çalışması tamamıyla a() işlemi tarafında çağrılma anına bağlıdır. Đkinci örnekteyse b() işlemi a() işleminden zamanlama gereksinimi duymadan çalışabilmekte ve sonlanabilmektedir. Bu noktada akla gelebilecek ilk soru a() ve b() işlevlerinin her ikisi birden tarafından kullanılan bir alanın kullanımının kontrolü ve tutarlılığının nasıl sağlanacağıdır. Senkron bir programlama anlayışı açısından bakıldığında sorun boyut değiştirmekte ve çözülmesi gereken sorun ortak kullanılan alanların her iki işlem için nasıl ortak kılınacağıdır. Bu sorunu çözmek amacıyla senkron işleyiş içinde bellek adresleri aktarımı yapılmakta ve bu sorun ortadan kalkmaktadır. Asenkron işleyiş içinde ise ortak kullanımda olan alanların işlemler arasında bir anlaşma şeklinde istenilen şekilde düzenlenmesi için kilit (lock) kavramı ortaya atılmıştır. Ancak bu anlayışında kendine göre çıkmazları bulunmaktadır. Buna en kolay örnek sonlandırıcı kilitlenme (dead lock) dir. Bu kilitlenmede iki görev birbirleri açısından kritik alanları kilitlemekte ve kilitlenmeye uğrayan bu görevler de bu kritik kaynakları açacak başka bir görev olmadığından zaman gecikmesi(time out) sonucu sonlandırılmaktadır. Bu tür kilitlenmelerden korunmak için farklı algoritmalar ortaya atılmıştır. Đşletim Dizileri (threads) Görev bir programın işletimine verilen addır. Kimi programlar, yerine getirdikleri işlev açısından koşut işletilebilecek kesimler içerir. Bu kesimlerin tek bir program içinde yer almaları ardı ardına işletilmelerini zorunlu kılar. Koşut işletilebilir her kesim için ayrı bir program öngörüp bunları koşut işletmek ve bu yolla işletimi hızlandırmak ve verilen hizmetin niteliğini arttırmak mümkünüdür. Ancak ortak bir amaca(işleve) dönük değişik kesimlerin ayrı programlar tarafından ele alınması, bu kesimlere ana bellekte işletim sistemi tarafından ayrı adres (kod ve veri) alanları ayrılması sonucunu doğurur ve söz konusu kesimlerin ortak verileri paylaşmalarını zorlaştırır. Bu paylaşım çoğunlukla bir programın adres evreninden diğer bir programın adres evrenine veri aktarma yoluyla gerçekleşir. Örneğin UNIX - 4 -

6 işletim sisteminde koşut çalışan iki ayrı programın(görevin) veri alışverişi, genelde bir adres evereninden diğer bir adres evrenine veri aktarımı yapan pipe ve fifo gibi kimi görevler arası veri iletişim araçları(sistem çağrıları) ile, işletim sistemi ve sistem kaynakları yönünden pahalı bir biçimde mümkün olabilmektedir. Bu durum aslında işletim sisteminin her görevi tek bir işletim dizi gibi görmesinden kaynaklanmaktadır. Tek bir program içinde birden çok koşut çalıştırılabilir işletim dizisi öngörülebilmesi durumunda bu dizilerin aynı adres evrenini paylaşması ve bu yolla veri alışverişinin kolaylaştırılması sağlanır. Bir program içinde yer alan koşut çalıştırılabilir kesimler işletim dizileri(threads) olarak adlandırılır. Bu bağlamda görev, ilgili işletim dizlerinin çalıştığı ortak bir işletim alanı olarak düşünülür. Đşletim sistemi, ana bellek, giriş/çıkış (kütükler) gibi sistem kaynaklarını görevler düzeyinde atar ve o düzeyde izler. Bir görev içinde tanımlı işletim dizileri söz konusu bu kaynakları paylaşırlar. Ancak işletim dizi olarak tanımlanmış her kesimin kendine özgü bir program sayacı bulunur. Bu yolla ana işlem birim(ler)ine ayrı ayrı anahtarlanarak koşut bir biçimde işletilebilirler. Bir göreve ilişkin işletim dizilerinin ana işlem birimine anahtarlanmaları görev anahtarlama ya göre daha dar kapsamlı dolayısıyla hızlı ve daha ucuz bir yol olan bağlam anahtarlama yoluyla gerçekleşir. Đşletim dizileri, aynı görevler gibi, işletimleri sırasında hazır, bekler, çalışır gibi durumlarda bulunurlar. Đşletim dizilerinin yönetimi genelde, kullanıcı evreninde yada işletim sistemi evereninde olmak üzere iki değişik biçimde gerçekleşir. Eğer yönetim kullanıcı evreninde ele alınıyorsa işletim sistemi işletim dizilerinin varlığından habersizdir. Bu durumda kullanıcı evreninde çalışan bir yönetim paketi bir görev içinde tanımlanmış değişik işletim dizilerinin yönetimini üstlenir. Bir işletim dizisi herhangi bir sebepten işletimi bıraktığında, aynı görev içinde tanımlı hangi işletim dizisinin işletime alınacağını, ilgili görevle birlikte işletimde bulunan söz konusu yönetim paketi belirler. Aynı yönetim paketi birden çok işletim dizisi içeren programlar tasarlanırken, programcılara işletim dizisi tanımlama, çalıştırma, - 5 -

7 durdurma, zamanuyumlama gibi işlevleri de sağlarlar. Başka bir değişle bu tür programlar tasarlanırken ilgili paketin tanım ve işlevleri kullanılır. POSIX P-Threads ve Mach C-Threds, günümüzde bu tür işletim dizisi yönetim paketlerine verilebilecek adlardır. Kimi modern işletim sistemleri, görevlerin yanı sıra görevler altında yer alan işletim dizlerinin yönetimini de üstlenir. Çok işletim dizili işlem (multi-thread), bu durumda işletim sisteminin bu amaçla sağladığı sistem çağrıları kullanılarak gerçekleştirilir. Windows NT böyle bir işletim sistemine verilebilecek en belirgin örnektir. Çok işletim dizili işlemin, kullanıcı evreni yönetim paketleriyle mi yoksa işletim sisteminin sağladığı araçlarla mı ele alınması gerektiği halen tartışılan bir konudur. Her iki yaklaşımın da kendine özgü üstünlükleri ve sakıncaları söz konusudur. Bununla birlikte UNIX gibi çok yaygın kullanımı olan işletim sistemlerinde çok işletim dizili işlem, yukarıda anılan kimi yönetim paketleriyle gerçekleştirmenin dışında da başkaca bir seçenek mevcut değildir. Monitor Kavramı ve Kullanımı Monitor, birlikte çalışan görevlerin, ortak kaynağa erişim yapan yordamlarının (kritik kesilmelerinin) toplandığı kümeye verilen addır. Görevlerin ortak kaynağa erişimlerini denetim altında tutmanın bir yolu da bunların, kritik kaynaklara merkezi bir denetim altında erişmelerini sağlamaktan geçer. Monitor kavramının temelinde bu ilke yatar. Birlikte çalışan görevler programlanırken ortak kaynağa erişim yapacak yordamlar özel bir kümede toplanır. Bu kümenin tüm görevlerce bilinen özel bir adı bulunur. Đşletim aşamasında bir görev ortak kaynağa erişmek istediğinde, ilgili yordamı bu kümeden çağırır. Programlama aşamasında bu küme özel bir tür olarak, monitor biçiminde tanımlandığından, derleme aşamasında bu kümenin başına, karşılıklı dışlamayı sağlayacak gerekli karşılıklı dışlamayı sağlayacak dışlama komutları derleyici tarafından eklenir. Bu yolla bu kümeden aynı anda birden çok görevin yordam çağrısına izin verilerek ortak kaynağa aynı anda ençok bir görevin erişim yapması sağlanır. Görevlerin monitor da yer alan bir yordamı - 6 -

8 çağırmaları monitora girmeleri olarak nitelenir. Bir görev monitor içindeki bir yordamın işletimini tümüyle tamamlamadan diğer bir görev monitor içinden yordam çağıramaz. Başka bir değişle bir görev monitorun içinde iken başka bir görev monitora giremez. Bu amaçla monitora ilişkin bir bekleme kuyruğu da öngörülür. Yukarıda verilen açıklamalardan da anlaşılacağı gibi monitor bir programlama dili yapısıdır. Monitorla ilgili önemli bir sorun, monitora birkez girmiş bir görevin burada, karşılıklı dışlama gereğinin dışında, başka bir nedenle beklemesi gerektiğinde bu beklemenin, diğer görevleri kilitlemeden nasıl gerçekleşeceği sorunudur. N tutanaklık bir yastık üzerinden iletişim yapan iki görevin, bu yastığa erişim yapan kesimlerinin üretici-tüketici adlı bir monitor içine konduğu düşünülebilir. Bu görevlerden üretici olanının, monitora girerek, yastık doluyken buraya yeni bir tutanak eklemeye kalkması durumunda beklemeye alınması gerekir. Bu görev gerekli önlemler alınmadan beklemeye alınırsa, hala monitor içinde göründüğünden tüketici görevin monitora girmesi engellenir. Tüketici görev monitora girip bir bir tutanak almadan üretici görevin bekleme durumu son bulamayacağından, kilitlenme olarak bilinen, görevlerin karşılıklı bekleşme durumu ortaya çıkar. Bu önemli sakıncayı ortadan kaldırmak için kimi koşullarda, bekleme durumundaki bir görev, halen monitor içinde iken, diğer bir görevin de monitora girişinin sağlanması gerekir. Bunun için monitorda, koşul(condition) adlı yeni bir değişken türü ile bunlar üzerinde işlem yapan wait ve signal adlı komutlar tanımlanır. Wait komutu kendisini çalıştıran görevi koşul değişkenine bağlı bekleme kuyruğuna koyar. Signal komutu ise koşul değişkenine bağlı kuyruktaki görevi hazır görev durumuna getirir. Görevler monitor içinde bekleme koşul değişkeniolarak tanımlarlar. Monitor içinde sınanan bir koşul değişkeni bekleme yapmayı gerektiriyorsa wait komutu çalıştırılarak bekleme durumuna geçilir. Wait komutu, aynı zamanda, varsa, monitora girmeyi bekleyen bir görevin monitora girmesini de sağlar. Bekleme durumundaki bir görevin hazır görev durumuna geçebilmesi, monitora bundan sonra giren görevlerden birinin, aynı koşul değişkenine ilişkin signal komutunu çalıştırmasıyla gerçekleşir

9 Birlikte çalışan görevler yönünden monitor, bölüşülen ortak kaynak için vardır. Bir sistemde birden çok ortak kaynak ve bunların çevresinde kümelenen birden çok birlikte çalışan görev bulunur. Koşut işlem, her görev kümesi için ayrı bir monitor tanımlanarak yürütülür. Monitor yaklaşımını kullanan sistemlerde, zamanuyumlanmaları gereken yordamlar belli kümeler içinde toplandıklarından, semaforlar yada işletim komutları kullanılarak gerçekleştirilenlere göre daha kolay anlaşılır ve bakılır yazılımların elde edilmesi sağlanır. Daha önce de blirtildiği üzere, monitor bir programla dili aracıdır. Bu aracı kullanan sistem programcıları programladıkları görevler arası ayrıntılı zamanuyulama eklerini öngörme zorunluluğundan kurtulurlar. Zire monitor kullanımına olanak veren programlama dillerinde görevler arası zamanuyumla işlevi, tanım gereği, derleyici ve sistem yazılımlarının yükümlülüğüne girer. Monitor kullanımını destekleyen üst düzey programla dillerine örnek, java dır. Java, programların işletim dizileri içermesine olanak vermekte ve bunların zamanuyumlanmasını monitor yaklaşımıyla ele almaktadır. Bu amaçla, üretici-tüketici nitelikli işletim dizi sınıfları içinde, paylaşılan özel nesneye erişim yapan yordamlar: synchronized void yordam1(){ synchronized void yordam2(){ biçiminde, synchronized nitelikli herhangi bir yordam ençok bir işletim dizisinin işletilmesi sağlanmaktadır. Bu işletim dizisi paylaşılan nesneyle ilgili synchronized nitelikli bir yordamın işletimini tümüyle tamamlamadan diğer bir işletim dizisi de, aynı nesneye ilişkin synchronized nitelikli başka bir yordamı işletmeye kalktığında, bu sonuncunun, otomatik olarak bekler duruma geçmesi sözkonusu olmaktadır. Zira java da her nesne için bir kilit(lock) belirtici öngörülmekte ve synchronized nitelikli bir yordam bir nesne üzerinde işlem yaparken bu nesne kilitlenerek diğer synchronized nitelikli yordamların erişimine kapalı tutulmaktadır. Kilit belirteci, bu niteliğiyle, paylaşılan nesnenin (zamanuyumlanması gereken) yordam kümesini belirlemekte ve monitor olarak anılmaktadır

10 Peki, Đşletim Dizileri ile Asenkron programlama anlayışı arasındaki fark nedir? Bu soruya yanıt vermek için aşağıda verilen.net te yazılmış program parçalarını irdelemek gerekecektir. Đşletim Dizileri (threads) ve Asenkron Görevler Đşletim dizileri genel olarak bir görevin arka planda çalışması istendiğinde kullanılır ve bu yeni görevlerin yaratımı, yönetimi ve yaşam döngüleri ana görev tarafından belirlenir, bu paralel programlama ile benzetilebilir. Diğer taraftan asenkron programlama daha çok istem cevap (request-response) şeklinde işlemektedir. Bu bağımsız bir görevdir ve ana işletim dizisi cevabın nasıl oluşacağını, çalışacağını veya ne zaman yollanacağını bilemez. Sadece cevabın tamamlandığını veya oylanması gerektiğini bilir. Bunun dışında Đşletim dizilerinden hiçbir farkı yoktur. Bir kod parçasıyla örneklemek gerekirse; private WorkerMethod( void ) { while(true) // ever { Console.WriteLine("Hala Çalışıyor..."); Thread.Sleep( 2000 ); Thread BackgroundThread = new Thread( new ThreadStart( WorkerMethod )); Console.WriteLine("Arka fon işletim dizgesi yaratıldı"); BackgroundThread.Start(); Console.WriteLine("Arka fon işletim dizgesi çalıştırıldı "); - 9 -

11 bu kodda arka fonda çalışmak üzere bir WorkerMethod tanımlanmış ve çalıştırılmıştır. Bu işletim dizisi çalışırken ekranda görünen formun yerini Mouse yardımıyla değiştirmeye çalıştığımızda çıktı penceresinde yarattığımız işletim dizisini kesen başka görevlerin devreye girdiğini görebiliriz. Buda bize bloklayıcı metot çağrılarını kullanmamızın yolunu açar. Örneğin Socket.Connect() işletim dizgisi Connect() çağrısı sonlanana kadar bloklanmıştır ve bu sizin programınız tarafından kontrol edilemez. Asenkron programlama yakın bir davranış biçimiyle beraber daha farklıdır. Örneğin bir.net sunucuya bağlanmak istediğimizi düşünelim; MySocketState MySocketState; Socket MySocket; MySocket.BeginConnect( ConnectCallback, MySocketState ); // ön plan çalışmasına devam et BeginConnect() çağrısı bloklamaz ve hemen ön plan işletim dizesi geri işlemeye devam eder. Bir yandan da arka fonda sizin için bir işletim dizisi çalışmaya devam eder. Ne zaman cevap gelirse o sizin yerinize callback metodunu çağırır. private void ConnectCallback( IAsyncResult AResult ) { Socket S = (Socket)AResult.AsyncState; Socket ClientSocket = S.EndConnect( AResult ); // işleme devam edilebilir ClientSocket.BeginReceive(...); Asenkron çağırma özelliğini tamamlamak için EndXXX() metodu çağrılmalıdır, burada bu metot EndConnect() olarak geçmektedir. Burada tanımlamanız gereken metotlar BeginXXX() ve EndXXX() metotlarıdır, ki bunlar işletim dizisi havuzunda çalışmakta olan arka fon görevlerdir. Bu işletim dizilerinin nasıl çalışacağı hakkında bir bilgiye ihtiyacınız yoktur, çünkü bunlar sistem tarafında belirlenir. Bu örnek için tavsiye edilen yöntem elbette asenkron yöntemdir, çünkü sistem

12 kaynakları boş yere harcanmamakta, program işlem karmaşıklığından kurtulmaktadır. Şimdi senkron asenkron programlama ayrımına varabilmek için farklı bir örnek inceleyelim. Bir Senkron Asenkron Programlama Karşılaştırması (Synchronous versus asynchronous programming) Genel tanımıyla; Senkron programlarda görevler arası iletişim yastık alanları kullanılmadan yapılmakta ve görevler birbirlerini bilgi transferi bitene kadar beklemektedir. Asenkron programlarda görevler arası iletişim için kullanılan yastık alanları vardır ve bu alanların büyüklükleri kavramsal olarak sınırsız kabul edilir. Gönderici hiçbir zaman gönderdiğinin ardında beklemez, alıcı ise sadece yastık alanı boş ise bekler. Ortada birçok, asenkron mesajlaşma düzenlemesini kesin belirleyen protokoller vardır. Bazıları bir çift görev arasındaki adres düzenlemesi, bazıları ise çoklu görevler arasındaki düzenlemelerdir. Bununla beraber bir düzenleme çok kesin ve kolaylıkla yapılabilmektedir ( örneğin sebepsel düzenleme Causal Ordering (CO)), buna rağmen da asenkron programlama hiçbir zaman kolaylıkla yapılamaz, çünkü asenkron programlama açısından, dağıtılmış sistemlerde programlar için hız kısıdı ve etkili çözüm çok önemlidir. Aslında, asenkronizasyon birçok insana görünenden daha zordur. Çok çeşitli sistemler çok farklı noktalarda asenkronizasyon kullanırlar ve bunu çoğu zaman tam doğru bir dokümantasyon yapmadan, hangi modelin kullanıldığını anlatmadan, açık bir anlayış sergilemeden yaparlar. Örneğin GAY (grafik ara yüzü) kullanan uygulamalar, ara yüzlerinin biraz hızlı kullanımı sonucu kolaylıkla çökerler ve bunun sebebi çoğu kez tam olarak tespit edilemez. Bunda en büyük sebebin probleme yol açan

13 sistemin tam olarak dökümante edilmemesi olduğu genel bir kanıdır. Çünkü doküman eksikliği sebebiyle sorunun tam olarak kalbine inilememektedir. Örnek verecek olursak DIVE nin kullanım talimatlarında şöyle bir bölüm geçmektedir; bir özelliğin bir değerinin tüm DB anında günlendiğinden emin olunamaz. Bu sebeple programlama yaparken en dikkat etmeniz gereken husus sıklıkla değişikliğe maruz kalan DB içerikleridir. Eğer DB i günleme işleminden daha hızlı bir şekilde günlemeye çalışırsanız bu eninde sonunda çıkmaz bir durumla karşı karşıya kalacaksınız anlamına gelmektedir. Bu paradoksal problem tüm noktadan-noktaya (peer-to-peer) iletişim kuran birimler arasında yaşanan ve kalıtımsal olarak geçen bir sorundur. Eğer bir veriyi bu şekilde çok hızlı bir şekilde günleme istiyorsanız DIVE bu iş için uygun bir platform olmayabilir DIVE nin bahsedilen durum için çözümü veriyi çok hızlı bir biçimde değiştirmemektir, aksi taktirde, program er yada geç normal olmayan bir biçimde sonlanacaktır. Burada aradaki farkı belirtilmek yerine asenkron program az yada çok bir biçimde senkron bir program gibi tanımlanmıştır. Peki gerçekten yapılan iş sırasıyla belirtilmiş midir? Bir düğümün güncellenmesi bir başka düğümü etkilerse ne olacak? Đnsanlar genelde iletişim modelini tam olarak anlamadan bu problemi atlar ve geçerler çünkü çoğunlukla çalışmayan parça sistemde hayati önem taşımaya bir noktada bulunmaktadır. Örneğin kullanıcı bir yerde Mouse a çok hızlı ardı ardına tıklar ve sonuçta hemen bir hata mesajı alır. Bu yüzden kullanıcılar ya hatanın kendisinden kaynaklandığını düşünür ya da bu küçük hatayla çok sık karşılaştıkları için bu konuyu es geçerler. Ancak bu düşünce tarzı, sorunla başa çıkılabilmesi için kabul edilebilir değildir. Bu soruna ilişkin bir çözüm gerekmeyen yerlerde asenkron modelin kullanılmaması, yerine senkron modelin kullanılmasıdır. Fakat bu iki modeli bir arada kullanmak pek kolay değildir. Aşağıda bu iletişim modelleri açıklanmaya çalışılacaktır

14 Görüldüğü gibi en genel bakış açısıyla iki programlama anlayışının da birbirlerine göre artıları ve eksileri bulunmakta, her iki anlayışın da kullanılması için kaçınılmaz sebepler bulunmaktadır. Biz araştırma konumuzun bundan sonraki kısımlarında asenkron programlama anlayışı üzerinde duracak, zaman zaman da senkron programla anlayışı ile kıyaslamalar yapılacaktır. Fakat unutulmamalıdır ki mantıksal anlamda her yöntemin kullanılması için kendilerine göre kaçınılmaz noktalar vardır ve günümüze kadar evrimleşerek gelen bu anlayışlar daima bir bütün olarak programlama anlayışında kullanılmışlar ve kullanılacaklardır. JAVA ĐLE PARALEL PROGRAMLAMA ÖRNEĞĐ Gerçekleştirmeye çalışacağımız programla örneği ile java da paralel programlama mantığına anlatmaya çalışacağız. Verilecek örnek çok temeldir. Ancak java da paralel programlama yapacak bir kişinin kesinlikle bilinmesi gereken çok temel bilgiler içermektedir. Yapacağımız örnekte geçecek olan bazı teknik terimler şunlardır; synchronized : daha önce de anlatıldığı gibi, kritik kaynağa erişmede kitlenmesi istenen yordam yada nesnelerin bu anahtar kelime sayesinde kilitlenmeleri java da mümkündür. Synchronized anahtar kelimesi ile bir blok kitleneceği gibi bir metod da kilitlenebilir. Örneğin; synchronized(toplam){ sayac++; toplam.arttir (arritmamiktari); settext(); sleep(uyumasuresi);

15 Yukardaki örnekte toplam adındaki obje (referans) diğer objelerin kullanımına kapatılmıştır. Diğer bir kullanım şekli de: private synchronized void senkronislem(){ synchronized(toplam){ sayac++; toplam.arttir (arritmamiktari); settext(); sleep(uyumasuresi); Şeklindedir, bunun anlamı ise bu metod kesiminin çalışması aşamasında diğer kesilmeye uğramamasıdır. wait() metodu Object ten kalıtımla gelen bir metoddur ve parametresiz olarak yazıldığında, işletilmekte olduğu objeyi bekleme konumuna getirerek objenin çalıştığı monitor a başka objelerin de girmesini sağlar. sleep() bu fonksiyon da tıpkı wait() gibidir ancak wait-notify ikilisi kullanılabilirken sleep-notify ikilisinin kullanımı sonuç vermez. Bunun anlamı sleep() komutuyla beklemeye alınan bir thread bu süreden daha fazla süre de uykuda kalabilir. Ayrıca sleep() metodu Thread den kalıtarak geçer. notify(), notifyall() metodları da Object le kalıtarak gelen metodlardır, bunlar wait() in aksine bulunduğu monitordeki kitli olan thread leri açmaya yarar. notifyall() monitordeki tüm thread leri serbest bırakır, bu durumda monitore bir sonra anahtarlanacak thread herhengi bir thread olabilir. Program Arayüzü-Tanımı: Program geliştirme platformu:netbeans ide beta verison Kullanılan Java versiyoun: java version "1.5.0_06"

16 Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05) Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing) Đşlemci: AMD Athlon XP+ 2500@2200Mhz Class diagram : Class diagram dan da anlaşılacağı gibi görsel arayüzümüz Ekran adlı sınıfta tanımlanırken, kullanacağımız Thread ler olan s1 ve s2 ise Sayici sinifinin birer nesnesidir. Ayrıca Sayici sınıfının içinde yer alan toplam static nesnesi ise Toplam sınıfından olan basit bir nesnedir. toplam static nesnesi s1 ve s2 nesneleri için kritik kaynak niteliğindedir. Program çok basit bir ilkeyle çalışır. Her thread (s1 ve s2) kendilerine verilen artış miktarına göre toplam static nesnesi içinde olan toplam:double değerini arttır yada azaltırlar. Yaptıkları her arttırma yada azaltma sonunda kendilerine verilen JTextField leri ve bahsedilen toplam nesnesini günlerler

17 Ekranın sol tarafındaki değerler s1 için sağ tarafındakiler ise s2 threadleri için kullanılırlar. Yukardaki şekilde gözüken sayaç 1 ve sayaç 2 alanları yazılabilir alanlar değildirler ve her bir thread için başlangıç değerleri 0 dır. Bu alanlara yazılacak değer class diagramda Sayici sınıfının bir niteliği olan sayac değeridir

18 Şekilde yer alan artırma miktarı alanı ise sadece başlata basmadan önce yazılabilir bir alandır. sayaç 1 s1 in her devreye girişinde ekranın sol tarafındaki artırma miktarı kadar arttırılır. Bu işlem aynı şekilde toplam için de yapılır. Yani s1 veya s2 her devreye girişinde hem kendi içlerindeki sayaçları artış miktarına göre arttırırlar hemde toplam içindeki toplam değerini artış miktarına göre arttırırlar. Şekilde görünen JSplitter lar ise threadlerin sayı saymadaki hızlarını belirlemek için kullanılırlar. Bunun anlamı threadlerin ne kadar süre uyumaları gerektiği bu kaydırıcılarla belirlenebilir. Kaydırıcılar program çalışmaya başladıktan sonra da değiştirilebilir. Class digramda Sayici içindeki uyumasuresi, jsplitterların değerleri değiştikçe günenirler bu sayede dinamik bir yapı elde edilmiş olunur. Bununla ilgili kod kesimi aşağıdaki gibidir: Public class Sayici{ private void islem() throws InterruptedException{ sayac++; toplam.arttir (arritmamiktari); settext(); sleep(uyumasuresi);

19 Şekilde görünen öncelik seçici düğmeler ise threadlerin (s1 ve s2) önceliklerini belirlemede kullanılırlar. Program varsayılan şekilde başlatıldığında bu sekmelerin değiştirilmesinin hiçbir işe yaramadığını kolaylıkla görebiliriz. Çünkü threadlere uyumaları için verilen sürede işlemciyi kullanmadıkları düşünüldüğünde, her bir thread için bir toplama ya da çıkarma işlemi yapmak çok kısa süreceğinden, böyle bir durumda öncelik sıralaması gerekmeksizin threadler işlemlerini verilen sürelerde kolaylıkla bitirebileceklerdir. Öncelik belirlemesi sekmelerini işe yarar şekillerde kullanabilmek için yapılması gereken işlem, önceden bahsedilen sayma hızını 0 a getirmektir. Sayma hızının 1/0 a getirilmesi demek işlemler için yeterli sürenin threadlere verilmemesi anlamına gelmektedir. Böyle bir durumda ana işlem birimine anahtarlanabilmek için öncelik önem kazanır ve thread in ana işlem birimine anahtarlanma süresini bu öncelik belirler. Ancak programlama aşamasında karşılaşılan en önemli sorun testler sırasında bilgisayarın kilitlenme derecesine gelmesi ve gui içinde kullanılan JTextField objelerinin zaman zaman yanlış değerlerle set edilmesi idi. Bu sorunları aşmak için aşağıdaki kod kesimi kalınitalik alanlar sonradan eklenerek elde edildi

20 public synchronized void settext () { try { synchronized(texttf){ texttf.settext (sayac+""); sleep(1); synchronized(toplamtf){ toplamtf.settext(sayici.toplam.ver ()+""); sleep(1); catch (InterruptedException ex) { ex.printstacktrace(); Bu kod kesiminde amaç tamamen görsel arayüze kendini toparlayabilmesi için süre tanımaktır. Yukarda görülen şekildeki senkronize sekmesi iki thread için de kritik olan toplam objesinin kilitlenerek kullanılıp kullanılmayacağını belirler. Bu sekme işaretli ise toplam objesi, sekmenin işertli olduğu thread içinde kilitlenir. Bunu sağlaya bilmek için objelerin içinde senkron:boolean adından bir nitelik bulunur. Bu nitelik thread içindeki run fonksiyonunda

21 kritik kaynağın kilitlenip kilitlenmemesine göre iki farklı metoddan birini çağırır. Bu amaçla aşağıdaki kod kesimi yazılmıştır: private synchronized void senkronislem() throws InterruptedException{ synchronized(toplam){ sayac+=arritmamiktari; toplam.arttir (arritmamiktari); settext(); sleep(uyumasuresi); private void islem() throws InterruptedException{ sayac+=arritmamiktari; toplam.arttir (arritmamiktari); settext(); sleep(uyumasuresi); public void run() { try { while(true){ if(senkron) senkronislem(); else islem(); catch(interruptedexception e){ Yukardaki koddan da anlaşılabileceği gibi, eğer senkron mod çalışmakta ise toplam objesi kilitlenir. Son olarak bahsedilmesi gereken sekme duraklama süresi kesimidir. Buradaki JSplitter dur düğmesine basıldığında uyumanın ne kadar süreceğini belirler

22 Programla ilgili bahsedilmesi gereken son kesim konsol çıktı kısmıdır. S1 veya s2 de dur a basıldığı anda o thread duraklama süresi kadar beklemeye geçecektir. Peki duraklamayan thread o süre içinde ne kadar saymıştır sorusuna cevap bulamak için böyle bir yöntem benimsenmiştir

23 Programın Çalıştırılması ve Sonuçları Örnek 1 S1: S2: Arttırma miktarı : 1 Arttırma miktarı : -1 Sayma hızı : 0 Sayma hızı : 0 Öncelik : Az Öncelik : Normal Senkronize :değil Senkronize :değil Program bu değerler ile günlendiğinde bir - iki saniye sonra oluşan çıktı; sayaç 1 = 307, sayaç 2 =-454, toplam sayaç = -148 Görüldüğü gibi sonuç öncelik farkı nedeniyle thread 2 ye doğru kaymıştır. Ayrıca toplam sayaç = sayaç 1 + sayaç 2 olması gerekirken =-147 dir. Sonucun böyle farklı olmasındaki sebep yazılan program içinde toplam ve sonuç değerlerinin aynı anda günlenememesi yani görüntü arabiriminin göreli yavaşlığından kaynaklanabilmektedir. Ayrıca kritik kaynak olan toplam ın kilitlenmemiş olması ise olası bir başka etkendir

24 Örnek 2 S1: S2: Arttırma miktarı : 1 Arttırma miktarı : -1 Sayma hızı : 0 Sayma hızı : 0 Öncelik : Az Öncelik : Normal Senkronize :evet Senkronize :evet Program bu değerler ile günlendiğinde üç-dört saniye sonra oluşan çıktı; sayaç 1 = 425, sayaç 2 =-427, toplam sayaç = -1 Önceliğinin yüksek olmasına rağmen toplam sayacının değerinin 0±5 olması dikkat çeki olduğu kadar synchronized ın ne işe yaradığınıda ortaya koymaktadır. Ortak (kritik) kaynak olan toplam kilitlendiği için s1 ve s2 threadi karşı taraf serbest bırakmadan toplam a erişemedikleri için öncelikleri yüksek olsa bile toplam ı değiştirememektedirler. Ayrıca burada işlemcinin veriminin düştüğü de gözlemlenmiştir. Đlk örneğe göre daha uzun sürmesine karşın işlemci hemen hemen aynı miktarda bu threadlere anahtarlanmıştır. Burada yapılabilecek başka bir deneme de duraklama süresini 1 gibi yüksek bir değere getirerek, örneğin s1 de dur a basmaktır. Bunun sonucnda oluşan çıktı: s1 uyu s1 uyan s1 uyanana kadar; sayac 1: 1 tane saydi sayac 2: -254 tane saydi şeklinde olmuştur

25 Örnek 3 S1: S2: Arttırma miktarı : 1 Arttırma miktarı : -1 Sayma hızı : 0.05 Sayma hızı : 0.5 Öncelik : normal Öncelik : Normal Senkronize :evet Senkronize :evet Program bu değerler ile günlendiğinde altı saniye sonra oluşan çıktı; sayaç 1 = 12, sayaç 2 =-12, toplam sayaç = 0 şeklinde olmuştur. S1 in 6 saniyede tek başına sayması gereken miktar 120 iken sadece 12 tane saymasındaki sebep yine kritik kaynak olan toplam ın kilitlenmesidir. Her ne kadar s1 s2 nin yarım saniyelik uykusundan ötürü boş kalsa da, s2 nin uykuya girerken toplam kritik kesimini de kitlemesi s1 in bu kritik kesime ulaşamamsına dolayısıyla toplamı arttıramamasına, bunun sonucu olarak da o kad satırında beklemesine (toplamı günleme satırı) yol açmıştır. -SON

26 Kullanılan programlar: Windows XP sp2 Netbeans ide beta java version "1.5.0_06" Java(TM) Eclipse 3.1 Office 2003 Mozilla firefox Macromedia Firewroks Screenshot utility Kullanılan Donanım: Asus a7v600 Amd athlon xp+ 1GB ddr ram Nvidia 6600GT TDH Klavye Mouse Samsung 793 df monitor Philips cdwriter Kaynakça, Yararlanılan internet siteleri: o o o reads o ial/jtthreadex.html o threads.html o o brary/enus/cpguide/html/cpconasynchronousprogramming.asp o threads-p2.html Yararlanılan Kitap: o Bilgisayar Đşletim Sistemleri : Prof. Dr. Ali SAATÇĐ

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

Görsel Programlama DERS 11. Görsel Programlama - Ders11/ 1

Görsel Programlama DERS 11. Görsel Programlama - Ders11/ 1 Görsel Programlama DERS 11 Görsel Programlama - Ders11/ 1 ÇOKLU KULLANIM(Multi Threading) Günümüz işletim sistemleri çok görevli(multi tasking) dir. Aynı anda farklı programlar çalışmakta, görevler yerine

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş Süreçler ve İş Parçacıkları(Thread) İşletim Sistemlerine Giriş - Ders03 1 Süreç -Tüm modern bilgisayarlarda bir çok iş aynı anda yapılabilir. *kullanıcı programları çalışır *disk

Detaylı

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

İŞLETİM SİSTEMLERİ. (Operating Systems)

İŞLETİM SİSTEMLERİ. (Operating Systems) İŞLETİM SİSTEMLERİ (Operating Systems) İşletim Sistemi Tanımı, Görevleri, Bilinen İşletim Sistemleri Çok Kullanıcılı Sistemler, Bellek Yönetim Birimi Linux ve Windows Ailesi, Bilinen İşletim Sistemleri

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

İş Parçacıkları (Threads)

İş Parçacıkları (Threads) İş Parçacıkları (Threads) Bir elin nesi var iki elin sesi var -Atasözü- Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 11 1 İŞ PARÇACIKLARI (THREADS) Geçen bölümlerde yapılan uygulama örnekleri

Detaylı

Java Temel Özellikleri

Java Temel Özellikleri Java Temel Özellikleri Java Programlama Dili Java programlama dili şu anda dünyadaki en popüler programlama dillerinden biri haline gelmiştir. Java SUN bilgisayar şirketince elektrikli ev aletlerinin birbiriyle

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; 1. Performans: İşletim sistemi, makine

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

Dağıtık Sistemler CS5001

Dağıtık Sistemler CS5001 Dağıtık Sistemler CS5001 Th. Letschert Çeviri: Turgay Akbaş TH Mittelhessen Gießen University of Applied Sciences İstemci-Sunucu Uygulamaları: Aktive Monitörler Pasif monitörden(paylaşılan durum) aktif

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine

İŞLETİM SİSTEMLERİNE GİRİŞ - 2. Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine İŞLETİM SİSTEMLERİNE GİRİŞ - 2 Kaynakların Paylaşımı (Resource Sharing) Sistem, sistem kaynaklarını belli bir hiyerarşi içinde kullanıcının hizmetine sunar. Bir işletim sisteminde paylaşılan kaynaklar

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 2. BÖLÜM 2 PROGRAMLAMAYA GİRİŞ Programlama Terimleri ve Programlama Ortamı 3 Program Programlama IDE

Detaylı

İş Parçacıkları Thread(s)

İş Parçacıkları Thread(s) İş Parçacıkları Thread(s) Bir çok geliştirici programlarını doğrusal(linear) bir şekilde oluşturmaktadır. Böyle bir durumda tek bir processin işini bitirmesi beklenmekte ve ardından bir sonraki kod parçasına

Detaylı

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği INPUTBOX KULLANIMI InputBox komutu, Basic programlama dilinde program algoritması içinde ekran aracışığı ile bir sorgu yönlendirerek, kullanıcının bilgi girmesini sağlamak amacıyla kullanılır. Bu komutun

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş Ölümcül Kilitlenme (Deadlock) İşletim Sistemlerine Giriş - Ders06 1 Ölümcül Kilitlenme (Deadlock) Bilgisayar sistemleri, bir anda sadece tek bir kullanıcı tarafından kullanılabilecek

Detaylı

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : 1.01.01 Tarih : 10.01.2008. Copyright 2008 AKINSOFT

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : 1.01.01 Tarih : 10.01.2008. Copyright 2008 AKINSOFT AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu Doküman Versiyon : 1.01.01 Tarih : 10.01.2008 1 - Çalışma Şekli Hakkında Kısa Bilgi modülü kısaca aşağıdaki işlemleri yapar. Bu özelliklerin çalışabilmesi

Detaylı

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1 Görsel Programlama DERS 01 Görsel Programlama - Ders01/ 1 Takdim Planı Nesneye Dayalı Programlama Kavramı Nesne, Sınıf Kavramı Java Programlama Dili Java Programlama Dili Temel Özellikleri Java Sürümleri

Detaylı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; Performans:

Detaylı

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir. www.csharpturk.net Türkiye nin C# Okulu Yazar Yunus Özen Eposta yunus@yunus.gen.tr Tarih 08.04.2006 Web http://www.yunusgen.tr ARİTMETİK OPERATÖRLER VE KULLANIM ŞEKİLLERİ Bilgisayarlar yapıları gereği,

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

İŞLETİM SİSTEMLERİ DÖNEMİÇİ SINAVI

İŞLETİM SİSTEMLERİ DÖNEMİÇİ SINAVI İŞLETİM SİSTEMLERİ DÖNEMİÇİ SINAVI 31 Mart 2011 1) (20 puan) Aşağıdaki soruları kısaca cevaplayınız. a) Bir proses çalışmış ve kısa bir süre sonra sonlanmıştır, bu arada sistemde çalışan başka prosesler

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

Multicore/Multithread Programlama

Multicore/Multithread Programlama Multicore/Multithread Programlama Onur Tolga Şehitoğlu Bilgisayar Mühendisliği 7 Şubat 2008 Başlıklar 1 Gereksinimi Dal ile Süreç Çok İşlemci ve Dal Modelleri Neden Çoklu Dal Programlama? 2 Çok İşlemci/Çok

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Prosesler Bilgisayar İşletim Sistemleri BLG 312 Prosesler ve Proses Yönetimi bilgisayar sisteminde birden fazla iş aynı anda etkin olabilir kullanıcı programı diskten okuma işlemi yazıcıdan çıkış alma

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama BMS-302 İleri Web Programlama İş Parçacığı (Thread) ve Soket (Socket) Programlama İş Parçacıkları (Threads) Ana programa paralel çalışan işler oluşturmak için kullanılır Makine birden fazla çekirdeğe sahipse

Detaylı

OMNET++ 4.2.2. Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü

OMNET++ 4.2.2. Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları. GYTE - Bilgisayar Mühendisliği Bölümü Bilgisayar Mühendisliği Bölümü OMNET++ 4.2.2 Ağ Benzetim Yazılımı (Network Simulation Framework) BİL 372 Bilgisayar Ağları OMNET++ OMNET++ (Objective Modular Network Testbed in C++), nesneye yönelik (objectoriented)

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10 Yrd.Doç.Dr.Hacer Karacan İçerik Grafik Kullanıcı Arayüzü Uygulamaları AWT, Swing Arayüz Yerleşim Düzeni Temel GKA Bileşenleri Olay Yönetimi Olay Dinleyiciler Olay

Detaylı

SIMAN KULLANIM KILAVUZU

SIMAN KULLANIM KILAVUZU SIMAN KULLANIM KILAVUZU Önder Öndemir SIMAN Simülasyon programı Model Çatı ve Deneysel Çatı olmak üzere iki kısımdan oluşur. Model çatı genel itibariyle modullerin ve işlem bloklarının yazıldığı kısımdır.

Detaylı

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon Dinamik Kodlama Ürün Grubu Kategori Versiyon Önkoşulu [X] Fusion@6 [X] Yeni Fonksiyon @6 Uygulama @6 Serisi ürünlerde, kullanıcı arabirimlerinin her yerine eklenen dinamik kodlama özelliği ile, programın

Detaylı

Diziler İndisli Değişkenler

Diziler İndisli Değişkenler Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın

Detaylı

Bilgisayar Yazılımları

Bilgisayar Yazılımları Bilgisayar Yazılımları Yazılım Türleri Programlama Dilleri Bir işi bilgisayara yaptırmak ancak belirli kodların belirli bir sıra doğrultusunda kullanılması ile olanaklıdır. Kullanılan bu koda programlama

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş Kurulum için ilk önce Sun Microsystems in sitesinden uygun J2SE sürümünü indirin. Ben J2SE v1. 4. 2_16 Windows Installer paketini kullandım J2SE SDK Kurulumu aşağıdaki gibi başlayacaktır. 1 Kurulum tamamlandıktan

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir. İST 205 Bilgisayar Programlama III C Programlamaya Giriş ve Matematiksel-İstatistiksel Uygulamalar Y.Doç.Dr. Levent Özbek Ankara Üniversitesi Fen Fakültesi İstatistik Bölümü Tel: 0.312.2126720/1420 ozbek@science.ankara.edu.tr

Detaylı

Proses. Prosesler 2. İşletim Sistemleri

Proses. Prosesler 2. İşletim Sistemleri 2 PROSESLER Proses Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkinbirdenfazlaprosesolabilir. Görev

Detaylı

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2

İŞ SIRALAMA. İş Sıralamanın Amaçları. İş Sıralama Türleri - 1. İş Sıralama. İş Sıralama Türleri - 2 İş Sıralamanın Amaçları İŞ SIRALAMA İşleri zaman içinde işlemciye yerleştirmek Sistem hedeflerine uygun olarak: İşlemci verimi Cevap süresi (response time) Debi (throughput) 23 İş Sıralama İş Sıralama

Detaylı

İşletim Sistemlerine Giriş

İşletim Sistemlerine Giriş İşletim Sistemlerine Giriş İşletim Sistemleri ve Donanım İşletim Sistemlerine Giriş/ Ders01 1 İşletim Sistemi? Yazılım olmadan bir bilgisayar METAL yığınıdır. Yazılım bilgiyi saklayabilir, işleyebilir

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı

Detaylı

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

VERİ YAPILARI VE PROGRAMLAMA (BTP104) VERİ YAPILARI VE PROGRAMLAMA (BTP104) Yazar: Doç.Dr. İ. Hakkı CEDİMOĞLU S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir.

Detaylı

4. Bölüm Programlamaya Giriş

4. Bölüm Programlamaya Giriş 4. Bölüm Programlamaya Giriş Algoritma ve Programlamaya Giriş Dr. Serkan DİŞLİTAŞ 4.1. C# ile Program Geliştirme Net Framework, Microsoft firması tarafından açık internet protokolleri ve standartları

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

Bilgisayar İşletim Sistemleri BLG 312

Bilgisayar İşletim Sistemleri BLG 312 Giriş Bilgisayar İşletim Sistemleri BLG 312 İplikler geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü vardır bazı durumlarda, aynı adres uzayında birden fazla akış kontrolü

Detaylı

Klavyeden Basit Giriş/Çıkış İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada

Detaylı

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 4 Ders 2 Yrd. Doç. Dr. Melike Şah Direkoğlu Alındığı kaynak: Addison-Wesley s Programming Language Concepts slaytları ve Prof. Dr. Tuğrul Yılmaz ın ders notlarından

Detaylı

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Barbara Liskov 1 tarafından geliştirilen bu prensip kısaca

Detaylı

PROSESLER. Proses. Proses

PROSESLER. Proses. Proses Proses 2 PROSESLER Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkin birden fazla proses olabilir.

Detaylı

1.1. Yazılım Geliştirme Süreci

1.1. Yazılım Geliştirme Süreci Kazanımlar Bu bolümde; Yazılım geliştirme sureci konusunda bilgi sahibi olacak, Yazılım geliştirme surecinde gerekli olan araçları tanıyacak, Python dilinde program geliştirme ortamlarını inceleyebileceksiniz.

Detaylı

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış

Detaylı

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da İşleçler, Ders #3 (4 Kasım 2009) Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu

Detaylı

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi arvento Araç Takip ve Filo Yönetim Sistemleri ile araçlarınızı 7 gün 24 saat on-line ve geçmişe yönelik olarak izleyebilir, hızlarını, izlemiş oldukları güzergahı, duraklama yaptıkları yerleri uzaktan

Detaylı

Ünite-3 Bilgisayar Yazılımı. www.cengizcetin.net

Ünite-3 Bilgisayar Yazılımı. www.cengizcetin.net Ünite-3 Bilgisayar Yazılımı Yazılım Kavramı Bilgisayarın belirli bir işi gerçekleştirebilmesi için kullanıcı tarafından her adımda ne yapacağı tarif edilmiş olmalıdır. Yani kullanıcı bilgisayara uygun

Detaylı

İşletim Sistemi. BTEP205 - İşletim Sistemleri

İşletim Sistemi. BTEP205 - İşletim Sistemleri İşletim Sistemi 2 İşletim sistemi (Operating System-OS), bilgisayar kullanıcısı ile bilgisayarı oluşturan donanım arasındaki iletişimi sağlayan ve uygulama programlarını çalıştırmaktan sorumlu olan sistem

Detaylı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ Ders 10 LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ LINUX de Programlama LINUX işletim sistemi zengin bir programlama ortamı sağlar. Kullanıcılara sistemi geliştirme olanağı sağlar.

Detaylı

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir: Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler

Detaylı

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9 BTP 207 İNTERNET PROGRAMCILIĞI I Ders 9 Dizi Değişkenler (Array) 2 Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1, eleman2,, elemann)

Detaylı

İnternet Programcılığı

İnternet Programcılığı 1 PHP le Ver tabanı İşlemler Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz. 1.1 Veritabanı Nedir? Veritabanı

Detaylı

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir.

Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir. Handel Kavramı: Windows'da çalışırken pek çok durumda bir işe başlamadan önce işletim sisteminin o işe ilişkin bilgileri depolayacağı bir alan yaratması gerekir. Alanın yaratıldığı bölge Windows'un kendi

Detaylı

İNTERNET EXPLORER AYARLARI 1. Başlat-Ayarlar-Denetim Masası menüsünden "İnternet Özellikleri" (Seçenekleri)'ni seçiniz. Resim. 1

İNTERNET EXPLORER AYARLARI 1. Başlat-Ayarlar-Denetim Masası menüsünden İnternet Özellikleri (Seçenekleri)'ni seçiniz. Resim. 1 A.K.Ü VERİTABANLARINA UZAKTAN ERİŞİM AYARLARI Araştırmacılar, kampüs dışından erişim için kullanıcı adı ve parola doğrulaması ile Üniversitemiz sistemi üzerinden Kütüphane veri tabanlarını kullanabilmektedir.

Detaylı

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü BM-209 Nesne Yönelimli Programlama Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü Java Programlama Dili Java bayt kodları Java Sanal Makineleri üzerinde

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma C Programlama Dr. Serkan DİŞLİTAŞ 7.1. Metot Kavramı Programlama dillerinde bütün kod satırlarının

Detaylı

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları 4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları Şart yapıları bir bilgisayar programının olmazsa olmazlarındandır. Şart yapıları günlük hayatımızda da çok fazla karşılaştığımız belirli

Detaylı

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

Java da İstemci Tarafı Uygulamalar

Java da İstemci Tarafı Uygulamalar Java da İstemci Tarafı Uygulamalar ( Applets ) BBS-515 Nesneye Yönelik Programlama Ders #7 (7 Aralık 2009) İçerikç Geçen ders: Java da dizi ( array ) ve dizgi ( String ) tanımlama Örnekler Bu ders: 1.

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C

Detaylı

Bilgisayar Mimarisi Nedir?

Bilgisayar Mimarisi Nedir? BİLGİSAYAR MİMARİSİ Bilgisayar Mimarisi Nedir? Bilgisayar mimarisi, diğer mimariler gibi, bir yapı kullanıcısının ihtiyaçlarını belirleme ve bu ihtiyaçları ekonomik ve teknolojik kısıtlamalar dahilinde

Detaylı

İŞ SIRALAMA. İş Sıralama 6. İşletim Sistemleri

İŞ SIRALAMA. İş Sıralama 6. İşletim Sistemleri 6 İŞ SIRALAMA İş Sıralama Çok programlı ortamlarda birden fazla proses belirli bir anda bellekte bulunur Çok programlı ortamlarda prosesler: işlemciyi kullanır bekler giriş çıkış bekler bir olayın olmasını

Detaylı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı Ders 7 LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ 1 LINUX Yapısı LINUX işletim sisteminin diğer işletim sistemleri gibi kendine özgü bir yapısı vardır. LINUX yapısı ve bileşenleri aşağıdaki

Detaylı

BİLGİSAYAR AĞLARI Bilgisayar İletişimi Nedir? Veri İşleme Modelleri ve Ağ Gelişimi Merkezi İşleme

BİLGİSAYAR AĞLARI Bilgisayar İletişimi Nedir? Veri İşleme Modelleri ve Ağ Gelişimi Merkezi İşleme BİLGİSAYAR AĞLARI Bilgisayar ağlarının kullanımındaki temel amaç bilgi ve servislerin paylaşımıdır. Bu bölümde bilgisayar ağlarının sınıflandırılması ve kullanım amaçları anlatılmaktadır. Bu bilgi ve servislerin

Detaylı

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

SAB 103 TEMEL BİLGİSAYAR KULLANIMI SAB 103 TEMEL BİLGİSAYAR KULLANIMI DERS NOTLARI Prof.Dr. Fatih TANK Ankara Üniversitesi Uygulamalı Bilimler Fakültesi Sigortacılık ve Aktüerya Bilimleri Bölümü Prof.Dr. Fatih TANK - Temel - Ders Notları-

Detaylı

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1

İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1 İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım:

Detaylı

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN

PARALEL HESAPLAMA ÇAĞRI GİDER ENES BİLGİN PARALEL HESAPLAMA ÇAĞRI GİDER 13011016 ENES BİLGİN - 13011004 Paralel Hesaplama Nedir? Paralel Hesaplamanın Avantajları Paralel Hesaplamanın Kullanım Alanları Paralel Hesaplama Yöntemleri, Donanım ve Yazılım

Detaylı

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA GİRİŞ Bilgisayarların önemli bir kullanım amacı, veri ve bilgilerin kullanılarak var olan belirli bir problemin çözülmeye çalışılmasıdır. Bunun için, bilgisayarlar

Detaylı

25.10.2011. Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları. Ömer Faruk MIZIKACI 2008639402

25.10.2011. Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları. Ömer Faruk MIZIKACI 2008639402 Arayüz Tasarımı ve Programlama Neleri Konuşacağız Arayüz Nedir? Arayüz Çeşitleri Arayüz Tasarım Yöntemleri Arayüz Tasarım Hataları Ömer Faruk MIZIKACI 2008639402 Arayüz Nedir? Bilgisayar ve uygulamalarının

Detaylı

Çekirdek Nedir? Ne yapar?

Çekirdek Nedir? Ne yapar? Çekirdek Nedir? Ne yapar? Erkan Esmer Nisan, 2014 İçindekiler 1 Giriş.................................................... 2 2 Çekirdek Tipleri.............................................. 3 2.1 Mikrokernel............................................

Detaylı

Fatura Dosyalarını Yükleme ile ilgili Detaylar. 14 Temmuz 2014

Fatura Dosyalarını Yükleme ile ilgili Detaylar. 14 Temmuz 2014 14 Temmuz 2014 İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL İlgili Modül/ler : E-Fatura Gelen e-fatura Dosyalarının Transferi Firmalara tedarikçilerinden veya hizmet aldıkları firmalardan gelen e-faturalar,

Detaylı

Çözüm Bilgisayar. Çözüm SIRAMATİK

Çözüm Bilgisayar. Çözüm SIRAMATİK Çözüm Bilgisayar Çözüm SIRAMATİK Çözüm Sıra Sistemi Amaç : Hastanelerde çeşitli birimlerde oluşan hasta sıralarının (poliklinik müracaat, poliklinik hasta kabul, ssk eczane vb.) bankolar önünden uzaklaştırılarak,

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

Elbistan Meslek Yüksek Okulu Güz Yarıyılı HAFTA IV Elbistan Meslek Yüksek Okulu 2016 2017 Güz Yarıyılı Open System Interconnection (OSI) OSI modeli sıradüzensel 7 katmandan oluşur. OSI modeli hala geliştirilmekte olmasına rağmen satıcılar ve standart

Detaylı

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kalıtım Kavramı Java da Çok Biçimlilik Kavramı Fonksiyonların Çok Biçimliliği Yapıcı Fonksiyonun Çok Biçimliliği Java da Kalıtım Kavramı 4 Kalıtım;

Detaylı