LinuxÉ豸Çý¶¯³ÌÐò ÓëÓ²¼þͨÐÅ18051101072
I/O ¶Ë¿ÚºÍ I/O ÄÚ´æ
ÿÖÖÍâÉè¶¼ÊÇͨ¹ý¶Áд¼Ä´æÆ÷À´½øÐпØÖÆ¡£
ÔÚÓ²¼þ²ã£¬ÄÚ´æÇøºÍ I/O ÇøÓòûÓиÅÄîÉϵÄÇø±ð: ËüÃǶ¼ÊÇͨ¹ýÏòÔÚµØÖ·×ÜÏߺͿØÖÆ×ÜÏß·¢³öµçƽÐźÅÀ´½øÐзÃÎÊ£¬ÔÙͨ¹ýÊý¾Ý×ÜÏß¶ÁдÊý¾Ý¡£
ÒòΪÍâÉèÒªÓëI\O×ÜÏ߯¥Å䣬¶ø´ó²¿·ÖÁ÷ÐÐµÄ I/O ×ÜÏßÊÇ»ùÓÚ¸öÈ˼ÆËã»úÄ£ÐÍ£¨Ö÷ÒªÊÇ x86 ¼Ò×壺ËüΪ¶ÁºÍд I/O ¶Ë¿ÚÌṩÁ˶ÀÁ¢µÄÏß·ºÍÌØÊâµÄ CPU Ö¸Á£¬ËùÒÔ¼´±ãÄÇЩûÓе¥¶ÀI/O ¶Ë¿ÚµØÖ·¿Õ¼äµÄ´¦ÀíÆ÷£¬ÔÚ·ÃÎÊÍâÉèʱҲҪģÄâ³É¶ÁдI\O¶Ë¿Ú¡£ÕâÒ»¹¦ÄÜͨ³£ÓÉÍâΧоƬ×飨PC ÖеÄÄϱ±ÇÅ£©»ò CPU Öеĸ½¼Óµç·ʵÏÖ£¨Ç¶ÈëʽÖеķ½·¨£© ¡£
Linux ÔÚËùÓеļÆËã»úƽ̨ÉÏʵÏÖÁË I/O ¶Ë¿Ú¡£µ«²»ÊÇËùÓеÄÉ豸¶¼½«¼Ä´æÆ÷Ó³Éäµ½
I/O ¶Ë¿Ú¡£ËäÈ»ISAÉ豸ÆÕ±éʹÓà I/O ¶Ë¿Ú£¬µ«´ó²¿·Ö PCI É豸Ôò°Ñ¼Ä´æÆ÷Ó³É䵽ij¸öÄÚ´æµØÖ·Çø£¬ÕâÖÖ I/O
ÄÚ´æ·½·¨Í¨³£ÊÇÊ×Ñ¡µÄ¡£ÒòΪËüÎÞÐèʹÓÃÌØÊâµÄ´¦ÀíÆ÷Ö¸ÁCPU
ºË·ÃÎÊÄÚ´æ¸üÓÐЧÂÊ£¬ÇÒ±àÒëÆ÷ÔÚ·ÃÎÊÄÚ´æÊ±ÔڼĴæÆ÷·ÖÅäºÍѰַģʽµÄÑ¡ÔñÉÏÓиü¶à×ÔÓÉ¡£
I/O ¼Ä´æÆ÷ºÍ³£¹æÄÚ´æ
ÔÚ½øÈëÕⲿ·ÖѧϰµÄʱºò£¬Ê×ÏÈÒªÀí½âÒ»¸ö¸ÅÄside
effect£¬ÊéÖÐÒëΪ±ß¼ÊЧӦ£¬µÚ¶þ°æÒëΪ¸±×÷Óá£ÎÒ¾õµÃ²»¹ÜËüÊÇÔõô±»·ÒëµÄ£¬¶¼²»¿ÉÄܾ«×¼±í´ïÔ×÷ÕßµÄÒâ˼£¬ËùÒÔÎÒ¸öÈËÈÏΪ¼Çסside
effect¾ÍºÃ¡£ÏÂÃæÀ´½²½²side effectµÄº¬Òå¡£ÎÒÏÈÌù³öÁ½¸öÍøÉÏÒÑÓеÄÁ½ÖÖ˵·¨£¨ÔÚÕâÀïллÁ½Î»¸ßÈ˵ķÖÏí£©£º
µÚÒ»ÖÖ˵·¨£º
3. side effect£¨ÒëΪ±ß¼ÊЧӦ»ò¸±×÷Óã©£ºÊÇÖ¸¶Áȡij¸öµØÖ·Ê±¿ÉÄܵ¼Ö¸õØÖ·ÄÚÈÝ·¢Éú±ä»¯£¬±ÈÈ磬ÓÐЩÉ豸µÄÖжÏ״̬¼Ä´æÆ÷Ö»ÒªÒ»¶ÁÈ¡£¬±ã×Ô¶¯ÇåÁã¡£I/O¼Ä´æÆ÷µÄ²Ù×÷¾ßÓÐside effect£¬Òò´Ë£¬²»ÄÜ¶ÔÆä²Ù×÷²»ÄÜʹÓÃcpu»º´æ¡£
ÔÎÄÍøÖ·£º
http://qinbh.blog.sohu.com/62733495.html
µÚ¶þÖÖ˵·¨£º
˵һÏÂÎÒµÄÀí½â£ºI/O¶Ë¿ÚÓëʵ¼ÊÍⲿÉ豸Ïà¹ØÁª£¬Í¨¹ý·ÃÎÊI/O¶Ë¿Ú¿ØÖÆÍⲿÉ豸£¬“±ß¼ÊЧӦ”ÊÇÖ¸¿ØÖÆÉ豸£¨¶ÁÈ¡»òдÈ룩ÉúЧ£¬·ÃÎÊI/O¿ÚµÄ
Ö÷ҪĿµÄ¾ÍÊDZ߼ÊЧӦ£¬²»Ïñ·ÃÎÊÆÕͨµÄÄڴ棬ֻÊÇÔÚÒ»¸öλÖô洢»ò¶Áȡһ¸öÊýÖµ£¬Ã»ÓбðµÄº¬ÒåÁË¡£ÎÒÊÇ»ùÓÚARMƽ̨Àí½âµÄ£¬ÔÚ¡¶linuxÉ豸Çý¶¯³Ì
Ðò¡·µÚ¶þ°æÖеÄ˵·¨ÊÇ“¸±×÷ÓÔ£¬²»ÊÇ“±ß¼ÊЧӦ”¡£
ÔÎÄÍøÖ·£º
http://linux.chinaunix.net/bbs/viewthread.php?tid=890636&page=1#pid6312646
½áºÏÒÔÉÏÁ½ÖÖ˵·¨ºÍ×Ô¼º¿´¡¶LinuxÉ豸Çý¶¯³ÌÐò£¨µÚ3°æ£©¡·µÄÀí½â£¬ÎÒ¸öÈËÈÏΪ¿ÉÒÔÕâÑù½âÊÍ£º
side effect
ÊÇÖ¸£º·ÃÎÊI/O¼Ä´æÆ÷ʱ£¬²»½ö½ö»áÏñ·ÃÎÊÆÕͨÄ
Ïà¹ØÎĵµ£º
1. HCI²ãÐÒé¸ÅÊö£º
HCIÌṩһÌ×ͳһµÄ·½·¨À´·ÃÎÊBluetoothµ×²ã¡£ÈçͼËùʾ£º
´ÓͼÉÏ¿ÉÒÔ¿´³ö£¬Host Controller Interface(HCI) ¾ÍÊÇÓÃÀ´¹µÍ¨HostºÍModule¡£Hostͨ³£¾ÍÊÇPC£¬ ModuleÔòÊÇÒÔ¸÷ÖÖÎïÀíÁ¬½ÓÐÎʽ£¨USB,serial,pc-cardµÈ£©Á¬½Óµ½PCÉϵÄbluetooth Dongle¡£
ÔÚHostÕâÒ»¶Ë£ºapplication,SDP,L2capµÈÐÒé ......
Service Discovery Protocol(SDP)ÌṩһÖÖÄÜÁ¦£¬ÈÃÓ¦ÓóÌÐòÓз½·¨·¢ÏÖÄÄÖÖ·þÎñ¿ÉÓÃÒÔ¼°ÕâÖÖ·þÎñµÄÌØÐÔ¡£
·þÎñ·¢ÏÖÐÒé(SDP»òBluetooth SDP)ÔÚÀ¶ÑÀÐÒéÕ»ÖжÔÀ¶ÑÀ»·¾³ÖеÄÓ¦ÓóÌÐòÓÐÌØÊâµÄº¬Ò⣬·¢ÏÖÄĸö·þÎñÊÇ¿ÉÓõĺÍÈ·¶¨ÕâЩ¿ÉÓ÷þÎñµÄÌØÕ÷¡£SDP¶¨ÒåÁËbluetooth client·¢ÏÖ¿ÉÓÃbluetooth server·þÎñºÍËüÃǵÄÌØÕ÷µÄ·½·¨¡£ ......
linuxϹ¹½¨½¨ÉèÍêÃÀFTP·þÎñÆ÷£¬¿É¹ÜÀí£¬WEB¹ÜÀí£¬¹ÜÀí½çÃæ¡£
Ò»¡¢°²×°Ubuntu5 Desktop°æ
°²×°¹ý³Ì²»ÄÑ£¬ÒÀÕÕhttp://wiki.ubuntu.org.cn¿ìËÙÉèÖü´¿É,×¢ÒâÏÂÃæÁ½µã£º
1¡¢ÍøÍ¨Óû§ÇëÑ¡ÔñÉϺ£½»´óµÄÔ´£¬±È½Ï¿ì¡£
2¡¢ms·ÖÇøÏµÄÖÐÎÄĿ¼ÃûÏÔʾΪ£¿£¿£¿
Õâʱ£¬ÄãÒª±à¼/etc/fstab¡£±ÈÈçÎҵıʼDZ¾ÖеÄfstabÎļþ¸ÄºóÊÇ£º
# ......
ΪÁË·½±ã²é¿´LinuxϵͳϵĴíÎóÂëÒÔ¼°ËüµÄº¬Ò壬дÁËÒ»¸ö³ÌÐòÀ´´òÓ¡ÕâЩÐÅÏ¢¡£
listerrno.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define MAX_ERRNO 256
int main(int argc, char* argv[])
{
int n = 0;
printf("----------------------- Errno ------------ ......
Ò»¡¢LINUXµÄ½ø³Ì״̬ ½©ËÀ̬£ºµ±¸¸½ø³Ì»¹Ã»ÓнáÊøÇ°£¬×Ó½ø³Ì¾ÍÒѾÏȽáÊøÁË£¬Õâʱ×Ó½ø³ÌµÄ×ÊԴûÓÐÈËÀ´»ØÊÕ¡£Í¨³£¸¸½ø³ÌÐèÒªÓÃwaitÀ´µÈ´ý×Ó½ø³ÌµÄ½áÊø¡£
½ø³ÌµÄģʽ£ºÓû§Ä£Ê½(Ö´ÐÐÓû§³ÌÐò)£¬ÄÚºËģʽ(Ö´ÐвÙ×÷ϵͳ´úÂë)
½ø³ÌµÄÀàÐÍ£ºÏµÍ³½ø³Ì£¬Óû§½ø³Ì ¶þ¡¢½ø³Ì¹ÜÀí ¢Ùforkº¯Êý
¹¦ÄÜ£º´´½¨Ò»¸öÈ«Ð嵀 ......