ÉîÈëÏàʶLinux»º´æ»úÖÆ£ºÓÅ»¯ÏµÍ³ÐÔÄܵÄÒªº¦°ì·¨
ÕÆÎÕLinux»º´æ»úÖÆ£ºÌáÉýϵͳÐÔÄܵÄÒªº¦Ò»²½£¬ÐèÒªÏêϸ´úÂëʾÀý
ÕªÒª£ºLinuxϵͳµÄ»º´æ»úÖÆÊÇÌá¸ßϵͳÐÔÄܵÄÖ÷ÒªÒòËØÖ®Ò»¡£±¾ÎĽ«ÏÈÈÝLinuxµÄ»º´æ»úÖÆ£¬ÖصãÏÈÈÝÒ³Ã滺´æºÍ´ÅÅÌ»º´æ£¬²¢¸ø³öÏêϸ´úÂëʾÀý£¬×ÊÖú¶ÁÕ߸üºÃµØÃ÷È·ºÍÓ¦ÓÃLinux»º´æ»úÖÆ£¬ÒÔÌáÉýϵͳµÄÐÔÄÜ¡£
Ò»¡¢Ð¡Ðò
Ëæ×ÅÅÌËã»úÊÖÒÕµÄÉú³¤£¬ÏÖ´ú²Ù×÷ϵͳÔÚ´¦Öóͷ£´ó×ÚÊý¾ÝʱÃæÁÙ×ÅÐÔÄÜÆ¿¾±µÄÌôÕ½¡£ÎªÁËÌá¸ßϵͳµÄÔËÐÐЧÂÊ£¬LinuxϵͳÒýÈëÁË»º´æ»úÖÆ£¬½«´ÅÅÌÉϵÄÊý¾Ý»º±£´æÄÚ´æÖУ¬´Ó¶øïÔÌ´ÅÅÌIOµÄ´ÎÊý£¬ÌáÉýϵͳµÄÐÔÄÜ¡£±¾ÎĽ«ÉîÈë̽ÌÖLinuxµÄ»º´æ»úÖÆ£¬²¢Í¨¹ýÏêϸµÄ´úÂëʾÀýÀ´×ÊÖú¶ÁÕßÃ÷È·ºÍÓ¦ÓÃLinux»º´æ»úÖÆ¡£
¶þ¡¢LinuxµÄ»º´æ»úÖÆ
Ò³Ã滺´æ
Ò³Ã滺´æÊÇLinuxÖÐ×î³£¼ûµÄ»º´æÐÎʽ¡£µ±Îļþ±»¶ÁÈ¡µ½ÄÚ´æʱ£¬ËüÃǽ«±»´æ´¢ÔÚÒ³Ã滺´æÖС£ÔÚÖ®ºóµÄ¶ÁÈ¡²Ù×÷ÖУ¬ÄÚºËÊ×Ïȼì²éÒ³Ã滺´æ£¬ÈôÊÇ·¢Ã÷ÒѾ»º´æÁ˸ÃÎļþµÄÒ³Ã棬¾ÍÖ±½Ó´ÓÒ³Ã滺´æÖжÁÈ¡£¬×èÖ¹ÁË´ÅÅÌIO²Ù×÷¡£Ò³Ã滺´æ¹ØÓÚ¾³£¶ÁÈ¡µÄÎļþ£¨ÈçϵͳÎļþ¡¢¿âÎļþµÈ£©ºÜÊÇÓÐÓá£
´ÅÅÌ»º´æ
³ýÁËÒ³Ã滺´æ£¬Linux»¹ÒýÈëÁË´ÅÅÌ»º´æ»úÖÆ£¬½«´ÅÅÌÉϵÄÊý¾Ý»º±£´æÄÚ´æÖС£µ±Ó¦ÓóÌÐòÐèҪдÈëÊý¾Ýµ½´ÅÅÌʱ£¬ÄÚºËÊ×ÏȽ«Êý¾ÝдÈë´ÅÅÌ»º´æÖУ¬²¢ÔÚºÏÊʵÄʱ»ú½«»º´æÖеÄÊý¾ÝдÈë´ÅÅÌ£¬ïÔÌÁË´ÅÅÌIOµÄ´ÎÊý£¬Ìá¸ßÁËϵͳµÄÐÔÄÜ¡£´ÅÅÌ»º´æ¹ØÓÚƵÈÔдÈë´ÅÅ̵ÄÓ¦ÓóÌÐò£¨ÈçÊý¾Ý¿â£©ºÜÊÇÓÐÒæ¡£
Èý¡¢Ïêϸ´úÂëʾÀý
ÏÂÃæ¸ø³öÁËһЩÏêϸµÄ´úÂëʾÀý£¬Õ¹Ê¾ÔõÑùʹÓÃLinuxµÄ»º´æ»úÖÆÀ´ÌáÉýϵͳµÄÐÔÄÜ¡£
ʹÓÃmmapº¯Êý¾ÙÐÐÎļþµÄÄÚ´æÓ³Éä
#include <fcntl.h> #include <sys/mman.h> #include <sys/stat.h> #include <unistd.h> int main() { int fd = open("test.txt", O_RDONLY); struct stat sb; fstat(fd, &sb); void* addr = mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0); // ÏÖÔÚtest.txtÎļþµÄÄÚÈݱ»Ó³Éäµ½ÁËÄÚ´æÖеÄaddr´¦£¬¿ÉÒÔÖ±½Ó´ÓÄÚ´æÖжÁÈ¡Êý¾Ý munmap(addr, sb.st_size); close(fd); return 0; }
µÇ¼ºó¸´ÖÆ
ͨ¹ýʹÓÃmmapº¯Êý£¬½«Îļþ”test.txt”Ó³Éäµ½ÄÚ´æÖУ¬¿ÉÒÔÖ±½Ó´ÓÄÚ´æÖжÁÈ¡ÎļþµÄÄÚÈÝ£¬×èÖ¹ÁË´ÅÅÌIO²Ù×÷£¬ÌáÉýÁËϵͳµÄÐÔÄÜ¡£
ʹÓÃwriteº¯Êý¾ÙÐÐÊý¾ÝµÄдÈë
#include <fcntl.h> #include <unistd.h> int main() { int fd = open("test.txt", O_WRONLY | O_CREAT, 0644); const char* buf = "Hello, World! "; size_t len = strlen(buf); write(fd, buf, len); // ÏÖÔÚÊý¾Ý±»Ð´Èëµ½´ÅÅÌ»º´æÖУ¬ÉÔºó»áÓÉÄں˽«Êý¾ÝдÈë´ÅÅÌ close(fd); return 0; }
µÇ¼ºó¸´ÖÆ
ͨ¹ýʹÓÃwriteº¯Êý£¬½«Êý¾ÝдÈëµ½Îļþ”test.txt”µÄ´ÅÅÌ»º´æÖУ¬ÉÔºóÓÉÄں˽«Êý¾ÝдÈë´ÅÅÌ¡£ÕâÑù¿ÉÒÔïÔÌƵÈԵĴÅÅÌIO²Ù×÷£¬Ìá¸ßϵͳµÄÐÔÄÜ¡£
ËÄ¡¢×ܽá
±¾ÎÄÏÈÈÝÁËLinuxµÄ»º´æ»úÖÆ£¬ÖصãÏÈÈÝÁËÒ³Ã滺´æºÍ´ÅÅÌ»º´æ£¬²¢¸ø³öÁËÏêϸµÄ´úÂëʾÀý¡£Í¨¹ýºÏÀíµØÓ¦Óûº´æ»úÖÆ£¬¿ÉÒÔ×èֹƵÈԵĴÅÅÌIO²Ù×÷£¬Ìá¸ßϵͳµÄÐÔÄÜ¡£¶ÁÕß¿ÉÒÔƾ֤ÏêϸµÄÐèÇóºÍÓ¦Óó¡¾°£¬ÎÞаµØÓ¦Óûº´æ»úÖÆ£¬ÒÔÌáÉýϵͳµÄÐÔÄÜ¡£
ÒÔÉϾÍÊÇÉîÈëÏàʶLinux»º´æ»úÖÆ£ºÓÅ»¯ÏµÍ³ÐÔÄܵÄÒªº¦°ì·¨µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡