ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌ UNIX ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
ΠΠ»Π°Π²Π° 5: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL ΠΠ±Π»Π°ΡΡΡ Windows UNIX ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² CreateFileMapping shmget - ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² MapViewOfFile mmap, shmat - ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² MapViewOfFileEx mmap, shmat - ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² OpenFileMapping shmget - ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² UnmapViewOfFile munmap, shmdt, shmctl - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ GetProcessHeap - - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ GetSystemInfo - - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ HeapAlloc sbrk, brk ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ malloc, calloc Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ HeapCreate - - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ HeapDestroy - - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ HeapFree ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘ free Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ HeapReAlloc ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘ realloc Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ HeapSize - - Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ CloseHandle (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°) shmctl - Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ CreateFileMapping, OpenFileMapping shmget - Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ MapViewOfFile shmat - Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ UnmapViewOfFile shmdt - ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL LoadLibrary dlopen - ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL FreeLibrary dlclose - ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL GetProcAddress dlsyn - ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL DllMain pthread_once - ΠΠ»Π°Π²Π° 6: ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΠ±Π»Π°ΡΡΡ Windows UNIX ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘ ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ CreateProcess fork(); execl()*, system() - Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ 6 ΡΡΠ½ΠΊΡΠΈΠΉ Π΅Ρ Π΅ΡΡ Ρ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ExitProcess _exit exit Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetCommandLine argv[] argv[] Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetCurrentProcess getpid* - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetCurrentProcessId getpid* - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetEnvironmentStrings - getenv Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetEnvironmentVariable - getenv Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetExitCodeProcess wait, waitpid - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetProcessTimes times, wait3, wait4 - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ GetProcessWorkingSetSize wait3, wait4 - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - execl*,execv*,execle*,execve*,execlp*,execvp* - Π Windows ΠΏΡΡΠΌΠΎΠΉ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - fork, vfork - Π Windows ΠΏΡΡΠΌΠΎΠΉ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - getppid - ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΡ "ΠΏΡΠ΅Π΄ΠΎΠΊ/ΠΏΠΎΡΠΎΠΌΠΎΠΊ" Π² Windows ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - getgid, getegid - ΠΠΎΠ½ΡΡΠΈΠ΅ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² Windows ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - getpgrp - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - setpgid - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - setsid - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - tcgetpgrp - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ - tcsetpgrp - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ OpenProcess - - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ SetEnvironmentVariable putenv - putenv Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π‘ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ TerminateProcess kill - Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ: ΠΏΡΠΎΡΠ΅ΡΡ WaitForMultipleObjects (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠ°) waitpid - Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ: ΠΏΡΠΎΡΠ΅ΡΡ WaitForSingleObject (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ°) wait, waitpid - Π’Π°ΠΉΠΌΠ΅ΡΡ KillTimer alarm(0) - Π’Π°ΠΉΠΌΠ΅ΡΡ SetTimer alarm - Π’Π°ΠΉΠΌΠ΅ΡΡ Sleep sleep - Π’Π°ΠΉΠΌΠ΅ΡΡ Sleep poll ΠΈΠ»ΠΈ select Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° - ΠΠ»Π°Π²Π° 7: ΠΠΎΡΠΎΠΊΠΈ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΠ±Π»Π°ΡΡΡ Windows UNIX/Pthreads ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ CreateRemoteThread - TLS TlsAlloc pthread_key_alloc TLS TlsFree pthread_key_delete TLS TlsGetValue pthread_getspecific TLS TlsSetValue pthread_setspecific Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ CreateThread, _beginthreadex pthread_create Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ExitThread, _endthreadex pthread_exit Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ GetCurrentThread pthread_self Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ GetCurrentThreadId - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ GetExitCodeThread pthread_yield Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ ResumeThread - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ SuspendThread - Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ TerminateThread pthread_cancel pthread_cancel ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ WaitForSingleObject (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΏΠΎΡΠΎΠΊΠ°) pthread_join ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² GetPriorityClass pthread_attr_getschedpolicy, getpriority ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² GetThreadPriority pthread_attr_getschedparam ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² SetPriorityClass pthread_attr_setschedpolicy, setpriority, nice ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² SetThreadPriority pthread_attr_setschedparamΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ΄ΡΡΠΈ ΡΠ°ΡΡΡΡ Π²ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ UNIX, ΠΏΠΎΡΠΎΠΊΠΈ Pthreads Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ UNIX.