Görevler Arası Zamanuyumlama
|
|
|
- Belgin Topbaş
- 10 yıl önce
- İzleme sayısı:
Transkript
1 Görevler Arası Zamanuyumlama Ahmet Burak Can Hacettepe Üniversitesi Birlikte Çalışan Görevler Bilgisayar kaynaklarının etkin kullanımı için, görevlerin birlikte ve koşut işlemi zorunludur. Gerçek koşutluk Görüntü koşutluk Koşut işlem, görevler arasında kaynak paylaşımı ve zaman uyumlama sorunlarını beraberinde getirir. Birlikte çalışan görevler arası etkileşim, çoğu kez kaynak paylaşımından doğar. 1 2 Üretici/Tüketici Görev Örneği Kaynaklara Erişim 3 Bölüşülür Kaynaklar: Ana işlem birimi, ana bellek, disk birimi Bölüşülmez Kaynaklar: Yazıcı, görevler arası ortak yastık alanları İki görev, bir ortak kaynağa erişim 4 biçimde gerçekleştirebilir: Okuma Okuma Okuma Yazma Yazma Okuma Yazma Yazma Sadece Okuma Okuma durumunda iki görev aynı anda ortak kaynağa erişebilir. 4 Kritik Kaynaklar İşletim Bütünlüğünün Bozulması - Örnek 1 Bölüşülmez kaynaklar kritik kaynaklar olarak adlandırılır. Kritik kaynaklara erişmeden önce, kaynağın kullanım durumunun sınanması ve diğer görevlerin o anda kaynak üzerinde işlem yapmadıklarından emin olunması gereklidir. Örnek: Sistem saati üzerinde çalışan 3 görev Saat: Gerçek zaman saati kesilmelerini işleyip sistem saatini günler. Yani belirli vuru aralıklarında üretilen saat kesilmesiyle çağrılır. Göster: Sistem saatini görüntülemeye yarar Öndeğerata: Sistem saatini sıfırlamayı sağlar. 5 6
2 İşletim Bütünlüğünün Bozulması - Örnek 2 İşletim Bütünlüğünün Bozulması - Örnek 2 Yukarıdaki gibi tek bağlaçlı listeye öğe eklemek için aşağıdaki gibi bir kod kesimi çalıştırılır: yeniöge.bağ ilköge = ilköge; = ¥iöge; Birden fazla görev bu listeye ekleme yaptığında nasıl bir problem oluşabilir? 7 8 Kritik Kesimler Kritik Kesime Erişim Kritik kaynağa erişim yapan program kesimleri kritik kesimler olarak adlandırılır. Kritik kaynağa aynı anda en çok bir görevin erişebilmesi, kritik kaynağa erişim yapan görevlerden en çok birinin kritik kesimi içinde bulunmasıyla sağlanabilir. Buna karşılıklı dışlama denir. Karşılıklı dışlama görevlerin kritik kesimlerine giriş ve çıkışlarında alınan önlemler yoluyla gerçekleştirilir. Görevlerin, birbirlerinin işletimlerini karşılıklı olarak, sürekli engellemelerine karşılıklı tıkanma denir. Karşılıklı dışlamayı sağlamanın yanında karşılıklı tıkanmanın engellenmesi gerekir Görevler Arası Zamanuyumlama Kuralları 1. Karşılıklı dışlamanın sağlanması: Birlikte çalışan görevlerden en çok biri, aynı anda kritik kesimine girebilmelidir. 2. Karşılıklı tıkanmanın engellenmesi: Aynı anda ortak kaynağa erişmek isteyen görevlerden en az biri, sonlu bir süre için kritik kesimine girebilmelidir. 3. Kritik kesiminin dışındaki görevler ortak kaynağa erişmek isteyen görevleri engellememelidir. 4. Görevlerin göreli hız ve öncelikleri ile sistemde yer alan AİB sayısı hakkında herhangi bir varsayım yapılmamalıdır. Kesilme Düzeneği Kullanımı Karşılıklı dışlamayı sağlamak üzere, bir görev kritik kesimine girerken sistemi kesilmelere kapayabilir. Örnek: Sistem saatine erişen görevlerin kesilme ile engellenmesi. Göster: cli; saniye1=saniye; dakika1=dakika; saat1=saat; sti; Öndeğerata: cli; saat=0; dakika=0; saniye=0; sti; 11 12
3 Kesilme Düzeneği Kullanımı Kesilme düzeneği kullanımının en önemli sakıncaları nelerdir? Sistemin kesilmelere kestirilemez uzunlukta kapalı kalmasına ve bu sebeple işletim bütünlüğünü zedeleyecek durumlara neden olabilir. AİB tüm dış uyarılara kapatılır ve kritik kaynakla ilgisi olmayan görevlerin de işletimlerini engeller. Kesilme düzeneğinin denetimini sistemde çalışan çok sayıda göreve, özellikle çekirdek katman dışındaki görevlere de dağıtmasıdır. Algoritmik Yaklaşım Örnek 1 GÖREV 1 GÖREV 2.. while(sıra!=1); /*bekle*/ while(sıra!=2); /*bekle*/ kritik-kesim-1(); kritik-kesim-2(); sıra=2; sıra=1;.. Problem: Kritik kesim dışındaki görev, sıra kendindeyse, kritik kesime girmese bile diğer görevin kritik kesime girmesine izin vermeyebiliyor Algoritmik Yaklaşım Örnek 2 GÖREV 1 GÖREV 2.. while(durum==0);/*bekle*/ while(durum==0);/*bekle*/ durum=0; durum=0; kritik-kesim-1(); kritik-kesim-2(); durum=1; durum=1;.. Algoritmik Yaklaşım Örnek 2 GÖREV 1 GÖREV 2.. bekle1:cmp durum, 0 bekle2:cmp durum, 0 jz bekle1 jz bekle2 mov durum, 0 mov durum, 0 [Kritik Kesim-1] [Kritik Kesim-2] mov durum,1 mov durum,1.. Durum değişkenini sınama ve değiştirme işlemi tek adımda yapılamamakta. test-and-set türü komutlara ihtiyaç duyulmaktadır test-and-set Komutları Görevlerin kritik kesimlerine girerken, aşağıdaki gibi ortak bir değişkeni sınama ve günleme işlemlerini, bölünmez bir biçimde, tek adımda yapabilmesi gereklidir. bekle-i: cmp durum, 0 jz bekle-i mov durum, 0 test-and-set türü komutlar bir değişkeni sınama ve günleme işlemlerini donanımsal olarak tek adımda yaparlar. test-and-set komutları test-and-set türü komutlar genelde iki işlenen içerirler. Genel sözdizimi şöyledir: ts reg, durum İşlenenlerden biri (durum), ortak kaynağın kullanım durumunu gösteren ve birlikte çalışan görevlerin hepsinin paylaştığı genel bir ana bellek değişkenidir. Diğer işlenen ise (reg) göreve özel bir yazmaç olabilir
4 test-and-set Kullanımı GÖREV-Đ bekle-i:... ts al, durum cmp al,0 jz bekle-i Kritik Kesim-i mov durum, 1 Diğer Đşlemler-i DİKKAT: Kitaptaki örnek değiştirildi. Kitaptaki örnekte, durum değişkeni 1 iken kritik kaynak meşgul sayılıyordu. Bu örnekte durum değişkeni 0 olduğu zaman meşgul olduğu varsayılıyor. ts komutunun durum değişkenine sıfır değeri yüklediğini varsayınız. Intel 80x86 da xchg Komutu xchg komutu, ts komutu örneklenirken belirtildiği gibi, iki işleneni olan bir komuttur. xchg dest, src Bu işlenenlerden biri mutlaka bir yazmaç, diğeri ise herhangi bir değişken ya da başka bir yazmaç olabilmektedir. Komut işletildiğinde: temp <-- dest dest <-- src src <-- temp işlemlerini bölünmez biçimde gerçekleştirmektedir. temp, programlanır yazmaçlar arasında yer almayan ve geçici olarak değer saklamaya yarayan bir yazmacı simgelemektedir Intel 80x86 da xchg Kullanımı GÖREV-Đ... bekle-i: mov al, 0 xchg al, durum cmp al, 0 jz bekle-i Kritik Kesim-i mov durum, 1 Diğer Đşlemler-i DİKKAT: Kitaptaki örnek değiştirildi. Kitaptaki örnekte, durum değişkeni 1 iken kritik kaynak meşgul sayılıyordu. Bu örnekte, durum değişkeni 0 olduğu zaman meşgul olduğu varsayılıyor. Çok İşleyicili Bilgisayarlarda test-andset İşlemleri ts ve xchg komutları, tek AİB içeren sistemlerde zamanuyumlamayı gerçekleştirmede yeterlidir. Birden çok AİB bulunduran çok işleyicili bir sistemlerde, bu komutlar karşılıklı dışlamayı sağlamada yetersiz kalır. Bir işleyici ortak belleğe erişirken, diğer bir işleyici bunun erişimini bölerek aynı bellek sözcüğüne koşut olarak erişebilir. Çok işleyicili sistemlerde ortak bellek üzerinde koşut erişilen zamanuyumlama değişkenlerinin eşanlı erişimlere karşı korunması gereklidir Çok İşleyicili Bilgisayarlarda test-andset İşlemleri 80X86 serisi işleyicilerde, komutların başına önek olarak konulan lock sözde komutu bu amaçla kullanılır. lock önekiyle bir komutu çalıştıran işleyicinin bellek erişim döngüsünün bölünmesine izin verilmez. Bellek erişiminin kilitlenmesini kendiliğinden yerine getiren komutlar olarak tsl (test and set lock) simgesiyle de anılmaktadırlar. Örnek: 80386'dan başlayarak Intel 80X86 işleyicilerinde xchg komutu Motorola 680X0 serisi işleyicilerde tas (test-and-set) komutu IBM System/370 serisi bilgisayar sistemlerinde kullanılan compare-and-swap komutu İlkel Semafor Kullanımı Dijkstra, iki ya da daha çok görev arasında karşılıklı dışlamayı sağlayacak, semafor (S) adlı özel, pozitif tamsayı değişkenler üzerinde işlem yapan P (S) ve V (S) adlı ilkel işleçleri tanımlamıştır. Bunların ilkel işleçler olmaları, işletimlerinin bölünemediği anlamına gelir. P(S); bölünmez (atomik) biçimde S değişkenini sınayan eğer S sıfırdan büyükse içeriğini bir eksilten, değilse beklemeyi sağlayan bir işleç tanımı içerir. V(S) ise S değişkenini bir artırmayı sağlayan bir işleç olarak tanımlanır
5 Semafor Tanımı ve Kullanımı Semaforla Üretici/Tüketici Görev Programlanması P(S) ve V(S) işleçleri tanımı: P (int *S) while(*s <= 0); /*bekle/ (*S)--; V (int *S) (*S)++; Semaforun program içinde kullanımı:. P(S); Kritik Kesim V(S);. 25 Çözüm: Görevlerin yastığa erişip erişmediğini kontrol etmek için bir semafor tanımlanır. 26 Semaforla Üretici/Tüketici Görev Programlanması P(S) ve V(S) İşleçlerinin Kuyruk Kullanarak Etkinleştirilmesi int b; boolean dolu=false; kullanıcı() char tutanak [80]; while(true) P (b); if (!dolu) çıktı-üret(tutanak); yastığayaz(f,tutanak); dolu = true; V (b); yazıcı() char tutanak [80]; while(true) P (b); if (dolu) yastıkoku(f,tutanak); dök(tutanak); dolu=false; V (b); Semafor Kuyrukları Görevler Arası Akış Denetimin Sağlanması 29 30
6 80x86 Makina Dilinde Semafor Gerçekleştirimi 80x86 Makina Dilinde Semafor Gerçekleştirimi P macro durum,durum-kuyruğu local yine,eriş yine: mov al, 0 lock xchg al, durum cmp al, 0 jnz eriş suspend(görev-kimliği,durum-kuyruğu) jmp yine eriş: P endm V son: V macro durum,durum-kuyruğu local son mov durum,1 mov dl, durum-kuyruğu mov al, 07h int 01ch ;al <-- kuyruk başındaki görev kimliği or al,al ;al = 0 ise kuyruk boş demektir. jz son mov kimlik, al resume(kimlik, durum-kuyruğu) endm x86 Makina Dilinde Semafor Gerçekleştirimi Sayan Semaforlar suspend suspend resume resume macro görev-kimliği,kuyruk kimliği,kuyruk-kimliği mov dl, görev-kimliği mov dh, kuyruk-kimliği mov al, 05h int 01ch endm macro görev-kimliği,kuyruk kimliği,kuyruk-kimliği mov dl, görev-kimliği mov dh, kuyruk-kimliği mov al, 06h int 01ch endm Semafor işleçleri, eksi tamsayıları da kapsayacak işleçler biçimine dönüştürüldüğünde, ilgili semafor için bekleyen görev sayısını (kuyruk boyunu) belirlemek mümkündür. Eksi tamsayı değerleri de alabilen semaforlar sayan semaforlar ya da genel semaforlar olarak adlandırılır Sayan Semaforla Üretici/Tüketici Görev Programlanması Sayan Semaforla Üretici/Tüketici Görev Programlanması Yastığın dolup dolmadığını kontrol etmek için iki sayan semafor tanımlanır: Bir semafor (f) doluluk oranını, diğeri boşluk (e) oranını sayar. Program başında boşluk sayan semafor (e) yastık boyuna, diğeri (f) sıfıra eşitlenir. int b,e,f; kullanıcı() char tutanak [80]; while(true) çıktı-üret(tutanak); P (e); P (b); yastığayaz(f,tutanak); V (b); V (f); yazıcı() char tutanak [80]; while(true) P (f); P (b); yastıkoku(f,tutanak); V (b); V (e); dök(tutanak); 35 36
7 Uyuyan Berber Problemi (Sleeping Barber) Uyuyan Berber Problemi için Çözüm #define CHAIRS 5 /* # of chairs for waiting customers */ typedef int semaphore; /* use your imagination */ semaphore customers = 0; /* # of customers waiting for service */ semaphore barbers = 0; /* # of barbers waiting for customers */ semaphore mutex = 1; /* for mutual exclusion */ int waiting = 0; /* customers are waiting (not being cut) */ void barber(void) white (TRUE) P(&customers); /* go to sleep if # of customers is 0 */ P(&mutex); /* acquire access to 'waiting' */ waiting = waiting - 1;/* decrement count of waiting customers */ V(&barbers); /* one barber is now ready to cut hair */ V(&mutex); /* release 'waiting' */ cut_hair(); /* cut hair (outside critical region) */ Uyuyan Berber Problemi için Çözüm Öncelik Çizgesi ve Birden Fazla Görev Arası Zamanuyumlama void customer(void) P(&mutex); /* enter critical region */ if (waiting < CHAIRS) /* if there are no free chairs, leave */ waiting = waiting + 1; /* increment count of waiting customers */ V(&customers); /* wake up barber if necessary */ V(&mutex); /* release access to 'waiting' */ P(&barbers); /* go to sleep if # of free barbers is 0 */ get_haircut(); /* be seated and be serviced */ else V(&mutex); /* shop is full; do not wait */ Üst Düzey Zamanuyumlama Araçları Görevler arası iletişimi alt düzey işleçler yerine, bu işleçlerden yararlanılarak gerçekleştirilen daha üst düzey tanımlara dayalı işlevlerle ele almak programlama kolaylığı sağlayan bir yoldur. Bu amaçla, sistem çağrıları arasında çoğu kez send ve receive olarak adlandırılan işlevler öngörülür. Bu işlevler, görevler arası iletişimin yanı sıra bunun ortaya çıkardığı zamanuyum sorununu da, programcılara yansıtmadan çözerler. send/receive komutları send komutu bir görevin diğer bir göreve ileti göndermesi için kullanılır. receive komutu diğer görevlerden ileti beklemek ve almak için kullanılır. send (hedef, ileti) receive (kaynak, ileti) hedef vekaynak, alan ve gönderen görevlerin kimlikleridir. ileti ise aktarılan veri öbeğini belirler. send komutu, ileti adlı veri öbeğininhedef kimlikli alıcı göreve aktarılmasını; receive komutu ise kaynak kimlikli görevin göndereceğiileti'nin okunmasını sağlar
8 send/receive Kullanımı Örneği send/receive Komutlarının Gerçekleştirimi İletilerin kaynak kimlikli görevden hedef kimlikli göreve aktarımı, değişik yollarla gerçekleştirilebilir: Kaynak görevin bellek alanından, doğrudan hedef görevin bellek alanına aktarılması Sorun: Görevlerin işletimlerini bekle-ilerle biçimiyle yavaşlatan bir yoldur. İşletim sistemine ilişkin yastık alanları üzerinden dolaylı taşınması Sorun: Veri yapılarının tanımları kullanıcılara bırakılmaz. Posta kutularının kullanılması Posta Kutusu ile send/receive Gerçekleştirimi Posta kutuları, belirli sayıda ve çoğu kez değişmez uzunlukta iletinin yastıklanmasına yarayan ve görevler programlanırken tanımlanan özel tür yapılardır. Veri yapılarının tanımlarını kullanıcılara bırakma esnekliği posta kutusu kullanımıyla sağlanır. send (posta-kutusu, ileti) send komutu ile posta kutusuna ileti gönderen görev, posta kutusu dolunca, bu posta kutusuna ilişkin bekleme durumuna alınır. receive (posta-kutusu, ileti) receive komutu, varsa bekleme durumundaki görevi hazır göreve dönüştürür. Posta kutusu boşken receive komutu ile ileti okumak isteyen görev, bu kutuya ilişkin bekleme durumuna alınır. UNIX te Posta Kutuları pipe komutu, UNIX işletim sisteminde görevler arası posta kutuları oluşturmak amacıyla kullanılır. Verilerin pipe a gönderilmesi ve alınması, sıradan kütükler için kullanılan yazma ve okuma komutlarıyla gerçekleştirilir. UNIX işletim sisteminde pipe olarak adlandırılan posta kutularının kimlikleri (adları) bulunmaz. Bu nedenle, pipe sadece ata-oğul yakınlığındaki görevler tarafından kullanılabilirler pipe Kullanım Örneği-1 /* cc -o ata a ata.c a.c komutuyla derlenen ana.c */ #include <stdio.h> main() int i, pfd[2], boy; char fdstr[10], msg[80]; pipe(pfd); if(fork()==0) close(pfd[1]); /*cocuk da yazma ucunu kapa*/ sprintf(fdstr,"%d",pfd[0]); execlp("./cocuk", cocuk",fdstr,null); exit(0); pipe Kullanım Örneği-2 /* cc -o cocuk cocuk.c komutuyla derlenen kız.c */ #include <stdio.h> main(int argc, char *argv[]) int i, fd, nread; char s[80]; fd = atoi(argv[1]); nread = read(fd,s,sizeof(s)); /*gelen mesajı oku*/ printf ("reading %d bytes: %s\n",nread,s); close(pfd[0]); /* ata da okuma ucunu kapa */ boy = getline(msg); /* klavyeden mesajı oku */ write(pfd[1],msg,boy); /* posta kutusuna yaz */ wait(); /* cocuk un sonlanmasını bekle */ 47 48
9 pipe Komutu UNIX Shell de Pipe Kullanımı Örneği pipe adlı posta kutuları, (shell) komut yorumlama katmanında kullanıcılara, sistem komutlarıyla birlikte kullanılan biçimleriyle yansır. Örnek: ls -l less fork() shell shell exec( ls -l ) ls ls sistem komutu, ürettiği kütük listesini, pipe üzerinden less komutuna aktarır.less komutu bu çıktıyı sayfa sayfa görüntüler. fork() pipe pipe shell exec( less ) less UNIX te FIFO UNIX System III den başlayarak named pipe (FIFO) kavramı getirilmiştir. FIFO, aralarında ata-oğul ilişkisi olmayan görevler arasında veri iletişimi ve zamanuyumlama için getirilmiştir. myfifo adlı FIFO kütüğünü yaratmak için aşağıdaki komut kullanılır: mknod( myfifo,s_ififo 0666,0) FIFO kütüğünün adı üzerinde anlaşan görevler open(), read(), write(), close() gibi sistem çağrılarını kullanarak FIFO kütüğüne erişebilirler. FIFO Sunucu Örneği /* fifoserver.c */ #include... #define FIFO_FILE /tmp/myfifo" int main(void) FILE *fp; char readbuf[80]; umask(0); /* Create the FIFO if it does not exist */ mknod(fifo_file, S_IFIFO 0666, 0); while(1) fp = fopen(fifo_file, "r"); fgets(readbuf, 80, fp); printf("received string: %s\n", readbuf); fclose(fp); return(0); FIFO İstemci Örneği /* fifoclient.c */ #include... #define FIFO_FILE " /tmp/myfifo" int main(int argc, char *argv[]) FILE *fp; if ( argc!= 2 ) printf("usage: fifoclient [string]\n"); exit(1); if((fp = fopen(fifo_file, "w")) == NULL) perror("fopen"); exit(1); fputs(argv[1], fp); fclose(fp); return(0); 53 Dağıtılmış İşlem (Distributed Processing) Semaforlar gibi alt düzey işleçler, tek işlemcili ya da ortak bir ana belleğe sahip çok işleyicili sistemler üzerinde kullanılabilirler. Ağlar içinde bütünleşmiş bilgisayar sistemlerinin ortak bellekleri yoktur. Semaforlara dayalı zamanuyumlama düzenekleri, farklı bilgisayarlar üstünde çalışan görevler için kullanılamazlar. Tek bir uygulamanın, bir ağ içinde birden fazla bilgisayar sistemini aynı anda kullanabilmesine sağlayan işlem türüne dağıtılmış işlem adı verilir. 54
10 Uzaktan Yordam Çağırma Alt Düzey veya Üst Düzey Zamanuyumlama? UNIX System V ile birlikte, shared memory, semaphore gibi alt düzey araçlar da posta kutularına alternatif olarak kullanılabilmektedir. Üst düzey araçlar programlama kolaylığı sağlar. Alt düzey araçlar, kullanım kolaylığından ödün vererek daha yüksek performans elde etmeye imkan tanır. Bilgisayar sistemlerindeki uzaktan yordam çağırma (remote procedure call) düzenekleri, dağıtılmış işleme olanak sağlar. send vereceive komutları, dağıtılmış işlem ortamında kullanılabilen tek zamanuyumlama araçlarıdır Monitor Monitor, birlikte çalışan görevlerin, ortak kaynağa erişim yapan yordamlarının (kritik kesimlerinin) toplandığı kümeye verilen addır. Görevlerin monitorda yer alan bir yordamı ç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. Program derleme aşamasında, monitor biçiminde tanımlanan kesimlerin başına, karşılıklı dışlamayı sağlayacak komutlar derleyici tarafından eklenir. 57 Monitor İçinde Kilitlenme Bir üretici/tüketici görev senaryosunda, üretici görevin monitora girerek, yastık dolu iken buraya yeni bir tutanak eklemeye çalışması durumunda beklemeye alınması gerekir. Aynı şekilde, tüketici görev yastık boşken monitora girip yastıktan bir tutanak okumaya çalışırsa, görevin beklemeye alınması gerekir. Üretici/tüketici görev, gerekli önlemler alınmadan beklemeye alınırsa, hala monitor içinde göründüğünden diğer görevin monitora girmesi engellenir. Bu durumlarda, diğer görevin bekleme durumu son bulamayacağından, kilitlenme olarak bilinen, görevlerin karşılıklı bekleşme durumu ortaya çıkar. 58 wait/signal Komutları Monitor içindeki kilitlenmeleri engellemek için wait ve signal komutları öngörülmüştür. wait(kosul-degiskeni) komutu kendisini çalıştıran görevi koşul değişkenine bağlı bekleme kuyruğuna koyar. signal(kosul-degiskeni) komutu koşul değişkenine bağlı kuyruktaki bir görevi hazır görev durumuna getirir. Monitora girmiş bir görev, wait komutunu çağırdığında, başka görevlerin de monitora girmesine imkan tanımış olur. Monitor Kullanım Örneği - 1 monitor üretici-tüketici tüketici condition dolu,boş; int sayaç; tutanakekle(char *tutanak) if(sayaç == N) wait(dolu); tutanakyaz(tutanak); sayaç++; if(sayaç == 1) signal(boş); tutanakal(char *tutanak) if(sayaç == 0) wait(boş); tutanakoku(tutanak); sayaç--; if(sayaç == (N-1)) signal(dolu); üretici-tüketici tüketici ends 59 60
11 Monitor Kullanım Örneği 2 char tutanak[80]; kullanıcı() while(true) çıktı-üret(tutanak); üretici-tüketici.tutanakekle(tutanak); char tutanak[80]; yazıcı() while(true) üretici-tüketici.tutanakal(tutanak); dök(tutanak); JAVA da Monitor Kavramı JAVA da bir nesneye erişim yapan yordamların synchronized tanımı, monitor kavramına benzer yaklaşımdır. Paylaşılan nesneyle ilgilisynchronized tanımlı herhangi bir yordamı, en çok bir işletim dizisinin işletmesi sağlanır (karşılıklı dışlama). Bir işletim dizisi, paylaşılan nesneyle ilgilisynchronized tanımlı bir yordamın işletimini tümüyle tamamlamadan, başka bir işletim dizisi aynı nesneye ilişkinsynchronized nitelikli başka bir yordamı işletmeye kalkarsa, otomatik olarak bekler duruma geçer Thread ler Arası Zamanuyumlama için Problemli Bir Java Sınıf Örneği class Counter private int count = 0; public void add(int val) int y = count; y = y + val; count = y; public void sub(int val) int y = count; y = y - val; count = y; 63 Thread ler Arası Zamanuyumlama için Problemli Bir Java Sınıf Örneği Counter sınıfından bir nesne tanımlanır ve eğer birden fazla thread tarafından bu nesne kullanılırsa, thread ler arası zaman uyumlama olmadığı için count değerini güncellemede hatalar oluşabilir. Örneğin birden fazla thread aynı anda add method unu çağırırsa ve ikisi de aynı count değerini okursa günleme hatası oluşur. Bu sorunu düzeltmek için add ve sub method ları syncronized olarak tanımlanmalıdır. Böylece bir thread add method unu çağırdığı zaman, diğer thread ler add veya sub method unu çağırırsa bekleme durumuna alınırlar. 64 Syncronized Java Sınıf Örneği Bariyer (Barrier) Kavramı class SyncronizedCounter private int count = 0; public synchronizedvoid add(int val) int y = count; y = y + val; count = y; public synchronized void sub(int val) int y = count; y = y - val; count = y; 65 Bariyer kullanımı Bir bariyere yaklaşan görevler Biri hariç bloklanan 3 görev Son görev de bariyere ulaşınca, bütün görevler işletime devam ederler. 66
12 Yemek Yiyen Felsefeciler Problemi (Dining Philosophers) Felsefeci düşünür veya yemek yer. Yemek için 2 çatala ihtiyacı vardır. 2 çatalı aynı anda alamaz. Önce birini sonra ötekini alır. Kilitlenme nasıl oluşabilir? Kilitlenmeyi nasıl önleriz? Yemek Yiyen Felsefeciler Problemi Yanlış bir yaklaşım: Görevler Arası Kilitlenme Kilitlenmeyi Oluşturan Koşullar Karşılıklı Dışlama: Bir kaynağın aynı anda yalnız bir görev tarafından kullanılabilmesi. İstem üzerine kaynak atama: Görevin gereksediği kaynakları, teker teker, işletim aşamasında elde etmesi. Kaynak bırakmama: Atanan kaynakların, görevler serbest bırakmadıkça geri alınamaması. Döngüsel Bekleme: Bir görevin elinde tuttuğu kaynaklardan bir ya da daha çoğunun, başka görevlerce de istenmesi Kilitlenmeyi Çözme Yaklaşımları Kilitlenmelere karşı 3 temel yaklaşım: Kilitlenmelerden korunma Kilitlenmelerden sakınma Kilitlenmelerin özdevinimli olarak yakalanması ve ortadan kaldırılması, 71 Kilitlenmelerden Korunma 1. Tüm kaynakları sağlanmadan işlerin görevlerin tanımları yapılmaz. Görevler işletim aşamasında ek kaynak isteminde bulunamazlar. Sorun: Kullanıcılar, işletim aşamasına ilişkin tüm olasılıkları düşünerek kaynak istemleri hakkında abartılı davranabilirler. 2. Görevler, gereksedikleri kaynakları baştan belirler ve kaynakları, sırayla kilit altına almaya çalışırlar. Eğer bir kaynak başka bir görev tarafından kilit altına alınmışsa, o ana kadar kilitlenen kaynak serbest bırakılarak işlemlere yeniden başlanır. Görevin işletimi sonlanmadan bazı kaynakların, örneğin günlenen kütüklerin geri verilmesi mümkün olmayabilir. Veritabanlarında iki aşamalı kilitleme (two phase locking) 72
13 Kilitlenmelerden Korunma 3. Atanan kaynaklar, görevlerin istemleri dışında da sistemce geri alınabilir. Sorun: Tüm kaynaklar için uygulanması mümkün olmaz. 4. Kaynaklar belirli kümelere ayrılır ve bu kümeler numaralanarak sıralanır. Görevler aynı kümede bulunan kaynaklar için birden çok atama isteminde bulunmazlarsa; (i) ninci kümeden kaynak sağlamış bir görev, yeni bir kaynak istemini yalnızca (i+1), (i+2),..., (i+n) gibi daha üst sıralardaki kümelerden yaparsa; (i) ninci kümedeki kaynaklar, (i-1) inci kümedeki kaynaklardan önce serbest bırakılmak zorunda ise kilitlenme oluşmayacağı kanıtlanabilir. 73 Kilitlenmelerden Korunma (4. Yöntemin devamı) - Sıradüzensel kaynak atama ile kilitlenmelerden korunma: 74 Kilitlenmelerden Sakınma Kilitlenmelerin Yakalanması ve Ortadan Kaldırılması Banker algoritması (Dijsktra 1965) Örnek: Bankerin toplam sermayesinin 10 TL ve ödünç alınan miktarların tablodaki gibi olduğunu varsayın. 3. müşteri 1 TL daha ödünç almak isterse ve banker verirse, banker iflas eder. Görevlerin kaynak istemlerine ilişkin herhangi bir kısıtlamaya gitmeden kilitlenmelerin oluşmasını beklenir Kilitlenme oluştuğunda, nedenleri belirlenerek ortadan kaldırılmaya çalışılır. Kilitlemenin nedenlerini bulmak için, hangi kaynakların hangi görevlere atandığını gösteren, kaynak çizgeleri kullanılır Kilitlenmelerin Yakalanması ve Ortadan Kaldırılması 77
Görevler Arası Zamanuyumlama
Görevler Arası Zamanuyumlama Ahmet Burak Can Hacettepe Üniversitesi [email protected] Birlikte Çalışan Görevler Bilgisayar kaynaklarının etkin kullanımı için, görevlerin birlikte ve koşut işlemi
İşletim Sistemlerine Giriş
İşletim Sistemlerine Giriş Süreçler Arası İletişim (IPC-Inter Process Communication) İşletim Sistemlerine Giriş - Ders02 1 Süreçler Arası İletişim Süreçler, sıklıkla birbirleri ile iletişim kurarlar. Bir
Bölüm 6: İşlem Senkronizasyonu (1) Operating System Concepts with Java 8 th Edition
Bölüm 6: İşlem Senkronizasyonu (1) 6.1 Silberschatz, Galvin and Gagne 2009 İşlem Senkronizasyonu Arkaplan Bilgisi Kritik-kısım Problemi Peterson Çözümü Senkronizasyon Donanımı Semaforlar Senkronizasyonun
İŞ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
İşletim Sistemleri. Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü
İşletim Sistemleri Hazırlayan: M. Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Bu dersin sunumları, Abraham Silberschatz, Greg Gagne, Peter B. Galvin, Operating System Concepts 9/e, Wiley,
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
TBİL-407 İşletim Sistemleri BÖLÜM 1 1- İşletim sistemi, kullanıcılar ile donanım arasında yer alan bir yazılımdır. Doğru
TBİL-407 İşletim Sistemleri BÖLÜM 1 1- İşletim sistemi, kullanıcılar ile donanım arasında yer alan bir yazılımdır. 2- İşletim sistemi kullanıcılara kolay bir işletim ortamı sunarken sistem kaynaklarının
YZM 3102 İşletim Sistemleri
YZM 3102 İşletim Sistemleri Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği BÖLÜM 6.2 Bu bölümde, Mutex ve Semafor Farkları Klasik Senkronizasyon
Prosesler Arası Haberleşme ve Senkronizasyon
4 Prosesler Arası Haberleşme ve Senkronizasyon Eş Zamanlılık Eş zamanlı prosesler olması durumunda bazı tasarım konuları önem kazanır: Prosesler arası haberleşme Kaynak paylaşımı Birden fazla prosesin
İşletim Sistemlerine Giriş
Ders Kitapları ve Notlandırma İşletim Sistemlerine Giriş Ahmet Burak Can Hacettepe Üniversitesi [email protected] Ders kitapları İşletim Sistemleri, Ali Saatçi Modern Operating Systems, Andrew Tanenbaum
İşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems) 1 PROCESS SENKRONİZASYONU (PROCESS SYNCHRONIZATION) Kritik Bölge Probleminin Olası Çözümleri Donanıma Dayalı Çözümler Donanıma Dayalı Çözümler Yazılım tabanlı kritik
İŞ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
Bölüm 7: Kilitlenme (Deadlocks)
Bölüm 7: Kilitlenme (Deadlocks) Mehmet Demirci tarafından çevrilmiştir. Silberschatz, Galvin and Gagne 2013 Bölüm 7: Kilitlenme (Deadlocks) Sistem modeli Kilitlenme Belirleme Kilitlenme Yönetim Yöntemleri
YZM 3102 İşletim Sistemleri
YZM 3102 İşletim Sistemleri Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği BÖLÜM 6.1 Bu bölümde, Proses Senkronizasyonu Kritik Bölge Problemi
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
YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta
YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin
Temel Bilgisayar Programlama Final Sınavı Çalışma Notları
Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak
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.
İşletim Sistemlerine Giriş
Ders Kitapları ve Notlandırma İşletim Sistemlerine Giriş Ahmet Burak Can Hacettepe Üniversitesi [email protected] Ders kitapları İşletim Sistemleri, Ali Saatçi Modern Operating Systems, Andrew Tanenbaum
Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {
Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel
YZM 2116 Veri Yapıları
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 5 Kuyruk VY ve ADT Basit Kuyruk (Simple Queue)
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
Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009
Bölüm 3: İşlemler 3.1 Silberschatz, Galvin and Gagne 2009 Bölüm 3: İşlemler İşlem Kavramı İşlem Zamanlaması (Process Scheduling) İşlemler Üzerindeki Faaliyetler İşlemler Arası İletişim (Interprocess Communication)
Bölüm 3: İşlemler Operating System Concepts with Java 8th Edition 3.1 Silberschatz, Galvin and Gagne 2009
Bölüm 3: İşlemler 3.1 Silberschatz, Galvin and Gagne 2009 Bölüm 3: İşlemler İşlem Kavramı İşlem Zamanlaması (Process Scheduling) İşlemler Üzerindeki Faaliyetler İşlemler Arası İletişim (Interprocess Communication)
// 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
İş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
İşletim Sistemleri. Dr. Binnur Kurt [email protected]. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri
İşletim Sistemleri Dr. Binnur Kurt [email protected] Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler
Giriş. İplik Modeli. geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü var.
Giriş 3 İPLİKLER geleneksel işletim sistemlerinde her in özel adres uzayı ve tek akış kontrolü var. aynı adres uzayında birden fazla akış kontrolü gerekebilir aynı adres uzayında çalışan paralel ler gibi
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
İş 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
Giriş. geleneksel işletim sistemlerinde her prosesin. aynı adres uzayında birden fazla akış kontrolü gerekebilir
3 İPLİKLER Giriş geleneksel işletim sistemlerinde her prosesin özel adres uzayı ve tek akış kontrolü var. aynı adres uzayında birden fazla akış kontrolü gerekebilir aynı adres uzayında çalışan paralel
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ü
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
Sınav tarihi : Süre : 60 dak.
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =
İ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:
Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler
Programlama Dilleri 1 Ders 12: Belirleyiciler ve Niteleyiciler Genel Bakış Giriş Yer Belirleyicilerle Bildirim İşlemi auto Belirleyicisi register Belirleyicisi static Belirleyicisi Statik ve Global Değişkenlerin
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
Bölüm 5: Süreç Senkronizasyonu
Bölüm 5: Süreç Senkronizasyonu Mehmet Demirci tarafından çevrilmiştir. Silberschatz, Galvin and Gagne 2013 Bölüm 5: Süreç Senkronizasyonu Giriş Kritik bölüm problemi Peterson ın Çözümü Senkronizasyon Donanımı
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
Kütük Yönetimi. Kütük Yönetim Sisteminin İşlevleri. Hacettepe Üniversitesi [email protected]. Kavramsal Kütük Modeli.
Kütük Yönetim Sisteminin İşlevleri Kütük Yönetimi Ahmet Burak Can Hacettepe Üniversitesi [email protected] Mantıksal kütük yapılarından fiziksel yapılara geçişin sağlanması Kütük başına göreli mantıksal
Algoritma ve Programlama: Karar Yapıları ve Döngüler
Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan
İş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
Hafta 12 Karakter Tutan Diziler
BLM111 Programlama Dilleri I Hafta 12 Karakter Tutan Diziler Yrd. Doç. Dr. Caner ÖZCAN Katar (String) Tanımlama Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki
3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler
Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.
Giris {\} /\ Suhap SAHIN Onur GÖK
Giris 0 \ /\ Suhap SAHIN Onur GÖK Fonksiyon C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) Giris? main() Çıkıs main() C: Ana Fonksiyon(main) void main()
Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım
Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı
Temel Bilgisayar Programlama
BÖLÜM 11: : Birçok programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. Bütün programlama dillerinde, sabit disk sürücüsü (Hard Disk Drive, HDD) üzerindeki verileri okumak veya diske veri
Dr. Fatih AY Tel: 0 388 225 22 55 [email protected] www.fatihay.net
Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 [email protected] www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)
mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:
Dosyalama Çoğu programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. C programlama dilinde, disk dosyasına erişme (okuma ve yazma için) iki farklı yöntemle yapılır. Bunlar üst düzey ve alt
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
Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind()
Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu Bir soket yarat Sokete iyi bilinen bir port numarası bağla Bağlantılar için bir dinleme kuyruğu oluştur Bir bağlantıyı kabul
8. İŞARETCİLER (POINTERS)
8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren
YZM 3102 İşletim Sistemleri Uygulama
YZM 3102 İşletim Sistemleri Uygulama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği BÖLÜM - 6 Bu laboratuvarda, Semaphore Uygulamaları
Lambda İfadeleri (Lambda Expressions)
Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki
İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri
İşletim Sistemleri Dr. Binnur Kurt [email protected] Omega Eğitim ve Danışmanlık http://www.omegaegitim.com 1 S a y f a İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk 3. Prosesler 4. İplikler 5. İplikler
BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ
BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ Amaçlar 1. TCP protokolünün öğrenilmesi 2. Ağ programlamada kullanacağımız sistem komutlarının öğrenilmesi 3. Ağ programlamanın kavranması TCP ile veri alışverişi
İç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ış
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
Programlama Dilleri 1. Ders 4: Diziler
Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları
BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN
BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer
Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU
Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip
Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.
DOSYALAMALAR Programlama bilgilerin her zaman ekrana yazdırılması veya değişkenlerde tutulması yeterli olmayabilir. Programın çalışması sonucu girilen yada hesaplanan her bilgi manyetik ortama programda
PROGRAMLAMAYA GİRİŞ DERS 2
PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı
Ç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
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
DOSYA İŞLEMLERİ Programlama dilleri hafta -
BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DOSYA İŞLEMLERİ Programlama dilleri 1-10. hafta - Araş. Gör. Nesibe YALÇIN Dosya İşlemleri Programın çalışma esnasında
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;
İşletim Sistemleri-II
EGE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ İşletim Sistemleri-II Ödev-II Barış Taşkend 05090000006 16.02.2012 İçindekiler 1. Barrier... 2 1.1. Giriş... 2 1.2. Barrier Nedir ve Nasıl Çalışır?... 2 1.2.1.
Temel Giriş/Çıkış Fonksiyonları
Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden
Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden
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
1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.
1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result
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
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir
VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ
VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ CELAL BAYAR ÜNİVERSİTESİ, YAZILIM MÜHENDİSLİĞİ 2015-2016 1. Tanım Kuyruk, eleman eklemelerin sondan (rear) ve eleman çıkarmaların
BİL132 Bilgisayar Programlama II
BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans
Bölüm 9. Altprogramlar ISBN
Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda
CENG/BILM 341 FINAL REVIEW. Dr. Esma Yıldırım
CENG/BILM 341 FINAL REVIEW Dr. Esma Yıldırım Ques@on 1 Ques@on: An array of threads are working for filling and emptying a buffer that can hold mul@ple elements. There are two types of threads in the system.
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,
Bölüm 3 Yapısal Programlama
1 Bölüm 3 Yapısal Programlama Konular 3.1 Giriş 3.2 Algoritmalar 3.3 Pseudocode (Sahte kodlar) 3.4 Kontrol yapıları 3.5 If Seçim yapısı 3.6 If Else Seçim yapısı 3.7 While Döngü yapısı 3.8 Algoritmaları
Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü
Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin dosyaları, verileri bir kere hazırlayıp, ikincil saklama
Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap
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
İŞ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:
/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve
Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?
Bölüm 5: İşlemci Zamanlaması. Operating System Concepts with Java 8 th Edition
Bölüm 5: İşlemci Zamanlaması 5.1 Silberschatz, Galvin and Gagne 2009 Temel Kavramlar Çoklu programlama sayesinde CPU kullanımının optimize edilmesi CPU I/O İşlem Döngüsü Bir işlemin çalıştırılması birbirlerini
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
YZM 2116 Veri Yapıları
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 3 Motivasyon: Neden Listeye İhtiyaç Var? Bağlı
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
Elbistan Meslek Yüksek Okulu Güz Yarıyılı EKi Salı, Perşembe Öğr. Gör. Murat KEÇECĠOĞLU
Elbistan Meslek Yüksek Okulu 2015 2016 Güz Yarıyılı 22-23 EKi. 2015 Salı, Perşembe Öğr. Gör. Murat KEÇECĠOĞLU OSI modeli sıradüzensel 7 katmandan oluşur. OSI modeli hala geliştirilmekte olmasına rağmen
C Programlama Dilinde Değişkenler
C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına
BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları
BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu
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
İş 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
Öğ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
Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:
Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri
MTM 305 MİKROİŞLEMCİLER
KARABÜK ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ MTM 305 MİKROİŞLEMCİLER Arş. Gör. Emel SOYLU Arş. Gör. Kadriye ÖZ Alt Programlar (Procedure) Büyük programları tek bir kod bloğu
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
