İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri
|
|
- Alp Bardakçı
- 8 yıl önce
- İzleme sayısı:
Transkript
1 İşletim Sistemleri Dr. Binnur Kurt Omega Eğitim ve Danışmanlık 1 S a y f a
2 İÇİNDEKİLER 1. İşletim Sistemi 2. Kabuk İplikler 5. İplikler Arası Eş Zamanlama 6. Arası İletişim 7. İş Sıralama 8. Arası Eş zamanlama 9. Bellek Yönetimi 10. Dosya Sistemi 11. Soket Haberleşme 2 S a y f a
3 BÖLÜM 3 Bölümün Amacı Bölüm sonunda aşağıdaki konular öğrenilmiş olacaktır: Proses ve prosesin durumları Linux da proses yönetimi arasında ebeveyn-çocuk ilişkisi Linux da çok prosesli uygulama geliştirme Java 9 da prosesler üzerinde işlemler yapabilmek 3 S a y f a
4 3.1 Giriş İşletim sisteminin temel görevinin başta işlemci olmak üzere sistem kaynaklarını paylaştırmak olduğunu söylemiştik. İşletim sistemi tasarlanırken bir dizi genel tasarım hedefleri gözetilir. Bu isterlerin başında çok görevlilik gelir. İşletim sisteminin birden fazla görevi çalıştırması istenir. İşletim sistemi üzerinde çok sayıda uygulamanın çalışması istenir. Bu çalışan uygulamalar, işletim sisteminde, proses olarak adlandırılır. Burada işletim sistemi, tek ya da çok çekirdekli ya da işlemcili bir sistem üzerinde çalışıyor olabilir. Eğer tek işlemci yada çekirdek varsa aynı anda birden fazla proses çalışamaz. Çekirdek içinde proses sıralayıcı tarafından yönetilen bir önceliklendirilmiş kuyruk bulunur. Her proses belirli bir süre işlemciyi kullanır ve süresi dolduğunda işlemciyi terk eder. Bazen bir prosesin zamanı dolmasa da işlemciyi terk etmesi gerekebilir. Bu konuyu daha sonra daha detaylı inceleyeceğiz. Kuyruktaki proseslerden biri, işlemciyi bir sonra kullanacak proses olarak seçilir ve işlemci ona verilir. İşlemciyi terk eden proses bu önceliklendirilmiş kuyruktaki yerini alır ve sıra tekrar kendisine gelen kadar bekler. Böylelikle prosesler işlemciyi zamanda paylaşarak ve vakit buldukça çalışarak ellerindeki işleri tamamlamaya çalışırlar. Birden fazla çekirdek yada işlemcinin olduğu sistemlerde, çekirdek sayısı kadar kuyruk bulunur ve çekirdek sayısı kadar proses paralel olarak çalışabilir. 3.2 Proses Modeli Her bir uygulamanın çalıştırılması için bir prosesin yaratılması gerektirir. Ama bir uygulama çok prosesli olabilir. Bir proses bir ya da daha fazla çocuk proses yaratabilir. Böylelikle prosesler arasında ebeveyn çocuk ilişkisi yaratılmış olunur. Proses yaratıldığında bellekte proses için yer ayrılır. Bunun dışında çekirdek her bir proses için proses ile ilgili bilgileri sakladığı bir tablo oluşturur. Bu tablo proses tablosu olarak adlandırılır. Prosesin bellek modeli bir işlemciden diğerine değişmekle birlikte genel olarak Şekil-3.1 de verilen bir modele sahiptir. Burada Yığın (=Stack) yerel değişkenlerin, fonksiyon çağrılarında parametre aktarımı, dönüş adresinin ve dönüş değerinin saklanması için kullanılır. Yığının çalışması otomatik olarak gerçekleşir. Yerel değişkenler erimi başladığı yerde otomatik olarak yığında yaratılır, erimi dışına çıkıldığında ise yine otomatik olarak yok edilir. Bu yüzden bu tür değişkenler bazen geçici ya da otomatik değişken olarak da adlandırılır. Heap, dinamik bellek kullanımı için kullanılır. Bu alanın yönetiminden programcı sorumludur. Programcı, C de malloc() ve free() fonksiyonlarını, C++ da ise new ve delete operatörlerini kullanarak ihtiyacı kadar alanı alır ve kullanımı bitince ise aldığı alanı geri vermekle sorumludur. Bu söylemesi kolay ancak gerçeklemesi zor bir sorumluluktur. Bu nedenle C/C++ ile geliştirilen uygulamalarda dikkat edilmez ise bellek kaçağı oluşabilir. Bu özellikle servis tipi hiç sonlamayacak biçimde tasarlanan yazılımlar için büyük sorun oluşturur. Birkaç sekizlik bir kaçak, uzun dönemde yetersiz bellek hatası alınmasına neden olabilir. Text alanda fonksiyonlar yer alır. Data bölmesinde ise global değişkenler ve fonksiyonlarda static olarak tanımlanan değişkenler saklanır. 4 S a y f a
5 1 int x; 2 static int b = 4; 3 4 main() { 5 int y; 6 static int z; 7 8 y = b; 9 z = foo(y); foo( int p ) { 13 int a; 14 a = p + 2; 15 return(a); 16 Stack Heap Data Text main() y foo() p a x b z main() { foo() { Şekil-3.1 Proses Bellek Modeli uygulamaların görevlerini kodlama için ağır sıklet elemanlardır. Bir proses fork() sistem çağrısını kullanarak çocuk proses yaratabilir. fork sistem çağrısı prosesin bellek görüntüsünün bire bir kopyasını çıkarır. Bu nedenle fork ile proses yaratmak maliyetlidir. Diğer bir maliyet bağlam anahtarlamada karşılaşılır. İşlemciyi kullanan proses süresi dolup işlemciyi terk ederken sıra tekrar kendisine geldiğinde kaldığı yerden devam edebilmesi için bağlamının saklanması gerekir. Bağlam, saklayıcılar, yığın göstergesi, program sayacı gibi işlemci içindeki elemanlardan oluşur. Bunlar bellekte saklanır. Böylelikle sıra tekrar kendisinde geldiğinde, prosesin bellekte saklanan bu bağlamı işlemciye geri yüklenerek, prosesin kaldığı yerden devam etmesi sağlanır. Prosesin bağlamı kalabalık olduğu için anahtarlama maliyeti de yüksektir. Bu yüzden çok prosesli yapıya farklı bir seçenek olarak çok lifli (=thread) yapılar kullanılabilir. Lifler proseslere göre hafif sıklet elemanlardır. Bir lif yaratıldığında onun için sadece yeni bir yığın yaratılır. Bir lif prosesin heap, text ve data alanlarını paylaşır. Her lifin ise kendi yığını vardır. Linux da yaratılabilecek proses sayısının ve yığın büyüklüğünün bir değeri ve sınırı vardır. Bu sınırları ulimit komutunu kullanarak öğrenebilir ve yine bu komutu kullanarak değiştirebiliriz: [student@server1 ~]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) S a y f a
6 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited Bu değerleri değiştirmek için komutun çıktısında listelenen ile başlayan parantez içinde yazılı olan seçenek kullanılır. Örneğin bir kullanıcının yaratabileceği proses sayısı yukarıdaki listeden 1024 olarak okuyoruz. Bunu 2048 olarak değiştirmek için ulimit u 2048 komutunu çalıştırıyoruz: [student@server1 ~]$ ulimit -u 1024 [student@server1 ~]$ ulimit -u 2048 [student@server1 ~]$ ulimit -u 2048 Her bir lif yaratıldığında kendi yığını ile yaratılıyordu. Bu yığının boyutunu yukarıdaki komut çıktısından 8M olarak okuyoruz. Bunu 1M olarak değiştirmek için ulimit s 1024 komutunu çalıştırıyoruz: [student@server1 ~]$ ulimit -s 8192 [student@server1 ~]$ ulimit -s 1024 [student@server1 ~]$ ulimit -s 1024 Linux da uygulama geliştirmek için aşağıdaki modellerden biri kullanılır. i. Çok Prosesli Programlama Modeli ii. Tek Prosesli Çok Lifli Programlama Modeli iii. Çok Prosesli Çok Lifli Programlama Modeli Bu modellerin biri birlerine göre kazanım ve yitimleri vardır. Çok prosesli modelin yitimi proses yaratma ve prosesler arasında bağlam anahtarlama maliyetidir. Çok lifli programlamada lifler işlemciyi daha verimli kullanır. Üstelik lif yaratmak daha düşük maliyeti vardır. Buna karşılık liflerden biri başarısız olursa uygulama da başarısız olur ve sonlanması gerekir. Bu nedenle genellikle (iii) ile verilen modeli tercih edilir. Kritik görevler ayrı prosesler olarak kodlanır. Her bir proses liflerden oluşur. Örneğin Oracle veritabanı, chrome ve firefox web tarayıcıları bu modele göre gerçeklenmişlerdir. 3.3 Linux da le Çalışmak Sistemde çalışan tüm proseslerin listesini almak için ps komutunu fe seçeneği ile birlikte kullanıyoruz: student@server1 ~]$ ps -fe more UID PID PPID C STIME TTY TIME CMD root :22? 00:00:02 /sbin/init root :22? 00:00:00 [kthreadd] root :22? 00:00:00 [ksoftirqd/0]... root :22? 00:00:00 [watchdog/2] root :22? 00:00:00 [ksoftirqd/2] 6 S a y f a
7 root :22? 00:00:00 [migration/2]... pgrep komutu ile prosesler arasında arama işlemi yapılabilir. in bir kısmı arka planda çalışan proseslerdir. Bu proseslerin ismi d ile biter. Sonu d ile biten proseslerin listesini almak için pgrep i kullanabiliriz: [student@server1 ~]$ pgrep -l "d$" 2 kthreadd 10 rcu_sched 32 kintegrityd 33 kblockd gvfsd 3531 restorecond 3535 vmtoolsd Burada $ özel bir semboldür ve katarın sonunu ifade eder. Komutun çıktısında ilk sütun proses kimlik numarasını ve ikinci sütun ise prosesin adını göstermektedir. i sonlandırmak için kill komutundan yararlanılır. kill komutu bir proses sinyal göndermek için kullanılır. Bir proses gönderilebilecek sinyallerin listesini almak için kill l komutunu kullanıyoruz: Bu sinyallerden 9 (SIGKILL) sinyalini alan bir proses doğrudan sonlanır: [student@server1 ~]$ for i in ; do gcalctool & done [1] [2] [3] [student@server1 ~]$ kill [student@server1 ~]$ kill [1] Killed gcalctool [student@server1 ~]$ kill [2]- Killed gcalctool [student@server1 ~]$ [3]+ Killed gcalctool i proses ismi ile sonlandırmanın yolu pkill komutunu kullanmaktır: 7 S a y f a
8 ~]$ for i in ; do gcalctool & done [1] [2] [3] [student@server1 ~]$ pkill gcalctool [student@server1 ~]$ [1] Terminated gcalctool [2]- Terminated gcalctool [3]+ Terminated gcalctool [student@server1 ~]$ arasında kimlik numarası 1 olan proses özel bir prosestir. init proses olarak adlandırılır. Tüm başlangıç işlemlerinden ve yapılandırmadan sorumludur. Başlangıç işlerinin yapılandırılmasından sorumlu dosya ise /etc/inittab dosyasıdır. Burada çalışma düzeyleri (=run level) tanımları yer alır. Her bir servisin hangi çalışma düzeyinde çalışacağı ise chkconfig komutu ile listelenebilir ve düzenlenebilir. Aşağıdaki örnekte mysql servisinin çalışma düzeyleri listeleniyor ve daha sonra tüm düzeylerde kapatılıyor. [student@server1 ~]$ chkconfig --list mysql mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off [student@server1 ~]$chkconfig --level 2345 mysql off [student@server1 ~]$ chkconfig --list mysql mysql 0:off 1:off 2:off 3:off 4:off 5:off 6:off Çalışma düzeyleri arasında geçiş için ise init komutundan yararlanılır. Klasik Unix sistemlerinde 5 çalışma düzeyi yer alır. 1 den 5 e doğru yeni servisler açılır. 5 den 1 e doğru servisler kapatılır. 1 düzeyinde tüm bilgisayar ağı kapalıdır ve çekirdek tek kullanıcılı olarak çalışır. Sisteme saldırı olduğunda ya da yeni bir çekirdek kurulması gerektiğinde işletim sistemi 1 düzeyine init 1 komutu ile indirilir. 1 düzeyinden 3 düzeyine çıkmak için init 3 komutu çalıştırılır. init 0 sistemi kapatırken init 6 işletim sistemini yeniden başlatır. 2 düzeyinde sistem çok kullanıcılı olur ve ağ erişilebilir. 3 düzeyinde NFS yeteneği gelir. 5 düzeyinde ise X11 sunucusu çalışır. X11 sunucusu grafik arayüzün çalışmasını sağlar. 3.4 Linux da Proses Yaratılması Linux da proses yaratmak için fork sistem çağrısını kullanıyoruz. fork sistem çağrısı yapıldığında çekirdeğin yürüttüğü işlemler: Proses tablosunda yer ayırılır Çocuk prosese sistemde tekil yeni bir kimlik numarası atanır Anne prosesin bağlamının kopyası çıkarılır. Dosya erişimi ile ilgili sayaçları düzenlenir fork() sistem çağrısı, anneye çocuğun kimliğini, çocuğa da 0 değerini döndürür. fork() sistem çağrısı, eğer proses yaratılırken hata durumu oluşursa, -1 değerini döndürür. fork() sistem çağrısının kullanıldığı basit bir örnek Kod 3.1 de verilmiştir. 8 S a y f a
9 Kod 3.1: #include <unistd.h> #include <stdio.h> int f; int main (void){ printf("program çalışıyor: Kimliğim= %d\n", getpid()); f=fork(); if (f==0) /*çocuk*/ { sleep(1); printf("\nben çocuk. Kimliğim= %d", getpid()); printf("\nannemin kimliği= %d\n", getppid()); exit(0); else if (f>0)/* anne */ { printf("\nben anne. Kimliğim= %d", getpid()); printf("\nannemin kimliği= %d", getppid()); printf("\nçocuğumun kimliği= %d\n", f); sleep(2); printf("\nbitti.\n"); exit(0); return(0); 3.5 Linux da Proses Sonlandırılması Bazen bir proses elindeki işi bitirmeden sonlanması gerekir. Genellikle bu durum kritik bir hata oluştuğunda gerçekleştirilir, hata iletisini kayda alıp proses sonlandırılır. Bu gibi durumlarda exit, _exit, atexit ve abort çağrılarını kullanıyoruz: i. exit() stdio nun tampon bellek alanlarını giriş/çıkış cihazlarına yazar ve uygulamayı _exit() çağrısı ile sonlandırır. void exit(int status); ii. _exit() Tüm açık dosyaları kapatır ve prosesi sonlandırır. Ebeveyn prosese SIGCHLD sinyali gönderir. Sinyaller prosesler arasında haberleşme için kullanılan tekniklerden biridir. Unix işletim sistemin bir prosese gönderilebilecek 9 S a y f a
10 proseslerin listesini almak için kill l komutu kullanıldığını daha önce çalışmıştık. Burada her bir sinyalin önceden tanımlı bir anlamı bulunmaktadır. void _exit(int status); iii. atexit() Proses sonlanırken çalıştırılmak üzere bir fonksiyonu kaydeder. Bu fonksiyon genellikle alınan sistem kaynaklarını serbest bırakacak kodu içerir. Kaynağa örnek olarak veritabanı bağlantısı ve soket verilebilir. Kod 3.2 de atexit çağrısının kullanımına ilişkin örnek bir uygulama verilmiştir. int atexit(void (*func)(void)); iv. abort() Tüm dosyaları kapatır, prosesi sonlandırır ve hata ayıklamada kullanılmak üzere prosesin bellek dökümünü bir dosyaya alır. Bu dosya daha sonra bir hata ayıklama aracı ile açılarak, hatanın kaynağı bulunmaya çalışılır. Dolayısı ile abort çağrısı sadece hata ayıklama amacıyla kullanılmalıdır. void abort(void); Kod 3.2: #include <string.h> #include <unistd.h> void cleanup() { char *message = "cleanup invoked\n"; write(stdout_fileno, message, strlen(message)); main() { atexit(cleanup); exit(0); 3.6 Proses Kimliğine Ulaşmak Bazen çalışmakta olan prosesin kimlik bilgisine erişmek gerekebilir. Bu durumda getpid, getppid, getpgrp ve getpgid fonksiyonları kullanılır. Şimdi bu fonksiyonların işlevlerine bir bakalım: 1. getpid() Çalışmakta olan prosesin kimlik numarasını verir. 10 S a y f a
11 pid_t getpid(void); 2. getppid() Çalışmakta olan prosesin ebeveyn prosesinin kimlik numarasını verir. pid_t getppid(void); getpid ve getppid çağrılarının kullanıldığı basit bir örnek Kod-3.3 de verilmiştir. 3. getpgrp() Prosesin yer aldığı grubun grup numarasını verir. #include <sys/types.h> #include <unistd.h> pid_t getpgrp(void); 4. getpgid() Proses grubunun kimlik numarasını verir. pid_t getpgid(pid_t pid); int setpgid(pid_t pid, pid_t pgid); Komut satırında ls sort uniq komutu çalıştırılırsa, 3 proses yaratılır ve bu prosesler aralarında boru (=pipe) olarak adlandırılan özel bir veri yapısı üzerinden haberleşirler: [student@server1 ~]$ ls sort uniq Desktop Documents Downloads... Bu üç proses ls, sort ve uniq komutlarına karşılık olarak yaratılır. Bu üç proses bir grup oluşturur (Şekil-3.2). Bu grubun kimliğine ulaşmak için getpgid çağrısını kullanıyoruz. Örneğe baktığımızda ls prosesinin kimliği 108, sort prosesinin kimliği 549 ve uniq prosesinin kimliği 3615 dir. Proses grubunun kimliği ise 240 tır. ls sort uniq PID PGID Proses grup Şekil-3.2 Grup prosesler ve kimlik numaraları 108 Grup lideri 11 S a y f a
12 Kod 3.3: #include <unistd.h> #include <stdio.h> int main() { printf("my pid is: %d\n", getpid()); printf("my parent pid is: %d\n", getppid()); 3.7 Bir Prosesin Sonlanmasını Beklemek Ebeveyn prosesin sonlanmadan önce gerçekleştirmesi gereken bir sorumluluğu bulunmaktadır. Yarattığı çocuk proseslerin sonlanmasını beklemelidir. İşletim sistemi çekirdeği yaratılan her bir proses ile ilgili bir kayıt tutmaktadır. Normalde bir proses sonlandığında bu kayıt otomatik olarak silinir. Ancak çocuk prosesin sonlanma durumlarını izlenebilmesi için çocuk proses sonlandığında proses tablosundan kaydı silinmez. Bu sorumluluk ebeveyn prosese aittir. Ebeveyn proses bu sorumluluğunu wait ve waitpid çağrıları ile yerine getirir. Eğer ebeveyn proses bu sorumluluğunu yerine getirmez ve çocuk prosesin sonlanmasından önce sona ererse, çocuk prosesle ilgli bilgiler proses tablosundan silinemez. Unix işletim sisteminde, bu durumdaki prosesler, zombi proses olarak adlandırılır. 1. wait() Herhangi bir çocuk proses sonlandığında, sonlanan çocuk prosesin kimlik numarası ile dönülür. #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *stat_loc); 2. waitpid() waitpid çağrısında wait çağrısından farklı olarak belirli bir prosesin sonlanması beklenebilir. #include <sys/types.h> #include <sys/wait.h> pid_t waitpid(pid_t pid,int *stat_loc,int options); Birinci parametrenin değerine farklı tercihler verilebilir: i. pid = -1 Herhangi bir çocuk proses sonlandığında waitpid çağrısından sonlanan çocuk prosesin kimlik numarası ile dönülür. ii. pid >0 Birinci parametrenin bu değeri sonlanması beklenen prosesin kimliğini tanımlar. iii. pid = 0 12 S a y f a
13 Çağıran prosesin bulunduğu proses grubundaki herhangi bir proses sonlandığında döner. iv. pid < 0 Birinci parametre olarak negatif bir sayı verildiğinde, bu sayının mutlak değerinin tanımladığı proses grubundan, herhangi bir proses sonlandığında, sonlanan prosesin kimlik numarası ile döner. waitpid çağrısı bloke çalışır. İstenilen proses sonlanana kadar çağrıyı yapan proses askıda kalır. Bu bazen istenmeyen durumdur. Üçüncü parametre olarak WNOHANG değeri verilirse, çağrının yapıldığı anda sonlanan herhangi bir proses yoksa, çağrıyı yapan proses çalışmaya devam eder, askıya alınmaz. Bu şekilde yoklamalı çalışılabilir. waitpid çağrısının kullanıldığı bir örnek Kod-3.4 de verilmiştir. Örnek uygulamada önce bir çocuk proses oluşturmakta ve ardından sonlanmasını beklemektedir. Kod 3.4: #include <sys/types.h> #include <sys/wait.h> #include <stdio.h> #include <unistd.h> int main() { pid_t pid; int status; /* fork() a child */ switch(pid = fork()) { case -1: perror("fork"); exit(1); /* in child */ case 0: execlp("ls", "ls", "-F", (char *)NULL); perror("execlp"); exit(1); /* parent */ default: break; if (waitpid(pid, &status, 0) == -1) { perror("waitpid"); exit(1); 13 S a y f a
14 if (WIFSIGNALED(status)) { printf("ls terminated by signal %d.\n", WTERMSIG(status)); else if (WIFEXITED(status)) { printf("ls exited with status %d.\n", WEXITSTATUS(status)); else if (WIFSTOPPED(status)) { printf("ls stopped by signal %d.\n", WSTOPSIG(status)); return 0; 3.8 Java 9'da Process API'deki Yenilikler Bu bölümde Java 9 da Process API'ye getirilmesi planlanan yeniliklere göz atacağız. İşletim sisteminde çalışan uygulamalar proses olarak adlandırılır. JDK, 1.0 sürümünden itibaren proseslerle çalışmak için bize java.lang.process soyutlaması sunmuş olsa da, prosesin kimlik bilgisini (PID, Process ID) elde etmek gibi basit bir işlem için bile içinde bir çözüm bulamıyoruz. Çalışan uygulamanın PID değerini, çok dolaylı bir yoldan, sorunlu bir şekilde elde etmek durumunda kalırız: import java.lang.management.managementfactory; public class GetPID { private static final int PID = 0; private static final int HOST = 1; public static void main(string[] args) { String name = ManagementFactory.getRuntimeMXBean().getName(); String[] parts = name.split("@"); int pid = Integer.parseInt(parts[PID]); String host = parts[host]; System.out.println("PID : " + pid); System.out.println("Host: " + host); Java 9'da ProcessHandle sınıfı ile tanışıyoruz. Bu sınıfı kullanarak, örneğin, çalışan uygulamanın PID değerine basit ve sorunsuz bir şekilde ulaşabiliriz: public class GetPID { public static void main(string[] args) { System.err.println("PID: " + ProcessHandle.current().getPid()); 14 S a y f a
15 ProcessHandle sınıfı kullanılarak, işletim sistemindeki tüm proses bilgilerine ulaşılabilinir. Aşağıda bu yeni sınıf yardımı ile neler yapabileceğimize bir bakalım. Java 9 API'leri elbette Java 8 ile gelen tüm yeniliklerden yararlanıyor: Stream API, Lambda ifadeleri, MapReduce çatısı, Optional, CompletableFuture, Time API ve diğerleri. İşletim sisteminde çalışan proseslerin sayısı public class PrintNumberOfProcesses { public static void main(string[] args) { long numberofprocesses = ProcessHandle.allProcesses().count(); System.out.println("Number of processes: " + numberofprocesses); İşletim sisteminde çalışan prosesleri yaratan komutların listesi public class ListAllCommands { public static void main(string[] args) { Consumer<String> printcommand = command -> { Path path = Paths.get(command); System.out.println(path.getFileName()); ; ProcessHandle.allProcesses().filter( p -> p.info().command().ispresent() ).map( p -> process.info().command().get() ).distinct().sorted().foreach(printcommand); İşletim sistemindeki tüm proseslerin listesi public class ListAllProcesses { public static void main(string[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd- HH:mm:ss").withZone(ZoneId.systemDefault()); Consumer<String> printuser = user -> { System.out.println("User: " + user); ; Consumer<String> printcmd = cmd -> { System.out.println("Command: " + cmd); ; Consumer<String> printcmdline = cmdln -> { System.out.println("Command line: " + cmdln); ; Consumer<String[]> printargs = arguments -> { System.out.println("Arguments: " 15 S a y f a
16 + Arrays.toString(arguments)); ; Consumer<Instant> printinstant = inst -> { System.out.println("Start time: " + formatter.format(inst)); ; Consumer<Duration> printcpu = duration -> { System.out.println("CPU time (millisec): " + duration.tomillis()); ; Consumer<Info> printinfo = info -> { info.user().ifpresent(printuser); info.command().ifpresent(printcmd); info.commandline().ifpresent(printcmdline); info.arguments().ifpresent(printargs); info.startinstant().ifpresent(printinstant); info.totalcpuduration().ifpresent(printcpu); System.out.println(); ; ProcessHandle.allProcesses().filter(p -> p.isalive()).map(p -> p.info()).foreach(printinfo); İşletim sisteminde şu an çalışan prosesler arasında en uzun süredir çalışan proses public class LongestRunningProcess { public static void main(string[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH:mm:ss").withZone(ZoneId.systemDefault()); Consumer<String> printuser = user -> { System.out.println("User: " + user); ; Consumer<String> printcmd = cmd -> { System.out.println("Command: " + cmd); ; Consumer<String> printcmdline = cmdln -> { System.out.println("Command line: " + cmdln); ; Consumer<String[]> printargs = arguments -> { System.out.println("Arguments: " + Arrays.toString(arguments)); ; Consumer<Instant> printinstant = inst -> { System.out.println("Start time: " + formatter.format(inst)); ; Consumer<Duration> printcpu = duration -> { System.out.println("CPU time (millisec): " + duration.tomillis()); 16 S a y f a
17 ; Consumer<Info> printinfo = info -> { info.user().ifpresent(printuser); info.command().ifpresent(printcmd); info.commandline().ifpresent(printcmdline); info.arguments().ifpresent(printargs); info.startinstant().ifpresent(printinstant); info.totalcpuduration().ifpresent(printcpu); System.out.println(); ; Instant now= Instant.now(); Optional<Info> processinfo= ProcessHandle.allProcesses().map( p -> p.info() ).filter(info -> info.startinstant().ispresent()).max( (p,q) -> q.startinstant().orelse(now).compareto(p.startinstant().orelse(now))); processinfo.ifpresent(printinfo); İşletim sisteminde şu an çalışan prosesler arasında en çok işlemci zamanını kullanan proses public class MostCpuConsumingProcess { public static void main(string[] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH:mm:ss").withZone(ZoneId.systemDefault()); Consumer<String> printuser = user -> { System.out.println("User: " + user); ; Consumer<String> printcmd = cmd -> { System.out.println("Command: " + cmd); ; Consumer<String> printcmdline = cmdln -> { System.out.println("Command line: " + cmdln); ; Consumer<String[]> printargs = arguments -> { System.out.println("Arguments: " + Arrays.toString(arguments)); ; Consumer<Instant> printinstant = inst -> { System.out.println("Start time: " + formatter.format(inst)); ; Consumer<Duration> printcpu = duration -> { System.out.println("CPU time (millisec): " + duration.tomillis()); ; Consumer<ProcessHandle.Info> printinfo = info -> { info.user().ifpresent(printuser); info.command().ifpresent(printcmd); 17 S a y f a
18 info.commandline().ifpresent(printcmdline); info.arguments().ifpresent(printargs); info.startinstant().ifpresent(printinstant); info.totalcpuduration().ifpresent(printcpu); System.out.println(); ; Optional<ProcessHandle.Info> processinfo = ProcessHandle.allProcesses().map(p -> p.info()).filter(info -> info.totalcpuduration().ispresent()).max((p, q) -> p.totalcpuduration().orelse(duration.zero).compareto( q.totalcpuduration().orelse(duration.zero))); processinfo.ifpresent(printinfo); Komut adı verilen tüm prosesleri sonlandırmak public class KillProcess { public static void main(string[] args) { if (args.length==0){ System.out.println("Usage: "); System.out.println( "ProcessKill <list of process names>"); System.out.println( "Example: \n\tprocesskill calc.exe mspaint.exe"); Predicate<ProcessHandle> processcriteria = p -> { Optional<String> cmd = p.info().command(); if (cmd.ispresent()) { Path path = Paths.get(cmd.get()); return Arrays.stream(args).anyMatch(arg -> path.getfilename().tostring().equals(arg) ); return false; ; ProcessHandle.allProcesses().filter(p -> p.isalive()).filter(processcriteria).foreach(processhandle::destroyforcibly); Verilen komutu çalıştıran ve bekçi köpeği olarak izleyen uygulama public class WatchDog { public static void main(string[] args) throws Exception { String cmd = args[0]; 18 S a y f a
19 do { Process process = Runtime.getRuntime().exec(cmd); ProcessHandle ph = process.tohandle(); CompletableFuture<ProcessHandle> onexit = ph.onexit(); onexit.get(); System.err.println("Exit value: " + process.exitvalue()); while (true); 19 S a y f a
İşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri
İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com 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. 4. İplikler 5. Arası İletişim 6. İş
Detaylı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ı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ı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
Detaylı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ı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ı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
Detaylıİşletim Sistemleri. Dr. Binnur Kurt binnur.kurt@gmail.com. Omega Eğitim ve Danışmanlık http://www.omegaegitim.com. İşletim Sistemleri
İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com 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
Detaylı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 - 3 Bu bölümde, Proses Kavramı Proses Üzerindeki Bilgiler
Detaylıİşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık İşletim Sistemleri
İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com 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
Detaylı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
Detaylı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ı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ıİşletim Sistemleri. İşletim Sistemleri. Dr. Binnur Kurt Omega Eğitim ve Danışmanlık
İşletim Sistemleri Dr. Binnur Kurt binnur.kurt@gmail.com 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
Detaylı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ı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ıwhile(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO
while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )
DetaylıLinux'ta Kabuk ve Kabuk Programlama
Linux'ta Kabuk ve Kabuk Programlama Kabuk Nedir? Kabuk, kullanıcı ile bilgisayar sistemi arasındaki bir yazılım katmanıdır. Kabuk, kullanıcının hareketlerini yorumlayıp, işletim sistemini ve uygulamaları
DetaylıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
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 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte
Detaylı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
DetaylıC++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié
Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama
DetaylıBIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç
Detaylı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ıBLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)
1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.
DetaylıBölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:
Bölüm 24 Java Ağ Uygulamaları 24.1 Java Appletleri Applet, Web tarayıcısında çalışan bir Java programıdır. Bir applet, Java uygulaması için tamamen fonskiyonel olabilir çünkü bütün Java API ye sahiptir.
Detaylı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ı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ıKarşılaştırma İşlemleri ve Koşullu İfadeler
Karşılaştırma İşlemleri ve Koşullu İfadeler BİL131 - Bilişim Teknolojileri ve Programlama Hakan Ezgi Kızılöz Karşılaştırma İşlemleri Java'da sayısal veri tiplerinin karşılaştırılması için aşağıdaki karşılaştırma
Detaylı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)
Detaylı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)
DetaylıLab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;
BTEP212 Java DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI Lab7 bazen bir metodun içinde o metodun ait olduğu sınıftan yaratılacak nesneyi veya o nesnenin bir alt
DetaylıDÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN
DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN GİRİŞ Ekrana «Merhaba Java» şeklinde bir mesajı 100 defa yazmak istediğinizi düşünelim. Aşağıdaki komut satırını 100 kez yazmak sıkıcı
Detaylı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
Detaylı// 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ı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ı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
DetaylıBLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)
BLM-112 PROGRAMLAMA DİLLERİ II Ders-3 İşaretçiler (Pointer) (Kısım-2) Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Dinamik Bellek Yönetimi Bir program çalıştırıldığında
DetaylıDÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()
(LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip
DetaylıİŞ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ıBölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1
Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli
DetaylıBMH-303 Nesneye Yönelik Programlama
BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan
Detaylı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ıBölüm 10: PHP ile Veritabanı Uygulamaları
Bölüm 10: PHP ile Veritabanı Uygulamaları -231- Öğr.Gör. Serkan DİŞLİTAŞ 10.1. PHP PHP, platformdan bağımsız sunucu taraflı çalışan betik bir web programlama dilidir. PHP programlama dili ile MySQL, MSSQL,
Detaylı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ıYZM 2105 Nesneye Yönelik Programlama
YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu
Detaylı/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/
Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void
DetaylıGörsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
Detaylıİşletim Sistemleri (Operating Systems)
İşletim Sistemleri (Operating Systems) 1 Process (İşlem-Süreç) 2 İşletim Sistemi Process Yönetimi Process oluşturma ve sonlandırma (Process creation and termination) Process değiştirme (Process switching)
Detaylı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)
Detaylı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
Detaylı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ıAlgoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA
Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA Muhammet BAYKARA 1 İlkel Veri Türleri Type Name Kind of Value Memory Used Size Range byte integer 1 byte -128 to 127 short integer 2 bytes -32768
DetaylıYazılım Kodlama ve İ simlendirme Standartları v1.0
Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.
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 İş 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ıPointer Kavramı. Veri Yapıları
Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar
Detaylı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ı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ıMAT213 Bilgisayar Programlama I
if Komutu Bir mantıksal (boolean) ifadenin sonucuna göre bazı komutların çalıştırılıp, bazı komutların da çalıştırılmamasını sağlar. Komut(lar) (Doğru) Doğru Yanlış Boolean Komut(lar) (Yanlış) if (boolean
Detaylı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ıİç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ıPaket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1
Paket Erişimleri Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1 Erişim Erişim konusunda iki taraf vardır: Kütüphaneyi kullanan kişiler (client) Kütüphaneyi yazan kişiler Altuğ B. Altıntaş
DetaylıJava da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts
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.
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ıİŞ 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ıYrd. Doç. Dr. A. Burak İNNER
Yrd. Doç. Dr. A. Burak İNNER Kocaeli Üniversitesi Bilgisayar Mühendisliği Yapay Zeka ve Benzetim Sistemleri Ar-Ge Lab. http://yapbenzet.kocaeli.edu.tr Adres Alanı Process ID (PID) Process Durumu NICE Değeri
DetaylıÖzyineleme (Recursion)
C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.
DetaylıPAKET TRANSFER SİSTEMİ
İLAÇ TAKİP SİSTEMİ ŞUBE MÜDÜRLÜĞÜ PAKET TRANSFER SİSTEMİ Kullanıcı Dökümanı Version 1.1 1 1. Revizyonlar... 1 2. Giriş... 1 2.1 Kapsam...1 2.2 Hedef Kitle...1 3. Gereksinimler... 1 3.1 Yazılım Gereksinimleri...1
DetaylıYrd. Doç. Dr. A. Burak İNNER
Yrd. Doç. Dr. A. Burak İNNER Kocaeli Üniversitesi Bilgisayar Mühendisliği Yapay Zeka ve Benzetim Sistemleri Ar-Ge Lab. http://yapbenzet.kocaeli.edu.tr PROCESS(Süreç) OLUŞTURMA Yeni bir süreç oluşturma
DetaylıBM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta
Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı
Detaylıİş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,
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
İÇİ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üm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31
Bölüm 6. Karma Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 31 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi
DetaylıVeritabanı. Ders 2 VERİTABANI
Veritabanı Veritabanı Nedir? Birbiri ile ilişkili verilerin bir arada uzun süreli bulundurulmasıdır. Veritabanı bazen Veritabanı Yönetim sistemi veya Veritabanı Sistemi yerine de kullanılır. Gerçek dünyanın
DetaylıJAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra
Detaylıİş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ıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME PELİN YILDIRIM FATMA BOZYİĞİT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Bu Derste Veri Saklama 2 Veri Saklama Veri Saklama her appnin ihtiyaci
Detaylı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ıBTEP243 Ders 3. class Yazım Kuralı:
BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 11: Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri
Detaylı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ı
DetaylıİŞLETİM SİSTEMLERİ (POSIX THREADS v1)
YILDIZ TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ İŞLETİM SİSTEMLERİ (POSIX THREADS v1) ARŞ. GRV. UĞUR ÇEKMEZ Multi Thread Programlama Thread Çalışma Mantığı Basit manada threadler, bir prosesin içinde
Detaylıif (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");
Koşul İfadeleri ve Akış Kontrolü Koşul ifadeleri ve akış kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadır. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir
Detaylıİş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ıErişim konusunda iki taraf vardır:
Erişim Erişim konusunda iki taraf vardır: Kütüphaneyi kullanan kişiler (client) Kütüphaneyi yazan kişiler Paket (package) Paketler kütüphaneyi oluşturan elemanlardır. PaketKullanim.java Varsayılan Paket
DetaylıSüreç 1 Kavramı ve Oluşturma Yöntemleri
İçindekiler Süreç Kavramı ve Oluşturma Yöntemleri...2 UNIX / Linux Sistemlerinde fork ve exec Sistem Çağrıları İle Süreç Kopyalama ve Çalıştırma...3 Thread Kavramı...7 Thread lerin İşletim Sistemleri Tarafından
Detaylı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
Detaylı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ıECLIPSE PROGRAMININ ÇALIŞTIRILMASI
ECLIPSE PROGRAMININ ÇALIŞTIRILMASI 1 Eclipse programının çalışır hale getirilebilmesi için JDK nın kurulumunun tamamlanmış olması gerekmektedir. Eclipse programı dosyasını indiremediyseniz dersin internet
DetaylıJava Programlamaya Giriş
Java Programlamaya Giriş Amaçlar: 1. Java kurulumu (Netbeans ve JDK) 2. Java Netbeans Kullanımı 3. Program yazma Java Kurulumu Java dili ile programlama yapabilmek için java jdk ve java kodlama yapılabilecek
DetaylıKodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.
GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.
DetaylıBĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié
BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri
Detaylı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ıLinux Assembly Programlamaya Giriş
Linux Assembly Programlamaya Giriş Barış Metin Konular gcc / gas / ld Intel ve AT&T söz dizimleri gdb INT 80H C kütüphane fonksiyonları Stack Frame Örnek
DetaylıSistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.
Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir. Kesmeler çağırılma kaynaklarına göre 3 kısma ayrılırlar: Yazılım kesmeleri Donanım
DetaylıENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü
ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş Data Hiyerarşisi Files (Dosyalar) ve Streams (Kaynaklar)
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Yazılımda Günlükleme (Logging) Üst Düzey Programlama-ders07/ 1 Günlükleme -Logging Tüm büyük çaplı uygulamalarda günlükleme(logging) ihtiyaçları bulunmaktadır. Bir uygulamanın hata
Detaylı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ı