Linux에 OS 기능을 내보내는 공유 라이브러리가 있습니까?Kernel32.dll과 동등한 Linux는 무엇입니까?
MSVCRT.DLL -> libc.so.6으로
kernel32.dll에서 ->?
Linux에 OS 기능을 내보내는 공유 라이브러리가 있습니까?Kernel32.dll과 동등한 Linux는 무엇입니까?
MSVCRT.DLL -> libc.so.6으로
kernel32.dll에서 ->?
'kernel32.dll'도 libc.so.6으로 변환됩니다. Windows는 가장 낮은 수준의 POSIX가 아니므로 POSIX libc 호출을 기본 Win32 호출로 변환하는 데 추가 계층이 필요합니다. 이것이 msvcrt.dll의 용도입니다. Kernel32.dll에는 가장 낮은 수준의 호출이 포함되어 있습니다. 리눅스에서는 이러한 시스템 호출이 이미 POSIX이므로 추가 라이브러리가 필요하지 않습니다.
libc는 Linux의 kernel32와 동일합니다. 표준 라이브러리의 GNU 확장은 커널에 호출 할 수있는 모든 방법을 처리합니다. 그냥 명확하게 - 커널 자체가 특별한 방식이라는 시스템 콜 호출 함수를 수출;
편집 (기술적으로는 libc의이 방법 ntdll의 상당하지만,도 여기에도) 이 syscall은 실제 함수로 싸여 있습니다. 리눅스에서는 libc에서, Windows에서는 ntdll (NtCreateFile), Kernel32 (CreateFileW/A)를 차례로 두 번 실행합니다.
Kernel32는 libc와 마찬가지로 syscall이 아닌 다른 기능도 제공합니다 (즉, 사용자 모드에서 100 % 유지).
msvcrt.dll은 VC++ (msvcrt -> MicroSoft Visual C++ RunTime)의 특정 DLL이기 때문에 libc.so.6과 비교할 수 없습니다.
시스템 호출 (열기, 닫기, 읽기, 쓰기 등)은 libc에도 있습니다. 그것들은 어셈블리 언어로 작성된 소프트웨어 중단에 대한 단순한 래퍼 일뿐입니다.
난 당신이 찾고있는 것 같아요 :
리눅스 커널에 대한 '가상 라이브러리'링크입니다linux-vdso.so.1 => (0x00000...)
.
커널 헤더가 API 세부 정보를 제공합니다.
빠른 Google로 이걸 발견했습니다.
VDSO는 kernel32.dll보다 ntdll.dll에 가깝습니다. – CesarB
Windows를 사용하지 않습니다 ... 어둠 속에서 찌르다 : P –
이것은 완전히 정확하지 않습니다 - 대부분의 msvcrt 함수는 * msvcrt에서 처리됩니다. strtok과 같은 것은 확실히 커널에 가지 않습니다! –
OS 지원이 필요하지 않은 경우 라이브러리가 단독으로 처리 할 수있는 것보다 사실입니다. –
은 OS 기능 (Linux VDSO + 헤더)을 내 보냅니다. –