.


:




:

































 

 

 

 





6.1

:

( )

( )

, ,

 

 

 

 

void philosopher (int i)

{

while(true)

{

think();

take_forks(i);

eat();

put_forks(i);

}

}

void take_forks (int i)

{

mutex.wait();

state[i] = HUNGRY;

test(i); //

mutex.signal();

s[i].wait(); //,

}

void put_forks (int i)

{

mutex.wait();

state[i] = THINKING;

test(LEFT); //

test(RIGHT);

mutex.signal();

}

}

void test (int i) //

{

if (state[i] == HUNGRY && state[LEFT]!=EATING && state[RIGHT]!=EATING)

{

state[i] = EATING;

s[i].signal();

}

}


 

7. (deadlocks)

7.1

, , .

:

, ;

, ;

, , .

7.2

:

;

.

, , .

, , .

:

;

.

, , , , .

, , , .

:

;

.

, , .

, , , .

7.3

.

 
T1
T2
P

 


, , :

: 1 , 2;

: 1 , 2;

7.4

, .

, , .

1 ( ).

, , , , .

,

 

. . . . , . , . ( ).

, , , . , , . , , , v. , . , , .

 

,

 

: 1, 2, , , 1. 1 , , , 2. , 1 , , -1. , .. , 1. , .

7.5

, .

G .

H G , :

H ;

, G\ H H, G\H , H .

 

 

2 ( )

, , , , .

1.

7.6

, .

:

(preemption).

(termination).

(rollback).

, .

, .

, , .

. :

, ;

, .

, .

.

.

.

.

.

, .

,

:

, .

.

.

7.7

, :

.

.

.

.

:

, .. .

, , .

:

.

() ()

, .

:

, .

7.8

.

(1965)

.

:

.

.

.

.

.

:

.

:

, .

.

, .

10 .

. 10
A    
B    
C    
D    

. 2
A    
B    
C    
D    

. 1
A    
B    
C    
D    

 

 

1

, = 1, 5, : i, i = 1, 9

:

  1 2 T3 T4 T5
1 2, 6 3 7, 8 5, 9
7, 9 8   5 6

, .

, : 1, 2, 4, 5.

.

P6
P5
P8
P9
P7
T1
T3  
T4  
T5  
T2  

 

(2,4) (4, 5) (5, 2), .

2

n , m R. Rk k , , = 1, n.

1. , , j, n = 5, m = 20, j = 3, Mk = (5, 10, 5, 10, 3) Rk = (4, 7, 1, 5, 0).

.

. 17, 3.

, : (1, 3, 4, 5, 3)

, , 1 R 1.

, 3 3 1 = 2 R.

2. 3 3 R. ?

. 3 2 , 3 .


 

8.

8.1

, , .

, , .

, , .

, , .

, .

, , .

T1 B1 K1 M K2 B2 T2
   

1, 2 . 1, 2 -. 1, 2 . .

1 2 :

1 1, .

1 1 .

2 2.

2 2.

, FIFO.

-, .

:

;

.

, .

, , .

8.2

, .

(), () .

:

;

.

, , .

.

:

1 - > 1 .

1 - > N N .

N - > 1 N

N - > M N .

□ -

→ -

       

 

, N - > 1 .

, N - > M .

, , .

, , .

:

connect .

disconnect .

, , .

8.3

:

send ;

receive .

.

send receive .

:

send(P, message) ;

receive(Q, message) Q.

send receive , , .

:

send(S, message) S;

receive(R, message) R.

, R.

.

, .

.

-

-.

, send(Server, message).

, receive(Connection, message).

listen ().

, , .

8.4

.

, send, , .

.

, receive, , , .

.

, , .

.

, .

(rendezvous . ).

.

8.5

, , .

:

( ), ;

( ), , , ;

( ), .

8.6 Windows

, , .

, , .

, , .

;

;

;

;

.

;

;

;

.

, - - .

- , .

- :

;

hStdInput, hStdOutput hStdError STARTUPINFO;

WM_COPYDATA;

.

CreatePipe ;

WriteFile ;

ReadFile .

8.7 Windows

, , .

, , .

, , .

, ;

, ;

, ;

, ;

.

;

;

;

;

;

.

CreateNamedPipe ;

ConnectNamedPipe ;

DisconnectNamedPipe ;

WaitNamedPipe ;

CreateFile ;

WriteFile ;

ReadFile ;

PeekNamedPipe ;

TransactNamedPipe ;

GetNamedPipeHandleState ;

SetNamedPipeHandleState ;

GetNamedPipeInfo ;


 

9.

9.1

 
1
2
n

 


(CPU central processing unit)

- (RAM random access memory)

1, 2, , n

(),

;

.

, .

, , .

, , .

3 :

=

=

=

:

, ;

, ;

, .

9.2

       

 

, .

: .

, , .

1. .

2. .

.

. (DSP digital signal processor).

, / .

/.

. , RS 232.

(8, 16, 32 64 )

, .

9.3

()
 
.

 

 


 

 


;

:

.

- -

:

;

.

, :

;

;

.

:

PC (program counter)

IR (instruction register)

MemPtr .

while (true)

{

IR = MemPtr[PC];//

++PC; //

if (InstructionCode(IR) == Jump)

PC = JumpAddress(IR);

else

Execute(IR); //

}

.

:

( )

( )

, ( )

9.4

.

.

.

, .. , .

.

. .

, , , .. .

.

, , .

.

, , .

()
() ()
()
       

 

, .. .

:

;

;

:

, , . ;

, , .

(), .

NMI
9.5

INTA
INTR
IR0
IR1
IR7

 

 


;

;

IR0, , IR7

INTR

INTA

NMI

INTR.

IR0, , IR7.

, .

NMI . , , .

, IR0, , IR7.

, IR0, , IR7 .

, , .

.

, .. INTR IR0, , IR7 .

.

IR0, , IR7 .

INTR.

INTR , INTA.

INTA .

.

, .

(PSW processor state word), .

: // PSW

;

;

;

: // PSW

10.

10.1

, , .

, , , , .

, .

, .

, .

.

, .

, .

, , , .

.

, .

 

.

, .

, , .

10.2

, :

, 4, ;

, ;

, .

.

, , (swap files).

  x      
  x      
         
  x      
         
         
  x      
  x      
         
         
 

 

) : r d
r    
d    
) v d
v    
d    

 

, , .

, .

f a r

f , .

a .

r .

 

                 
                 
                 
                 
                 
                 
                 
                 
                 

 

 

( )

, . b + v.

f = 1, .

f = 0, . :

.

r .

f 1.

, , r, , d.

10.3

, .

, .

: .

.

1. FIFO

.

2. LRU (least recently used)

, .

3. NRU (not recently used)

, .

, .

4. LFU (least frequently used)

,

, .

.

, .

, , , , , .

, , , , , , .

, .

10.4

, .

- , .

, , .

, - , , .

.

, , - , - .

, .

10.5 Windows

Windows .

, :

Windows

31 22 21 12 11 0
p v d

p

v

d

Windows , .

.

.

.

, .

31 27 26 7 6 3 2 0
p a f s

s

f

a

p

s , .

:

(invalid page)

(valid page)

(valid dirty page)

(invalid page in transition)

((invalid dirty page in transition)

f .

, 16 .

a , , .

, , 220 .

. 4, 220*4 = 4 .

p , :

PAGE_NOACCESS ;

PAGE_READONLY ;

PAGE_READWRITE .

10.6 Windows

Windows , (Virtual Memory Manager VMM)

.

:

(valid);

(modified);

(standby);

, (free);

(zeroed);

(bad).

Windows .

.

, .

Windows LRU, , , , .





:


: 2016-03-25; !; : 788 |


:

:

: , .
==> ...

1500 - | 1470 -


© 2015-2024 lektsii.org - -

: 0.518 .