The Unix and Internet Fundamentals HOWTO

Eric Raymond

esr@thyrsus.com
        

JF Project - {

JF@linux.or.jp

Revision History                                                      
Revision 2.4         12 June 2001             Revised by: esr         
Where to find more.                                                   
Revision 1.0         29 October 1998          Revised by: esr         
Initial revision.                                                     

̕ł́APC ñRs[^ Unix CNȃIy[eBOVXe
AуC^[lbgɊւpIȊbmɂāAZpIȐ
pg킸ɉĂ܂B

 

Table of Contents
1. ͂߂
   
    1.1. ̖̕ړI
    1.2. ̐̕Vo[W
    1.3. tB[hobNƒ
    1.4. ֘A\[X
   
2. Rs[^Uw
3. Rs[^̓dꂽɉN̂?
4. OCƂɉN̂?
5. VFvONƂN邩?
6. ̓foCX⊄荞݂͂ǂ̂悤ɓ삵Ă̂?
7. Rs[^͂ǂĕ̂Ƃ𓯎ɍŝ?
8. Rs[^͂ǂĕ̃vZXȂ悤ɂĂ
    ̂?
   
    8.1. zFȈՃo[W
    8.2. zFڍ׃o[W
    8.3. Ǘjbg (memory management unit)
   
9. Rs[^͏ǂ̂悤Ƀɕێ̂?
   
    9.1. 
    9.2. 
   
10. Rs[^͂ǂ̂悤ɃfBXNɏۑ̂?
   
    10.1. ჌xł̃fBXNƃt@CVXe\
    10.2. t@CƃfBNg
    10.3. }Eg|Cg
    10.4. t@C̖₢킹̎dg
    10.5. t@C̏LҁAp[~bVAZLeB
    10.6. qƂ̂͂ǂƂȂ̂
   
11. Rs[^͂ǂ̂悤Ȏdg݂œĂ̂
   
    11.1. RpC^̌
    11.2. C^v^^
    11.3. P-code 
   
12. C^[lbg͂ǂ̂悤Ȏdg݂œĂ̂
   
    12.1. OƏꏊ
    12.2. hCl[VXe (domain name system)
    12.3. pPbgƃ[^
    12.4. TCP  IP
    12.5. HTTP : AvP[VvgR̈
   
13. Əڂm肽l̂߂
14. {ɂ

1. ͂߂

1.1. ̖̕ړI

́̕ALinux C^[lbgg|ƂŊwł郆[Ux
邽߂̂̂łBHwԂƂ̂́ÃXLgɂ
@ƂĂ͐\Ȃ̂łA(̌nIł͂Ȃ){IȂ͂
m̊eɌĂ܂łBāAƁA
ŉ炽ɍloAguʓIɉ肷ۂɍ
ɒʂ̂łBɉNĂ̂𓪂̒Ŏv`
łȂłB

{ł́ALinux ƃC^[lbgɊւŜ̎dg݂ɂāAm
ՂȌtŐłB{̉́APC nn[hEFA
Unix  Linux gĂlΏۂɂĂ܂BAł́A҂
킹ĒP 'Unix' ƌĂт܂B{ł̐̑啔́Aevbgt
H[lXȎނ Unix ɋʂ̂łB

܂A{ł́Aǎ҂ Intel vZbT𓋍ڂ PC gĂ̂
肵Ă܂BAlpha vZbT PowerPC A͂ȊO Unix }
V𓮂ĂꍇAׂȓ_ɑႢ͂܂Ał{I
ȃRZvg͓łB

ƂǂǏqׂ邱Ƃ͂Ȃ̂ŁAӂēǂłBʂ
ƁAdȂ̂ŁAǂǂłVm𓾂
ƂƂł܂Bŏ͂ƓǂŁAw񂾂Ƃ
ŁAɉxǂݕԂƂ@߂܂B

͐̕XVĂ܂B[ŨtB[hobNƂɂăZN
VǉĂȂ̂ŁAꂩ傭傭{ɖڂʂ
Ă炦΂Ǝv܂B

 

1.2. ̐̕Vo[W

Unix and Internet Fundamentals HOWTO ̐Vo[ẂAI 
comp.os.linux.help <news:comp.os.linux.help>  news:
comp.os.linux.announce  news.answers <news:news.answers> Ƀ|Xg
Ă܂B܂ALDP z[y[W܂߂e Linux WWW TCg
FTP TCgɂAbv[hĂ܂B

̍̕ŐVo[ẂAWorld Wide Web ̎ URL Ō邱Ƃ
܂B http://www.linuxdoc.org/HOWTO/
Unix-and-Internet-Fundamentals-HOWTO/index.html

{ɂ́A|[h <www.gszczepa.hg.pl/esr1iso2.htm>̖|󂪂
B 

 

1.3. tB[hobNƒ

̕Ɋւ鎿Rg΁AȂ Eric S. Raymond
<esr@thyrsus.com> ܂Ń[𑗂ĂBǂ̂悤ȒĂᔻł
}܂BɁA{ł̌X̃RZvgڂĂTC
gւ̃nCp[N͑劽}łB̕ɊԈႢꍇ́A
񒘎҂ɒm点ĂB̃o[WŒ܂B낵肢
܂B

 

1.4. ֘A\[X

nbLO̕@m肽Ă̕ǂłȂAł How To
Become A Hacker FAQ <http://www.tuxedo.org/~esr/faqs/hacker-howto.html>
(R` <http://cruel.org/freeware/hacker.html>AJ <http://
www.linux.or.jp/JF/JFdocs/hacker.html>) ǂłBɗ
ւ̃NLڂĂ܂B

 

2. Rs[^Uw

ǎ҂̃Rs[^ɂ́AvZbT`bvĂāAꂪۂ
vZsĂ܂B܂AĂ܂ ( DOS/
Windows ȂЂƂ́A''RAM'' ƌĂт܂AUnix ȂЂƂ ''RA
(core)'' ƌĂ񂾂܂B Unix ṕA܂ RAM h[ic^
tFCgRAŏoĂ̖cł)BāAvZbTƃ́A
}U[{[hɓڂĂāÃ}U[{[hRs[^̐S
ƂȂĂ܂B

Rs[^ɂ́AXN[ƃL[{[hĂ܂B܂An[hh
CutbsfBXNĂ܂BXN[ƃfBXNɂ̓R
g[J[hKvłBJ[h̓}U[{[hɍ܂A
Rs[^ɂfoCX⏕Ă܂(L[{[h͔ɃVv
ȃfoCXȂ̂ŁAp̃J[hKvƂ܂BRg[̓L[{
[h➑̓ɖߍ܂Ă܂)B

foCX̓쌴̏ڍׂɂẮAقǐ܂Bł
܂A炪݂ɂǂdg݂œ삵Ă̂ȒPɐ
B

P[XɎ߂ꂽRs[^̃p[cׂ͂āAoX (bus) ɂČq
Ă܂BIɂƁAoXƂ́ARg[J[hޕ
ł(rfIJ[hfBXNRg[AꍇɂĂ̓ZJh(fB
XN)Rg[Ȃ)B΃oXƂ́AvZbTXN[AfBX
NAׂẴp[cԂŃf[^ɂ肷邽߂̒ʘHłB

( PC ֘A̘b 'ISA'  'PCI', 'PCMCIA' Ƃpڂɂ邯
AꂪȂ̂悭ȂƂ邩܂B
AoX̌`̂ƂłBISA Ƃ̂́A܂ɌƁA1980 N
IBM ̔Ă PC ŎgpĂ̂Ɠ̃oX̂ƂŁA
݂ł͂܂BPCI Ƃ́APeripheral Component
Interconnection ̗łA PC  Macintosh ŎgpĂ
oXłBPCMCIA Ƃ́ARlN^^ ISA ̉ǔłłA
bvgbvŎgpĂ܂B)

vZbTׂ͂Ă̋@𓝊p[cȂ̂łA͎ۂɂ͑
p[c𒼐ڌ邱Ƃ͂łAoXoRĉb悤ɂȂĂ܂
BoXȊOɁAvZbTڂɃANZXłTuVXéA
 (RA)łB䂦AvOs悤ƂȂAv
O̓RA()ɓǂݍ܂Kv܂B

Rs[^vOf[^fBXNǂݏoꍇAۂ̓
ƂẮA܂vZbTAoXgāAfBXN̓ǂݏoNG
XgfBXNRg[ɑ΂đM܂B΂炭āAfBXNR
g[́AoXgāAf[^ǂݏoă̂ꏊɒu
ƂƂvZbTɓ`܂BɂāAvZbT́AoX
gāÃf[^邱Ƃł悤ɂȂ킯łB

L[{[hƃXN[AoXoRŃvZbTƃR~jP[V
Ă̂łA̕@͂PłBɂĂ͌q܂
BRs[^ɓdꂽۂɉN邩𗝉ɂ́A܂̂Ƃ
Aŏ[łB

 

3. Rs[^̓dꂽɉN̂?

vOĂȂRs[^́A𗧂ȓdqî܂
܂BdꂽہARs[^܂ŏɍsׂƂ́AI
y[eBOVXeƌĂ΂ʂȃvOX^[g邱Ƃ
BIy[eBOVXe̎d́ARs[^n[hEFA̐
ɂ߂ĔώGȏĂ̂邱ƂŁȂ̃vO̎dx
邱ƂłB

Iy[eBOVXeN鏈̂Ƃ́Au[g (boot) ƌĂ΂
Ă܂(u[gƂ́AƂƁu҂ݏグĈ܂݊v(bootstrap)v̂
łAĈ܂݊vĎgグ(Ȏ̗Ⴆ)
ƂIy[eBOVXe̋NɎĂ邱Ƃ疼t
܂)Bu[g̎菇̓Rs[^`bv̂ЂƂł BIOS
(Basic Input/Output System ̗) ɏ܂Ă̂ŁA(Iy[eB
OVXeNOł) Rs[^̓u[g@m邱Ƃł
悤ɂȂĂ܂B

BIOS `bv́ARs[^ɑ΂āA錈܂ꏊɂʂ̃vO
T悤Ɏw܂B͒ʏAԎႢԍtꂽn[h
fBXN (u[gfBXN (boot disk)) ɂAu[g[_ (boot
loader) Ƃ΂vOł (Linux ł́Ãu[g[_ LILO
Ƃ΂Ă܂)BāAu[g[_ɓǂݍ܂AN
Bu[g[_̎d́AIy[eBOVXê̂N邱
ƂłB

̃[_ɂIy[eBOVXe̋NƂ̂́AJ[lT
āAɃ[hAX^[g邱Ƃɂs܂B
҂ Linux NƁAXN[ "LILO" ƂƁǍɃhb
g\̂Ǝv܂B̎́Au[g[_J
[l[hĂ̂ł (ЂƂ̃hbg̕\́AfBXNubN
(disk block) ЂƂ̃J[lR[h[hꂽƂӖĂ
)B

(ǎ҂́ABIOS ȂڃJ[l[hȂ̂AȂ킴킴u[g
[_g 2 iK̏̂ɂĕsvcɎv܂
B́ABIOS Ƃ̂A܂茫ȂȂ̂łBۃRCc͂Ƃ
̂ŁAu[gI Linux ͑S BIOS g܂BBIOS
͂ƂƃfBXN܂ςłȂnI 8 rbg PC ̂߂ɏ
ꂽ̂ŁAfBXNɃANZXăJ[l𒼐ڃ[h悤ȏ
łȂ̂łB܂AUnix ł͓s̈悤ȍƂƂ
Au[g[_Ƃߒ݂邱ƂŁAfBXN̕ʂ̏ꏊ
قȂIy[eBOVXeN邱Ƃ\ɂȂ܂B)

J[lnƁAJ[l͎ӑǔosAn[hE
FAc炸FāAvOs鏀𐮂܂B̍ہAJ[
ĺAʏ̃ł͂ȂAI/O |[g (I/O ports) ƂꏊƂ
܂BI/O |[gƂ́AʂȃoXAhXłAfoCXRg
[J[h͂Ẵ|[gĎȂJ[l̃R}h
Ă܂B̎AJ[ĺAI/O |[g_ɒT킯ł͂
܂BǂTΉ̂ARg[݂ꍇ͂ǂ
̂Ƃ񂪁AJ[l̂Ȃɂ炩߂Ƒg
܂Ă邩łB̃vZX́Ao (autoprobing) ƌĂ΂
܂B

Nɕ\郁bZ[ŴقƂǂ́AJ[l I/O |[goRŃn
[hEFAoȂAǂӋ@킪p\ł̂
FÃ}V̓ɓKĂߒŕ\̂łB
Linux J[ĺA̋@\GłȂ啔 Unix D
āA DOS  Windows ƗDGłBہA Linux ÎQ[
U̍lƂɂƁA(CXg[rIeՂɂ)̋N
o@\̏o̗ǂɂāALinux ̓t[ Unix Ƃ
A̎vWFNg甲oāAcȐ̃[UCɈ
悤ɂȂ̂ƌĂ܂B

AJ[lSɃ[hĎs邱ƂŁAu[gvZX
I킯ł͂܂B͂܂AiKɂ܂(̒iK
Ax 1 (run level 1) Ƃ΂Ă܂)BiKςނƁAJ
[ĺA'init' ƌĂ΂ʂȃvZXɐnA 'init' v
ZXe̊ǗvZX𗧂グ܂B

ʏA init vZX́Aŏ̎dƂāA܂fBXN킩ǂ
̊mFs܂BfBXNt@CVXe͑@ׂɂłĂ̂ŁA
n[hEFǍ̏ˑR̓dՒfȂǂŃ_[W󂯂Ăꍇ́A
Unix SɗオĂ܂OɁAt@CVXeC̍ƂKv
BɂẮAقǁAt@CVXeƂ̂͂ǂ
Ƃ̏͂Ő܂B

init ̎̎d́AvgXv[ (print spooler)⃁[T[oA WWW
T[oƂA̃f[ (daemon) N邱ƂłB̃f
[Ƃ̂́AobNOEhŒnɓȂAd^
̂҂ĂvÔƂłBʂ̃vÓA
镡̃NGXgɒȂ΂ȂȂƂ悭
܂BvOf[vOł̂́AĂ
̕vO₷łBЂƂ̃NGXgЂƂ̃v
O邱ƂɂāAvO𓯎ɎsȂA݂
΂ɊȂ悤ɍHvAЂƂ̃vO펞
ĂāAׂẴNGXg悤ɂقȒPł
Bǂނ̃f[N̂̓VXeɂĈقȂ܂
AĂ̏ꍇAȂƂvgXv[ (v^̖ԂĂ
f[)͋NĂ邱ƂƎv܂B

Ɏ̎d́A[Û߂̏ƂłBinit ́A getty Ƃ΂
vOX^[gāAR\[Ď܂(́A
getty NāA_CCp̃VA|[gĎ邱Ƃ
)B̃vÓAR\[ login vvg\̂
BׂẴf[NA^[~i getty vZXX^[g
A̎_Ńx 2 (run level 2) ɓƂɂȂ܂BO
CvO̎śÃxɂāA\ɂȂ܂B

Ƃ͂A܂ׂĂ킯ł͂܂B̎d́Albg
[LÕT[rXT|[gef[N邱ƂłB
āA炪IƁAx 3 (run level 3) ɓAVXe
SɎgԂɂȂ܂B

 

4. OCƂɉN̂?

OCƂ̂́A(getty ɂ閼O邱Ƃ) NȂ̂
Rs[^ɔF邱ƂłB̍ہA (ՂO) login
ƌĂ΂vONAꂪpX[h󂯎Ã}V
g[Uł邩ǂ̔F؂s܂Bg
Ȃ΁AOC悤ƂĂۂ܂B΁Alogin v
O͂̑O񏈗ς܂ŁAVF (shell) ƂR}
hC^[v^ (command interpreter) X^[g܂B(A 
getty  login ЂƂ̃vOƂ邱Ƃ\ł͂܂B҂
ʁXɕĂ̂́AjIȗRłAł͓Ɏグ
悤Ȃ̂ł͂܂B)

 ł́AVF\܂łɁAVXeŋN鎖ɂĂ
ڂ܂(قǁAt@CVXẽp[~bVɂĉ
ۂɁȀ͂̒mKvɂȂ܂)B[ÚAOCƃpX
[hɂē肳܂BOĆA/etc/passwd Ƃt@C
āAmF܂B̃t@ĆAsƂɂꂼ̃[UAJEg
̏񂪋Lqꂽt@CłB

sƂɕtB[ĥAAJEgpX[h̗́AÍ
Ă܂(ꍇɂẮÄÍꂽtB[h́A /etc/shadow
Ƃʂ̃t@CɕۑA茵p[~bVݒ肪邱
܂BɂāApX[h̃NbLO荢ɂ̂
)BAJEgpX[hƂē͂A܂@ňÍ
Alogin vOɂ萳ȃpX[hǂ̊mFȂ܂
B̕@SłƂ̂́ApX[hÍ̂͊ȒP
łA̋t͓ƂɂĂ܂B䂦ANÍ
ꂽ̃pX[hƂĂAɂẴAJEgg
ɂ͂Ȃ܂B (tɁÃpX[hYĂ܂A
xmF邱ƂłȂȂ܂Bʂ̃pX[hɕύXȊO
ɂ܂B)

OCɐApĂ鎩̃AJEgɊ֘Atꂽ
Ă̌𗘗pł悤ɂȂ܂B܂ÃAJEǵAȂ炩
O[v (group) ɑĂƔFꍇ܂BO[vƂ́A
̖Otꂽ[ȔWcłAVXeǗ҂ɂĐݒ肳
܂BO[vɂ́ǍX̃o[̌Ƃ͕ʂɁAO[vƎ
ݒ肷邱Ƃł܂B܂A[ÚÃO[ṽo[
ƂȂ邱Ƃł܂B(Unix ̌̎dg݂̏ڍׂɂẮAp[~bV
̏͂B)

(ӂׂȂ̂́Aʏ̓[UO[vƂ͖̂OŌĂł
Aۂɂ́A ID ƂēɕۑĂƂƂłB
passwd t@Cɂ́AAJEgƂ̃[U ID Ƃ̑Ή֌W
āA/etc/group t@Cɂ́AO[vƂ̐ȂO[v ID
Ƃ̑Ή֌WĂ܂BAJEgO[vR}
h́A̗҂̕ϊIɍsĂ܂B)

AJEg̏񗓂ɂ́Ã[Ũz[fBNg (home directory)
Ɋւ܂܂Ă܂Bz[fBNgƂ́A Unix t@CV
Xeł̃[Ul̃t@CۊǂĂꏊ̂ƂłBŌ
ɁAAJEg̏񗓂ɂ́Ã[ŨVF (shell) Ɋւ
܂BVFƂ́AR}hC^[v^̂ƂłA login vO
[ŨR}h󂯎邽߂ɋN̂łB

 

5. VFvONƂN邩?

VFƂ́A[Uł񂾃R}h߂ Unix ̃C^[v^
łBꂪVFƌĂ΂̂́AIy[eBOVXẽJ[l
ݍŁA[UBĂ邩ł(󒍁F؂̎̔
głAVF (shell) Ƃ͊kӖAjƂȂ(ł̓J[l)
ݍł邱ƂA̖O܂)BVFƃJ[lƂʁX
̃vOƂȂĂāA҂ÃVXeR[oRŒʐMƂ
dǵ݂AUnix ̏dvȓƂȂĂ܂B̂悤ɗ҂𕪗邱
ƂŁAlXȃVFvO̎\ƂȂA[U̍D݂ɍ킹
낢ȃC^[tFCXIׂ悤ɂȂĂ܂B

ʏ̃VFł́A[UOCƁA(ɃJX^}CYĂȂ
) '$' Ƃvvg\܂Bł̓VF̍\A
Ă΂悤Ȏɂ͐G܂BނA\
̔wiŉNĂ̂ARs[^̎_悤Ǝv
܂B

u[gIł܂vOsĂȂ_ɂR
s[^Ƃ̂́AÃvZXŜׂd҂ĂԂ
ƍl邱Ƃł܂BvZXCxg (event) ҂
킯łBŃCxgƂ́A[UL[Ƃ}EX𓮂
ƂƂłB邢́A}Vlbg[NɐڑĂȂ
Ãlbg[NzɑĂf[^pPbg̒MȂǂCxg
ɂ܂B

J[lvZX̂ЂƂłBAJ[l͓ȃvZ
Xł܂BJ[lvZXȊÕ[UvZX (user process) 
sׂŝJ[lvZXłA}Ṽn[hE
FAɒڃANZXł̂ʏ̓J[lvZXłB
A[UvZXAL[{[h̓͂ǂݍ񂾂AXN[ɉ
\AfBXNɑ΂ēǂݏ蓙AƂ̂ƂȊO
ׂĂ̏ۂɂ́AJ[lɑ΂ăNGXg𑗂Ȃ΂Ȃ
܂BNGXǵAVXeR[ (system call) ƌĂ΂Ă
܂B

ʏAI/O |[gւ̃ANZXׂ͂ăJ[lʂčŝŁAJ[
l͂XPW[OÅ݂h~肷
@\Ă܂BA̓ʂȃ[UvZX́AJ[lʂ
ɏ錠^Ă܂BĂ̏ꍇA I/O |[g
ڃANZXłƂłBX T[o (́A啔 Unix }V
ŁAXN[ւ̉摜\Ɋւ鑼̃vÕNGXg
󂯎āAĂvÔƂł) A̓T^IȗłB
ÂƂA܂ X T[oオƂ܂Řbił܂
B܂A[ŁAVFvvgĂԂłB

VF́APȂ郆[UvZXłAʂȌ^Ă
ł͂܂BVF̓L[Xg[N҂ĂA(J[loR)
L[{[h I/O |[gĎĂ܂BJ[l̓L[Xg[NF
ƁÂ܂܃XN[ɕ\܂BJ[l 'Enter" L[
ꂽƂFƁÃL[܂łɓ͂ꂽeLXg
sVFɓn܂BVF́ÃL[Xg[NR}hƂ
߂悤Ƃ܂B

Ƃ΁AUnix ̃fBNg\R}hN邽߂ɁA'ls' Ƃ
^CvāAEnter Ƃ܂BVF́A炩ߑgݍ
Ă郋[ɏ]Ă߂A[U '/bin/ls' t@Cɂ
sR}hNĂ̂Ɨ܂BVF̓VXeR[
𔭂āAJ[l /bin/ls VK̎qvZX (child process) Ƃ
NƂƂɁA̎qvZXɑ΂ăJ[loRŃXN[ƃL[
{[hւ̃ANZX^悤v܂BāAVF̓X[v
ԂɓAls R}hÎ҂܂B

/bin/ls R}hIہAR}h́A exit VXeR[𔭍s
āAIƂJ[lɓ`܂BƁAJ[lAX[
vĂVFڊo߂āAVFsĊJł悤ɂȂ
Ƃ`܂BVF́Aēxvvg𔭂A̓͂Ȃ̂
܂B

Ƃ͂AL 'ls' sĂŒɁÃvZXis
Ƃ\ł(ɒfBNg̃Xg\悤ƂĂƂ
܂傤)BƂ΁A'ls' ̎sɁAʂ̉zR\[ɐ؂ւāA
OCAQ[ Quake ŗVюn߂邱Ƃł܂B邢́AC^
[lbgɐڑĂԂƂ΁A ls ̎sɁAǎ҂̃}V
[̑M邱Ƃ\łB

 

6. ̓foCX⊄荞݂͂ǂ̂悤ɓ삵Ă̂?

L[{[hƂ̂́AɃVvȓ̓foCXłBƂ̂AL
[{[h́A(Rs[^̊猩)Ȃʂ̃f[^
萶̂łBL[藣肷ہÃCx
gḾAL[{[hP[u`āAn[hEFA荞
(hardware interrupt) 𔭐܂B

荞݂Ď̂́AIy[eBOVXe̎dłB
ނ̊荞݂ɑΏ邽߂ɁA荞݃nh (interrupt
handler) Ƃ̂KvɂȂ܂B́AIy[eBOVXë
łA(L[Xg[NL[[XƂ) 荞݂Ɋ֌Wf[
^ׂ̂ĂAꂪ܂ŕێĂ̂łB

L[{[hp̊荞݃nh̎ۂ̎dƂ̂́AL[̒l
̒̂قɂVXeGAɊi[邱ƂłBIy[eBOVX
eA݃L[{[h̓͑҂ƎvvOɑ΂Đ
nہÃvOlǂݏo悤ɂ킯łB

fBXNlbg[NJ[ĥ悤ȂƕGȓ̓foCX̏ꍇł
@͓łBȑȌ͂ł́AfBXNRg[̓oXgăf
BXNNGXgƂ`Ƃb܂B̏ꍇ̎
ۂ̓Ƃ̂́AfBXN荞݂𔭐ƂƂłB
ƂAfBXN̊荞݃Rg[́A荞݃f[^
ɈURs[āAォ炻̃NGXg𔭂vOg悤
ɂ̂łB

荞݂ɂ́Aǂނ̂̂łAK֘AD惌x
(priority level) tĂ܂BႢD惌x̊荞(Ƃ΁AL
[{[hCxg)́AD惌x̊荞(Ƃ΁ANbN`bN
(clock tick) fBXNCxg) ̂҂Ȃ΂Ȃ܂
B Unix ł́A}V̔X[Yɂ邽߂ɁAvȏKvƂ
Cxgɑ΂ẮAD揇ʂ^悤ɐ݌vĂ܂B

Iy[eBOVXe̋ÑbZ[ŴȂɁAIRQ ̐Ɋւ
\̂ɂȂƂƎv܂B܂A悭n[h
EFA̐ݒ~X̂ЂƂƂāA̃foCX IRQ g悤ɐ
肵Ă܂ĂƂႪ邱Ƃ䑶mƎv܂BA
̐ݒ~XȂ̂AmȗR͈ĊOmĂ܂B

́A܂肱ƂłBIRQ Ƃ́A"荞݃NGXg
(Interrupt Request)" ̗łBIy[eBOVXéANɁA
̃n[hEFAǂ̊荞ݔԍĝmKvAɂ
AK؂Ȋ荞݃nhX̃n[hEFAɊ֘AtĂ܂B
̈قȂfoCX IRQ gƂƁA荞݂sK؂ȃn
hɑĂ܂Ԃ܂B̏ꍇAʏ͏ȂƂfoCX
ȂȂĂ܂A邢́AOS Ă܂āAOS 
܂Ă܂ANbVĂ܂łB

 

7. Rs[^͂ǂĕ̂Ƃ𓯎ɍŝ?

ۂɂ́ÂƂ𓯎ɍsĂ킯ł͂܂BRs[^
́A̎XłЂƂ̃^XN (̓vZX (process) ) ł
܂BARs[^́Ã^XNuɐ؂ւȂ珈
ł̂ŁAlԂ̊o炷ƁÂƂ𓯎ɍsĂ悤ɍ
o邱Ƃł̂łB@́A^CVFAO
(timesharing, ) ƌĂ΂Ă܂B

^CVFAO̊ǗAJ[l̎d̂ЂƂłBJ[lɂ̓X
PW[ (scheduler) ƂAꂪ(J[lȊO)SvZ
XɊւɕێĂ܂B 60  1 bƂɁAJ[l
^C}[iŁANbN荞݂𐶐܂BXPW[́Aݎ
s̃vZX~āAKXۗŁAʂ̃vZXɐ
n܂B

60  1 bƂ̂́A܂蒷ԂƂ͎vȂ܂񂪁A
̃}CNvZbT炷ƁÃ}V߂s邾̊
ułAꂾ΁AȂ̎dȂ܂B䂦Ãv
ZX݂ƂĂAꂼ̃vZX́Å蓖ĎԓɌ
\ȎdʂȂ킯łB

ۂɂ́AvO͂̊蓖ĎԂSgȂꍇ܂BI/O
foCX犄荞݂ƁAJ[l͌悭݂̃vZX~
A荞݃nhsāÂƂŌ݂̃vZXĊJ܂
BD揇ʂ̊荞݂ɋNƁAʏ̏܂s
ȂȂĂ܂܂Bُ̈펖Ԃ́AXbVO (thrashing) ƌĂ
ĂĂ܂AKȂƂɁA݂ Unix ł͂߂ɋNȂȂ
܂B

AvO̎sx́AvO擾}VԂ̗ʂɂ
ĐƂƂ͂قƂǂ܂ (TEh 3-D OtBbN
̐ȂǁA̗O͂܂)Bs̒xN錴́A
ĂAvOfBXNlbg[Nɂf[^擾悤Ƃ
đ҂ĂԂɔ̂łAقƂǂ̌łB

̃vZXɓsIɏłIy[eBOVXéA
"}`^XN (multitasking) " OS ƌĂ΂܂BUnix ñIy[eB
OVXéAƂƃ}`^XN OS ƂĐ݌vĂA
ɓӂƂĂ܂BWindows  Mac OS Ȃǂƌ悭ł
܂B Windows  Mac OS ́A}`^XN@\ォgݍł̂
A Unix ɔׂƂ₨܂łB̌̂悢AMł}`^
XN@\́Albg[NʐMEFuT[rX̕ Linux Dʂɗ
傫ȗvƂȂĂ܂B

 

8. Rs[^͂ǂĕ̃vZXȂ悤ɂĂ
̂?

J[l̃XPW[́AvZX̎ԓIȊUSĂ܂B
ɁAIy[eBOVXéAvZXԓIɂUāA
炪݂̍ƃ̈ɊȂ悤ɂȂ΂Ȃ܂B
ẴvOēĂƉ肵ꍇłÂǂꂩЂ
ɃoOAɂđ̃vṎ悪j󂳂Ă
悤ȎԂ͖]܂܂B̖邽߂ɁAIy[e
BOVXesΏ@́AǗ (memory management) ƌĂ΂
Ă܂B

Rs[^̌X̃vZXɂ́ÃR[hsAϐۑ
Ǎʂi[肷ꏊƂāAƎ̃̈悪Kv
B̈́A(vZX̖߂ێ)ǂݏop̈
łR[hZOg (code segment) ƁA(vZXׂ̂Ă̕ϐێ
) ݉\ȗ̈łf[^ZOg (data segment) \
Ăƍl邱Ƃł܂Bf[^ZOǵAǂX
̃vZXɌŗL̗̈łA̃vZX̃R[hsĂ
ꍇAUnix ́A̗p̊ϓ_AvZXAP
R[hZOgL悤s܂B

 

8.1. zFȈՃo[W

͒lîŁA悭p邱Ƃ؂łBƂɂ́A}V
ŎŝׂẴvOŜɕێ邾̗]TȂ
܂BɁAX T[ô悤ȋȃvOsĂ悤
ȏꍇɂ́As邱Ƃ܂B̖ɑΏ邽߂
A Unix ́Az (virtual memory) ƌĂ΂eNjbNg܂
B́AvZXׂ̂ẴR[hƃf[^ɕێ悤Ƃ
̂ł͂܂BނArIʂ̃[LOZbg (working set)
ێ悤ɂāAc̃vZXԂ́An[hfBXÑX
bvXy[X (swap space) Ƃʂȗ̈ɒuĂ܂B

ӂė~̂́AO̒iŁuƂɂ....܂vƏ́A
ߋɂẮAuقƂǂĂ܂vƌ邱Ƃł
Ƃ_łBȑÓAs̃vÕTCYƔׂẵTC
YSRȂ̂ŁAXbsO͕pɂɋNĂ܂B
A͍ł͂ȂɂȂĂāA[Gh̃}VɂA
Ȃ̃ς܂悤ɂȂĂ܂B64 MB ȏ̃ς񂾌
݂̌lp}V̏ꍇAX 悭pWuŏRAɃ[h
ꂽƂłAvZXXbsOȂŎs邱Ƃ\
ȂĂ܂B

 

8.2. zFڍ׃o[W

O͂ł́AۂɂƘbPĂ܂܂BmɁAvO
̓AŕȃAhẌł蕨傫Ȃ
̂łAƔFĂāǍzx̂ƂăfBXNXbs
OpĂƂ͖̂{łBAɂ́An[hEFA
قȂ܎ނ̃ĂāAvOōxŎs
`[jOȂ΂ȂȂꍇ́Ǎ܎ނ̃Ԃł̈Ⴂ
AɏdvȖƂȂ̂łB}VŉNĂ̂{
邽߂ɂ́AŜǂdg݂œĂ̂mȂ
΂Ȃ܂B

܎ނ̃Ƃ́Â悤Ȃ̂łFvZbT̃WX^A(
́AIE`bv)LbVAO(́AItE`bv)LbVA
CAуfBXNłBꂾ̎ނ݂̃邱
̗ŔAPłBXs[hグɂ͂邩łBL܎
ނ̃́AANZXԂ̒ZԁARXg̍Ԃɕł܂B
WX^́AőłȂ̂łAbԂɏ\񂭂炢
_ANZX\łAfBXN͍łᑬłAbԂ
S񂭂炢̃ANZXł܂B

ȉɁA2000N̓T^IȃfXNgbv}Vɂe탁̃Xs
[ḧꗗ\Lڂ܂BXs[hƗeʂ͔NX㏸Ai͉Ă
܂AԂł̂̔֌W͔Ɉ肵Ăƍl邱
ł܂BKw\̂́A֌Wł邩
łB

fBXN
   
    Size: 13000MB Accesses: 100KB/sec
   
C
   
    Size: 256MB Accesses: 100M/sec
   
OLbV
   
    Size: 512KB Accesses: 250M/sec
   
LbV
   
    Size: 32KB Accesses: 500M/sec
   
vZbT
   
    Size: 28 bytes Accesses: 1000M/sec
   
ő̃gĂׂĂ\z邱Ƃ͂ł܂B܂ɍ
Ȃ̂ɂȂ肷邩łBɍłȂƂĂAȃ
łB܂Ad؂ƁA̐ʂĂ܂܂B
āARs[^̓n[hfBXN₻̑̔̃Xg[W
āAd؂ۂɂf[^ێł悤ɂȂ΂Ȃ
B܂AvZbT̑xƃfBXN̑xƂ̊Ԃɂ́A܂ɑ傫
Ⴂ܂B̒ԂɂO̃x̃Kw (LbV
(internal cache)AOLbV (external cache) уC)
́A{IɁA҂̃Mbv𖄂߂邽߂ɑ݂Ă܂B

Linux Ƃ̑ Unix ɂ́AzƌĂ΂@\Ă܂B
zƂ́AIy[eBOVXeۂɓڂĂ郁C
ȏ̃Ă邩̂悤ɐUƂƂӖĂ܂B
ۂ̕ĆA傫ȁuzvԂ̑A̓L
bV̂悤ɐU镑Az̑啔͎ۂɂ̓XbvGA
Ă΂fBXN̗̈ɕێ܂B[UvO͌Ȃ
ƂŁAOS ́Af[^ubNƃfBXN̊ԂňړǍ
zێĂ܂B̌ʁAźAƑ傫
Aقǒx͂ȂƂċ@\킯łB

zƔׂĂǂ̒xᑬɂȂ邩Ƃ̂́AIy[
eBOVXẽXbsOASYAǂꂾvOɂ
z̗p@ɓK̂ɂȂĂ邩ƂƂŌ܂܂
BKȂƂɁA̎ԊԊuŌƁA̓ǂݏoƏ݂͊Ԃ
uɂȂ邱Ƃ߁AꏊIɌꍇłA̓ǂݏ
̓ԓ̓̏ꏊɏWƂX܂B̌X́A
[JeB (locality) A͂萳ɂ̓t@X̃[Je
B (locality of reference) ƌĂ΂Ă܂B͓ŝƂłB
ւ̎Q (reference) zԓ̗lXȏꏊɃ_ɍs
ȂAʏ́AVQƂ̂тƂɃfBXNɑ΂ǂݏo⏑
݂sȂ΂Ȃ炸Az̓fBXNƓ炢ᑬɂ
Ă܂ł傤BAvOƂ͈̂̏ꏊœǂݏ
sƂX (locality) ̂Ȃ̂ŁAւ̎QƂ
łAIy[eBOVXe̓XbvsƂrIȂ
ς݂܂B

́AoȂ̂łAő񐔓Iɂ݂čł̂悢pp
^[Ƃ͔̂ɃVvȂ̂łB̕@́ALRU ͍Œ
ԖgpASY ("least recently used" algorithm) ƌĂ΂Ă
BzVXéAKvɉāAfBXNubÑ[
LOZbg (working set) ƂĎ荞݂܂B[LOZbgp̕
ȂȂAŒԖgp̃ubNfBXNɏo
Ă܂܂BׂĂ Unix Azg̑̃Iy[eB
OVXȇ啔́A LRU ɂ炩̕ύXASYg
Ă܂B

źAfBXNƃvZbT̃Xs[ḧႢ𒲐̘A
ƂȂĂ܂B́AOS IɊǗĂ܂BA
̃Xs[hƁAvZbT̃WX^ɃANZXXs[hƂ
Ԃɂ́A܂傫ȃMbv܂BOƓ̃LbV́A
߂̂łÂ߂ɏLŏqׂzƂ悭eNjbN
gĂ܂B

CfBXNXbv̈ɑ΂ȂLbV̂
ɐU镑Ă悤ɁAOLbVCɑ΂鑋̂悤
ɐU镑܂BOLbV́A (100M b 250M ANZ
X)ŁAeʂ̏łBn[hEFA (ɁARs[^̃
Rg[) ́ALRU ̕@gāACĂA
f[^ƂɂāAOLbṼf[^Ǘ܂BjIȗR
ŁALbVXbsO̒Pʂ́Ay[W (page) ł͂ȂC (line)
ƌĂ΂Ă܂B

AŘbI킯ł͂܂BLbVAOL
bV̈ꕔɃLbV邱ƂŁAANZXx̒グ̍ŏI
iKSĂ܂B̓LbV́Aɍŗeʂ̏
łBA̓vZbT`bv̂ɒuĂ܂B

ǎ҂vO{ɑƎvȂAׂm
ĂƂLvłBvÓA[JeBقǍɂȂ
BLbVʓIɓłB䂦AvO𑬂
ԊȒPȕ@́AvO邱ƂłBvO
fBXN I/O ̂߂ɓ݂ȂAlbg[NCxg҂
ȂĂޏꍇÁAʏAVXeŋeĂő̃L
bVʂƂȂXs[hŎs͂łB

vOŜłȂꍇ́AXs[hɊ֌W镔`[j
O悤ɂāA[JeB𔭊悤ɂΕł
傤B`[jOɊւeNjbN̏ڍׂ́A̔̕e
z܂Bǎ҂KvƂ鍠ɂ́ARpCɂȂ萸ʂĂ
͂Ȃ̂ŁA@͂̂Ɨł͂łB

 

8.3. Ǘjbg (memory management unit)

[ȗeʂ̃RAAXbsOƂłAǗ
(memory management) ƌĂ΂Iy[eBOVXëꕔ́Adv
ʂĂ܂BmFĂ̂́AvÕ͎f[^Z
OgύXłȂƂƂłBȂ킿AvO̒
s̂R[h∫ӂčꂽR[hÃvÕf[
^ZOgɃf[^foƂ͏oȂdg݂ɂȂĂƂ
ƂłB邽߂ɁAǗ@\ł́Af[^ZOgƃR
[hZOg̈ꗗꂽe[uێĂ܂B̃e[u
AvZXǉ̃̈vA܂ŎgĂ̈
J(ʏA̓vZXIɋN܂)тɁAXV
ɂȂĂ܂B

Iy[eBOVXẽǗ@\́Ãe[ugāA MMU
̓Ǘjbg (memory management unit) ƌĂ΂Aʑw
̃n[hEFAɂʂȉӏɃR}hnĂ܂B̃vZb
T`bvɂ́A MMU Ă܂B MMU ́Äی
邽߂̓ʂȋ@\Ă̂ŁAzIȃQƂ͋ۂ
ƂɁA̍ۂɂ͓Ȋ荞݂悤ɂȂĂ܂B

܂łɁA"Segmentation fault"  "core dumpd" ƂbZ[W
ƂȂA܂ɁAzIȃQƂNƂ
Ӗ܂Bs̃vOȊÕZOgɃANZX
悤ƂƁAvIȊ荞݂N̂łB́AvOɃo
O邱ƂӖĂ܂BMMU c core dump ́AvO}
oOǐՂ̂x邽߂̐ffȂ̂łB

vZX̑݊̖h~́AvZXANZXł郁̈𕪗
邱ƈȊOɁAɕʂ̊ϓ_ȂĂ܂Bǎ҂́ALȊOɂ
At@Cւ̃ANZX䂪o悤ɂāAoÔvO∫
ӂĂꂽvOVXȅdvt@CjłȂ
ɂƎvƂł傤B Unix At@Cp[~bVƂd
g݂Ă̂́Â߂łBɂẮAقǐ܂B

 

9. Rs[^͏ǂ̂悤Ƀɕێ̂?

Rs[^ł́AׂĂrbgƂĕۑĂ邱Ƃ͌䑶m
Ǝv܂(iƂ̂́AȀȃIEIt̃XCb`ƍl邱
Ƃł܂)Bł́ArbgɂāARs[^ň
镶␔ǂ̂悤ɕ\Ă̂܂B

ɓOɁA܂Rs[^̃[hTCY (word size) ɂė
Kv܂B[hTCYƂ́ÃRs[^ŗpĂ
A肷邽߂̒Pʂ̂ƂłBZpIɌƁA̓v
ZbT̃WX^ (registers) ̂̕ƂłAWX^Ƃ́AvZbT
vZ_Zsۂɂ̏i[ꏊłBRs[^ɂ
rbgTCYƏĂꍇ (Ƃ΁A 32-bit 
64-bit Rs[^ȂǂƌĂłꍇ)A̓Rs[^̃[hT
CŶƂĂ킯łB

(386  486  Pentium PC ܂) 啔̃Rs[^́A32 bit 
[hTCYƂȂĂ܂BÂ 286 ̃}V́A16 rbg̃[hTC
YłB̃Ct[ 36 bit [ĥ̂悭܂B
̃vZbTł (Ƃ΁A DEC  Compaq oĂ Alpha
Ȃǂ)A64 rbg̃[hTCYƂȂĂ܂B64 bit [h́Aꂩ
 5 Nقǂ̊Ԃɂ́AƈʓIȂ̂ɂȂł傤BIntel ́A
Pentium V[Ỹ`bv "Itanium" ƌĂ΂ 64 bit `bvɒu
悤v悵Ă邩łB

Rs[^́AA[炻̃}ṼTCY̏ɊY
l܂ł̔ԍUAÃ[h̕тƂČĂ܂B̃
TCY̏̒lƂ̂́A[hTCYɂČ܂܂B286 Ȃ
̋̃}Vp̃vOeʃǗ̂ɁAȂ薳
gȂ΂ȂȂ̂͂̂߂łBł͂
̎dg݂ɂĂ͏qׂ܂񂪁ANỹvO}́A܂ɂꂪ
łȂĂ肵܂B

 

9.1. 

́AvZbT̃[hTCYɉāA[hA̓[h̃y
Aɂĕ\Ă܂B32 bit }Vł́A[hł{IȐ
̕\PʂƂȂĂ܂B

̌vŹAǐvZƎĂ܂Aۂ͏قȂ܂B
ił́Aʃrbg珇 1,  2,  4 \܂A
̕t́A2 ̕␔ (twos-complement) Ƃ\Lŕ\܂B
ʃrbǵArbg (sign bit) łÃrbggĕ̒l
܂BāAׂ̐͂āA̐̃rbgSt]
āA 1 邱Ƃŕϊ\łB 32 bit }VŐ̒l̕
A-2^31  2^31 -1 (ŁA^ ̋ĹẢׂZq\A2^3 =
8 ł) ܂łȂ̂́Â߂łB32 bit ڂ̃rbǵAp
ɎĝłB

Rs[^̂Ȃɂ́AȂZ (unsigned arithmetic) ł
̂܂B̏ꍇ́A[Ɛ̐gʏ̓iZ
Ȃ܂B

啔̃vZbTRs[^̂́A_
(floating-point) ł̏\ł(̋@\́Aŋ߂(PC p)vZb
T`bvȂAׂĂɑgݍ܂Ă܂)B_gƁA
L͈͂̒lƂł邾łȂA\ł悤ɂ
܂B_vZ@́AlXȎނ܂A
ɂ͂ƕĜłA܂ɌƁAuȊw
Iȕ\L@vƂ́AȂ킿 1.234 * 10^23 ̂悤ȕ\L@Ɣ
ɂ悭Ă܂BR[fBOۂ́A (mantissa) (Ȃ킿
1.234) ƁA10 ̃xLƂĂ̎w (Ȃ킿 23) Ƃɕ܂B
(܂Ał̉́A_ȉ 3 ̂ŁȀꍇ̌vZ
́A̐̂Ƃ 0  20 t킯łB)

 

9.2. 

́AʏAASCII (American Standard Code for Information
Interchange) ƌĂ΂R[fBOɂ 7 bit ̕тƂĕ\
܂B݂̃}Vł́A128  ASCII ̂ꂼꂪAINebg
(octet)  8-bit ̃oCg (byte) ̉ 7 bit gĕ\Ă
܂BINebǵÃ[hPʂɂ܂Ƃ߂̂ŁAƂ 6 
̏̕ꍇAƂ 2 [h̏ꏊ܂B
ASCII ̃R[h\ɂ́AUnix vvg `man 7 ascii' Ƒ
ĂB

Ƃ͂AL̒íAӂ̓_Ō܂B܂A
Ƃڂ́AׂƂłAINebgƂpłB́A
ɂ͊ԈĂ͂܂񂪁Aۂɂ͂قƂǎgĂ܂B啔̐l
́AINebgoCg(byte) ƌĂсAoCg 8 bit łƍlĂ
܂BɂƁAoCgƂṕAƈʓIȈӖĂ
BƂ΁AȑO 36-bit }V 9-bit oCgƂȂ
Ă̂ł(g͌ĂȂȂƂ͎v̂ł)B

ӂڂ̂dvȖ́ASE ASCII gĂ킯ł͂
ƂƂłBA̍ł́AASCII gĂ܂BASCII 
AAJp̏ꍇɂ͖Ȃ̂łǍ̗p҂KvƂ
ANZgt̕ȋL̕t̑Ă邩
BppłA|hLĂ邱ƂAASCII ł͖
Ă܂̂łB

̖悤Ƃ鎎݂́AߋɂȂĂ܂B
ׂ͂āAASCII ł͎gĂȂŏ bit gƂ̂łA
ɂ 256 ZbgЂƂĂ܂Ƃ̂łA
̂AƂLpĂ̂ Latin-1 ƌĂ΂̂ł
(ɂ́AISO 8859-1 ƌĂ΂Ă܂)B́A Linux, HTML  X
ł̃ftHg̕ZbgƂȂĂ܂B Microsoft Windows ́A
Latin-1 ɎA Latin-1 ł͗jIȗR󗓂ƂĂ
ӏɍE̓dpLȂǂǉĂ܂B(ꂪAguN
ɂȂĂƂ̉́Ademoroniser <http://
www.fourmilab.ch/webtools/demoroniser/> ̃y[W䗗B)

Latin-1 ́ApAtXAhCcAXyCAC^AAI
_AmEF[AXEF[fAf}[NƂ[bp
̂łBALatin-1 ́AǂЂƂ̌ɂĂ
̂䂭oł͂Ȃ߂ɁǍʂƂāALatin-2  Latin-9 ܂ł̈
A̕Zbg܂AgāAMVAArAAwu
CAGXygAZrAENA`AȂǂĂ܂Bڂ
́AISO alphabet soup <http://www.utia.cas.cz/user_data/vs/documents/
ISO-8859-X-charsets.html> ̃y[W䗗B

ɂ̉􂪁AUnicode (сȂoq̌Zł ISO/IEC 10646-1:
1993) ƌĂ΂cȕWKiłBUnicode ́A` 256 ӏɂ
 Latin-1 Ƃ܂łBȍ~ 16 bit Ԃɂ́AMVAL
AAjAAwuCAArAAf@i[K[(󒍁FTXN
bgEqfB[̑܂ތCh)AxKAOL[(
FpWun̕)AOW[gAI[(󒍁FCh Orissa
B)A^~AgDOAJi_(󒍁FCh Mysore B)A}[i
(󒍁FCh쐼)A^CAIXAOWAA`xbgA{A
̃nOSŁAE{E؍̕\ӕ () ̓ZbgƂ
R[h܂܂Ă܂Bڂ́A Unicode z[y[W <http:/
/www.unicode.org/> 䗗B

 

10. Rs[^͂ǂ̂悤ɃfBXNɏۑ̂?

Unix ̃n[hfBXNɂ́A낢ȖOfBNgt@C
KwIɕł̂mƎv܂Bʏ͂ȏ[T
Kv͂Ȃ̂łAfBXNNbVē̃t@CȂƂ
Kvꍇɂ́A̐ʉŉNĂ̂m
Ă邱Ƃ͔ɗLvɂȂ܂BcOȂAfBXN̎dg݂ɂ
iڂɂĂt@C̃xiXڂ悤ȕ₷
@Ȃ̂ŁAł́An[hEFAx̐n߂āA傶
ɓIȑ̕ɘbĂ悤ɂƎv܂B

 

10.1. ჌xł̃fBXNƃt@CVXe\

fBXN̕\ʂƂ́Af[^ێꏊȂ킯łÁA_
[c̓Î悤Ɋ̍\ɕĂ܂BS~̃gbN
{ĂāÂ̂̂ApC؂蕪Ƃ̂悤ɃZ
N^ɕĂ܂BfBXN̊Oɋ߂gbN̂ق̃Xs
hɋ߂gbN̈悪L̂ŁAÕgbŃÃg
bÑZN^ɕĂ܂BX̃ZN^ (́Af
BXNubN (disk block) Ƃ܂) ́ATCYƂȂĂ܂
B́A݂ Unix n OS ł́AʓIɂ́A1 oCi k (1024 8-bit
[h) ƂȂĂ܂Bꂼ̃fBXNubNɂ́AŗL̃AhX
AƃfBXNubNԍ(disk block number) tĂ
B

Unix ́AfBXNfBXNp[eBV (disk partition) ւƕ
BX̃p[eBV́AAfBXNubN琬̃fB
XN̈łAp[eBV́Ãp[eBVƂ͑S
̈ƂāAt@CVXeXbvXy[XƂĈ܂B
p[eBV𕪊ƂƂ̗ŔA܂fBXÑANZXx
肸ƒxAG[ɂāAfBXNNbVɑ
邽߂łBep[eBV̊ԂɋE݂邱ƂɂāAfB
XN̈ꕔA̒Ƀ_ɔsǌɂāAANZXł
ȂȂAj󂳂ꂽ肷\yĂ̂łB݁Ap[e
BV́Adv𑝂Ă܂BȂ킿A (ӂN
҂dvȃVXet@CĂ܂Ƃh~邽߂) 
̃p[eBVǂݏopɂA̕ł͐GȂ悤Ȋe
̎iɂāAlbg[NzɋL\ɐݒ肵ł邩łB
łႢԍtp[eBV́AĂAu[gp[eBV
(boot partition) ƂēʂȈ󂯂܂Bu[gp[eBVƂ́A
NׂJ[luƂłp[eBV̂ƂłB

X̃p[eBV́A(z邽߂ɗp) Xbv
Xy[X (swap space) At@Cێ邽߂ɗpt@CV
Xe ( file system) ̂ǂ炩łBXbvXy[X̃p[eBV
́AAÃfBXNubNƂĈ܂BƂ͈قȂA
t@CVXeɂ́At@CfBXNubNɑΉtdg݂
KvłBt@C͎Ԃ̌o߂ƂƂɃTCY蒆gς
肷̂ŁAt@C̃f[^ubNƂ̂́AAĕł킯
ł͂ȂAYp[eBVŜɎU΂Ă邱Ƃ悭܂
(Iy[eBOVXéAgpłȂfBXNubNꂪp[e
BV̂ǂɂ邩ɂ͊֌WȂg悤ɏoĂ邩ł)B
悤ɃfBXNubNeɎU΂ꍇ̏Ǐ̓tOe[V
 (fragmentation) ƌĂ΂Ă܂B

 

10.2. t@CƃfBNg

et@CVXeł́At@CƃfBXNubNƂ̑Ή֌ẂA
i-node ƌĂ΂\ (structure) }ɂďĂ܂B
Ɋւ́At@CVXe̐擪 (Ȕԍ̃fBX
NubNQ) ɕۑĂ܂(ۂɍŏ̔ԍfBXNubN
Q́Ał͐͂܂񂪁A̐ƃxO̖ړIŗp
܂)BЂƂ i-node ЂƂ̃t@C̏Lq悤ɂȂĂ
܂B(fBNg܂) t@C̃f[^ubŃAi-node 
̗̈ (傫ȔԍfBXNubN)ɒuĂ܂B

X i-node ɂ́AKꂪLqt@CɑfBXNubN
̔ԍ̃Xg܂܂Ă܂B(́Aۂɂ͏ȃt@C̏ꍇ
Ă͂ȂȂ̂łAOɊւڍׂ͂ł͏dvĂ
܂B) ӂĂق̂́Ai-node ɂ́At@CɂĂ̏͊
܂ȂƂƂłB

t@ĆAfBNg\ (directory structure) ̂Ȃɂ܂
BȂ킿AfBNg\̂At@C i-node ɑΉtĂ
킯łB Unix ł́AЂƂ̃t@Cȃt@C𕡐
\ɂȂĂ(́An[hN (hard links) Ƃ܂) ̂
Â߂łB͕̃fBNgGgłAS
i-node |CgĂ܂B

 

10.3. }Eg|Cg

łPȍ\ł́AUnix t@CVXȇŜ́AЂƂ̃fBX
Np[eBVɊi[邱Ƃł܂B\Ȍlp
Unix VXełɂȂ邱ƂƂĂA̍\͈ʓIȂ̂
Ƃ͂܂BނÃfBXNp[eBVɂ܂č\
̂ʂłB䂦AƂ΁Aȃp[eBVɃJ[
luāA傫߂̃p[eBV OS ̃[eBeBuA
ɔɑ傫ȃp[eBV[Ũz[fBNgɂƂ
\l܂B

VXe̋NɃANZXp[eBV́A[gp[eBV
(root partition) łBN̍ۂ́A(قځAK)N
ꏊłBɂ́At@CVXẽ[gfBNgA
ׂ̂Ă̋N_ƂȂŏʂ̊Kw(top node)łB

̃p[eBVt@CVXeŜւ̃ANZX\ɂ
ɂ́At@CVXeɂ邻ȊÕp[eBVÃ[gp
[eBVɕtĂȂ΂Ȃ܂BNvZX̂
قǂŁAUnix ͂[gȊÕp[eBVANZX\ɂ
B̍ہAUnix ́Ap[eBV̂̂̂A[gp[eB
VɂfBNgɃ}Eg(mount) ܂B

Ƃ΁A/usr ƂfBNg Unix ɂꍇA炭̓}
Eg|CgłACXg[ꂽvÔAVXe̋N
ɕKv̂Ȃ̂uĂp[eBV}EgꏊɂȂ
Ă͂łB

 

10.4. t@C̖₢킹̎dg

܂ł̐ŁA㕔\牺\𒭂߂鏀ł܂Bǎ҂
t@CJƂ (Ƃ΁A/home/esr/WWW/ldp/fundamentals.sgml Ƃ
OƂ܂)Aۂ͎̓̂悤ɂȂĂ܂B

J[ĺA܂ ([gp[eBVɂ) Unix t@CVXẽ
[gfBNg猟Jn܂BJ[ĺA[gfBNg
'home' ƌĂ΂fBNgT܂BĂA'home' ́A[gp
[eBVƂ͕ʂ́Aȃ[Up[eBṼ}Eg|Cgł
̂ŁAJ[l͂̃p[eBVɈړ܂B̃[Up[eBV
̍ŏw̃fBNg\̂̒ŁAJ[l 'esr' ƌĂ΂G
gTA i-node ԍ𒊏o܂BJ[l i-node ̂
ꏊɍsƁAɊ֘Atꂽt@C̃f[^ubNfBNg
\̂ɂȂĂ邱ƂɋCtA䂦 'WWW' T܂B
A i-node 𒊏oAx́A i-node ɊYTufBN
gɍsāA'ldp' T܂B́Aɕʂ̃fBNg i-node
ւƃJ[l𓱂܂B̃fBNgJƁA
'fundamentals.sgml' t@C i-node ԍ܂B i-node 
fBNgł͂ȂÃt@CɊ֘AtꂽfBXNubÑ
XgێĂ܂B

 

10.5. t@C̏LҁAp[~bVAZLeB

vOÂ⑼l̈ӂsׂɂāA{ANZXłȂ
̃f[^̈ɐN̂h߂ɁAUnix ɂ́Ap[~bV
(permission) Ƃ@\܂B̋@\͂ƂƁÂ܂ Unix 
ɍȃ~jRs[^Ƃđ吨ŋLėpĂA}V
̃̕[U݂ɊȂ悤ɂ邱ƂŁAT|
[g邽߂ɐ݌v܂B

 t@C̃p[~bV𗝉ɂ́AOCƂɉN
?̃ZNVɂ[UƃO[v̐voKv܂B
X̃t@Cɂ́AL郆[UƃO[vƂ܂B
́Ãt@C̍쐬҂̃[UO[vt܂A
chown (1)  chgrp (1) ƂvOgĂύX邱Ƃ
܂B

t@CɊ֌Wt{Iȃp[~bVɂ́A`read' (f
[^ǂݏoƂ)A`write' (ύX邱Ƃł錠)A
 `execute' (vOƂĎs邱Ƃł錠)Ƃ
̂܂BāAX̃t@ĆAp[~bṼZbg
OĂ܂BЂƂ́At@CLҗpɁAЂƂ͏LO
[vɑS[UpɁAĎOڂ͂ȊÔׂĂ̐lp̂̂
B[UOCɎ擾u (privilege)vƂ̂́At@C
̃p[~bVrbgĂ͈͂ł̓ǂ݁EEsƂ
܂BȂ킿A[Ũ[U ID At@Cɕtꂽ ID ƈv
ꍇ́A͈̔͂ł̌擾AO[vvꍇ́A
ł̌AђNANZXłt@C̏ꍇ́AŋK肳ꂽ
擾邱ƂɂȂ܂B

̃p[~bV݂ɂǂĂ̂AUnix łǂ̂
ɕ\̂m邽߂ɁAɈȉ̂悤 Unix VXe
āÃt@C̈ꗗĂ݂܂傤BƂ΁Â悤ɕ\
Ƃ܂B


snark:~$ ls -l notes                                                
-rw-r--r--   1 esr      users         2993 Jun 17 11:00 notes       


L͒ʏ̃f[^t@CłB̕\番邱Ƃ́Ãt@C
́A[U `esr' L̂łALO[v `users' ɑ
̂Ƃč쐬ꂽƂƂłBŗƂċ}Vł́Aʏ
̃[Uׂ͂ẴO[vɑ悤AftHgŐݒ肳Ă
ł傤B^CVFAO}Vł悭邻ȊÕO[v
ɂ́A`stuff'  `admin' A `wheel'Ȃǂ܂(R͂ɂȂ
v܂Al[Up̃[NXe[V PC ł́AO[v͂
قǏdvł͂܂)Bǎ҂ Unix ł́AftHgňႤO[v
gpĂ邩܂B炭Aǎ҂̃[U ID Ƃɂ
āAOtĂ邱Ƃł傤B

 "-rw-r--r-" Ƃ̂́At@C̃p[~bVrbg\Ă
܂B擪̃_bV(-)́AfBNgrbg\ʒułB
̃t@CfBNgłȂAɂ "d" ƕ\܂B
ȍ~̈ʒuɂẮAŏ̎O[Up[~bVA̎OO
[vp[~bVǍ̎OȊO̐l̂߂̃p[~bV(
́A"world" permission ƂĂ΂Ă܂)łB̃t@C̏ꍇA
L "esr" ́At@C̓ǂݏoE݂łA"users"O[v
鏊L҈ȊO̐l̓t@C̓ǂݏoAёS[Ut@C̓
ݏoo悤ɂȂĂ܂B́Aʏ̃f[^t@CƂĔ
ɓT^Iȃp[~bV̐ݒłB

ɁALƂ͂ȂقȂp[~bVݒ肳ꂽt@CĂ
܂傤B̃t@ĆAGCC, Ȃ킿AGNU C RpCłB


snark:~$ ls -l /usr/bin/gcc                                         
-rwxr-xr-x   3 root     bin         64796 Mar 21 16:41 /usr/bin/gcc 


Lt@ĆA"root" Ƃ[UɑA"bin" ƂO[vɏ
Ă܂B܂A(ύX) "root" ł܂񂪁AǂݏoƎ
s͒Nł悤ɂȂĂ܂Bݒ́AvCXg[
ĂVXeR}hɂ悭鏊L`Ԃуp[~bVݒł
B"bin" ƂO[v́AUnix ŃVXeR}hO[v̂
gꂽ肵܂(̖̂͗jIȖcłA"binary" ̏ȗ`ł)B
ǎ҂ Unix ł́A "root" ƂO[vgĂ邩܂
(́A "root" [UƂ̂Ƃ͂ƈႢ܂)B

"root" [UƂ̂́A[U ID ԍ 0 ̃[ŮpIȖ̂łB
́AׂĂ̌ݒ𒴉zAʂIȃAJEgłB
root ł̃ANZX́A֗ł͂܂A댯ł܂Broot ŃO
CĂԂɃ^Cv~XƁAʏ̃[UAJEg瓯R}
hsꍇɂ͐G邱ƂłȂ悤ȏdvȃVXet@C
j󂵂Ă܂Ƃ邩łB

root AJEg͔ɃptȂ̂ŁAroot ւ̃ANZX͐TdɃK[h
Ȃ΂Ȃ܂Broot ̃pX[h́AVXẽZLeB
Ă͍ŏdvڂłAl̃VXe_NbJ[N҂
擾悤Ɩژ_ނ̂A root pX[hłB

pX[h́Aď߂肵Ă͂܂B܂A{[Cth
K[thAz҂̖Ô悤ȁAȒPɐ悤ȃpX[
hI񂾂ȂłB́AقǍLĂ鈫Ȃ
ANbJ[ɂ܂ł݂悤Ȃ̂łBʂɁAɍڂ
Ă悤ȒPIł͂܂Bdictionary crackers ƌĂ΂v
OA͈ʓIȒP̈ꗗgāAŃpX[hT
Ă̂łBȂeNjbN̂ЂƂƂāAPƐƂ
Ƃ̒P̑gݍ킹Ƃ̂܂B"shark6cider"  "jump3joy"
Ƃ̂łBꂾƁAdictionary crack ̌ԂɂȂ̂
A͓̂Ȃł傤BAɋ̂܂܎g
Ƃ͂~߂BNbJ[͂̕ǂ񂾂ƂŁAL̃pX[
hłɌ̂ȂɒǉĂ邩ȂłB

ł́AÕP[XĂ݂܂傤B


snark:~$ ls -ld ~                                                   
drwxr-xr-x  89 esr      users          9216 Jun 27 11:29 /home2/esr 
snark:~$                                                            


L̃t@C̓fBNgł("d" Ƃp[~bV̍ŏ
ʒuɂ邱ƂɒӂĂ)B́Aesr ݂̂݌
ANłǂݏoƎsłƂƂƎv܂B

ǂݏõp[~bV̂ŁÃfBNgɉ̂\
邱Ƃ\ɂȂĂ܂BȂ킿ÃfBNgɊ܂܂t
@CfBNg̈ꗗ邱ƂłƂƂłB
p[~bVƁÃfBNgɃt@C쐬A폜
肷邱Ƃł܂BfBNgɂ́At@CƃTufBNg
̖̂̈ꗗ܂܂ĂƂ̂voȂA[ɂ͔[
Ǝv܂B

fBNg̎sp[~bVƂ̂́ÃfBNgoR
ȉ̊Kwɂt@CfBNgJƂłƂ
ӖĂ܂Bۂɂ́ÁAfBNg i-node ɃANZX
p[~bV^Ă܂BfBNgsSO
܂ƁÃfBNggȂȂĂ܂܂B

s͑SĂ̐lɗ^邪ǂݏo͐ĂfBNgƂ
̂Ƃǂ䗗ɂȂƎv܂B́Aǂ̂悤ȃ[Uł̃f
BNgȉɂt@CfBNgɓB邱Ƃł̂
A̐mȖOĂꍇłȂƂ߂ƂƂӖ
(܂AfBNgꗗ\邱ƂłȂ킯ł)B

fBNg̓ǂݏoE݁Es̃p[~bV́ÃfB
Ngȉɂt@CfBNg̃p[~bVƂ͓Ɨ̖
łƂƂoĂĂBɁAfBNg̏݃p
[~bVƂ̂́AɐVK̃t@C쐬Ãt@C
폜ł錠Ӗ̂łAɂ̃t@C
ւ̏݌Iɗ^̂ł͂܂B

ŌɁAOCvỖp[~bVĂ݂܂傤B


snark:~$ ls -l /bin/login                                           
-rwsr-xr-x   1 root     bin         20164 Apr 17 12:57 /bin/login   


 ́AVXeR}hɂ悭p[~bVłBA
's' ƂALҎs bit (owner-execute bit) ̐ݒƂ̂͗OI
B́A'set-user-id'  setuid bit ƌĂ΂ʂȃp[~b
V\Ă܂B

setuid bit Ƃ̂́AʂɁAȃvOɑ΂ĕt^p[~
bVłBȂ킿Aroot ̌A̐tňʃ[Uɂ^
Kv̂vOɊY܂Bsetuid bit svO
ɃZbgꂽꍇA[ÚÃvOt@C̏L҂Ɠ
sgł悤ɂȂ̂łAŁA[ȔL҂ł邩ۂ
Ɋւ炸ÃvO̓[Ug̖ŎsƂ̂łB

root AJEĝƓlAsetuid ꂽvO֗ł͂܂
A댯ł root L҂ł setuid ꂽvOj󂵂ύX
łЂƂȂ炾łÃvOg root 
VFN邱Ƃł邩łB䂦A啔 Unix VXe
ł́Aނ߂ɂ̃t@CJ_ŁA setuid bit 
IɖɂȂ悤ɂȂĂ܂BUnix ZLeBɑ΂Ȗ
Asetuid vOj󂷂邽߂ɁAsetuid vÕoOp
ƂĂ܂BāAZLeBӎĂVXeǗ
́AvOɓɐTdɂȂĂāAo΂(oO
ĂȂ)vO̓CXg[܂B

܂Ńp[~bVɂĉƂ̏ڍׂɊւāAdv
ȂƂ܂BȂ킿ALO[vƃp[~bV́Ãt@C
쐬ꂽۂɂǂ̂悤ȕ@Ŋ蓖Ă̂ƂƂłB
[Ũ͕O[ṽo[ƂȂ邱Ƃł̂ŁÃO[v̊
蓖Ă͖ł͂̂łÂЂƂ́A(/etc/passwd t@Ĉ
̃[ŨGgŎw肳Ă)[ŨftHgO[v (default
group) 蓖ĂA[Uɂč쐬ꂽt@ĆAʏ킻̃O
[vL邱ƂɂȂ܂B

p[~bV bit ̐擪 bit ̘b́AGłBȂ炩̃t
@C̍쐬𔺂vÓAʏÃt@C̏ݒƂẴp
[~bVw肵܂BÁA umask ƌĂ΂郆[Ů
ϐɂĕύXĂ܂܂B umask ́At@C쐬ۂɂ
̃p[~bV bit 𖳌ɂ邩w肷̂łBłʓIȒl
AẴVXẽftHgƂȂĂ̂́A------w- 
́A 002 łB́ANł݂oƂ𖳌ɂ
łBɊւڂ́Aǎ҂ shell  man y[Wɂ umask
R}hɊւ镶䗗B

fBNgO[v̏ݒƂ̂A╡GłBUnix ̂Ȃɂ
AVKfBNg̃O[vɂ́A쐬[ŨftHgO
[v𓖂Ă̂܂(́ASystem V n̊Kł)BȊOɂ
A쐬ꂽfBNg̐efBNg̏LO[v蓖Ă
̂܂(́ABSD ̊Kł)BLinux ܂ތ݂ Unix ̂Ȃ
ɂ́A set-group-ID ̃fBNgɐݒ肷(chmod g+s)Ƃɂ
A҂̂悤ɓ삷悤ݒł̂܂B

 

10.6. qƂ̂͂ǂƂȂ̂

ȑOAt@CVXe͔ɑ@ׂłƂƂ𔙑RƂ܂
A܂̎_ł́At@CɓBɂ́AfBNg i-node Q
ȂAǂꂾȂAHĂȂ΂ȂȂƂ
ƂĂƎv܂Bł́An[hfBXNɕsǉӏ
ꍇA͂ǂȂł傤?

K^Ɍb܂΁At@Cf[^̂_ɂ邾ōς݂܂B
łȂꍇ́AfBNg\ i-node ԍj󂵂Ă܂āAV
Xe̓̃Tuc[ȉ߉ނɂȂĂ܂܂B
ɁAt@C\̂Ă܂āAGȃANZX̃fBXN
ubN i-node ɏWĂ܂肷邩܂Bs
́Aʏ̑𑱂ĂƁAǂǂLĂāAŏ̕sǉӏ
ɂf[^VXeŜɂ΂TĂ܂܂B

KɂA̎̋̂́AfBXÑn[hEFA̐M܂
ƂŁAقƂǐȂȂ܂AłA͂AUnix ł́A
IɃt@CVXe̐`FbNsȂāAُ킪ȂƂm
FKv܂B݂ Unix ́AX̃p[eBVɑ΂āA
Ñ}EgOɂ΂₭̃`FbNs悤ɂȂĂ܂
B񂩂Ɉx́AԂ銮Sȃ`FbNsȂdg݂ɂ
Ă܂B

ƂǂŁAUnix ͋낵GŕsN₷̂悤
vȂAlĂB̋Ñ`FbŃAʏ͂悭
悤ȖoECāAꂪ{̑Sɂ̂hł
̂łB@\Ȃ̃Iy[eBOVXȅꍇAm
ɋN͍ɂȂ܂AۂɎ蓮ŕȂ΂ȂȂȂ
́A肪Ă܂Đ[ȏԂɂȂĂ邱Ƃ܂(Ƃ͂
ÁA Norton Utility ɗނc[Ăꍇ
ł...jB

ŋ߂ Unix ̐݌ṽgĥЂƂɁA journalling file systems 
܂B́AfBXNƂ̂𒲐邱ƂŁAɐ
邱Ƃۏ؂AVXeNƂɕ\ɂȂ悤ɂ
dg݂łB́AN̐`FbNȂ荂邱Ƃł
܂B

 

11. Rs[^͂ǂ̂悤Ȏdg݂œĂ̂

vOsdg݂ɂẮAłɐ܂Bv
ÓAŏIIɁAÃoCgAȂ킿Rs[^̃}V
(machine language) ŕ\ꂽ߂ƂĎsȂ΂Ȃ܂B
AlԂ́A}V͏肭܂BƂ͂
ɂ߂ċHɂȂAnbJ[̊ԂłpĂ܂B

J[l̂̓ɂn[hEFAC^[tFCX𒼐ڃT|[g
ʂ̕ƁAقڑSĂ Unix R[h́Ał́A
(high-level language) ŏĂ܂B(̗ṕuvƂ
́AÂtŁAuᐅṽAZu (assembler languages 
ʂӖŎgp̂łBAZuƂ́A{IɃ}V
኱Ղ悤Ȍ̂Ƃł)B

ɂ́A낢Ȏނ܂BvOɂ
Ębۂ́AvÕ\[XR[h (source code) (Ȃ킿AlԂ
̂ŁAύX\ȃR[h) ́A炩̕ϊo邱ƂŁA}
VۂɎsł}VR[hɕϊKv̂Ƃ
𐥔񓪂̕ЋŊoĂĂB

 

11.1. RpC^̌

Rs[^̒ōł`IȂ̂ARpC^ (compiled
language) łBRpC^́A̖̒ʂRpC (compiler)
ƌĂ΂ʂȃvOɂāAst@CłoCi`̃}
VR[hւƕϊ܂BUoCiƁAēx\[Xt@
CQƂƂAڂ̃oCis邱Ƃł܂B(啔
\tgEFÁARpCꂽoCi`ŔzzǍɂȂ
R[h邱Ƃ͂łȂ̂ʂłB)

RpC^́AptH[}XɗDAOS \[Xւ̃ANZXł
悭sƂł܂AvÔƂX
܂B

C ́AUnix LqĂ錾łA(̔hł C++ ƂƂ
) RpĈȂň|IȏdvĂ܂BFORTRAN ܂
RpC^̌łA܂łGWjAȊw҂̊Ԃł͗p
܂A C ÂAȂ̂łBUnix ̐Eł́AȊÕR
pĆACXg[ƂĂ͗pĂ܂BȊO
́ACOBOL AZrWlXp\tgEFAƂčLpĂ܂B

ȑÓA낢ȃRpC^ꂪ܂AقƂǂ͂ꂽ
Ap̃c[ƂĂgȂȂĂ܂Bǎ҂RpC
gVl Unix J҂ȂAgp C  C++ ł邱ƂقƂ
łB

 

11.2. C^v^^

C^vg^ (interpreted language) Ƃ́A\[X߂vO
 (interpreter program) KvƂ錾łB̃vOAs
̍ۂ̃\[XR[hǂݍŁAZVXeR[\Ȍ`ɕ
dg݂ɂȂĂ܂B̏ꍇAR[hs邽тɁA( \[
X߂vONāA) \[XR[h̕ϊsȂ
΂Ȃ܂B

C^v^^́ARpC^sxxAKw
Iy[eBOVXen[hEFAւ̃ANZX邱
̌X܂B̔ʁARpC^ɔׂăvO
eՂŁAR[hɃG[Ă[ȎԂɂȂɂ肵܂B

VF bc(1), sed(1), awk(1) ܂ޑ Unix [eBeB́A
菬^̃C^v^^łBBASIC ʏ̓C^v^^łA
Tcl łBjIɌāAłdvȃC^v^^́ALISP ł
(̊J҂ɂA啝ȉPقǂĂ܂)B݂
́AEmacs GfB^ŎgpłVF LISP A炭łdvȏ
C^v^^łƎv܂B

 

11.3. P-code 

1990 NȗARpCƃC^v^̗g̃nCubh
݂̑dvɂȂĂĂ܂BP-code Ƃ̂́A\[XR[hR
pNgȃoCiR[hɕϊāAꂪۂɎsƂ_
̓RpC^ƎĂ܂AϊꂽR[ȟ`Ԃ}VR[h
ł͂ȂƂ_ňقȂ܂B́A^R[h (pseudocode) (
p-code) łA͎ۂ̃}VR[hVvptȂ
̂łBvO̎sɂ́A p-code  (C^v^ɂ) 
܂B

p-code ́ARpC^̃oCiƂقړ炢̎sx
 (P^ŁAXs[fB p-code C^[v^쐬邱Ƃ
ł邩ł)B܂Ap-code ́A_ptȃC^v^^
̒ێĂ킯łB

dv p-code ƂẮAPython, Perl,  Java ܂B

 

12. C^[lbg͂ǂ̂悤Ȏdg݂œĂ̂

C^[lbgǂ̂悤Ȏdg݂œĂ̂₷邽߂
Ał́AT^IȃC^[lbg̑AȂ킿ALinux Documentation
Project ̃EFuy[Wɂ邱̍̕ŏ̃y[WuEUŃN
bNꍇɁAǂ̂悤ȂƂNĂ̂Tς܂傤BႦ
΁Ȁ͎̕ꏊɂ܂B


http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html 


ĹALDP/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html Ƃ
t@C www.linuxdoc.org ƂzXg World Wide Web ɂĂ
JfBNgɒuĂƂƂӖ܂B

 

12.1. OƏꏊ

uEU܂߂ɂȂ΂ȂȂƂ́A̕uꂽ}V
Ƃ̊ԂɃlbg[NRlNVm邱ƂłBɂ́A
ɁÃzXg (host) ł www.linuxdoc.org ̂lbg[N
ꏊTKv܂(ŁuzXgvƂ́AuzXg}VvA
́ulbg[NzXgv̗łB www.linuxdoc.org ƂÓA
ʓIȃzXg (hostname) ł)BʐM̍ۂ̏ꏊ̎ẃAۂɂ́A
IP AhX (IP address) ƌĂ΂ԍgp܂(IP AhXƂ
p IP ̕ɂẮAقǐ܂)B

IP AhXmɂ́AuEU̓l[T[o (name server) ƌĂ΂
vOɖ₢킹܂Bl[T[õ͎}VɂĂ
悢̂łAĂ̏ꍇ͐p̃}VœĂ̂ŁAɖ
킹𑗂邱ƂɂȂĂ܂BISP ƌ_񂵂ƂÃZbgAbv
菇̂ȂŁAISP ̃lbg[Nɂl[T[o IP AhXA
莝̃C^[lbg\tgEFAɎwƂ菇Ɗ܂܂
͂łB

قȂ}Vœl[T[óA݂ɒʐMAzXg (
Ȃ킿AzXg IP AhXɕϊ鏈) ɕKvȂׂĂ̏
A˂ɍŐV̏ԂɕۂĂ܂Bl[T[óA
www.linuxdoc.org ƂzXg̉ߒŎOxlxlbg[N
݂鑼̃TCgɖ₢킹܂A͒ʏɍɍs
܂(bȉł)Bl[T[ȍڍׂɂẮA͂ŊTς܂B

l[T[o̓uEUɑ΂āAwww.linuxdoc.org  IP AhX
152.19.254.81 ł邱Ƃ܂Bm邱ƂɂāAǎ҂̃}V
́Awww.linuxdoc.org Ƃ̊ԂŒڏł悤ɂȂ܂B

 

12.2. hCl[VXe (domain name system)

vOƃf[^x[XAgăzXg IP AhXɕϊd
gݑŜ́ADNS (Domain Name System) ƌĂ΂Ă܂B"DNS T[o" 
ĂԏꍇA͒PɁul[T[ovƌĂԂ̂ƓӖŎg܂B
ł́ÃVXeŜ̎dg݂ɂĐ܂B

C^[lbg̃zXǵAhbgŋ؂ꂽ̕\
Ă܂BhC (domain) Ƃ́AzXg̖ł}V
̏ŴƂłBhĆÃhC̓ɂ݂邱Ƃ
܂BƂ΁Awww.linuxdoc.org Ƃ}V́A .org ƂhC
̒ .linuxdoc.org ƂTuhCɑ݂Ă܂B

X̃hĆÃhC̑SẴ}V IP AhXL
錠Ђl[T[o (authoritative name server) ɂċK
܂BЂ(́uvC}v) l[T[óȀɔăo
bNAbvĂ邱Ƃ܂BZJ_l[T[o (secondary
name server) (́AZJ_ DNS) ƂLqꍇA͂
obNAbvzXĝƂĂ킯łBZJ_
T[oQ́AʏAvC}T[o琔ԂƂɏ󂯎čXV
Ă̂ŁAvC}T[oŃzXg IP Ƃ̑Ή֌WɕύX
ꂽꍇ́AIɂꂪZJ_ɂ`悤ɂȂĂ
܂B

͔̎ɏdvłBȂ킿AhC̃l[T[óA
hC(сA玩g̃TuhC)ɂ邷ׂẴ}V̈ʒu
mKv͂ȂƂƂłBl[T[omȂ΂ȂȂ̂́A
̃l[T[öʒułBقǂ̗ł́A.org hČЂ
l[T[óA.linuxdoc.org ̌Ђl[T[o IP AhXm
Ă܂Alinuxdoc.org ɂ邻ȊÕ}ṼAhXɂĂ
m܂B

DNS VXẽhĆA؂t܂ɂ悤ȊKw\悤
z񂳂Ă܂B_ɂ̂́A[gT[ołBׂẴl[T[
óA[gT[o IP AhXmĂ܂B[gT[o IP Ah
X́ADNS \tgEFAɑgݍ܂Ă邩łB̃[gT[
óA .com  .org ƂgbvxhCɊւl[T[o
IP AhXmĂ܂A̓ɂ}ṼAhX͒m
BX̃gbvxhC̃T[óA̒̃hC̃l[
T[ȍꏊmĂāAȉ֌W܂B

DNS ́AɒӐ[݌vĂāAe}V̖؍\ɊւKv
ŏ̏肷邾łނ悤ɁAāAǏIȃTuc[
̕ύX́Aӏ̌Ђl[T[o̖O IP AhXƂ̃}b
sOύX邾Ŏ{ł悤ɂȂĂ܂B

www.linuxdoc.org  IP AhX₢킹ꍇAۂɂ͎̂悤Ȃ
ƂN܂BɁA̖₢킹󂯂l[T[o(x)A[g
T[oɑ΂āA.org Ɋւl[T[oǂɂ̂悤₢
킹܂BꂪƁA(x )A.org ̃T[oɑ΂
A.linuxdoc.org ̃l[T[oǂɂ̂Ă悤A₢
킹܂B̓ԂĂAx(x )A .linuxdoc.org ̃l
[T[oɑ΂āAwww.linuxdoc.org ƂzXg IP AhX
悤₢킹܂B

Ă̏ꍇAl[T[o͎ۂɏL̂悤Ȗʓ|ȎdKv
܂Bl[T[o͑ʂ̏LbVĂ邩łBO
̉łƂAl[T[o͓肵 IP AhXƂ̑Ή֌W
΂炭̊ԃɕێ܂B߂ẴEFuTCgT[tہAu
zXgTĂ܂vƂuEŨbZ[W\͈̂
ԍŏ̃y[WJꍇł̂́AL̂悤Ȏdg݂ɂȂĂ
邩łBŏIIɂ́AOƃAhXƂ̃}bsO͎Ԑ؂ƂȂA
DNS ̖͂Oēx₢킹Ȃ΂ȂȂȂ܂B̋@\dv
Ȃ̂́AzXgƃAhXƂ̌тύXꂽƂɁAɂ
񂪂܂łז悤ȂƂȂƂƂłBTC
gɊւLbVꂽ IP AhX́ÃzXgɓBłȂȂ
ꍇɂAj܂B

 

12.3. pPbgƃ[^

uEUs悤ƂĂ̂́Awww.linuxdoc.org ̃EFuT[o
΂Ď̂悤ȃR}h𑗐M邱ƂłB


GET /LDP/HOWTO/Fundamentals.html HTTP/1.0                           


ȉŁA̍ۂɉN̂ɂĐ܂BLR}h́ApP
bg(packet) Ƃrbg̉ɕAd̏ꍇ̂悤ɁÂ悤
O̏dvtŃbv܂B̏dvƂ́AM
AhX (source address) (ǎ҂̃}V IP AhX)AĐAhX
(destination address) (́A152.19.254.81)AтꂪEFuɊւ
郊NGXgł邱ƂT[rXԍ (service number) ̓|[
gԍ (port number) (̏ꍇł́A80 )łB

ɁAǎ҂̃}V͂̃pPbg(ISP ⃍[Jlbg[NƂ̃R
lNV) ɑMƁÃpPbg̓[^(router) ƌĂ΂
ȃ}Vɓ͂܂B[^́AC^[lbg̒n}ɋL
܂B͕KSȒn}ł͂܂񂪁Ãlbg[N̎
ӒnɂĂ͊SɋLqĂ̂ŁAC^[lbg̑̎Ӄ[
^Ɏׂ@͗Ă܂B

MpPbǵA̃[^ʉ߂ȂAĐւƓB
B[^͔ɏ肭oĂ܂B[^́ApPbgM|
BmF𑼂̃[^󂯎܂ł̌oߎԂĎĂ܂B܂A
̌oߎԂɊւgāA󂢂Ă郊NɃpPbg𗬂
gtBbN𒲐Ă܂B܂A[^͂̏gpāA
[^P[uŃlbg[NɎxႪۂɁAʂ̃[^T
Ƃŉ\Ȍ薄ߍ킹悤Ƃ܂B

C^[lbg͊j푈ɑς悤ɐ݌vꂽƂ\sŕ
lX̊Ԃł₩Ă܁B͐^ł͂Ȃ̂łAAC
^[lbg̐݌vƂ̂́A̕smȂƂEɂāA
ȂȂn[hEFAłMɑptH[}XoĂ
̋ɂ߂ėDꂽ݌vvẑƂɍ\zĂ܂B̂Ƃ́A܂
̎ɂĂ܂BȂ킿A(dbԂ̂悤)̋ŐƎ
Ȍ@ɏŴł͂ȂÃ[^ɂ̖
𕪎UƂƂłB܂AQ͂܂ŋǒnIȂ̂ɗ܂
ɂȂĂāAlbg[N͂Qă[eBO邱
ł̂łB

pPbgUĐ̃}V܂œBȂÃ}V̓T[rXԍ
gāÃpPbgEFuT[oɓn܂BEFuT[óÃR
}hpPbg̑M IP AhX邱ƂŁAǂɕԓԂ΂悢
̂m邱Ƃł܂BL̗ŁÃEFuT[o̕𑗐M
ۂ́A͂̃pPbgւƕ܂BpPbg̃TCY
Albg[N̓`@T[rX̎ނɂĈقȂ܂B

 

12.4. TCP  IP

ꂽpPbggʐM@̏̂𗝉ɂ́A
C^[lbg͎ۂɂ͂ӂ̃vgRgpĂāA
ɐςݏd˂ĂƂʐM̎dg݂mKv܂B

ʑwł IP (Internet Protocol) ́AMAhX炠ĐAh
XɌʂ̃pPbg𓞒B邽߂̕@͒mĂ܂(炪 IP Ah
XƌĂ΂̂͂̂߂ł)BȂAIP ͐MɌĂ
BpPbgrōssɂȂ肵ĂAMƂĐ
̃}V͌ĂɋCÂȂł傤Blbg[Npł́AIP ̓R
lNVX (connection less) ȃvgRłBM҂̓pPbg
M҂ɑ΂đ邾łAM̊mF͊҂ł܂B

AIP ́AłBł΁AMȂƂ
ȂƂꍇ܂BDoom  Quake lbg[NŃvC
Ƃ́Aeۂ̂ЂƂЂƂ IP pPbgőĂ܂Beۂ2,3
Ă܂ƂĂAɖ͂Ȃ͂łB

ʑw TCP (Transmission Control Protocol) ́AM̂߂̃vgR
łB̃}V݂Ɍ TCP RlNV𒣂 (́AIP
gčs܂)AMMpPbgɂĂ̓BmF𑗐M
ɑ悤ɂȂĂ܂BM莞ԓɂpPbg̑BmF
󂯎Ȃꍇ́ÃpPbgđ܂BɁAḾAX
TCP pPbgɒʂԍUĂ̂ŁAMł͂gāApPb
g̓ꍇłpPbgגƂł悤
ɂȂĂ܂B(́Albg[ŇoHARlNV̍Œɕ
ꍇɂ́A悭N錻ۂłB)

TCP/IP pPbgɂ̓`FbNT (checksum) Ƃ܂܂ĂāAo
HɏQăf[^Ă܂肵ĂȂoł悤
ɂȂĂ܂B (`FbNT́A܂`FbNT̂pPbg
̎c̏񂩂Zo܂BĂƁApPbg̎c̕`
FbNT̂(oH) Ă܂Ăꍇ́A(B)̃pP
bgēx`FbNTZoāAƂ̃`FbNTƔr邱Ƃ
AG[̗LmŌo邱Ƃł킯ł)B䂦A TCP
/IP ƃl[T[oƂ̂́Ag̎_݂ƁAzXgƃT[r
Xԍŋʂꂽ̃zXgԂŃoCgXg[`B@Ƃ
ẮAMɑ̂ƌĂł傤B܂Albg[NvgR
l炷ƁÃlbg[NKwȉŋNĂpPbg
pPbg̍č\AG[`FbNA`FbNŤvZAđƂ
قƂǍlȂĂ悭Ȃ܂B

 

12.5. HTTP : AvP[VvgR̈

ŁAقǂ̗ɖ߂܂傤BEFuuEUƃT[oƂ́AAv
P[VvgR (application protocol) gĉbĂ܂B
́ATCP/IP Kw̏ʂŎsvgRłA TCP/IP oCg
̂Ƃ̎iƂėpĂ̂łBL̗ł̃vgR
A HTTP (Hyper-Text Transfer Protocol) ƌĂ΂̂ŁAŎg
R}ḧႪ GET Ŏn܂镶ł邱Ƃ͊ɂɂȂʂł
B

L GET R}h www.linuxdoc.org ̃EFuT[oɃT[rXԍ 80
ԂœBƁAEFuT[o͂A80 ԃ|[gőҋ@ĂT[of
[ (server daemon) ւƓn܂B啔̃C^[lbgT[rX́A
T[of[ƂĎĂāÁAĂ͂̃R}
hĎAs邽߂ɁÃ|[głЂ҂󂯏Ԃ
Ă܂B

C^[lbg̐݌vɊւ匴ƂȂAׂ͂Ă̕
łVvŐlԂĕ悤Ȍ`ɂƂƂłB
HTTP Ƃ̐e (Simple Mail Transfer Protocol, SMTP ƂAzXgԂ
dq[Ƃ肷邽߂ɎgvgRȂ) ́ALbWE
^[(A)ƃCEtB[h(s)ŏIAlԂǂłӖ
VvȃeLXgR}hgƂX܂B

@́AȂłBɂẮAɌł߂ꂽ
oCivgRgăXs[hAbv}邱Ƃł͂łB
AoƂɂƁAlԂɂƂĐ◝̂₷R}
hgƂ̃bǵAgbL[ŕɂ̂킴킴邱
Ƃœ͂Ȍ̏㏸͂邩ɏ̂Ȃ̂łB

āAT[of[ TCP/IP oRőԂԓeLXg`
Bԓ̍ŏ́̕Â悤Ȃ̂ƂȂ܂(wb_̈ꕔ͏ȗ
܂)B


HTTP/1.1 200 OK                                                     
Date: Sat, 10 Oct 1998 18:43:35 GMT                                 
Server: Apache/1.2.6 Red Hat                                        
Last-Modified: Thu, 27 Aug 1998 17:55:15 GMT                        
Content-Length: 2982                                                
Content-Type: text/html                                             


L̂悤ȃwb_̌ɋsЂƂǍɃEFuy[W̃eLX
g܂(̑MI_ŁARlNVؒf܂)
BuEÚA\邾łBwb_́AuEUɑ΂Ă
\@ŵł (ɁAContent-Type Ƃwb_ł́AԐMf
[^ۂ HTML łƂƂuEUɓ`Ă܂)B

 

13. Əڂm肽l̂߂

Reading List HOWTO <http://www.linuxdoc.org/HOWTO/Reading-List-HOWTO/>
Ƃ܂B͎Ql̈ꗗłAǂ߂΁A{
ŐGꂽgsbNɂĂƏڂwԂƂł܂B How To Become
A Hacker <http://www.tuxedo.org/~esr/faqs/hacker-howto.html> Ƃ
QlɂȂ邩܂B

 

14. {ɂ

݂̃o[ẂAxcωp̖|x[X Linux Japanese FAQ
Project 쐬܂B|Ɋւ邲ӌ JF vWFNg
<JF@linux.or.jp> ɘAĂB

ȉɎ܂B

v1.1j, 15 January 1999
   
    |F xcωp (sim@remus.dti.ne.jp)      
    ZF J (yaz-hase@qb3.so-net.ne.jp)
           m (uv9h-hykw@asahi-net.or.jp)  
           앐Y (nakano@apm.seikei.ac.jp)  
            (akendo@t3.rim.or.jp)        
   
v1.4j, 8 December 1999
   
    XVF P (fujiwara@linux.or.jp)        
    ZF 鐳 (takavoid@palette.plala.or.jp)
   
v2.4j, 15 July 2001
   
    XVF UTi (ysenda@pop01.odn.ne.jp)      
    ZF 鐳 (takavoid@palette.plala.or.jp)
           ɓS (kade@@kadesoft.com)          
           T. Hayashi (smiff@nifty.com)           
   
