Casa Bianca
[Don Backy / Marisa Sannia / Ornella Vanoni]
Casa Bianca (1968)
Beyaz Ev anlamına gelen Casa Bianca 1968 yılında Don Backy tarafından bestelenmiş bir parça. İlk olarak Sanremo müzik festivalinde Ornella Vanoni ve Marisa Sannia tarafından söylendi. Ben en çok Don Backy’nin kendi yorumunu beğeniyorum. Fakat diğerleri de güzel...
Don Backy Söylüyor (1968)...
Marisa Sannia Sanremo'da söylüyor (1968)...
Ornella Vanoni Sanremo'da söylüyor (1968)...
Bazen programlarımızda haftanın günleri, yılın ayları, renkler, yönler gibi sınırlı sayıda değer alabilen çeşitli olguları ifade etmek isteriz. Örneğin top ile oynanan bir oyun programı yazacak olalım. Bu programda kullanmak üzere topu sağa, sola, yukarı ya da aşağı hareket ettiren bir fonksiyon yazmak isteyelim. Fonksiyonun parametresi topun hareket yönünü belirtiyor olsun. Sizce böyle bir fonksiyonun parametresi hangi türden olmalıdır? Şüphesiz ilk akla gelen durum parametrenin int gibi bir tamsayı türünden olması ve farklı yönlerin 0, 1, 2, 3 gibi bazı değerlerle temsil edilmesidir.
Disk tabanlı dosyalar (regular file) üzerinde read ve write fonksiyonları ile okuma ve yazma yaparken uzun süreli bir bekleme söz konusu olmaz. Bu fonksiyonlar işlemlerini göreli olarak hızlı bir biçimde başarılı ya da başarısız olarak sonuçlandırırlar. Her ne kadar normal dosyalarla çalışırken işletim sistemi disk okuma ve yazmaları sırasında prosesi bloke ederek belli bir süre çizelge dışına çıkartabiliyorsa da buradaki bekleme önemli bir boyutta değildir. Halbuki bazı tür dosyalarla çalışırken bekleme belirsiz bir boyutta ve çok uzun süreli olabilmektedir
UNIX/Linux sistemlerinde fork fonksiyonu prosesin yeni ve özdeş bir kopyasını oluşturmaktadır. Yani fork işlemi sonrasında alt ve üst prosesler aynı program kodunu (muhtemelen onların farklı kısımlarını) çalıştırıyor durumda olurlar. Halbuki pek çok uygulamada programcı yaratmış olduğu alt prosesin farklı bir program kodunu çalıştırmasını ister. İşte exec fonksiyonları prosesin başka bir program olarak çalışmaya devam etmesini sağlamaktadır. exec işlemleri sonrasında prosesin id değeri ve kontrol bloğu değişmez. Prosesin kod, data ve bss alanları çalıştırılabilen (executable) dosyadan alınarak yüklenir. Proses artık yaşamını başka bir program olarak sürdürür.
Hemen her işletim sistemi bir proses yaratıldığında, o prosese ilişkin bilgileri bir veri yapısında saklar. Proses bilgilerinin saklandığı bu veri yapısına proses kontrol bloğu (process control block) denilmektedir.[1] Örneğin UNIX türevi sistemlerde proseslerin gerçek (real) ve etkin (effective) kullanıcı ve grup id’leri, çalışma dizinleri (current working directories), açmış olduğu dosyalar gibi önemli bilgilerin hepsi, onların kontrol bloklarında tutulmaktadır. Proses kontrol bloğunun nasıl düzenlendiği ve tam olarak hangi elemanlara sahip olduğu sistemden sisteme, hatta aynı sistemlerde versiyondan versiyona değişebilmektedir. Örneğin Linux sistemlerinde proses kontrol bloğu oldukça fazla elemana sahip olan task_struct yapısı ile temsil edilmiştir. Bu yapının bir bölümünü aşağıda veriyoruz (Version:2.6.35, include/linux/sched.h):
İşletim sistemi tarafından prosese geçirilen komut satırı argümanları program içerisinden çeşitli biçimlerde elde edilebilmektedir. En yaygın yöntem komut satırı argümanlarının programın başlangıç fonksiyonunun parametrelerinden elde edilmesidir. Örneğin, C ve C++’ta komut satırı argümanları main fonksiyonuna parametre olarak geçirilirler. Bu dillerin standartlarına göre programın başlangıç noktasını (entry point) belirten main fonksiyonunun parametrik yapısı ve geri dönüş değeri aşağıdaki iki durumdan biri biçiminde olmalıdır:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }
Modern işletim sistemlerinde her prosesin bir çevre değişken bloğu vardır. Prosesin çevre değişken bloğu çevre değişkenlerinden ve onların değerlerinden oluşmaktadır. Örneğin, MESAJ bir çevre değişkeninin ismi olabilir, “Merhaba Dunya” ise onun değeri olabilir. Çevre değişkenleri pek çok işletim sisteminde proses yaratılırken belirlenebilmekte ya da üst prosesten (parent process) aktarılabilmektedir. Çevre değişkenlerinin üst prosesten aktarılması en çok karşılaşılan tipik durumdur.
Böcek # 3 (12 Ekim 2009)
Aşağıdaki C programı klavyeden girilen int türden 10 sayının ortalamasını bulmak için yazılmış. Fakat program uygun sonucu vermiyor. Peki neden?..
CSD C ve Sistem Programcıları Derneği