-
-, . ϳ . , , , . -, .
-, . .
. , .
1.3.4
, .
, . : ( ), . .
. ( ), (, ). Գ .
1.3.5
, . :
( , ) , ;
, 볺.
볺 , , .
, , . , ᒺ . , . , .
ϳ ( ) ( ).
|
|
( , , ; ) ( , , ).
䳿 : (shell) (GUI).
, (
). 䳿 (, . ).
. ϳ : , Windows- , UNIX -.
, . .
: , , -, , , , .
2
, . 䳿 .
, , 䳿 . Linux.
2.1
2.1.1 .
, , , (operating system kernel).
- . , , , , , , -. .
, . .
. , , - , .
|
|
: ( , , kernel mode) (user mode). , ( , , - ).
, 䳿 .
ϳ . , . , , (system call). , , , .
, , . , .
2.2
. .
2.2.1
, , . ( 䳿 ), ( , ).
, . ( ). ( ).
2.2.2
(, layers), . 䳺 , .
. , . Multics, 60-. .
г ; . :
, , 䳿 ;
, , 䳿 , . , ;
( ), ( , , ). , ;
, .
|
|
2.2.3
, , ( microkernel). ( , ). , , .
̳ . , (볺 , 볺) . ̳ , . 볺. 볺 , .
:
, ;
, ;
( , );
( , ).
. ( - 볺 , ).
, , , . , QNX , .
2.2.4
ﳿ ( ). ֳ ﳿ ( ) , , .
2.3 : UNIX Linux
2.3.1 UNIX
UNIX . , UNIX . 2.1.
2.1 UNIX
: , -.
ϳ , , , .
, , . UNIX. , ( , ). -, . , , .
ϳ - , . UNIX : (, ) (, ). , . , , . ϳ .
|
|
2.3.2 Linux
Linux :
, ( , , - );
, ( );
( , ).
Linux
Linux . . .
( , , , ).
.
³ 䳿 -.
. .
.
ϳ 䳿 , .
, . (, ) , . Linux .
Linux . (kernel modules) .
.
, , .
ǒ : , , .
, , , 糿 Linux . Linux, .
ϳ Linux .
.
, .
.
, (, ).
( ) , . ϳ , . .
Linux , , . :
;
( - , , printf();
(, ).
Linux .
|
|
, 䳿 .
. , .
. , , . , .
䳺 . . .
䳺 . , . .
3
, , , , ( , , ).
3.1
3.1.1
( ) . 䳿: ., -, . 䳿 . , , .
ϳ , ᒺ .
, , . , .
: , .
. :
, (, );
, ( , );
ֳ :
;
( ), .
, , . .
( , , thread) , . , . .
, , .
. ;
. , (, ); , , 䳿. , .
, . , . , .
, .
. , , , -. (memory mapping).
3.1.2
( ) , , .
, .
( ), .
, .
, UNIX, , . . , , , ( ).
(, Windows XP, UNIX) , . ֳ . .
, , .
3.1.3
:
;
, ( );
( , 璺);
;
:
( ), ;
( , , );
3.2
:
(new) ;
(running) ( );
(waiting) 䳿 (, -); , ;
(ready) , , , ;
( terminated) ( , );
. 3.1.
3.1
, . ϳ , -, .
. , , , .
³ , , , , ; .
3.3
, . ( ), - ( ).
, , , . :
: , -, ;
, , .
3.3.1
, . ֳ , .
(Thread control Block, TCB) , , , .
ֳ :
( );
: , , ;
.
. .
(Process Control Block, PCB) , . :
( , , );
, (, );
, (, , );
);
- , .
3.3.2
, , (process image), (thread image). :
;
;
( , );
.
, . , .
:
;
( , );
( , ).
3.2. .
3.4
, . .
.3 2
3.4.1
. , UNIX- init, Windows XP (Win32 POSIX). , , , .
. , , , .
( , - )
(, , ).
䳿 .
, , , . .
. . ( ) ( , ), ( -, ). (services, windows XP) (daemons, UNIX).
3.4.2
, . .
fork() exec()
. , POSIX- fork().
, , fork() . ,
. fork() .
, . , POSIX- exec(). exec() , .
fork() , fork() exec() ( 㳺 fork+exec).
. ( ). :
( ).
.
ϳ fork() exec() , . .
3.4.3
.
( , , , ). . POSIX- _exit(). ³ , , , .
. ( , ), ( , ).
. , . , POSIX- kill().
ϳ , , , . . , . .
3.4.4
, :
;
, , - . ( , POSIX- wait().
. , , - - ( ). , . , , , , , - .
3.4.5
, , ( , , ). , .
fork(), ( ).
.
, ( ). ϳ 䳿.
1. , .
2. .
3. , ; , .
, , , .
ϳ (, ); , . , ; , .
, . , , . ( thread joining, , ). ϳ , , . ϳ , ( , 䒺 detached). 䒺 (nondetached joinable, ), , .
3. 5 UNIX Linux
UNIX- :
;
, ;
, ( , , );
, .
.
3. 5. 2
.
(pid) , . init .
- (ppid) . . UNIX- -. P , init, ppid P .
.
(uid, gid) , , .
(euid, egid) .
Linux.
Linux task_struct. , :
( pid );
(, );
;
( );
( );
(id, gid,euid, egid).
, Linux , .
, task_struct , Linux:
;
;
, ;
.
task_struct , .
. 2.4 ; , 4 . 2.4 , :
- ( pid ), ;
, .
fork() (, , 512 32000 ).
Linux UNIX-. UNIX (System V, BSD) (proc) (u).
fork() Linux
UNIX- fork(). Linux.
1. (task_struct). , .
2. . ϳ , , .
( ), .
3. (pid), , .
4. ( , , ).
5. .
6. - .
7. .