Geçen yıllar süresince internet dünyasında popülasyonun artmasıyla birlikte akıllara takılan soruların sayısı da arttı. Bunlardan en can alıcı olanı ise “bu kadar kullanıcıya daha az maliyetli yapılarla nasıl hizmet verilecek?” sorusu idi. Mali konulara takılmadan düşündüğümüzde bile bu kadar sunucuyu nereye koyacağımızı bilemiyorduk. Örneğin standart programlama mantığında birbirinin mantıksal kopyaları olan birden fazla değişkeni denetlemek için bir loop kurulur ve içerisinde her seferinde koşul sağlanmış mı diye denetlenmesi gerekir. Bu da fazlasıyla işlem yükünü beraber getirmekte. Kabaca örnek vemek gerekirse; bir FTP sunucuyla hizmet verdiğinizi düşünün. Protokol içerisindeki gelen giden paketleri bir şekilde yorumlamanız gerekir. bu iş için socket açılır. 1 kullanıcı bağlandı, bağlantı socketi denetlenmeye başlandı, iş dosya almaya geldi ve socket üzerinden veri akışı sağlandı. Buraya kadar herşey normal. peki ya 1 değil 10,000 kullanıcı dosya transferi gerçekleştirmek isteseydi ne yapacaktık? Sonuç düz mantıkla yine meşhur loop mantığına gidiyor. Bir loop açılıyor ve işlemcinin sınırları zorlanarak açılan soketler denetlenmeye çalışılıyor. Diyelim ki sorunumuzu bu şekilde aştığımızı düşündük ama madalyonun diğer tarafında sunucunun asıl yapması gereken işler var. Diske erişim, yetki denetimi, kota denetimi, dosya yazma/okuma. Bukadar işi birarada yapabilmek gerekliydi ve yapıldı. ama oldukça maaliyetli ve pratik olmayan çözümlerle yapıldı. Sunucuyu ve işlemci gücünü boşa harcadık. Peki ya işletim sistemi bize yardımcı olamaz mıydı? evet olmalıydı ve oldu. Hadi biraz daha derinlere inelim.