2013-04-05 15 views
7

Bazen, sistem sisteminde sistem çağrısını çağırmamız gerektiğinde, bunun yardımcısı veya ilgili çekirdek işlevlerini çağırırız, bunun yerine 'sistem çağrısı' yaparız. Hala çekirdek alanında sistem çağrısı diyebilir miyiz? Değilse, bunu yapmamızı engelleyen şey.Çekirdek alanında sistem çağrısını arayabilir miyiz?

Sorum şu ki biraz garip.

+0

Hayır yapamazsınız. Bir sistem çağrısı, kernel ve kullanıcı tanımadığım –

+0

arasındaki arabirimdir. Yaptığımız şey yardımcı veya diğer işlevleri çağırmak. Sadece merak ediyorum, yapabiliriz ya da yapamayız. – liuyruc

+0

Ve bir sistem çağrısı muhtemelen bir programlama noktasıdır; Bu nedenle, işlevini çekirdekteki rastgele bir noktada aramak istemezsiniz. Genel olarak, çekirdek kodlaması çok zor. Bunu niçin ve niçin yapmak istediğinizi çok daha fazla açıklamalısınız .... –

cevap

9

Aslında kanının (ve burada bazı cevaplar), cevap, evet, ama hangi işletim bağlı olabilir aykırı: Linux'ta

  • , neredeyse tüm sistem eğer çağrıları çağırabilir Çekirdek ihracatlarını bulabilirsiniz (örneğin "cat/proc/kallsysms | grep sys_"). Veri segmentini (KERNEL_DS) ayarlayarak çoğu sistemde (kullanıcı modunu kabul edenler *) koruma sağlamak için küçük bir "hile" vardır. Tam olarak tavsiye edilmez, ancak çekirdeğe (ör. SELinux) erişmeniz gerekiyorsa kesinlikle mantıklıdır.

  • Windows'ta, çekirdekte Nt * çağrılarının çoğu, Zw * çağrıları - do "dumpbin/export C: \ windows \ system32 \ ntoskrnl.exe | findstr Zw (veya Nt)" olarak da kullanılabilir. örnek. Mac OS X'te, teknik olarak izin verilmemesine rağmen, etrafta dolaşmak için akıllı bir korsanlık olmasına rağmen, izin verilmemelidir. ancak uyarılar dikkatli gözetilmesi de - sistem çağrıları aslında kullanıcı modu ve çekirdek arasında arayüz olsa

, birkaç hatta üretim layık kod yapar durumlar şaşırtıcı oldukça vardır.

+1

Ancak, insmod'la "Bilinmeyen sembol sys_socket" den şikayet ediyor. –

+0

Bu, sembolün yalnızca GPL olması nedeniyle olabilir. Linux bazen böyle bir şey. kediyi/grep'i yukarıdan deneyin ve dışa aktarılan sembolü (T) görüyorsanız ve hala ona bağlanamıyorsanız, o zaman muhtemelen odur. Tüm syscalls zorunlu olarak ihraç edilmez. Ayrıca, özellikle soketlerle başka sorunlar da var, ama karmaşık değil - ilk önce bunu deneyin – Technologeeks