| | | - | | | | | | | ------+-------------------------------+ ^ | | 6.29. - - : ( 1), , - . , - 2 ( 6.29). - , , - ; , - 170 . 6.6.1 , ,  , - , "" - " " ( - ). , - - (). , , , - a ---+ +--- ---+ | | - | b -++|----+ | ||| +---- A c -|++-------- | +----++--- () --+ d --+ ||+--+| | |||+--+ e --|---|+|| |+--|-+| f --|+ +--|-- --------- B | +----|-() g --|-+ | +|------+ h -++--------- - ------ C 6.30. , - , . , , . , - . -, - , , , "" " ". - , , , ( 2 3). 6.30 , - . , . 6.30, , "- " " -" ("- A"). - , , , - . , -, - , , - , , . - , - . , - , , 171 . , , , . +------------------------------------------------------------+ | sleep | | : (1) | | (2) | | : 1, -| | , ; | | longjump, | | , | | ; | | 0 - ; | | { | | , | | ; | | ; | | - - | | , ; | | ; | | ; | | ( ) | | { | | ; | | /* , | | "" */ | | , | | ( - | | ); | | (0); | | } | | | | /* , | | */ | | ( )| | { | | ; | | /* , | | "" */ | | ( -| | ) | | { | | , | | ; | | (0); | | } | | } | | - - | | , ; | | | | , | | ; | | ( | | ) | | (1); | | longjump; | | } | +------------------------------------------------------------+ 6.31. 172 6.6.2  6.31 . - , , ( ) , , - , . - "", - , - - . ( ) "". - "", : - sleep , - ( - ) . +------------------------------------------------------------+ | wakeup /* - | | */ | | : | | : | | { | | , -| | ; | | - | | ; | | ( , | | ) | | { | | -; | | , -| | " "; | | , -| | ( ); | | , , | | ; | | ( ) | | (-| | ); | | | | ( - | | , ) | | - | | ; | | } | | ;| | } | +------------------------------------------------------------+ 6.32. , wakeup ( 6.32), , - . iput, , 173 , . , -. wakeup - , . - , , - : , - , , ; - , ; , , . , , (- , - ); , - , , - , , ( 8). , - . : "" (wakeup) ; "", . , , - sleep wakeup, , - . , "" , , ( ) - -, . , . , - , , . "" , . ; , () . , , , - ( 10). , , , , , . - ( ), - : . , , . () , - - . - , - ( ) - sleep. sleep "", - . , - , - . , (****). 174 --------------------------------------- (****) "" "" " " " ". , . , sleep, , . , - sleep , - wakeup. - , , , - . , , - . "" ( - ), longjump ( , ). longjump , . , , , , read , . , - . - , . , setjump longjump. , , , longjump. - sleep "", - longjump sleep , 1. setjump sleep longjump . - , . , , , ; , , - longjump, . , longjump; , , - . 6.7  . UNIX , - - . . - , , , ( , - , - ) ( - ), - 175 , . - , - . , - , - . . - (sleep) (wakeup) . , - , - - , . 6.8  1. , . 2. AT&T 3B2 NSC 32000 ( ). , - - . , - . - . 3. VAX-11 , - . , - , : . - - , - , , ? - VAX-11 . ? 11 : - VAX-11 ? 4. . , - ? 5. MC68451 Motorola 68000 256 16 . () 32 . - . - ? 6. , 6.5. , ( ) ( ). - - 68432, - , , () ? , , - , ? *7. , - 176 . - . 8. , , , , ? 9. . , . , . , . 10. , , , . , ? 11. , , , - . , 2. 12. , , , - . . , ( ) 2. 13. read read(fd,buf,1024); . , read , - , buf, , . , . ? , - ? 14. , ( 6.17) , - ? *15. sleep wakeup , , . , - ? (: - ). *16. , - A, , sleep, ; - , - , - A. ? ? , - ? 17. , wakeup , A, , - ? 18. , - - , . - . , - wakeup , , , . 19. sleep wakeup Multics 177 : sleep (); wakeup (, ); , wakeup - . - 178