linuxÉ豸Çý¶¯³ÌÐò——¿éÉ豸Çý¶¯³ÌÐò
¿éÉ豸ÊÇÖ¸Êý¾Ý´«ÊäÒÔ¿éΪµ¥Î»µÄÉ豸£¬ÕâÀïÓ²¼þµÄ¿éÒ»°ã³ÆÎª“ÉÈÇø(sector)”£¬¿éÉ豸Çý¶¯³ÌÐòÌṩÁËÃæÏòÊý¾Ý¿éµÄÉ豸µÄ·ÃÎÊ£¬Ö§³ÖËæ»ú·ÃÎʵķ½Ê½£¬µ«²»¿ÉÓÉÓû§Ö±½Ó·ÃÎÊ¡£¹ØÓÚÉ豸½Úµã¡¢½ÚµãÎļþºÍÉ豸ÎļþÆäʵ¶¼Ö¸µÄÊÇÒ»¸ö¶«Î÷¡£
block_device_operations½á¹¹Ìå
ÔÚ¿éÉ豸Çý¶¯ÖУ¬ÓÐ1¸öÀàËÆÓÚ×Ö·ûÉ豸Çý¶¯ÖÐfile_operations½á¹¹ÌåµÄblock_device_operations½á¹¹Ì壬ËüÊǶԿéÉ豸²Ù×÷µÄ¼¯ºÏ¡£
struct block_device_operations
{
int(*open)(struct inode *, struct file*); //´ò¿ª
int(*release)(struct inode *, struct file*); //ÊÍ·Å
int(*ioctl)(struct inode *, struct file *, unsigned, unsigned long); //ioctl
int(*media_changed)(struct gendisk*); //½éÖʱ»¸Ä±ä£¿
int(*revalidate_disk)(struct gendisk*); //ʹ½éÖÊÓÐЧ
int(*getgeo)(struct block_device *, struct hd_geometry*);//Ìî³äÇý¶¯Æ÷ÐÅÏ¢
struct module *owner; //Ä£¿éÓµÓÐÕß
};
´ò¿ªºÍÊÍ·Å
int (*open)(struct inode *inode, struct file *filp);
int (*release)(struct inode *inode,struct file *filp);
Óë×Ö·ûÉ豸Çý¶¯ÀàËÆ£¬µ±É豸±»´ò¿ªºÍ¹Ø±Õʱ½«µ÷ÓÃËüÃÇ¡£
IO¿ØÖÆ
int (*ioctl)(struct inode *inode, struct file *filp, unsigned int cmd,unsigned long arg);
ÉÏÊöº¯ÊýÊÇioctl()ϵͳµ÷ÓõÄʵÏÖ£¬¿éÉ豸°üº¬´óÁ¿µÄ±ê×¼ÇëÇó£¬ÕâЩ±ê×¼ÇëÇóÓÉLinux¿éÉ豸²ã´¦Àí£¬Òò´Ë´ó²¿·Ö¿éÉ豸Çý¶¯µÄioctl()º¯ÊýÏ൱¶Ì¡£
gendisk½á¹¹Ìå
ÔÚLinuxÄÚºËÖУ¬Ê¹ÓÃgendisk£¨Í¨ÓôÅÅÌ£©½á¹¹ÌåÀ´±íʾ1¸ö¶ÀÁ¢µÄ´ÅÅÌÉ豸£¨»ò·ÖÇø£©
struct gendisk
{
int major; /* Ö÷É豸ºÅ*/
int first_minor; /*µÚ1¸ö´ÎÉ豸ºÅ*/
int minors; /* ×î´óµÄ´ÎÉ豸Êý£¬Èç¹û²»ÄÜ·ÖÇø£¬ÔòΪ1*/
char disk_name[32]; /* É豸Ãû³Æ*/
struct hd_struct **part; /* ´ÅÅÌÉϵķÖÇøÐÅÏ¢*/
struct block_device_operations *fops; /*¿éÉ豸²Ù×÷½á¹¹Ìå*/
struct request_queue *queue; /*ÇëÇó¶ÓÁÐ*/
void *private_data; /*˽ÓÐÊý¾Ý*/
sector_t capacity; /*ÉÈÇøÊý£¬512×Ö½ÚΪ1¸öÉÈÇø*/
…
}
Ôö¼Ógendisk
gendisk½á¹¹Ìå±»·ÖÅäÖ®ºó£¬ÏµÍ³»¹²»ÄÜʹÓÃÕâ´ÅÅÌ£¬ÐèÒªµ÷ÓÃÈçϺ¯ÊýÀ´×¢²áÕâ¸ö´ÅÅÌÉ豸¡£
void add_disk(struct gendisk *gd);
ÌØ±ðҪעÒâµÄÊǶÔadd_disk()µÄµ÷ÓñØÐë·¢ÉúÔÚÇý¶¯³ÌÐòµÄ³õʼ»¯¹¤×÷Íê³É²¢ÄÜÏìÓ¦´ÅÅ̵ÄÇëÇóÖ®ºó¡£
ÊÍ·Ågendisk
µ±²»ÔÙÐèÒªÒ»¸ö´ÅÅ
Ïà¹ØÎĵµ£º
À´Ô´£ºhttp://www.armjishu.com/index.php
´ó²¿·ÖÈ˶¼²»Ì«ÇåÎúµÄÒÉ»ó-----LinuxÖеĵØÖ·¿Õ¼ä
ÓÐÕâôһϵÁеÄÎÊÌ⣬ÊÇ·ñÔÚÀ§ÈÅ×ÅÄ㣺Óû§³ÌÐò±àÒëÁ¬½ÓÐγɵĵØÖ·¿Õ¼äÔÚʲô·¶Î§ÄÚ£¿Äں˱àÒëºóµØÖ·¿Õ¼äÔÚʲô·¶Î§ÄÚ£¿Òª¶ÔÍâÉè½øÐзÃÎÊ£¬I/OµÄµØÖ·¿Õ¼äÓÖÊÇʲôÑùµÄ£¿
ÏȻشðµÚÒ»¸öÎÊÌâ¡£Linux×î³£¼ûµÄ¿ÉÖ´ÐÐÎļþ¸ñʽΪelf(E ......
Linux ¶àÏß³ÌͨÐÅ
Linux ¶àÏß³ÌͨÐÅ
Õª×Ô×ÊÁÏ£¨linux ÓëWindows²»Í¬£©
Ï̼߳äÎÞÐèÌØ±ðµÄÊֶνøÐÐͨÐÅ£¬ÒòΪÏ̼߳ä¿ÉÒÔ¹²ÏíÊý¾Ý½á¹¹£¬Ò²¾ÍÊÇÒ»¸öÈ«¾Ö±äÁ¿¿ÉÒÔ±»Á½¸öÏß³ÌͬʱʹÓᣲ»¹ýҪעÒâµÄÊÇÏ̼߳äÐèÒª×öºÃͬ²½£¬Ò»°ãÓÃmutex¡£¿ÉÒԲο¼Ò»Ð©±È½ÏеÄUNIX/Linux±à³ÌµÄÊ飬¶¼»áÌáµ½PosixÏ̱߳à³Ì£¬±ÈÈç¡¶U ......
#wget http://ftp.isc.org/isc/bind9/9.6.1-P1/bind-9.6.1-P1.tar.gz
#tar zxvf bind-9.6.1-P1.tar.gz
#cd bind-9.6.1-P1
#./configure --prefix=/usr/local/named --enable-threads --disable-openssl-version-check --disable-ipv6
#make && make install
#cd /usr/local/named
#sbin/rndc-confgen > e ......
Ò»¡¢BootLoaderµÄ¸ÅÄî
BootLoaderÊÇϵͳ¼ÓµçÆôÔËÐеĵÚÒ»¶ÎÈí¼þ´úÂ룮»ØÒäÒ»ÏÂPCµÄÌåϵ½á¹¹ÎÒÃÇ¿ÉÒÔÖªµÀ£¬PC»úÖеÄÒýµ¼¼ÓÔØ³ÌÐòÓÉBIOS£¨Æä±¾ÖʾÍÊÇÒ»¶Î¹Ì¼þ³ÌÐò£©ºÍλÓÚÓ²ÅÌMBRÖеÄÒýµ¼³ÌÐòÒ»Æð×é³É¡£BIOSÔÚÍê³ÉÓ²¼þ¼ì²âºÍ×ÊÔ´·ÖÅäºó£¬½«Ó²ÅÌMBRÖеÄÒýµ¼³ÌÐò¶Áµ½ÏµÍ³µÄRAMÖУ¬È»ºó½«¿ØÖÆÈ¨½»¸øÒýµ¼³ÌÐò¡£Òý ......