Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitimci tarafından sunulan işletim sistemleri dersinin ikinci bölümüdür. Eğitmen, işletim sistemlerinin temel prensiplerini ve çalışma mekanizmasını detaylı şekilde anlatmaktadır.
- Video, işletim sistemlerinin tarihçesi ve sanallaştırma konularıyla başlayıp, işlem (proses) kavramını, işlem durumlarını (çalışan, hazır, bloklanmış ve zombi), işlem oluşturma sürecini (fork ve exec sistem çağrıları), shell kavramını ve dosya yönlendirme özelliklerini ele almaktadır. Daha sonra işletim sisteminin kullanıcı modu ve çekirdek modu arasındaki geçiş, sistem çağrıları, işbirlikçi ve işbirlikçi olmayan yaklaşımlar, context switch ve zaman kesmesi gibi konular işlenmektedir.
- Ders boyunca teorik bilgilerin yanı sıra pratik örnekler ve kod örnekleri de sunulmaktadır. Video, bir sonraki derste politika (decision) konusunun işleneceği bilgisiyle sonlanmaktadır.
- 00:02İşletim Sistemleri Dersinin İkinci Videosu
- İşletim sistemlerinin iki temel görevi kaynak yöneticisi rolü ve genişletilmiş bir makine olarak kullanıcılara sunmasıdır.
- Ders kitabının konuları sanallaştırma, eşzamanlılık (concurrency) ve kalıcılık (persistence) başlıkları altında sunulmaktadır.
- Sanallaştırma başlığı altında işlemci (CPU) ve bellek iki temel sanallaştırılan kaynak olarak ele alınacaktır.
- 01:33İşletim Sistemlerinin Tarihçesi
- İlk işletim sistemleri, toplu işlemi (batch processing) yapan main-frame makineler üzerinde kütüphaneler tarzında geliştirilmiş, IO işlemleri için daha kolay kullanılabilir arayüzler sunmuştur.
- Koruma probleminin çözülmesiyle kaynak yöneticisi rolü ortaya çıkmış, sistem çağrıları gerçekleştirerek ve trump ve return from trump buyrukları kullanılarak koruma problemi çözülmüştür.
- Çoklu programlama çağı, batch processing'in ötesinde interaktif bir şekilde işletim sistemi ile etkileşim sağlayan ve birden fazla kullanıcının aynı anda aynı makineyi kullanabildiği sistemlere geçiş anlamına gelmektedir.
- 03:43İşletim Sistemlerinin Gelişimi
- Donanımların gelişmesiyle birlikte main-frame'den maliyet etkin mini computerler ve kişisel bilgisayarlar (personal computer) geliştirilmiştir.
- Unix, işletim sistemlerinin gelişiminde önemli bir rol oynamış, C programlama dilini geliştirmiş ve herkesin kullanımına açmıştır.
- Windows işletim sistemi, 1980'lerin başında IBM PC'lerinde kurulmaya başlamış, ancak ilk sürümlerinde bellek koruma gibi önemli özellikler bulunmamıştır.
- 06:44Linux ve İşletim Sistemlerinin Gelişimi
- Linux, Unix'in fikri haklar problemlerinden dolayı geliştirilen, Unix'e benzer ama doğrudan kullanmayan bir işletim sistemidir.
- Linux, Android ve Mac OS gibi işletim sistemlerinde de kullanıldığı için günümüzde en fazla kullanılan işletim sistemi olmuştur.
- Windows'un repütasyonu, daha önceki problemlerinden dolayı kötü algılanmış, ancak zamanla iyi fikirlerin benimsenmesiyle bu algı değişmeye başlamıştır.
- 08:26İşletim Sistemlerinin Tarihçesi
- İşletim sistemlerinin tarihi, 1969 yılında PDB7 mini computer'a geliştirilen işletim sistemi ile başlamıştır.
- İlk Unix versiyonları, daha sonra şirket özel kapalı kodlu versiyonlar, fikri hakların çözülmesiyle FreebSD, Open BSD gibi Unix'in open source versiyonları geliştirilmiştir.
- Linux, Mac OS gibi işletim sistemleri de gelişerek yaygın kullanıma kavuşmuş, Unix'in 1969'dan 2023'e kadar farklı versiyonlarla günümüze kadar gelmiştir.
- 09:36İşlemlerin Soyutlanması
- İşletim sistemi, kullanıcıya çok sayıda işlemci illüzyonu sağlamak için soyutlama sunmaktadır.
- Bu illüzyon, zaman paylaşımı (time sharing) yaparak sağlanır; bir işlem belli bir süre çalıştırıldıktan sonra kısa bir süre sonra başka bir işlem çalıştırılır.
- Context switching (işlem değiştirme) esnasında performans düşebilir, bu performans düşüklüğünü nasıl engelleyeceğimiz veya modelleyeceğimiz konusu ele alınacaktır.
- 11:56İşlem ve Program Arasındaki Fark
- İşlem (proses), çalışan program olarak tanımlanır ve programdan farklı olarak bellekte bir alan ayırır ve adres uzayına sahip olur.
- İşlem, programın buyrukları ve veri kısmını içerir; veri kısmı statik ve dinamik (genişleyen-daralan) olmak üzere ikiye ayrılır.
- İşlem, program sayacı, stack pointer ve genel amaçlı yazmaç değerleri gibi durum bilgilerini de içerir.
- 13:54İşlem Teriminin Kullanımı
- İşlem teriminin Türkçe karşılığı olarak "işlem" kelimesi kullanılır, "süreç" terimi ise endüstri mühendisliği veya yazılım geliştirme yaşam döngüsü bağlamında kullanılır.
- İşlem kelimesi, proses kelimesinin süreç özelliğini içermediği için işletim sistemleri bağlamında daha doğru bir terimdir.
- 15:18İşletim Sisteminin Görevleri
- İşletim sisteminin en önemli görevi işlemleri yönetmek ve kullanıcılar için API (Arayüz) sunmaktır.
- API, proseslerin oluşturulması, yok edilmesi, bekletilmesi, kontrolü ve durum bilgisinin temin edilmesi gibi işlemleri destekler.
- 16:48İşlem Oluşturma Aşamaları
- İşlem oluşturma aşamasında önce diskte bulunan programın kodu ve statik verisi belleğe yüklenir, bu işlem performans açısından lazy (tembel) olarak gerçekleştirilir.
- Stack (yığın) belleği alanı tahsis edilir; bu alan yerel değişkenler, fonksiyon parametreleri ve fonksiyon çağrıları için kullanılır.
- Heap (öbek) belleği, dinamik olarak tahsis edilen veriler için kullanılır ve programcıya bellek yönetimini bırakır.
- 20:06İşlem Başlatma ve Bellek Düzeni
- İşlem başlatma aşamasında IO ile ilgili setup yapılır ve standart input, output ve standart error için üç dosya tanıtıcısı hazırlanır.
- Program counter'un değeri main fonksiyonuna ayarlanır ve işletim sistemi işlemcinin kontrolünü yeni oluşturulan işleme aktarır.
- Bellek düzeni, öbek ve yığının adres uzayında nasıl yerleştirildiği önemlidir; bu düzen, bellek kullanımını optimize eder ve buffer overflow attack gibi güvenlik risklerini azaltır.
- 23:55İşlem Durumları
- İşlem durumları farklı şekillerde anlatılabilir, ancak temel olarak bir işlemin her zaman çalışmadığı, sadece "running" (çalışan) durumunda olduğu bilinmektedir.
- "Ready" (hazır) durumda olan bir işlem, işletim sistemi tarafından adalet adına yeteri kadar çalıştığı düşünülerek diske edilir ve hazır duruma geçirilir.
- "Block" (bloklanmış) durumda olan bir işlem, IO isteğinde bulunarak devam edemez ve bu durumda başka işlemler çalıştırılabilir hale gelir.
- 27:23İşlem Yönetimi
- Birden fazla işlem olduğunda, işletim sistemi işlem listesini yönetir ve her işlemle ilgili bilgileri tutan register context (process control blog) adı verilen bir veri yapısına sahiptir.
- X8 işletim sisteminde proses durumları ve zombi durumu gibi ek bilgiler de tutulmaktadır.
- Unix işletim sisteminde en yukarıdaki proses dışında tüm proseslerin bir ebeveyni (parent) vardır ve bir prosesin bir işlemin çocuğu olduğu belirtilmektedir.
- 32:07İşlem Oluşturma
- Yeni bir işlem oluşturmak için "fork" (çatal) adlı sistem çağrısı kullanılır.
- Fork çağrısı, mevcut işlemin bir kopyasını kendine ait adres uzayı ve program counter değeri ile oluşturur.
- Fork sonrası oluşan parent ve child işlemler farklı adres uzaylarına sahip olmasına rağmen program counter değeri aynıdır ve ikisi de aynı noktadan devam eder.
- 33:35Fork İşlemi ve Çocuk-Parent Süreçler
- Fork işlemi bazen doğru çalışmayabilir veya gerçekleşmeyebilir, bu durumda ekrana hata mesajı yazıp sonlandırılabilir.
- Çocuk ve parent süreçler arasındaki temel fark, child işlemin elde ettiği RC değeri sıfır olmasıdır.
- RC değeri sıfır ise çocuk işlem olduğunu, sıfırdan büyük ise parent işlem olduğunu gösterir.
- 36:01Deterministik Olmayan İşlem
- Fork işlemi sonrası hem parent hem child süreçler aynı kodu çalıştırabilir, ancak hangi işlem önce çalıştırılacağı deterministik değildir.
- Deterministik olmayan bu durumu engellemek için wait system çağrısı kullanılabilir.
- Wait system çağrısı yapıldığında, çocuk işlem çalışıp sonlanmadan parent işlem dönmez, böylece önce child sonra parent işlem çalışır.
- 38:48Exec Sistemi Çağrısı
- Fork sadece çalışan programın aynısını çalıştırabilirken, exec sistemi çağrısı ile tamamen farklı bir program çalıştırılabilir.
- Exec vp sistemi çağrısı ile child işlem, parent process'in imajını kopyaladıktan sonra farklı bir imajı çalıştırabilir hale gelir.
- Fork ve exec birleşimi, çevresel faktörleri ayarlayabilmek ve daha esnek bir yapıya sahip olabilmek için tercih edilir.
- 43:35Yönlendirme İşlemi
- Yönlendirme işlemi, ekrana yazmak yerine bir dosyaya yazmak anlamına gelir.
- Örneğin, word count programını ekrana basmak yerine p4 output dosyasına yazmak istenebilir.
- Bu tür yönlendirme işlemleri, kabuk programları içerisinde daha esnek bir yapıya sahip olabilmek için kullanılır.
- 44:31Unix'te Dosya Yönlendirme ve Shell
- Kabuk, işletim sisteminin bir parçası olarak düşünülmese de kullanıcıya metinsel bir arayüz üzerinden işletim sisteminin fonksiyonlarını kullanma imkanı sunar.
- Unix'te dosya oluşturma işleminde (open system çağrısı) file descriptor atanır ve bu değer boşta olan en küçük değere atanır.
- Fork ve exec arasına environment factorleri çalıştırarak, world count gibi programların ekrana değil dosyaya yazmasını sağlayabiliriz.
- 46:18Pipe ve Shell Özellikleri
- Pipe, shell'de re-direction özelliğini implement etmek için kullanılan bir mekanizmadır.
- World count'un çıktısı p4 output dosyasına yazıldığında, daha esnek ve re-direction özelliğine sahip bir kabuk kolayca implement edilebilir.
- Unix'te fork ve exec'in beraber kullanılmasıyla yeni bir işlemin oluşturulması, mevcut tüm Unix versiyonlarında kullanılan doğru bir karardır.
- 48:04Man Sayfaları
- Unix ve Linux'te man page'leri, herhangi bir sistem çağrısı veya utility ile ilgili bilgi almak için kullanılır.
- Man sayfaları, web daha mevcut olmadan oluşturulmuş ve kullanıcılara yardım sağlayan önemli kaynaklardır.
- Günümüzde Google gibi kaynaklar da mevcut olsa da, man sayfaları hala detaylı bilgi için tercih edilmektedir.
- 50:53Sınırlı Doğrudan Yürütme
- Sınırlı doğrudan yürütme (limited direct execution), işletim sisteminin CPU'yu verimli ve kontrollü bir şekilde kullanmasını sağlar.
- İşletim sistemi, CPU'yu mevcut tüm kaynaklarıyla işleme tahsis etmek istese de, kontrolü kaybetmeden bu işlemi gerçekleştirmek zorundadır.
- İşletim sistemi, programı doğrudan işlemcide çalıştırmak için işlem listesine ekler, bellekten yer ayırır, programı belleğe yükler ve yığını kurar.
- 55:27İşletim Sisteminin Kaynak Yönetimi
- Program çalıştırıldığında, işletim sistemi programın belleğini boşaltır ve işlem listesinden kaldırarak işlemi tamamen sonlandırır.
- İşletim sistemi sadece bir kütüphanedir ve kaynak yöneticiliği rolü yoktur, bu nedenle doğrudan çalıştırma (direct execution) gereksinimleri karşılamaz.
- İşletim sistemi, programın disk, CPU ve bellek gibi sistem kaynaklarına erişim taleplerini kontrol ederek sınırlamalar getirebilir.
- 57:04Kullanıcı Modu ve Çekirdek Modu
- Kullanıcı işlemleri ikiye ayrılır: kısıtlı olmayan ayrıcalıklı olmayan işlemler ve ayrıcalıklı olan işlemler.
- Uygulamalar donanım kaynaklarına tam erişime sahip olmayan kullanıcı modunda çalışır, sistem çağrısı yapıldığında çekirdek moduna geçilir.
- Çekirdek modunda tüm kaynaklara erişim olduğu için ayrıcalıklı operasyonlar yapılabilecek ve bunu yapacak olan işletim sistemi olur.
- 58:10Modların Donanım Seviyesinde İntegrasyonu
- İşlemcinin donanım seviyesinde kullanıcı modu ve çekirdek modu bulunur ve en az iki tane mod kullanılabilir.
- İşletim sistemi ilk açıldığında çekirdek modunda çalışır, işlem çalıştırıldığında kullanıcı moduna geçer.
- Kısıtlanmış operasyonlar sistem çağrıları ile gerçekleştirilir ve sistem çağrıları bu modlar arasında geçiş yaparak çalıştırılır.
- 58:50Sistem Çağrıları ve Trap Buyruğu
- Çekirdeğin yapabildiği kilit işlemler kullanıcı programlarına dikkatli bir şekilde sunulur ve bu işlemleri yapmak için kullanıcı programına API sunulur.
- Sistem çağrısı yapıldığında önce bir trap buyruğu çağrılır ve çekirdek körn moda atlanır.
- Trap buyruğuyla belli şeyleri kontrollü bir şekilde gerçekleştirebilir, işletim sisteminden yardım alarak ve işlemler gerçekleştirildikten sonra kullanıcı programına geri dönülür.
- 1:00:25İşletim Sisteminin Çalışma Süreci
- İşletim sistemi boot ederken çekirdek modunda başlar ve trap table denilen bir tabloyu ayarlar.
- Trap table, trap işlemi yapıldığında çalıştırılacak kodları belirleyen bir tablodur ve istenilen kodu kullanıcı programı çalıştıramaz.
- Yeni bir işlem oluşturulduğunda, program için bellek tahsis edilir, program belleğe yüklenir ve yığını kurulur.
- 1:02:29Sistem Çağrısı ve İşbirlikçi Yaklaşım
- Program sistem çağrısı yaptığında, trap çağrısı ile çekirdek moda dönülür ve işletim sistemi sistem çağrısını gerçekleştirir.
- İşletim sistemi sistem çağrısını yerine getirdikten sonra return from trump ile tekrar programa döner.
- İşletim sistemi, işbirlikçi yaklaşım (kooperatif approach) olarak sistem çağrılarını bekleyebilir veya işbirlikçi olmayan yaklaşım olarak doğrudan kontrolü sistem çağrısı olmadan ele alabilir.
- 1:05:54İşbirlikçi Yaklaşım ve Sonsuz Döngü Sorunu
- İşbirlikçi yaklaşımda, işletim sistemi CPU'yu bırakarak başka bir işlemi çalıştırmak için seçebilir veya sıfır ile bölme gibi işlemlerin kontrolü için işletim sistemine bakmak zorunda kalabilir.
- İşbirlikçi yaklaşımda sonsuz döngüde kalan bir program için çözüm, makineyi tekrar başlatmak (reboot etmek) olup, bu bilimsel bir yöntemdir.
- İşletim sistemi ve program işbirlikçi bir yöntem implement etmişse, sistem çağrısı yapmıyorsa ve işletim sistemi müdahale edemiyorsa, makineyi tekrar başlatmak gereklidir.
- 1:07:42Modern İşletim Sistemlerinde Zaman Kesmesi
- Modern işletim sistemlerinde, işletim sisteminin kontrolü için zaman kesmesi (timer interrupt) kullanılır ve bu donanımdan destek alır.
- Boot edilirken işletim sistemi bir saat başlatır ve donanım bu saatte belirlenmiş her mili saniyede bir kesme üretir.
- Bu kesme anında çalışan işlem durdurulur ve durum bilgileri kaydedilir, böylece işletim sistemi CPU kontrolünü tekrar eline alır.
- 1:08:56Context Switch İşlemi
- Timer interrupt sonrası, scaler (planlayıcı) kararı verir: o işleme devam edecek ya da başka bir işleme geçecek.
- Context switch, işlemcide çalışan bir işlemi başka bir işlemle değiştirme işlemidir ve SML koduyla düşük seviye bir işlemle gerçekleştirilir.
- Context switch işleminin hızlı ve performanslı olması önemli bir gereksinimdir.
- 1:10:23Trap Tablosu ve İşlem Geçişi
- Trap tablosu, bir trap olduğunda işletim sisteminin çalıştıracağı kodu ve trap handler'ı bulmak için kullanılır.
- Zaman kesmesi olduğunda donanım, register değerlerini çekirdek yığına kaydeder ve çekirdek moda geçerek trap işleyicisine atlar.
- İşletim sistemi, politika doğrultusunda hangi işleme geçileceğini karar verir, register değerlerini kaydeder ve yükleyerek işlem geçişi yapar.
- 1:13:25Interrupt ve Trap Arasındaki Fark
- Interrupt veya trap, donanımsal bir işlem olup, timer veya IO işlemleri gibi durumlarda gerçekleşir.
- Trap ise daha çok yazılımsal bir işlem olup, sistem çağrısı yaparak kör moda gerçekleştirilen durumlarda kullanılır.
- Karmaşık durumlarda, bir interrupt işlerken diğer tüm kesmeleri devre dışı bırakmak veya kilitleme yöntemleri kullanılabilir.
- 1:15:32Eşzamanlılık ve Gelecek Ders
- Kesmeleri devre dışı almak kullanıcı seviyesinde uygulanabilir ancak genel geçer bir yöntem değildir.
- İşletim sistemi seviyesinde interruptların disable edilmesi eşzamanlılıkla ilgili endişeleri ortadan giderebilecek bir yöntemdir.
- Gelecek derste politika konusu ele alınacak, yani bir işlemden diğerine geçerken nasıl karar verildiği ve hangi parametrelerle karar verildiği incelenecektir.