Bilgisayar Kavramlarıwww.bilgisayarkavramlari.com |
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin önemli bir kısmını oluşturan otomatlar (Automata) ve Algoritma Analizi (Algorithm analysis) çalıştırmalarının altındaki dil bilimin en temel taşlarından birisidir.1936 yılında Alan Turing tarafından ortaya atılan makine tasarımı günümüzde pekçok teori ve standardın belirlenmesinde önemli rol oynar. Turing Makinesinin Tanımı Basitçe bir kafadan (head) ve bir de teyp bandından [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, paralel programlama amacıyla kullanılan bir platformun ismidir. Çok çeşitli işletim sistemlerinde ve çok çeşitli dillerde paralel uygulama geliştirmeye olanak sağlar. Ancak temel çıkış sistemi Linux ve temel programlama dili olarak C dili kabul edilebilir. İçerik 1. Paralel Programlamaya Giriş 2 MPI Kurulumu 3. MPI ile paralel program geliştirilmesi [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde sıra (queue) teorisinde, sıradaki bir varlığın ne kadar meşgul edildiğini ölçmeye ve bu ölçüme göre kararlar vermeye verilen isimdir. İstatistiksel olarak ρ sembolü ile gösterilir ve şayet ρ değeri 1′den büyükse sıranın uzadığı, 1′e eşitse sıranın ne kısalıp ne de uzadığı ve şayet 1′den küçükse sıranın kısaldığı veya [...]
Yazan: Şadi Evren ŞEKER Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder. Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır. Benzer şekilde bir verinin bölünemezliğini ifade etmek [...]
Yazan : Şadi Evren ŞEKER C dilinde mevcut zamanı almak ve işlemek mümkündür. Bunun için time.h dosyasının içerisinde bulunan fonksiyonlar kullanılabilir. Ayrıca time.h dosyasında bulunan time_t oluşumu (struct) zaman tutmak için geliştirilmiştir ve zamanı oluşturan alt unsurları da içerir. Örneğin şu andaki zamanı ekrana basmak için aşağıdaki kod kullanılabilir: struct timeval tv; time_t curtime; [...]
Yazan : Şadi Evren ŞEKER YACC, bilgisayara bilimlerinin önemli dallarından birisi olan dil tasarımı ve dil geliştirilmesi sırasında (compiler teory) sıkça kullanılan bir kod üretici programdır. YACC basitçe dildeki sözdizim (syntax) tasarımı için kullanılır ve tasarladığımız dildeki kelimelerin sıralamasının istediğimiz şekilde girilip girilmediğini kontrol eder. Aynı zamanda sıralamadaki her kelimenin anlamını da yacc marifetiyle belirleyebiliriz. [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde programlama dillerinin tasarımı ve geliştirilmesi sırasında kullanılan ve dildeki kelimelerin analizine (lexical analysis) yarayan kod üretme programıdır. Yani lex için hazırlanmış bir dosyayı lex programından geçirdikten sonra size C dilinde bir kod çıkar. Bu kodu C dilinde derledikten (compile) sonra çalışan bir programınız olur. Veya tercihen bu çıktıyı [...]
Yazan : Şadi Evren ŞEKER Parçalam işlemi (parsing) bilgisayar bilimlerinde çeşitli amaçlar için kullanılmaktadır. Özellikle de dil ile ilgili işlemlerin hemen hepsinde ihtiyaç duyulan bir işlemdir. Örneğin bir programlama dilinde yazılan komutların algılanması için öncelikle kelimeleirn parçalanması (parse) gerekir. Benzer şekilde dopal dil işleme (natural language processing) işlemlerinde de doğal dilde bulunan kelimelerin algılanması bir [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerilnde genellikle bir dil tanımlamada ve bu dilin gramerini (Dil bilgisini) belirlemekte kullanılan gösterim biçimidir. Basitçe dil bir dil tanımında başlayarak Terminal (sonuncu) ve Non-Terminal (Devamlı) terimler kullanarak tanılmanmaktadır. Örneğin aşağıda basit bir örneği verilmiştir: <dil> ::= <harf>|<imla> <harf> ::= a|b|…|z <imla> ::= .| |,|? Yukarıda bir dil tanımı [...]
Yazan : Şadi Evren ŞEKER Hafıza yönetimi sırasında kullanılan kıtalama (bölütleme, segmentation) hafızadaki her işleme tam olarak istediği kadar yer ayırmaya çalışır. Bu yaklaşımda, işlemler arasında oluşabilecek boşluklara verilen isim harici parçalar (dış parçalar, external fragments)’dir. Her işleme ihtiyaç duyduğu kadar yer ayırmak ilk başta daha verimli gibi görülse de bu çözümde de boşluklar ve [...]
Yazan : Şadi Evren ŞEKER Yükleyiciler basitçe bir programı diskten alıp hafızaya yüklemekle sorumlu programlardır. Bir program yazıldıktan ve derlendikten (compile) sonra programın makine dilindeki karşılığı elde edilir. Bu karşılık tam bir kod olmayıp harici kütüphanelerden faydalanıyor olabilir. Bu kütüphaneler de programa dahil edilip tam bir program elde edildikten sonra (yani bağlandıktan sonra (linker) ) [...]
Yazan : Şadi Evren ŞEKER Bir işletim sisteminin (operating system) birden fazla işlem çalıştırması durumunda (multi process) bu işlemlerin hafızayı nasıl paylaşacakları ve hafızanın nasıl daha verimli kullanıcağı hafıza yönetiminin konusudur. Şayet işletim sisteminde tek işlem (process) çalışıyorsa bu çözülmesi çok daha kolay bir durumdur. İşlemler derlendikten (compile) sonra hafızaya yükleyici (loader) ismi verilen bir [...]
Yazan : Şadi Evren ŞEKER İşletim sisteminin görevi temel olarak donanım (ve diğer sistem kaynakları) ile bilgisayarda çalışan ve bu kaynakları talep eden program (veya processler) arasında ilişki kurmak ve kaynak yönetimini kontrol etmektir. Aşağıdakine benzer bir katmanlı yaklaşım bu anlamda doğru kabul edilebilir: İşletim sisteminin günümüzdeki anlamını anlamak için belkide kelimenin gelişimini ve kısa [...]
Yazan : Şadi Evren ŞEKER Tek geçişli bir çeviricinin (assembler) karşılaştığı en büyük problem çeviricinin kaynak koddaki (Assembly dilindeki koddaki) değişken ve etiketlerin kodun ilerleyen kısımlarında tanımlanma ihtimalidir. Bu durumda kodun geri dönerek daha sonradan tanımlanan bilgilerin önceki adreslere yazılması mümkün olmaz. Tek geçişli çeviricilerde bu problemi çözmek için iki farklı yöntem kulllanılabilir: 1. İleride [...]
Yazan : Şadi Evren ŞEKER Bir çeviricinin ( assembler ) ikiden1 fazla kere kodun üstünden geçen halidir. Buna göre bir çeviricinin kod üretirken bilinmeyen dizgilerin (kelime veya yazıların) anlamalarının her geçişte (pass) çıkarılarak bir sonraki geçişlerde kullanılmasını hedefler. Örneğin aşağıdaki kod örneğini ele alalım: A EQU B B EQU D C EQU D D DS [...]
Yazan : Şadi Evren ŞEKER Üretilecek olan makine kodunun hafızada (RAM) herhangi bir yere yerleştirilebilir olması durumudur. Buna göre normalde her programın sabit bir adres tanımı ve bu adres tanımına göre kod içerisinde adres değerlerini içeren komutların bulunması mümkündür. İşte konumlandırılabilir kod bu zorunluluğu kaldırarak hafızanın istenildiği gibi kullanılabilmesini sağlar ve kodun istenen hafıza adresin [...]
Yazan : Şadi Evren ŞEKER Bir çeviricinin (assembler), Assembly dilinde yazılmış kaynak kod üzerinden iki kere geçen halidir. Buna göre tek geçişli olan çeviricilerden farklı olarak dilde etiket (label) tanımları yapılabilmekte ve bu etiketlerin anlamları bir tabloda tutularak daha sonra kullanılabilmektedir. 2 geçişli bir çevirici sırasıyla şu işlemleri yapar: 1. Geçişte koddaki semboller (symbols) ve [...]
Yazan : Şadi Evren ŞEKER Bilgisayar yapılarında ondalıklı sayıları ( floatingpoint numbers ) iki farklı bilginin tutulması ile gösterilebilir: mantis x kök üst yukarıda verilen formüle göre bir ondalıklı sayıyı önce bir ondalık çarpan sonra da bir kök’ün verilen üstü ile çarpımı olarak göstermek mümkündür. Örneğin ikilik tabanda 1101.11 küsurlu sayısını ele alalım (“.” işaretinden [...]
Yazan: Şadi Evren ŞEKER Basitçe bir dilde yazılmış olan kodu (kaynak kodu yada source code) istenilen başka bir kod haline dönüştüren programdır. Genelde üretilen bu kod ortama göre çalıştırılabilir kod (executable code) olarak üretilmektedir. Ancak bir derleyicinin daha doğru tanımı bir dildeki kodu başka dile çeviren program olarak yapılabilir. Örneğin C dilinde yazılan bir programı [...]