.


:




:

































 

 

 

 





1.

2.

3. Newcastle

4.

5.

6. :

7.

IJͲ

, . , , , , . , , uucp, , , , . , , , , , , . UNIX , 䳿, . , , open read , . 1.1. ', , , , ' . ³ , ' : ' , '. Գ ', , , . ֳ . ³, +-----------------------------+ +-----------------------------+| +------------+ | | +------------+ || | | | | | | || +-----+------+ | | +-----+------+ || ----+-------+------+------- | | ----+-------+------+------- || +---+----+ +-------+------+ | | +---+----+ +-------+------+ || | | | | | | | | | | || | | | | | | | | | | || +--------+ +--------------+ +-++-+ +--------+ +--------------+ |+-----------------------------+ ++ +-----------------------------+ | +-------------+---------------+ | +------------+ | | | | | | +-----+------+ | | ----+-------+------+------- | | +---+----+ +-------+------+ | | | | | | | | | | | | | | +--------+ +--------------+ | +-----------------------------+ 1.1. . : * , , ' ( ) . . ֳ UNIX. ; , 쳿, , ' '. * "Newcastle", ' ( "The Newcastle Connection" - . [Brownbridge 82]). ³ ( '), , . , , , , . * "" , , , ; ' . , , , . ; , , . , , , , , , . , , Newcastle "" , ; , , , , .

вͲ

1.2. . , , ' . . , , , ; , . , , , ', ' . ' . ' -, (. [Birrell 84]); , , , ' . - . 볺 , : 볺 , . - 볺. -, 볺. , , -. , , , : getppid, open, write, fork, exit signal. +-----------------------------+ +-----------------------------+| +------------+ | | +------------+ || | | | | | | || +-----+------+ | | +-----+------+ || ----+-------+------+------- | | ----+-------+-------------- || +---+----+ +-------+------+ | | +---+----+ || | | | | | | | | || | | | | | | | | || +--------+ +--------------+ +-++-+ +--------+ |+-----------------------------+ ++ +-----------------------------+ | +-------------+---------------+ | +------------+ | | | | | | +-----+------+ | | ----+-------+-------------- | | +---+----+ | | | | | | | | | | +--------+ | +-----------------------------+ 1.2 , , ' sbrk. , , , , , - ( 1.3). , , - 볺, (, ), . , , (, ' , write). - ; , , , , , ( ), , , , , . , , . ; . +----------------+----------+---------------+--------------------+| | | - | || -| | -|------- ------|| | | | |+----------------+----------+---------------+--------------------+ ³ +------------+-----------+---------+---------------------+ | |-| | | | | | |---- ---| | | | | | | | | | | +------------+-----------+---------+---------------------+ 1.3 getppid , ' , . , , , getppid, . - , , . , '. , , getppid. (, -) ', ' . open, , ' . - , . ' . , , ; , open, , -. 1.4. write, , write, . ' -. - , ' ( ); 䳿 . +--------------------------------------+ +---------------------+| | | || | | || - | | || | | || +--------+| | +---------+ || +-----+ +-----+ +-----+ |- |----------| | || | | | | | | ||| | +---------+ || +-----+ +-----+ +-----+ +-+------+| | || | -+-+ | | ++- -+---+ | | || +-----+ | +-----+ |+-----+ - | | || | | +-+- -+-+| | | | || +-----+ +-----+ +-----+ | | || | | | | | | || +-----+ +-----+ | | || | | | | | | || +-----+ +-----+ | | |+--------------------------------------+ +---------------------+ 1.4. open - , , . read ; ( , ). 򳺿, , , , . , , fork. , -, , . , , fork , . , fork, , , ' . - ( ) , fork; -, , fork. - ' fork; . ' ( ) - . ' 13.5: ' "-", - ' . fork , , . +----------------------+ +----------------------+ | +------------------+ | | +------------------+ | | | -|-------------| - | | | +---------+--------+ | | +------------------+ | | | | | | | | | | | | +---------+--------+ | | +------------------+ | | | -|-------------| - | | | | | | | | | | | +------------------+ | | +------------------+ | +----------------------+ +----------------------+ 1.5. fork : - , ' . . , - fork, , , , . , , - , , , . ' fork 1.6. , - . ³ - . +-------------------------------------------------------+| +-------------------+ +-----------------+ || |-+----------+ -| || +-------------------+ +-----------------+ || - - |+-------------------------------------------------------+- -+----------------------------+ +---------------------------+| - | | - || +------------------------+ | | +----------------------+ || | | | | | | || +------------------------+ | | +----------------------+ |+----------------------------+ +---------------------------+ 1.6. fork , : , , , , , , . - , , 䳿 . , - . ,  exit: -, , , . signal, , , . - , . ( 1.7): , signal , . . +------------------------------------------------------------+| sighandle /* */ || : || : || { || ( || ) || { || ( ) || ; || ( || ) || -; || || || ; || } || /* */ || { || /* || * || */ || -; || } || } || || satellite_end_of_syscall /* - || * , - || * || * */ || : || : || { || ( || ) || || , ; || /* || * */ || : , || ; || } |+------------------------------------------------------------+ 1.7. , , - . , - , . . 1. 䳿 - , , , , . 2. , , longjmp. , , . 3. - ( longjmp), . , , , . , : , , , . - +---------------------------------------------------------- | read - | - | - - | - | - | - | - read | - - | - | - | - | - | - - | - - | - ( | - "break") | - | - | - | - | - - | - : | - | - | | v 13.8. , , , ' , - ( 1.8). (break), - . , read. , . , , . read , , -, . exit, -. , - read . , stat, ( stat - , ). . . , , - . , . , ( ). , '. read, , , 䳿. : , , ; . , , , ' . , , , . , . , 䳿, . , kill -, . , , , ( ) .

' NEWCASTL

, () . ', , , . , ' , , , . , , ( ), . . ' : , , , - , ., , ' "sftig!/fs1/mjb/rje" "/fs1/mjb/rje", "sftig". , uucp UNIX. , : /../sftig/fs1/mjb/rje "/../" - , , ; ' . UNIX, , (. [Pike85]). -볺 -+-----------------------------+ +----------------------------+| | | - || ѳ- | | || | | (- || +------+ | | | | || +------------------ | | | ) | | || | +------+ | | | | || | | | | | +-------------+ | || | +------+ | | | | || | +-------- | | | | | || | | +------+ | | | | || | | | | | | | | || | | +------+ | | | | || | +-----+ | | | | |+----+------------------------+ +----+-----------------+-----+ | | | |+----+------------------------+ +----+-----------------+-----+| | | | | || | | || | | | | |+--------------------+--------+ +----------------------+-----+ | | +-------------------------------------+ 1.9. () , , , ' Newcastle, ; ѳ-, . ֳ , 2 . , . 13.9 , . , . : open("/../sftig/fs1/mjb/rje/file",O_RDONLY); ϳ open ѳ- , "sftig". , ' , , , ' , . , , -, -볺. 볺, , 볺. , "mjb" , . , , 볺 "mjb" 볺 . , , 񳺿 , . , - 볺. . , 볺- , . , , , . mkdir, . ³ 볺 , . mkdir '. , setuid- ( mkdir) , . , , ; , ( ) . open , , , -, . read write , , , . -볺 䳺 , . 2 , , , , : . , . , , , ' , , . . , , , ', . , ' , (/), ' , - , . - , ' . chroot , ; , , . fork, , . - 볺-. -볺 fork, ; -, . fork - . , , ( exit), , . ' Newcastle , "" ( ), . , . , . ' ѳ- ' , ; '. ', . , , . , . , , , ; ' . , .

quot;в" IJͲ ²

" " , , , , , , , , . , , , : . , 13.10, "/usr/src", B, "" "/usr/src", A. , , "/usr/src". , A, , B, (: "/usr/src/cmd/login.c"), , . , B, ( , A), , , , A. , , , , . mount . . mount, ' , '. ֳ ' , "..". , ".." , , . 13.10, , , A, "/usr/src/cmd", , cd../../.. , A, B. name, , "..", , -볺, , 볺 . A B+-----------------------------+ +-----------------------------+| / | | / || | | | | || +--------+--------+ | | +-----------+-----------+ || | | | | | | | || bin usr | | usr bin etc || | | | | | || +----+----+ +----+--+ | | +----+ || | | | | | | | | ||login mail bin src| +-->src bin || | | | | | | || +---+---+ | | | | +------+-----+ || | | | | | | | | | || troff vi | | | | lib cmd uts || | | | | | || | | | | +---+---+ || | | | | | | || | | | | login.c mail.c |+---------------------------|-+ | +-----------------------------+ +---+ 1.10. ' : . , , , , , . , 5. , , , . , , 䳿 , .. , ' () (. [Sandberg85]). 볺 (/)+--------------------+ +----------------------------------------+| | | || +-------+ | | - || +-----+ ||-| | +-----+ +-----+ || | | +-+-----+ |- | | | | | || +-----+ | | - +-----+ +-----+ - +-------+|| | | | +-|---+- -+-+ | | +--+ +-----+ | | | | +-----+ | +-----+ | +-------+|| | | | | | | | | +-+- -++ +-----+ | || +-----+ | | | | +-----+ +----+|| | | || | | | | | | | | | || +-----+ | || +-----+ | | | | +-----+ +-----++-+- -+-+ || | +----+-----+ | | | | | | +-----+ || +-----+ | | +-----+ +-----+ | | || | | +-----+ |+--------------------+ +----------------------------------------+ 1.11 ³ , "/usr/src/cmd/login.c", "src" - . ( namei-iget), , , , , . , , . ( , ), . ' open 1.11. 볺 read, 볺 , , , ', . , ( ) 񳺿 . , , . read 볺 "", . ( ), , , , . ' ( ) , , , 볺. 볺 . , . , , ' "core". ' , , , . open , , , , , . "/usr/src/cmd/login.c" ' "cmd/login.c". , , . , open, ' , . , , , ; , ( 13.11). , () , , , , . , - . - , ( ), , , . , . , , .




:


: 2016-07-29; !; : 612 |


:

:

. .
==> ...

1209 - | 1180 -


© 2015-2024 lektsii.org - -

: 0.016 .