Hipervizör

sanal makineler çalıştıran bilgisayar yazılımı
(Hypervisor sayfasından yönlendirildi)

Bir hiper yönetici veya sanal makine monitörü (VMM), sanal makineleri oluşturan ve çalıştıran bilgisayar yazılımı, bellenim veya donanımdır . Bir hipervizörün bir veya daha fazla sanal makineyi çalıştırdığı bir bilgisayara ana makine adı verilir ve her sanal makineye konuk makinesi adı verilir. Hiper yönetici, konuk işletim sistemlerini sanal işletim platformuyla sunar ve konuk işletim sistemlerinin yürütülmesini yönetir. Çeşitli işletim sistemlerinin birden fazla örneği sanallaştırılmış donanım kaynaklarını paylaşabilir: örneğin, Linux, Windows ve macOS örneklerinin tümü tek bir fiziksel x86 makinede çalışabilir. Konuk işletim sistemleri aynı çekirdeğe sahip farklı Linux dağıtımları gibi kullanıcı alanında farklılık gösterebilse de, bu, tüm örneklerin (genellikle kapsayıcılar olarak adlandırılır) tek bir çekirdeği paylaşması gereken işletim sistemi düzeyinde sanallaştırma ile çelişir.

Hipervizör terimi, bir işletim sisteminin çekirdeği için geleneksel bir terim olan bir süpervizör çeşididir : hipervizör, süpervizörünün süpervizörüdür,[1] süper güçlü bir değişken olarak kullanılanhiperile - r Super- . [a] Bu terim 1970 dolaylarındadır;[2] önceki CP/CMS (1967) sisteminde bunun yerine Kontrol Programı terimi kullanılmıştır.

Sınıflandırma değiştir

 
Type-1 and type-2 hypervisors

1974 tarihli makalelerinde, Sanallaştırılabilir Üçüncü Nesil Mimariler İçin Resmi Gereksinimler, Gerald J. Popek ve Robert P. Goldberg iki tip hiper yönetici sınıflandırdı:[3] Tip 1, doğal veya bare metal hipervizörler

Bu hipervizörler, donanımı kontrol etmek ve konuk işletim sistemlerini yönetmek için doğrudan sunucunun donanımında çalışırlar. Bu nedenle, bazen bare metal hipervizörleri denir. IBM'in 1960'larda geliştirdiği ilk hipervizörler, native hipervizörlerdi.[4] Bunlara SIMMON test yazılımı ve CP/CMS işletim sistemi (IBM'in z/VM'nin selefi) dahil edildi. Modern eşdeğerler arasında AntsleO'lar,[5] Xen, XCP-ng13 Nisan 2019 tarihinde Wayback Machine sitesinde arşivlendi., SPARC için Oracle VM Sunucusu, x86 için Oracle VM Sunucusu, Microsoft Hyper-V, Xbox One sistem yazılımı ve VMware ESX/ESXi bulunur.
Tip 2 veya hosted hipervizörler
Bu hipervizörler, diğer bilgisayar programlarında olduğu gibi geleneksel bir işletim sisteminde (OS) çalışır. Konuk işletim sistemi, ana bilgisayarda bir işlem olarak çalışır. Tip 2 hipervizörleri, konuk işletim sistemlerini ana bilgisayar işletim sisteminden soyutlar. VMware Workstation, VMware Player, VirtualBox, Mac için Parallels Desktop ve QEMU tip 2 hiper yönetici örnekleridir.

Bu iki tip arasındaki ayrım her zaman net değildir. Örneğin, Linux'un Çekirdek Tabanlı Sanal Makinesi (KVM) ve FreeBSD'nin BHyVe, ana bilgisayar işletim sistemini etkili bir tip 1 hiper yöneticiye[6] dönüştüren çekirdek modülleri.[7] Aynı zamanda, Linux dağıtımları ve FreeBSD hala genel amaçlı işletim sistemleri olduğundan, VM kaynakları için birbirleriyle rekabet eden uygulamalar, KVM ve bhyve de tip 2 hiper denetleyiciler olarak kategorize edilebilir.[8]

Anabilgisayar kökenleri değiştir

Tam sanallaştırma sağlayan ilk hipervizörler, Ocak 1967'de üretime başlayan ve IBM'in CP/CMS işletim sisteminin ilk versiyonu olan test aracı SIMMON ve IBM'in araştırma sistemi CP-40 idi. CP-40, sanallaştırmaya izin veren önemli bir özellik olan Dynamic Address Translation'ı desteklemek için IBM Cambridge Scientific Center'da değiştirilmiş bir S/360-40 üzerinde çalıştı. Bu süreden önce, bilgisayar donanımı yalnızca birden fazla kullanıcı uygulamasının aynı anda çalışmasına izin verecek kadar sanallaştırılmıştı (bkz. CTSS ve IBM M44/44X). CP-40 ile donanımın denetleyici durumu da sanallaştırılarak birden fazla işletim sisteminin aynı anda ayrı sanal makine bağlamlarında çalışmasına izin verildi.

Programcılar yakın zamanda, tam sanallaştırma yapabilen ilk üretim bilgisayarı olan IBM System/360-67 için CP-40'ı (CP-67 olarak) uyguladılar .IBM, bu makineyi ilk kez 1966'da gönderdi; sanal bellek için sayfa çeviri tablosu donanımı ve I/O ve interrupt işlemesi de dahil olmak üzere tüm çekirdek görevlerinin tam olarak sanallaştırılmasını sağlayan diğer teknikleri içeriyordu.(“Resmi” işletim sistemi, kötü niyetli TSS/360'ın tam sanallaştırma kullanmadığına dikkat edin.) Hem CP-40 hem de CP-67, 1967'de üretime başladı. CP/CMS,IBM müşterilerine 1968'den 1970'lerin başlarına, desteksiz olarak kaynak kod biçiminde ulaşılabilirdi.

CP/CMS, IBM'in ana bilgisayarları için sağlam zaman paylaşımı sistemleri kurma girişiminin bir parçası oldu. Aynı anda birden fazla işletim sistemi çalıştırarak, hiper yönetici sistem sağlamlığını ve dengesini arttırdı: Bir işletim sistemi çökse bile, diğerleri kesintisiz çalışmaya devam ederdi. Aslında, bu bile işletim sistemlerinin beta veya deneysel sürümlerinin —yeni donanımlar için bile olsa[9]— kararlı ana üretim sistemini tehlikeye atmadan ve maliyetli ek geliştirme sistemleri gerektirmeden konuşlandırılıp hata ayıklanmasına izin verdi.

IBM, 1970 yılında System/370 serisini herhangi bir sanallaştırma özelliği olmadan duyurdu, ancak Ağustos 1972 Gelişmiş İşlev duyurusunda sanal bellek[kaynak belirtilmeli] desteği ekledi. Takip eden tüm sistemlerinde (zSeries hattı gibi tüm modern IBM anabilgisayarları, 1960'lar dönemi olan IBM S/360 hattıyla geriye dönük uyumluluğu koruyor) sanallaştırma özelliği mevcut. 1972 duyurusu, S/370 için CP/CMS'nin bir yeniden uygulaması olan VM/370'ı da içeriyordu. CP/CMS'den farklı olarak, IBM bu sürüm için destek sağladı (yine de birkaç sürüm için kaynak kod biçiminde dağıtılmış olmasına rağmen).VM, donanım arayüzlerinin sadece bazılarının değil, hepsinin sanallaştırıldığını vurgulayarak Sanal Makine anlamına gelir. Hem VM hem de CP/CMS, üniversiteler, kurumsal kullanıcılar ve zaman paylaşımı sağlayıcılarının yanı sıra IBM dahilinde erken kabul görmüş ve hızlı bir gelişim göstermişlerdir. Kullanıcılar, modern açık kaynaklı projelerde görülen trendleri öngörerek devam eden gelişimde aktif rol oynadılar.Bununla birlikte, bir dizi tartışmalı ve acı savaşta, zaman paylaşımı, IBM'in politik mücadelesiyle toplu işleme için kaybedilmiş ve VM, yıllar boyunca IBM'in "diğer" ana bilgisayar işletim sistemi olarak kaldı ve MVS'yi kaybetti. 2000'den itibaren z/VM ürünü olarak, örneğin zSeries Linux için bir platform olarak popülerlik ve desteğin yeniden dirilişini yaşadı.

Yukarıda belirtildiği gibi, VM kontrol programı, sanal bir makinede kullanılan DIAG ("Diagnose", opcode x'83 ') komutlarını arayarak alan bir hipervizör çağrısı işleyicisi içerir. Bu, dosya sistemi erişiminin ve diğer işlemlerin hızlı yoldan sanallaştırılmamış olarak yürütülmesini sağlar (DIAG, normal programlamada kullanılmayan modele bağlı ayrıcalıklı bir talimattır ve dolayısıyla sanallaştırılmaz). Bu nedenle "ana bilgisayar" işletim sistemine bir sinyal olarak kullanılabilir). CP/CMS sürüm 3.1'de ilk kez uygulandığında, DIAG'ın kullanımı, Sistem/360 Supervisor Call instruction (SVC) benzer olan ancak sistemin SVC'nin sanallaştırılmasını değiştirmeyi veya genişletmeyi gerektirmeyen bir işletim sistemi arayüzü sağladı.

1985 yılında IBM, mantıksal bölümleri (LPAR) yönetmek için PR/SM hipervizörünü tanıttı.

İşletim sistemi desteği değiştir

Birçok faktör kullanımında 2005 civarında da yeniden canlanmasını sağlar sanallaştırma arasında teknoloji Unix, Linux ve diğer Unix benzeri işletim sistemleri:[10]

  • Her bir makinenin aynı anda daha fazla iş yapmasına izin vererek donanım yeteneklerini genişletme
  • Sunucuları birleştirerek maliyetleri kontrol etme ve yönetimi basitleştirme çabaları
  • Örneğin çok sayıda işlemci ve küme kurulumunu kontrol etmek, örneğin sunucu çiftliklerinde ve render çiftliklerinde ihtiyaç
  • Hiper yönetici mimarilerinden geliştirilmiş güvenlik, güvenilirlik ve cihaz bağımsızlığı
  • Farklı donanım veya işletim sistemi ortamlarında karmaşık, işletim sistemi bağımlı uygulamaları çalıştırabilme

Sun Microsystems, HP, IBM ve SGI gibi belli başlı Unix satıcıları 2000'den beri sanallaştırılmış donanım satıyorlar. Bunlar genel olarak büyük, pahalı sistemler olmuştur (yüksek uçtaki milyonlarca dolar aralığında), ancak sanallaştırma IBM’in pSeries sunucuları, Sun / Oracle’ın T - serisi CoolThreads sunucuları ve HP Superdome serisi makineler.

Her ne kadar Solaris, (2006 (2006) itibarıyla) Sun / Oracle tarafından Mantıksal Alanlar hipervizöründe resmen desteklenen tek konuk alan işletim sistemi olmasına rağmen, , Linux (Ubuntu ve Gentoo) ve FreeBSD, hipervizörün üstünde çalışacak şekilde kaydedildi (tümü aynı anda tamamen sanallaştırılmış bağımsız konuk işletim sistemleri olarak aynı işlemcide çalışabilir). Wind River " Carrier Grade Linux " da Sun'ın Hipervizöründe çalışıyor.[11] SPARC işlemcilerinde tam sanallaştırma açıkça ortaya çıktı: 1980'lerin ortalarında ortaya çıkmasından bu yana Sun, SPARC mimarisini kasıtlı olarak sanallaştırmayı engelleyecek eserlerden temiz tuttu. (Aşağıdaki x86 işlemcilerdeki sanallaştırma ile karşılaştırın.)[12]

HP, Itanium destekli sistemleri "Integrity Virtual Machines" (Integrity VM) üzerinde çoklu işletim sistemi teknolojisine ev sahipliği yapmak için teknolojisini çağırıyor. Itanium, HP-UX, Linux, Windows ve OpenVMS’leri çalıştırabilir . OpenVMS dışında, daha sonraki bir sürümde desteklenmesi dışında, bu ortamlar ayrıca HP'nin Integrity VM platformunda sanal sunucular olarak da desteklenir. HP-UX işletim sistemi, HP-UX’in birçok önemli özelliğinden faydalanılmasını sağlayan ve bu platform ile işlemci hotswap, bellek hotswap ve dinamik çekirdek gibi bu ürün ve diğer emtia platformları arasında büyük farklılıklar sağlayan Integrity VM hiper yönetici katmanını barındırıyor. Sistemin yeniden başlatılması olmadan güncellemeler. HP-UX'i yoğun bir şekilde kullanıyor olsa da, Integrity VM hipervizörü, konuklar çalışırken çıplak metal üzerinde çalışan bir melezdir. Bir Integrity VM ana bilgisayarında normal HP-UX uygulamalarını çalıştırmak, kesinlikle önerilmez. çünkü Integrity VM, sanal makineler için ayarlanmış ve normal uygulamalar için etkili olmayan kendi bellek yönetimi, zamanlama ve I/O politikalarını uygulamaktadır. HP ayrıca, VPAR ve nPar teknolojisi ile Dürüstlük ve HP9000 sistemlerinin daha katı bir şekilde bölümlenmesini sağlar; eski paylaşılan kaynak bölümlemesi sunar ve ikincisi de eksiksiz I/O ve işleme yalıtımı sunar. Sanal sunucu ortamının (VSE) esnekliği, yeni dağıtımlarda daha sık kullanılmasına yol açtı. [kaynak belirtilmeli] [ <span title="This claim needs references to reliable sources. (November 2008)">kaynak belirtilmeli</span> ] IBM, System/390, zSeries, pSeries ve iSeries sistemlerinde mantıksal bölümleme (LPAR) olarak bilinen sanallaştırma bölümü teknolojisi sağlar. IBM'in Güç Sistemleri için, POWER Hipervizörü (PHYP), bellenimdeki yerli (bare metal) bir hipervizördür ve LPAR'lar arasında izolasyon sağlar. İşlemci kapasitesi, LPAR'lara özel bir şekilde veya kullanılmayan kapasitenin harcandığı ve yoğun iş yüklerine yeniden tahsis edilebileceği bir hak olarak verilir. LPAR grupları, işlemci kapasitelerini bir "havuz" içindeymiş gibi yönetilebilirler - IBM, bu yeteneği Çoklu Paylaşımlı İşlemci Havuzları (MSPP'ler) olarak adlandırır ve bunu POWER6 işlemcili sunucularda uygular. LPAR ve MSPP kapasite tahsisleri dinamik olarak değiştirilebilir. Bellek, her LPAR'a tahsis edilir (LPAR başlangıcında veya dinamik olarak) ve POWER Hipervizörü tarafından adres kontrolü yapılır. İşletim sistemleri tarafından gerçek modda adresleme için (AIX, Linux, IBM i), POWER işlemcileri (POWER4 ve sonrası), bir donanım adres ofsetinin fiziksel adrese ulaşmak için OS adres ofsetiyle değerlendirildiği sanallaştırma yetenekleri tasarladı. Giriş/Çıkış (G/Ç) adaptörleri yalnızca LPAR'lara "ait" olabilir veya Sanal G/Ç Sunucusu (VIOS) olarak bilinen bir cihaz bölümü aracılığıyla LPAR'lar tarafından paylaşılabilir. Power Hypervisor, birçok parçanın (modele bağlı: işlemciler, bellek, I/O adaptörleri, üfleyiciler, güç üniteleri, diskler, sistem kontrolörleri, vb.) Sıcak bir şekilde eklenmesini/değiştirilmesini kolaylaştırarak yüksek seviyede güvenilirlik, kullanılabilirlik ve servis kolaylığı (RAS) sağlar.)

Xen gibi açık kaynaklı projelerin sanallaştırma çabalarına öncülük ettiği x86 / x86-64 sunucu platformlarında da benzer eğilimler yaşanmıştır. Bunlar, Linux ve Solaris çekirdekleri üzerine inşa edilmiş hipervizörleri ve ayrıca özel çekirdekleri içerir. Bu teknolojiler büyük sistemlerden masaüstlerine kadar uzandığından, bir sonraki bölümde açıklanmaktadır.

x86 sistemleri değiştir

2005'ten itibaren CPU satıcıları, ürünlerine donanım sanallaştırma yardımı eklediler; örneğin: Intel VT-x (Vanderpool kodlu) ve AMD-V (Pacifica kodlu).

Alternatif bir yaklaşım, konuk işletim sisteminin, hipervizörün simüle ettiği makine I/O talimatlarını uygulamak yerine, hipervizöre sistem çağrıları yapmak için değiştirilmesini gerektirir.Buna Xen'de paravirtualization, Parallels Workstation'da "hiper çağrı" ve IBM'in VM'sinde "DIAGNOSE kodu" denir. Hepsi gerçekten aynı şey, altta yatan hiper denetçiye bir sistem çağrısı. Mach ve L4 gibi bazı mikro çekirdekler, konuk işletim sistemlerinin "paravirtualization"'a mümkün olacak şekilde yeterince esnektir.

Gömülü sistemler değiştir

Gömülü sistemleri ve belirli gerçek zamanlı işletim sistemi (RTOS) ortamlarını hedef alan gömülü hiper denetleyiciler, sağlamlık, güvenlik ve gerçek zamanlı özellikler dahil olmak üzere masaüstü ve kurumsal sistemlere kıyasla farklı gereksinimlerle tasarlanmıştır. Pek çok gömülü sistemin, özellikle de pille çalışan mobil sistemlerin kaynak kısıtlı niteliği, küçük bellek boyutu ve düşük ek yük için başka bir gereklilik getirir. Son olarak, PC dünyasında x86 mimarisinin yaygınlığının aksine, gömülü dünya daha geniş çeşitlilikte mimariler ve daha az standartlaştırılmış ortamlar kullanıyor. Sanallaştırma desteği, bellek koruması (bir bellek yönetim birimi veya en azından bir bellek koruma birimi şeklinde) ve çoğu mikrodenetleyiciyi dışlayan kullanıcı modu ile ayrıcalıklı mod arasında bir ayrım gerektirir. Bu hala x86, MIPS, ARM ve PowerPC'yi orta ila üst seviye gömülü sistemler üzerinde yaygın olarak kullanılan mimariler olarak bırakıyor.[13]

Gömülü sistem üreticileri genellikle işletim sistemlerine yönelik kaynak koduna sahip olduklarından, bu alanda tam sanallaştırmaya daha az ihtiyaç duyarlar. Bunun yerine, paravirtüelleşmenin performans avantajları, bunu genellikle tercih edilen sanallaştırma teknolojisi yapar. Yine de, ARM ve MIPS yakın zamanda bir IP seçeneği olarak tam sanallaştırma desteği ekledi ve bunu ARM Cortex-A15 MPCore ve ARMv8 EL2 gibi en son teknolojiye sahip işlemcilerine ve mimari sürümlerine dahil etti.

Sunucu/masaüstündeki sanallaştırma ve gömülü ortamlar arasındaki diğer farklar arasında, sanal makineler arasında kaynakların verimli bir şekilde paylaşılması, yüksek bant genişliği, düşük gecikmeli VM'ler arası iletişim, zamanlamanın ve güç yönetiminin global bir görünümü ve bilgi akışlarının ayrıntılı bir şekilde kontrol edilmesi gerekliliği vardır.[14]

Güvenlik uygulamaları değiştir

Hyperjacking olarak bilinen, işletim sisteminin altına hiper yönetici olarak kendilerini yükleyen, kötü amaçlı yazılım ve rootkitler tarafından hipervizör teknolojisinin kullanılması, kötü amaçlı yazılımın işletim sisteminin herhangi bir işlemini (bir parola giren biri gibi) işlemlerini engelleyebileceği için tespit etmelerini zorlaştırabilir. kötü amaçlı yazılımdan koruma yazılımı mutlaka onu algılar (kötü amaçlı yazılım tüm işletim sisteminin altında çalıştığı için). Konseptin uygulamasının, SubVirt laboratuvarının kök setinde (Microsoft ve University of Michigan araştırmacıları[15] birlikte geliştirilmiştir) ve Blue Pill malware paketinde gerçekleştiği iddia edildi. Bununla birlikte, bu tür iddialar, hiper yönetici tabanlı bir kök setinin varlığını tespit etmenin mümkün olacağını iddia eden diğerleri tarafından tartışılmıştır.[16]

2009 yılında, Microsoft ve Kuzey Carolina Eyalet Üniversitesi'nden araştırmacılar, çekirdek modu kök kitlelerine karşı genel koruma sağlayabilen Hooksafe adlı bir hiper yönetici katmanı anti-rootkit sergilediler.[17]

Notlar değiştir

  1. ^ super- is from Latin, meaning "above", while hyper- is from the cognate term in Ancient Greek, also meaning "above".

Kaynakça değiştir

  1. ^ Bernard Golden (2011). Virtualization For Dummies. s. 54. 
  2. ^ "How did the term "hypervisor" come into use?". 7 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Nisan 2019. 
  3. ^ Popek, Gerald J.; Goldberg, Robert P. (1974). "Formal requirements for virtualizable third generation architectures". Communications of the ACM. 17 (7). ss. 412-421. doi:10.1145/361011.361073. 
  4. ^ Meier, Shannon (2008). "IBM Systems Virtualization: Servers, Storage, and Software" (PDF). ss. 2, 15, 20. 1 Ağustos 2016 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 22 Aralık 2015. 
  5. ^ "antsleOS Architecture - antsle Docs". docs.antsle.com (İngilizce). 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Haziran 2018. 
  6. ^ Graziano, Charles (2011). "A performance analysis of Xen and KVM hypervisors for hosting the Xen Worlds Project". Graduate Theses and Dissertations. Iowa State University. 2 Mayıs 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Ocak 2013. 
  7. ^ Dexter, Michael. "Hands-on bhyve". CallForTesting.org. 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Eylül 2013. 
  8. ^ Pariseau, Beth (15 Nisan 2011). "KVM reignites Type 1 vs. Type 2 hypervisor debate". SearchServerVirtualization. TechTarget. 7 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Ocak 2013. 
  9. ^ See History of CP/CMS for virtual-hardware simulation in the development of the System/370
  10. ^ Loftus, Jack (19 Aralık 2005). "Xen virtualization quickly becoming open source 'killer app'". TechTarget. 11 Nisan 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Ekim 2015. 
  11. ^ "Wind River To Support Sun's Breakthrough UltraSPARC T1 Multithreaded Next-Generation Processor". Wind River Newsroom (Basın açıklaması). Alameda, California. 1 Kasım 2006. 10 Kasım 2006 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Ekim 2015. 
  12. ^ Fritsch, Lothar; Husseiki, Rani; Alkassar, Ammar. Complementary and Alternative Technologies to Trusted Computing (TC-Erg./-A.), Part 1, A study on behalf of the German Federal Office for Information Security (BSI) (PDF). 7 Haziran 2020 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 11 Nisan 2019. 
  13. ^ Strobl, Marius (2013). Virtualization for Reliable Embedded Systems. Munich: GRIN Publishing GmbH. ss. 5-6. ISBN 978-3-656-49071-5. Erişim tarihi: 7 Mart 2015. [ölü/kırık bağlantı]
  14. ^ Gernot Heiser (Nisan 2008). "The role of virtualization in embedded systems". Proc. 1st Workshop on Isolation and Integration in Embedded Systems (IIES'08). ss. 11-16. 21 Mart 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Nisan 2019. 
  15. ^ "SubVirt: Implementing malware with virtual machines" (PDF). University of Michigan, Microsoft. 3 Nisan 2006. 20 Mayıs 2018 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 15 Eylül 2008. 
  16. ^ "Debunking Blue Pill myth". Virtualization.info. 11 Ağustos 2006. 14 Şubat 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Aralık 2010. 
  17. ^ Wang, Zhi; Jiang, Xuxian; Cui, Weidong; Ning, Peng (11 Ağustos 2009). Countering Kernel Rootkits with Lightweight Hook Protection (PDF). Proceedings of the 16th ACM Conference on Computer and Communications Security. CCS '09. Chicago, Illinois, USA: ACM. CiteSeerX 10.1.1.147.9928 $2. doi:10.1145/1653662.1653728. ISBN 978-1-60558-894-0. 29 Aralık 2009 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 11 Kasım 2009. 

Dış bağlantılar değiştir