±êÌ⣺Linux½ø³ÌͨÐÅ-ʹÓÃÐźÅÁ¿
Ò»¡¢Ïà¹ØÖªÊ¶
ÐźÅÁ¿£ºÒ»¸öÕûÊý£»
´óÓÚ»òµÈÓÚ0ʱ´ú±í¿É¹©²¢·¢½ø³ÌʹÓõÄ×ÊԴʵÌåÊý£»
СÓÚ0ʱ´ú±íÕýÔڵȴýʹÓÃÁÙ½çÇøµÄ½ø³ÌÊý£»
ÓÃÓÚ»¥³âµÄÐźÅÁ¿³õʼֵӦ´óÓÚ0£»
Ö»ÄÜͨ¹ýP¡¢VÔÓï²Ù×÷¶ø¸Ä±ä£»
ÐźÅÁ¿ÔªËØ×é³É£º
1¡¢±íʾÐźÅÁ¿ÔªËصÄÖµ£»
2¡¢×îºó²Ù×÷ÐźÅÁ¿ÔªËصĽø³ÌID
3¡¢µÈ´ýÐźÅÁ¿ÔªËØÖµ+1µÄ½ø³ÌÊý£»
4¡¢µÈ´ýÐźÅÁ¿ÔªËØÖµÎª0µÄ½ø³ÌÊý£»
¶þ¡¢Ö÷Òªº¯Êý
1.1 ´´½¨ÐźÅÁ¿
int semget(
key_t key, //±êʶÐźÅÁ¿µÄ¹Ø¼ü×Ö£¬ÓÐÈýÖÖ·½·¨£º1¡¢Ê¹ÓÃIPC——PRIVATEÈÃϵͳ²úÉú£¬
// 2¡¢Ìôѡһ¸öËæ»úÊý£¬3¡¢Ê¹ÓÃftok´ÓÎļþ·¾¶ÃûÖвúÉú
int nSemes, //ÐźÅÁ¿¼¯ÖÐÔªËØ¸öÊý
int flag //IPC_CREAT£»IPC_EXCL Ö»ÓÐÔÚÐźÅÁ¿¼¯²»´æÔÚʱ´´½¨
)
³É¹¦£º·µ»ØÐźÅÁ¿¾ä±ú
ʧ°Ü£º·µ»Ø-1
1.2 ʹÓÃftokº¯Êý¸ù¾ÝÎļþ·¾¶Ãû²úÉúÒ»¸ö¹Ø¼ü×Ö
key_t ftok(const char *pathname,int proj_id);
·¾¶Ãû³Æ±ØÐëÓÐÏàӦȨÏÞ
......
http://linux.chinaunix.net/bbs/archiver/tid-985372.html
Linux Kernel: ¼ò½éHZ, tick and jiffie
Linux[/b]ºËÐÄ幾個ÖØÒª¸ú時間ÓÐ關µÄÃû詞»ò變數£¬µ×ÏÂ將½é紹HZ[/b]¡¢tick與jiffies¡£
HZ[/b]
Linux[/b]ºËÐÄÿ¸ô¹Ì¶¨週ÆÚ會發³ötimer interrupt (IRQ 0)£¬HZ[/b]ÊÇÓÃ來¶¨義ÿһÃëÓÐ幾´Îtimer
interrupts¡£舉Àý來說£¬HZ[/b]為1000£¬´ú±íÿÃëÓÐ1000´Îtimer
interrupts¡£HZ[/b]¿ÉÔÚ編譯ºËÐÄ時設¶¨£¬ÈçÏÂËùʾ (ÒÔºËÐİ汾2.6.20-15為Àý)£º
adrian@adrian-desktop:~$ cd /usr/src/linux[/b]
adrian@adrian-desktop:/usr/src/linux[/b]$ make menuconfig
Processor type and features ---> Timer frequency (250 HZ[/b]) --->
ÆäÖÐHZ[/b]¿É設¶¨100¡¢250¡¢300»ò1000¡£ÒÔСµÜµÄºËÐİ汾預設Öµ為250¡£
С實驗
觀²ì/proc/interruptµÄtimerÖÐ斷´Î數£¬並 ......
ÎÒÃǽâÊÍFilesystem Hierarchy Standard(FHS)Ëù¶¨ÒåµÄ×éÖ¯½á¹¹¡£ Êý¾ÝÀàÐÍ ÎļþϵͳÊÇÓÃÀ´±£´æÊý¾ÝµÄ£¬²»Í¬ÀàÐ͵ÄÊý¾ÝÓ¦¸Ã·ÅÔÚÎļþϵͳÉϵIJ»Í¬Î»Öá£Òò´Ë£¬µÚÒ»²½±ØÐëÏÈÀíÇåÈçºÎ·ÖÀàÊý¾Ý¡£FHS½«Êý¾ÝµÄÊôÐÔ·ÖΪÁ½À࣬¸÷ÀàÊôÐÔ¸÷ÓÐÁ½ÖÖ½ØÈ»Ïà·´µÄÐÔÖÊ¡£ ¹²ÏíÐÔ£¨Êý¾ÝÓÃÓÚÍøÂç»·¾³ÖеÄÓ¦Ó÷¶Î§£© 1.¹²Ïí£º¿É¹©ÍøÂçÉϵĶà¸öÖ÷»úϵͳͬʱ·ÃÎʵÄÊý¾Ý¡£Í¨³£ÊÇÎÞ¹ØÌض¨Ö÷»úµÄÒ»°ãÐÔÐÅÏ¢£¬ÖîÈçÓû§µÄÊý¾ÝÎļþ¡¢¿ÉÖ´ÐеijÌÐòÎļþÒÔ¼°Í¨ÓõÄÅäÖÃÎļþ¡£ 2.רÓ㺽ö¹©Ìض¨Ö÷»úʹÓõÄÊý¾Ý¡£Í¨³£ÊǶÔÌØ¶¨Ö÷»ú²ÅÓÐÒâÒåµÄÐÅÏ¢£¬ÏñÊÇpasswdÎļþ¡¢ÍøÂçÅäÖÃÎļþ¡¢ÏµÍ³ÈÕÖ¾Îļþ¡£ ±ä¶¯ÐÔ£¨Êý¾Ý±ä¶¯µÄƵ·±³Ì¶È£© 1.³£±ä£º»áÒòϵͳÔË×÷»òÈÏΪ²Ù×÷¶ø¾³£±ä»¯µÄÊý¾Ý¡£ÀýÈçÓû§µÄÓʼþÎļþ¡¢ÏµÍ³ÈÕÖ¾Îļþ¡£ 2.¾²Ì¬£º³ý·ÇÈËΪµÄ¿ÌÒâ²Ù×÷£¬·ñÔò£¬Æ½³£²»»áÓб仯µÄÊý¾Ý¡£ÀýÈ磬Òѱ»±àÒë³Ébinary¸ñʽµÄ³ÌÐò¡£ÕâÀàÎļþÖ»ÓÐÔÚϵͳ¹ÜÀíÕß½øÐа汾Éý¼¶Ê±£¬²ÅÓпÉÄܱ»Ð޸ġ£ FHSµÄÊý¾Ý·ÖÀàÔÔò ¹²Ïí רÓà ¾²Ì¬ /usr
/usr/local /etc
/boot ¶¯Ì¬ /var/mail
/home /var/l ......
ÔÚx86ƽ̨ÉÏ£¬linuxÄÚºËÓÃÁËÒ»¸ö±È½Ï¸´Ôӵįô¶¯ÐÒ鹿·¶£¬Ö÷ÒªÓÉÓÚÀúÊ·ÔÒò£¬ÔçÆÚÏë°ÑÄÚºË×ö³É¿ÉÆô¶¯Ó³Ïñ£¬¸´ÔӵļÆËã»úÄÚ´æÄ£ÐͺÍÓÉÓÚʵģʽDOS³ÉΪÖ÷Á÷²Ù×÷ϵͳ¶øÓ°ÏìµÄ.
ÏÖÔÚÓÐÏÂÁÐÆô¶¯ÐÒé´æÔÚ£º
¾É°æÄںˣºÖ»Ö§³ÖzImageºÍImage.
2.00£ºÔö¼ÓbzImageºÍinitrdÖ§³Ö£¬Ò²ÓµÓÐÁËÒ»ÖÖÕý¹æ»¯µÄ·½·¨À´ÊµÏÖÆô¶¯×°ÔØÆ÷£¨* boot
loader£©ºÍÄں˼äµÄͨÐÅ¡£setup.S½¨ÔìÁËÒ»¿é¿ÉÒÆ¶¯£¬µ«ÊÇÈԾɿÉдµÄ´«Í³µÄ°²×°³ÌÐò¼ÓÔØÇøÓò¡£
2.01£ºÔö¼ÓÁËһЩÒç³ö¾¯¸æ
2.02£ºÕâÊÇеÄÃüÁîÐÐÐÒé¡£Ëü½µµÍÁ˳£¹æµÄÄÚ´æÊ¹ÓÃÉÏÏÞ£¨* ¼ûÒÔÏÂMEMORY
LAYOUTÄÚ´æ²¼¾Ö½éÉÜ£©¡£Ã»Óи²¸Ç´«Í³µÄ°²×°³ÌÐòÇøÓò£¬Òò´Ë¶ÔÓÚÄÇЩʹÓÃÁËÀ´×ÔSMM»òÕß32λBIOSÈë¿ÚµØÖ·µÄEBDA£¨* Extended BIOS
Data Area£¬ÍØÕ¹BIOSÊý¾ÝÓò£©µÄϵͳ£¬ÕâÑù×ö¿ÉÒÔʹµÃÆô¶¯¸ü¼Ó°²È«¡£
2.03£ºÃ÷È·Á˸߶˵ÄinitrdµØÖ·¿É±» bootloader ʹÓÃ.
2.04£ºÀ©Õ¹syssize
Óòµ½Ëĸö×Ö½Ú
2.05£ºÊ¹µÃ±£»¤Ä£Ê½Ï嵀 Äں˿ɱ»Öض¨Î»£¬Ôö¼Ó relocatable_kernel
ºÍkernel_alignment
Óò.
2.06£ºÔö¼ÓÒ»¸öÓò´æ·Å boot command line µÄ´óС.
2.07£ºÔö¼Ó°ëÐéÄ⻯Æô¶¯ÐÒ飬ÔÚload_flags
ÖÐ Ôö¼Ó hardware_subarch
ºÍ hardware_subarc ......
ÔÚlinuxÄں˵ÄÔ´´úÂëÖУ¬ÒÔ»ã±àÓïÑÔ±àдµÄ³ÌÐò»ò³ÌÐò¶Î£¬ÓÐÁ½ÖÖ²»Í¬µÄÐÎʽ¡£
µÚÒ»ÖÖÊÂÍêÈ«µÄ»ã±à´úÂ룬ÕâÑùµÄ´úÂë²ÉÓÃ.s×÷ΪÎļþµÄºó׺¡£ÊÂʵÉÏ£¬¾¡¹ÜÊÇÍêÈ«µÄ»ã±à´úÂ룬ÏÖ´úµÄ»ã±à¹¤¾ßÒ²ÎüÊÕÁËCÓïÑԵij¤´¦£¬Ò²ÔÚ»ã±à֮ǰ¼ÓÉÏÁËÒ»ÌËÔ¤´¦Àí£¬¶øÔ¤´¦Àí֮ǰµÄÎļþÔòÒÔ.sΪºó׺¡£´ËÀࣨ.s£©ÎļþÒ²ºÍC³ÌÐòÒ»Ñù£¬¿ÉÒÔʹÓÃ#include¡¢#ifdefµÈµÈ³É·Ö£¬¶øÊý¾Ý½á¹¹Ò²Ò»Ñù¿ÉÒÔÔÚ.hµÄÎļþÖмÓÒÔ¶¨Òå¡£
µÚ¶þÖÖÊÇǶÔÚC³ÌÐòÖеĻã±àÓïÑÔÆ¬¶Ï¡£ËäÈ»ÔÚANSIµÄCÓïÑÔ±ê×¼Öв¢Ã»ÓйØÓÚ»ã±àƬ¶ÎµÄ¹æ¶¨£¬ÊÂʵÉϸ÷ÖÖʵ¼ÊʹÓõÄC±àÒëÖж¼×÷ÁËÕâ·½ÃæµÄÀ©³ä£¬¶ø
GNUµÄC±àÒëgccÒ²ÔÚÕâ·½Ãæ×÷Á˺ÜÇ¿µÄÀ©³ä¡£
ÔÚDOS/windowsÁìÓòÖУ¬386»ã±àÓïÑÔ¶¼²ÉÓÃIntel¶¨ÒåµÄÓï¾ä¸ñʽ¡£¿ÉÊÇ£¬ÔÚUnixÁìÓòÖУ¬²ÉÓõÄÈ´ÊÇÓÉAT&T¶¨ÒåµÄ¸ñʽ¡£
AT&TµÄ»ã±àÓëIntelµÄ»ã±àÖ÷ÒªÓÐÒÔϵÄÇø±ð£º
ÔÚIntel¸ñʽÖдó¶àʹÓôóд×Öĸ£¬¶øÔÚAT&T¸ñʽÖж¼Ê¹ÓÃСд×Öĸ¡£
ÔÚAT&T¸ñʽÖУ¬¼Ä´æÆ÷ÃûÒª¼ÓÉÏ“%”×÷Ϊǰ׺
£¬¶øÔÚIntel¸ñʽÖв»´øÇ°×º¡£
ÔÚAT&TµÄ386»ã±àÓïÑÔÖУ¬Ö¸ÁîµÄÔ´²Ù×÷ÊýµÄ˳ÐòÓëÔÚIntelµÄ386»ã±àÓïÑÔÖÐÕýºÃÏà·´¡£
ÔÚAT&T¸ñʽÖУ¬·ÃÎÊÖ¸ÁîµÄ²Ù×÷ÊýµÄ¿í¶ÈÓвÙ×÷ÂëÃû³ÆµÄ×îºóÒ»¸ ......
ÊØ»¤½ø³ÌÒ²³ÆÎª¾«Áé½ø³Ì£¬ÊÇÒ»ÖÖÔËÐÐÔÚºǫ́µÄÌØÊâ½ø³Ì£¬Ëü²»´æÔÚ¿ØÖÆÖÕ¶Ë£¬²¢ÖÜÆÚÐÔµØÖ´ÐÐijÏîÈÎÎñ»òµÈ´ý´¦ÀíijÏîÈÎÎñ¡£
ÊØ»¤½ø³ÌÌØµã£º
l ËùÓеÄÊØ»¤½ø³Ì¶¼ÊÇÒÔ³¬¼¶Óû§Æô¶¯µÄ(UIDΪ0)£»
l ûÓпØÖÆÖÕ¶Ë(TTYΪ£¿)£»
l Öն˽ø³Ì×éIDΪ-1(TPGID±íʾÖն˽ø³Ì×éID£¬¸ÃÖµ±íʾÓë¿ØÖÆÖÕ¶ËÏà¹ØµÄǰ̨½ø³Ì×飬Èç¹ûδºÍÈκÎÖÕ¶ËÏà¹Ø£¬ÆäֵΪ-1£»
l ËùÓеÄÊØ»¤½ø³ÌµÄ¸¸½ø³Ì¶¼Îªinit½ø³Ì(PIDΪ1µÄ½ø³Ì)¡£
LinuxÖÐʵÏÖÊØ»¤½ø³Ì£º
1. ÈÃinit½ø³Ì³ÉΪвúÉú½ø³ÌµÄ¸¸½ø³Ì£»
µ÷ÓÃforkº¯Êý´´½¨×Ó½ø³Ìºó£¬Ê¹¸¸½ø³ÌÁ¢¼´Í˳ö¡£´Ó¶øÊ¹²úÉúµÄ×Ó½ø³Ì½«±ä³É¹Â¶ù½ø³Ì£¬²¢±»init½ø³Ì½Ó¹Ü£¬Í¬Ê±£¬Ëù²úÉúµÄнø³Ì½«±äΪÔÚºǫ́ÔËÐУ»
2. µ÷ÓÃsetsidº¯Êý
ͨ¹ýµ÷ÓÃsetsidº¯Êý£¬Ê¹µÃд´½¨µÄ½ø³ÌÍÑÀë¿ØÖÆÖÕ¶Ë£¬Í¬Ê±´´½¨ÐµĽø³Ì×飬²¢³ÉΪ¸Ã½ø³Ì×éµÄÊ×½ø³Ì¡£
ÔÚLinuxÖУ¬ËùÓеĽø³Ì¶¼ÊôÓÚ¸÷×ԵĽø³Ì×é¡£½ø³Ì×éÊÇÒ»¸ö»ò¶à¸ö½ø³ÌµÄ¼¯ºÏ¡£½ø³Ì×éIDÊÇÓÉÁìÍ·½ø³ÌµÄ½ø³ÌºÅ¾ö¶¨µÄ£¬Ã¿¸ö½ø³Ì×é¶¼´æÔÚÒ»¸öÁìÍ·½ø³Ì¡£½ø³Ì×éµÄ´æÔÚÓë·ñÓëÁìÍ·½ø³ÌÊÇ·ñ´æÔÚûÓйØÏµ¡£
»á»°Ê ......