ABI (Application Binary Interface)

¡iĶ¦W¡jÀ³¥Îµ{¦¡¤G¶i¦ì¤¶­±

¡i»¡©ú¡jÀ³¥Îµ{¦¡¤G¶i¦ì¤¶­±¬° SVR4 ©Ò´£¨Ñªº¤@²Õ¤¶­±¡A¥¦¬O¥Î¨Ó«P¨Ï¦b¬Û¦P·L³B²z¾÷¤U©Òµo®i¥X¨ÓªºÀ³¥Îµ{¦¡¯à°÷¦b¤G¶i¦ì½X¤W¬Û®e¡C´«¥y¸Ü»¡¡A¦b 80486 ·L³B²z¾÷ªº DOS §@·~¨t²Î¤U©Òµo®i¥Xªºµ{¦¡¡A¥i¥H©M¦b¬Û¦PµwÅéÀô¹Ò¤Uªº UNIX °õ¦æ¡C

¡i°Ñ¦Ò¡jWABI¡C

absolute path

¡iĶ¦W¡jµ´¹ï¸ô®|

¡i»¡©ú¡jUNIX¨t²ÎªºÀɮ׬O¥Ñ¶¥¼hª¬ªº¾ðª¬µ²ºc©Òºc¦¨ªº¡A©Ò¥H¥Ñ¸ê®Æµ²ºcªº¨¤«×¨Ó¬Ý¡A¥Ø¿ý¬°¤@«D²×ºÝ¸`ÂI¡]nonterminal node¡^¡A¦ÓÀɮ׫h¬O¤@­Ó²×ºÝ¸`ÂI©ÎºÙ¬°¸­¡]leaf¡^¡C¦]¦¹¥Ø¿ýªº¥»¨­¥ç¬°¤@ºØ¡u¯S§O¡vªºÀɮסA¨äÀx¦sªº¤º®e¬°¥¦¤§¤UªºÀɮסþ¥Ø¿ýªº¬ÛÃö¸ê°T¡C±q¨Ï¥ÎªÌÆ[ÂI¦Ó¨¥¡A§Ú­Ì¥i¥H³z¹L¨âºØ¤è¦¡¨Ó´M§ä©Ò»ÝªºÀɮסC²Ä¤@ºØ¬O¡uµ´¹ï¸ô®|¡vªº¤è¦¡¡A²Ä¤GºØ¬O¡u¬Û¹ï¸ô®|¡vªº¤è¦¡ ¡C©Ò¿×¡uµ´¹ï¸ô®|¡v¬O±qÀɮרt²Îªº®Ú¥Ø¿ý¡]root directory¡^¶}©l¡A¼g¥X¨ì¹F¸Ó¥ØªºÀɮתº§¹¥þ¸ô®|¦WºÙ¡A²Ä¤@­Ó¦r¤@©w¬°   "/"  ¡Aªí¥Ü®Ú¥Ø¿ý¡C

¡i½d¨Ò¡j$cd/user/local/trevor

¡i°Ñ¦Ò¡jroot directory, relative path¡C

access mode

¡iĶ¦W¡j¦s¨ú¼Ò¦¡

¡i»¡©ú¡j¸Ô¨£ access permission ¤@Ãã¡C

access permision

¡iĶ¦W¡j¦s¨úÅv­­

¡i»¡©ú¡j¦b UNIX ¨t²Î¤¤¡]S5 Àɮרt²Î¡^¡A¨C­ÓÀɮצ³¤@­Ó¦û 16 ¦ì¤¸ªºÄæ¦ì¨Óªí¥Ü¸ÓÀɮתº¦s¨úÅv­­»PÄÝ©Ê¡A¨ä¤¤¦ì¤¸ 0-8 ¬Oªí¥ÜÃö©óÀɮתº¦s¨úÅv­­¡A¤À§O¥Nªíªº·N¸q¦p¤U¡G

¦ì¤¸

876

543

210

rwx

¡ô

owner

rwx

¡ô

group

rwx

¡ô

other group

¦@¦³¤T­Ó¤K¶i¦ì¨Ó¥NªíÀÉ®×¾Ö¦³ªÌ¡]owner¡^¡B¦P¤@¹ÎÅé¡]group¡^¡B¨ä¥¦¹ÎÅé¡]other group¡^¤TÃþ¡C¨C¤@Ãþ¤À§O¦³Åª (r)¡B¼g (w) »P°õ¦æ (x) ¤TºØ¨Ï¥ÎÅv§Q¡CUNIX§Q¥Î³o¤E­Ó¦ì¤¸¨M©wÀɮ׳Q¨C­Ó¤H¨Ï¥ÎªºÅv§Q¡A¥HºÞ¨î«Dªk¨Ï¥Î¥L¤HªºÀɮסA¦Ó¦¹¦s¨úÅv­­¬O¥H chmod «ü¥O¨Ó³]©w¡C

¡i½d¨Ò¡j¬d¬Ý¦s¨úÅv­­

$ ls -l

total 26

drwxrwxrwx 2 root root 120 July 8 18:00 KEVIN

-rwxrwxr-- 1 root root 68 July 8 18:00 temp.c

¡ô

¦s¨úÅv­­

advertise

¡iĶ¦W¡jµL

¡i»¡©ú¡j¦b¤@­Ó¡u»·ºÝÀɮצ@¨É¡v¡]Remote File Sharing¡^ ªºÀô¹Ò¤§¤U¡A¤¹³\±N·í¦a¥D¾÷¡]host¡^ªº²{¦³¥i¥Î¸ê·½²¾Â൹¨ä¥¦¥D¾÷¨Ï¥Îªº¤@ºØ¤èªk¡C

¡i°Ñ¦Ò¡jremote file sharing¡C

advisory cooperative

¡iĶ¦W¡jµL

¡i»¡©ú¡j³o¬O UNIX ©Ò´£¨Ñ¥|ºØ°O¿ýÂê©w¥\¯à¤§¤@¡C·í¨Ï¥ÎªÌ¦s¨ú¤w³QÂê©wªº¸ê®Æ®É¡M¨t²Î¶È¶È´£¥Xĵ§i¡M¨Ã¤£¸T¤î¨Ï¥ÎªÌ¥h¦s¨ú³QÂê©wªº¸ê®Æ¡C³oºØÂê©w¤è¦¡¶È¾A¦X¼Æ­Ó³B²zµ{§Ç¦b¨ó¦P§@·~¡]Cooperative operation¡^®É±Ä¥Î¡C

¡i°Ñ¦Ò¡jCooperative process¡C

Advisory locking

¡iĶ¦W¡jÄU¿ÏÂê¡B«ØijÂê

¡i»¡©ú¡j´NÂê©wªºªº¤è¦¡¨Ó»¡¡A¥i¥H¤À¬°Åª¨úÂê©w¡]read locking¡A¥çºÙ¬°¤À¨ÉÂê©w¡Ashare locking¡^¥H¤Î¼g¤J¡]write locking¡A¤]ºÙ§@±Æ¥~Âê©w¡Aexclusive locking¡^¡C

·í¤@­ÓÀɮשΰO¿ý¥HŪ¨úÂê©wªº¤è¦¡Âê¦í®É¡A¨ä¥Lªº³B²zµ{§Ç¶È¯à¹ï³QÂê©wªºÀɮס]©Î°O¿ý¡^¶i¦æŪ¨ú§@·~¡F¦b¸ÓÂê©w¥¼³Q¸Ñ°£«e¡A©Ò¦³ªº§ó·s¤Î·s¼W§@·~³£±N³Q©Úµ´¡C

·í¤@­ÓÀɮשΰO¿ý¥H¼g¤JÂê©wªº¤è¦¡¤WÂê®É¡A©Ò¦³ªº³B²zµ{§Ç³£¤£¤¹³\¹ï¸ÓÀÉ¡]©Î°O¿ý¡^±q¨Æ¥ô¦ó§Î¦¡ªºÅª¼g§@·~¡Aª½¨ìÂê©w³Q¸Ñ°£¡C

­Y¬O¥HÂê©wªººØÃþ¨Ó¬Ý¡A¤S¥i¤À¬°±j¨îÂê¡]mandatory locking¡^»PÄU¿ÏÂê¡]advisory locking¡^¡C±j¨îÂê»P¿é¥X¿é¤J¦¸¨t²Îµ²¦X¡A·í¤@­ÓÀɮשΰO¿ý¥H±j¨îªº¤è¦¡¤WÂê®É¡A©Ò¦³¹H­IÂê©w¤è¦¡ªºÅª¼g§@·~³£·|³Q®Ö¤ß¥D°ÊÀÁ¸mª½¨ìÂê©w¸Ñ°£¡C¥Ñ©ó¤WÂê»P¸ÑÂꪺ°Ê§@³£¤£¶·¸g¥Ñ³B²zµ{§Ç¥s¥Î fcntl() ©Î lockf() ªºµ{§Ç¡A©Ò¥H¤SºÙ¬°·tÂê¡]implicit locking¡^¡C

ÄU¿ÏÂꥼ´¿»P¿é¥X¿é¤J¦¸¨t²Îµ²¦X¡A¦]¦¹¨t²Î¥²¶·¦Û¦æ³B²z¤WÂê»P¸ÑÂꪺ°Ê§@¡A¦Ó³o¨Ç¦æ¬°³£±o¸g¹L±`¦¡ fcntl() ©Î lockf()¡A¦]¦¹ºÙ¬°©úÂê¡]explicit locking¡^¡C

¥Ñ©ó UNIX ¬O¤@­Ó¦h¤H¦h¤uªº§@·~¨t²Î¡A¤@¤Áªº¸ê·½³£¬O¥Ñ²³¦h³B²zµ{§Ç©Ò¦@¨É¡A¦]¦¹±z­Y­n¿W¦û¬Y­Ó¸ê·½¤@¬q®É¶¡®É¡A±z¥²¶·¥ýÀò±o¨t²Îªº¦P·N¡A¨ú±o¨t²Î¦P·Nªºµ{§Ç«K¬O¥Ó½Ð¤@­ÓÂê©w¡]lock¡A³oùا@¦Wµü¸Ñ¡^¡A¦ÓÂê©w¦³¨âÃþ¡A¤@Ãþ¬O±z¥Ó½Ð¨ì«á¡A¥u¦³±z¥i¥HŪ¼g¸ÓÀÉ¡A³o´N¬O©Ò¿×ªº¼g¤JÂê©w¡C¥t¤@Ãþ¬O±z¥Ó½Ð¨ì«á¡A§Oªº³B²zµ{§Ç¶È¥iŪ¨ú¸ÓÀɦý¤£¥i¥H¼g¤J¡A³o«K¬OŪ¨úÂê©w¡C¥Ó½ÐÂê©wªº­n¨D¥¼¥²·|¦¨¥\¡A³o¬O¥Ñ©ó¸ÓÀɮתºÂê©w¤w³Q§Oªº³B²zµ{§Ç®³¨«¡A³o®É±z´N¥²¶·µ¥«Ý¡Aª½¨ì¯à°÷®³¨ìÂê©w¡C¨Ò¦p¹ïÀɮתº¼g¤JÂê©w¤@¦¸¥u¯àµ¹¤@­Ó³B²zµ{§Ç¡]Âê©wªº¥Øªº´N¬O¨¾¤î¦h­Ó³B²zµ{§Ç¦P®É¹ï¤@­ÓÀÉ®×¼g¤J¡^¡A¦ÓŪ¨úÂê©w´N¥i¥Hµ¹¦h­Ó³B²zµ{§Ç¡C¦Ü©ó±j¨îÂê¤ÎÄU¿ÏÂê«h¬O«ü¤WÂꪺ¤è¦¡¡A¬O³z¹L³B²zµ{§Ç¹ï¯S©w±`¦¡ªº¥s¥Î¨Ó¥[ÂêÁÙ¬O¥Ñ¨t²Î¥»¨­¹ï©Ò«ü©w¸ê·½§@±j¨î©Êªº¤WÂê¡F¤U¹Ï¬°¨âºØÂê©w«¬ºA¹ïÀɮס]©Î°O¿ý¡^Ū¨úº[¼g¤J§@·~ªººÞ¨î±¡§Î¡C

Âê©w¤è¦¡¡G

Ū¨úÂê©w

¼g¤JÂê©w

¥ØªºÀɮסþ°O¿ý¥¼³Q¥ô¦ó³B²zµ{§ÇÂê©w

¦¨¥\

¦¨¥\

¤w¦³³B²zµ{§Ç¨ú±o¥ØªºÀɮסþ°O¿ýªºÅª¨úÂê©w

¦¨¥\

©Úµ´

¦³³B²zµ{§Ç¨ú±o¥ØªºÀɮסþ°O¿ýªº¼g¤JÂê©w

©Úµ´

©Úµ´

ŪªÌ½Ðª`·N¡A­n¨ú±o¤@­ÓÀɮתºÅª¨úÂê©w«h³B²zµ{§Ç¥²¶·¦³¹ï¸ÓÀɪºÅª¨úÅv­­¡]read permission¡^¡F¦P²z¡A¥u¦³¦b³B²zµ{§Ç¹ïÀɮצ³¼g¤JÅv­­¡]write permission¡^®É¡A¥¦¤~¯àÀò¨ú¸ÓÀɪº¼g¤JÂê©w¡C

¦b SVR4 ¥H«e¡A©Ò¦³ªº UNIX ¨t²Î¥u¦³´£¨ÑÄU¿ÏÂê¡AÄUÁåÂꪺ°ÝÃD¬O¨S¦³±j¨î©Ê¡A³o¦n¹³¥j®Éªº©¾¦Ú¹ï§g¤ý¥u¯à­W¤f±C¤ßªº³WÄU¡A«oµL±j¨î§g¤ý¿í´`ªº¤O¶q¡C¤@¤Á¥HÄU¿Ï«¬ºA«Ø¥ßªºÂê©w¡A³£¥²¶·¸g¥Ñ fcntl() ©Î lockf() ±`¦¡¡A¬GºÙ©úÂê¦pªG§Ú­Ì¤µ¤Ñµo®i¤@­Ó¸ê®Æ®wºÞ²z¨t²Î¡]DBMS §Y Data Base Management System¡^¡A©Ò¦³¦s¨ú¸ê®Æ®wªºªº§@·~³£¥²¶·¸g¥Ñ¤@²Õ¯S©wªº¨ç¦¡¨Ó§¹¦¨¡A³o®É¸Ó²Õ¨ç¦¡´N¥i¥H¨Ï¥ÎÄU¿ÏÂê¡C½Ðª`·N¡A³oùتº¥ý¨M±ø¥ó¬O¡y©Ò¦³ªº¦s¨ú§@·~³£¥²¶·¸g¥Ñ¤@²Õ¯S©wªº¨ç¦¡¨Ó§¹¦¨¡z¡C¸U¤@¦³­Ó³B²zµ{§Ç¥¦¾Ö¦³¹ï¸ê®Æ®w¨t²Î¤¤¡C¦UÀɮתº¦s¨úÅv¡A¦Ó¥¦¤£¸g¥Ñ¤W­zªº¨º²Õ¨ç¦¡¨Ó¦s¨ú¸ê®Æ®w¨t²Î¡A¦¹®ÉÄU¿ÏÂê´NµL¯à¬°¤O¤F¡C

UNIX ¨t²Î±N³B²zµ{§Ç¦s¨úÀɮתºÅv­­¡A§¹¥þ¥æ¥ÑÀɮצs¨úÅv­­¦ì¤¸¨ÓºÞ¨î¡F¥¦¥u¬O®ø·¥¥B³Q°Êªº¨Ó³B²z¸ê·½¦P¨B¦s¨ú¡]synchronous access¡^ªº°ÝÃD¡A¦]¦¹«Ø¥ßÂê©w¡B¨ú±oÂê©w¡B¬dÅçÂê©w¤D¦ÜºM®øÂê©w³£¶·¥Ñµ{¦¡¦Û¦æ¥s¥Î fcntl() ©Î lockf() ±`¦¡¨Ó§¹¦¨¡C

¡i°Ñ¦Ò¡jMandatory locking¡C

AGE buffer list

¡iĶ¦W¡j¹L®É½w½Ä°Ï¦ê¦C

¡i»¡©ú¡j¦b½w½Ä°ÏªººÞ²z¤è¦¡¤¤¡A¦¹¦ê¦C¦s¦b§@¥Î¬O¢w¥¦§â¤w¸g¥Î¹L¦Ó¥B¥i¯à¤£·|¦A¥Î¨ìªº¸ê®Æ½w½Ä°Ï©ñ¤J¦¹¦ê¦C¤¤¡C·í¨t²Îªº½w½Ä°Ï¤£¼Å¨Ï¥Î¡A»Ý­n·sªº½w½Ä°Ï®É¡A¥i¥Hª½±µ±q¦¹¦ê¦C¤¤ªº²Ä¤@­Ó¶}©l¨ú¥Î¡C¨Ï¥Î¹L®É½w½Ä°Ïªº¥t¤@­Ó¦n³B¬O¢w¸U¤@¬Y­Ó¸ê®Æ½w½Ä°Ï¦³¦A¦¸¨Ï¥Îªº¾÷·|®É¡A¦Ó¥B¸Ó½w½Ä°Ï¤]ÁÙ¦s¦bªº¸Ü¡A¨t²Î´N¥i¥H¦A¦¸ª½±µ¨ú¥Î¥¦¡C

alias

¡iĶ¦W¡j§O¦W¡B¤Æ¦W

¡i»¡©ú¡j¦b C shell »P Korn shell ¤U´£¨Ñ¦¹¶µ¥\¯à¡C¥¦¤¹³\¨Ï¥ÎªÌ¥Î¤@­Ó¦Û©wªº¦WºÙ¨Ó´À¥N­ì¦³ªº©R¥O¦WºÙ¡A¦b°õ¦æ®É¥Ñ shell¨Ó­t³d³o¤¤¶¡ªºÂà´«¤u§@¡C¦P®É­ì©lªº©R¥O¦WºÙ¤´¥iÄ~Äò¨Ï¥Î¡C

¡i½d¨Ò¡j $alias rm="rm -i"

$alias h=history

$alias v=vi

¡i°Ñ¦Ò¡jAT&T, shell, C shell, Korn shell¡C

anchored match

¡iĶ¦W¡j°±ªy¤Ç°t

¡i»¡©ú¡j§Y¬O«ü¦b¤@­Ó¤å¦rÀɤ¤¡A¨C¤@¦Cªº¬Y­Ó©T©w¦ì¸m§ä´M¤@¯S©w¦r¼Ë¡]pattern¡^¡C

¡i½d¨Ò¡j $grep "^unix system"

<´M§ä¥H "unix system" ¬°¶}ÀYªº¦U¦C

$grep "^unix system$"

<´M§ä¥H "unix system" ¬°µ²§Àªº¦U¦C

$grep "^unix system$"

<´M§ä¤@¦C¤¤¶È¦³¥H "unix system" ¬°¦r¼Ë¦ÓµL¨ä¥¦¦r¼Ëªº¦U¦C

ANSI (American National standard Institute)

¡iĶ¦W¡j¬ü°ê°ê®a¼Ð·Ç¨ó·|

¡i»¡©ú¡j¬°¤@«DÀç§Q©Ê²Õ´¡A¨ä¥\¯à¬°¨ó½Õ¼t°Ó¡B¨î©w©¼¦¹¶¡¦@³qªº¤u·~¼Ð·Ç¡C

AOE (Application Operation Environment)

¡iĶ¦W¡j³nÅéÀ³¥Î¾Þ§@Àô¹Ò

¡i»¡©ú¡j¥Ñ©ó UNIX ¹ï©ó¤@¯ë¨Ï¥ÎªÌ¦Ó¨¥¡A¯Ê¥F¾Þ§@¤Wªº¿Ë©M¤O¡A¹E¦³AOE¡]Application Operating Environment¡^ªººc·Q²£¥Í¡A¥H§ïµ½¨Ï¥ÎªÌ¤¶­±¡A¤Î¨ó§U¨Ï¥ÎªÌµo®iÀ³¥Î³nÅé....µ¥µ¥¡AÅý¤H¾÷¶¡¯à¦³§ó¦nªº·¾³q¡C

¾ã­Ó¾Þ§@Àô¹Ò¥i¤À¬°¥|¤j³¡¥÷¡A¦p¤U¹Ï©Ò¥Ü¡G

1. µo®i¤u¨ã¡C

2. ¸ê®ÆºÞ²z¥\¯à¡C

3. ºô¸ô¨t²Î¤ä´©¡C

4. ¨Ï¥ÎªÌ¬É­±¡C

aoe.gif (5636 bytes)

archive

¡iĶ¦W¡j«O¦sÀÉ

¡i»¡©ú¡j±N¦n´X­ÓÀɮשһݪº¸ê®Æ²Õ¦X¦¨¤@­Ó¶°¦X¡A¦ÓºÙ¦¹¶°¦X¬° archive ÀɩάO archive µ{¦¡®w¡C¦Óºc¦¨ archive ªº¨C¤@­Ó

Àɮ׫hºÙ¬°¦¹ archive ªº¦¨­û¡]member¡^¡C

ARP (Address Resolution Protocol)

¡iĶ¦W¡j¦a§}¹ïÀ³³q°T¨ó©w

¡i»¡©ú¡jARP¡]Address Resolution Protocol¡^¬O¤@ºØ³q°T¨ó©w¡A¯à°÷¥H°ÊºAªº¤è¦¡±N¬Y¤@­Óºô¸ô¤Wªº¦ì§}¹ïÀ³¨ì¥t¤@­Ó¤£¦Pºô¸ôªº¦ì§}¤W¡CÁ|¨Ò¨Ó»¡¡G¦b BSD 4.3 ª©¤¤¡A ARP ¬O±N DARPA Internet ºô¸ôªº¦ì¤î¹ïÀ³¨ì Ethernet ºô¸ôªº¦ì¤î¤W¡C¦b©Ò¦³ªº UNIX ¨t²Î¤¤³£¦³¤@­Ó ARP ªí¡A°O¿ý¤F¨C¤@­Ó©Òª¾¹D¾÷¾¹ªº¡uIP ¦a§}¡v¤Î¨ä©Ò¥Nªíªº¡uETHERNET ¦a§}¡v¡A©Ò¥H¤@­Ó IP ¦a§}¥u·|¹ïÀ³¤@­Ó ¤A¤Óºô¸ô¦a§}¡A¦pªG¦³¤H¥Î¬Û¦Pªº IP ¡A¨ä¤A¤Óºô¸ô¡] EtherNet¡^ ¦a§}·|©M ARP ªí¤¤ªº¤º®e¬Û²Å¡A¦]¦¹¨t²Î°e¥Xªº«Ê¥]¡] package¡^ ¯à«OÃÒ°e¨ì¯u¥¿ªº¦a¤è¡A¦ý¦pªGºô¸ô¤W¦³¥ô¦ó¤@¥x¾÷¾¹§ó´« ¤A¤Óºô¸ôºô¸ô¥d®É¡A¥²¶·¨ì©Ò¦³¾÷¾¹¤W¥h§ó§ï ARP ªí¤ºªº¸ê®Æ¡C

¡iªþµù¡jDARPA¡]Defense Advanced Research Projects Agency¡^°ª¯Å°ê¨¾¬ã¨s±M®×§½¬O¬ü°ê°ê¨¾³¡¤ºªº¤@­Ó³æ¦ì¡C

ASCII

¡iĶ¦W¡j¬ü°ê°ê®a¼Ð·Ç¥æ´«½X (American Standard Code for Information Interchange)

¡i»¡©ú¡jASCII ¬O¬ü°ê°ê®a¼Ð·Ç¥æ´«½X¡]American Standard Code for Information Interchange ¡^ªºÁY¼g¡C¥¦¬O¥Ñ¬ü°ê°ê®a¼Ð·Ç¨ó·|¡]ANSI¡^©Ò¨î©w¡M¥H§@¬°¹q¸£¤º³¡»Pºô¸ô¶Ç¿éªº¼Ð·Ç½X¡CANSCII ¥H¤@­Ó byte ¥Nªí¤@­Ó¦r¤¸¡A¨ä¤¤¥]¬A¤j¡B¤p¼gªº­^¤å¦r¥À¡Bªü©Ô§B¼Æ¦r¥H¤Î¤@¨Ç¯S®í²Å¸¹¡A¦@¦³ 128 ­Ó¡C

¡i°Ñ¦Ò¡jANSI¡C

Asynchronous I/O

¡iĶ¦W¡j«D¦P¨B¡]²§¨B¡^¿é¤J¡þ¿é¥X

·í¤@­Ó³B²zµ{§Ç¤´µM¦b§@·~®É¡A¯à°÷¹ï¿é¤J¡þ¿é¥X¦¸¨t²Î´£¥X¿é¤J¡þ¿é¥Xªº½Ð¨D¡C·í§@·~§¹¦¨©Î¬Oµo¥Í¥ô¦ó¿ù»~ªº®É­Ô¡A¨t²Î³q±`¤]¬O·|¥H«D¦P¨Bªº¤è¦¡µo¥X³qª¾¡C

Asynchronous writing

¡iĶ¦W¡j«D¦P¨B¼g¤J¡A²§¨B¼g¤J

¡i»¡©ú¡j«D¦P¨B¼g¤J»P¦P¨B¼g¤J§@·~ªº¤è¦¡«ê«ê¬Û¤Ï¡A¦P¨B¼g¤J¬O¡y»¡¼g´N¼g¡Aµ´¤£µ¥«Ý¡z¡A¦b¶i¦æ¿é¥X¿é¤J®É¡A¥s¥Î¿é¥X¿é¤J±`¦¡ªº³B²zµ{§Ç¡]calling process¡^´N¼È®É¶i¤JºÎ¯vª¬ºAª½¨ì¾ã­Ó¿é¥X¿é¤Jªº°Ê§@§¹²¦¡C¦Ó«D¦P¨B¼g¤J«h¬O¦b¶i¦æ¿é¥X¿é¤J®É¡A¥s¥Îªº³B²zµ{§ÇÁöµM¥ß§Y°õ¦æ¿é¥X¿é¤J¤§°Ê§@¡A¦ý¬O¥¦¤£«Ý¿é¥X¿é¤J°Ê§@§¹¦¨´N®|¦æ°õ¦æ¨ä¥Lªº¤u§@¡C

Atomic operation

¡iĶ¦W¡jµL

¡i»¡©ú¡jUNIX ¦b SVR3.0 ¥H«áªºª©¥»¦b¨t²Î©I¥s¤W©Ò°µªº¤@¶µ­«­nªº§ï¶i´N¬OÅý©Ò¦³ªº¨t²Î©I¥s¬Ò¬° "atomic operation"¡C©Ò¿×ªº "atomic operation" ¬O«ü¤@­Ó¦h¨BÆJ¡]multiple steps¡^ªº¨t²Î©I¥s¦b°õ¦æ®É¡A­n´N¬O¤@¦¸°µ§¹©Ò¦³ªº¨BÆJ¡A­n¤£µM´N¬O¥þ³¡¤£°µ¡C§Ú­Ì¥H SVR2.x ®É´Áªº open() ©M creat() ¨t²Î©I¥s¬°¨Ò¡A·í®É open() »P creat() ¬O³o»ò¥Î¡G

#define MODE 0666

...........

int fd;

char fname[_POSIX_PATH_MAX+1];

...........

...........

if((fd=open(fname,WR_ONLY)) == -1)

if(errno == ENOENT)

{

if((fd=creat(fname,MODE)) == -1)

perror("creat ");

}

else

perror("open ");

¤W­zªº§@·~¤è¦¡±N«Ø¥ß·sÀɪº§@·~¤Á¦¨¨â­Ó¶¥¬q¡G

²Ê¬Ý¤§¤U¡A¤W­zªº§@·~¤è¦¡¨ÃµL¥iij¤§³B¡A¦ý¬O¥J²Ó±ÀºV±z·|µo²{¨â­Ó¨t²Î©I¥s¶¡¦³¥i¯à²£¥Í¶¡»Ø¡C¤ñ¤è»¡³B²zµ{§Ç¢Ï°õ¦æ¦æ¤W­±ªº°Ê§@¡A¦b¥¦°õ¦æ§¹ open() «á¡]time slice¡^²×¤F¡A©ó¬O³B²zµ{§Ç¢Ð°õ¦æ¡A³B²zµ{§Ç¢Ð«Ø¥ß¤F fname ÀÉ¥B¼g¤J¸ê®Æ¡AµM«á¥¦ªº®É¶¡°tÃB¤]²×¤F¡A¦A´«³B²zµ{§Ç¢Ï°õ¦æ¡A³o®É³B²zµ{§Ç¢Ï·|®|¦æ¥s¥Î creat()¡Aµ²ªG­ì¥»³B²zµ{§Ç¢Ð©Ò¿é¤Jªº¸ê®Æ±N¥þ½L³à¥¢¡C¸Ñ¨M¦¹¤@°ÝÃDªº¿ìªk«K¬OÅýÀˬdÀɮ׬O§_¦s¦b¤Î«ØÀɪº°Ê§@¤@¦¸§¹¦¨¡A¤¤¶¡¨S¦³¶¡»Ø¡C¦]¦¹ SVR3.x ª©¥H­°ªº open() ±`¦¡¥[¤J¤F O_CREAT ºX¼Ð¡A¨Ï©Ò¦³°Ê§@¤@®ð¨þ¦¨¡C¤W­±ªºµ{¦¡¥H·sª©ªº open() ¨Ó¼g±N¦p¤U¡G

if((fd=open(fname,O_WRONLY|O_CREAT|O_EXCL,MODE)) == -1)

perror("open ");

AT&T

¡iĶ¦W¡j¬ü°ê¹q¸Ü¹q³ø¤½¥q

¡i½d¨Ò¡jAT&T ¬O¬ü°ê³Ì¤jªº¹q«H¤½¥q¡M¦b 1984 ¦~©|¥¼³Q¥H¤Ï¦«©Ô´µªk±j­¢¸ÑÅ餧«e¡A¥¦¬O¥@¬É¤W³Ì¤jªº¹q«H¤½¥q¡M¨äÀç¹B½d²[»\¤F¬ü°ê¤@¥b¥H¤Wªº»â¤g¡M»P¦Ê¤À¤§¤K¤Qªº¬ü°ê¥Î¤á¡C¦Ó¨äºX¤Uªº¼Æ­Ó¬ã¨s³æ¦ì¦b°ê»Ú¤W¤]»á­t²±¦W¡M³Ì¦³°^Ämªº­º±À¨©º¸¹êÅç«Ç¡]BELL LAB¡^¡M¦Ó UNIX¤]´N¬O¥Ñ¥¦©Òµo®i¥X¨Óªº¡C¦]¦¹¡A AT&T ª©ªº  UNIX «üªº¤]´N¬O¥Ñ¨©º¸¹êÅç«Ç©Òµo®iªº UNIX¡C¥Ø«e³Ì·sªº AT&T ª© UNIX ¬° SVR4.2¡] System V Release 4.2¡^¡C

auto configuration phase

¡iĶ¦W¡j¦Û°Ê¬[ºc¶¥¬q

¡i»¡©ú¡jUNIX ¨t²Î¦b°_°Êªº¹Lµ{¤¤¡A¥²¶·¸g¹L³\¦hªº¨BÆJ»P¶¥¬q¡C¦b¦¹¶¥¬q¤¤¡A¨t²Î·|°»´ú¥X©Ò¦³¥i¯à»P¥D¾÷¬Û³s±µªºµwÅé©PÃä³]³Æ¡A¨Ã¥B©I¥s¬Û¹ïÀ³ªº³]³Æ±`¦¡¨Ó«Ø¥ß³o¨Ç³]³Æ©Ò»Ýªº³nÅéÀô¹Ò¡A¥H«K¥i¥H¶¶§Q¤W½u¡A¨Ñ¥Î¤á¨Ï¥Î¡C