OS_PJ02_2017103994_서주원 README.txt

1. 프로그램을 실행하게 되면
output)
Enter the number of tasks :

가 출력 됩니다.

1-1. 이때, 500보다 작은 수를 입력하면

output)
Too little number!
Enter the number of tasks :

가 출력되면서 다시 재 입력을 받습니다.

2. 1번에서 500이상의 수를 입력하면

output)
[ASSIGNING]PID: 1       TYPE: DISK
[ASSIGNING]PID: 2       TYPE: MOUSE
[ASSIGNING]PID: 3       TYPE: KEYBOARD
[ASSIGNING]PID: 4       TYPE: MOUSE
[ASSIGNING]PID: 5       TYPE: DISK
[ASSIGNING]PID: 6       TYPE: MONITOR
[ASSIGNING]PID: 7       TYPE: PRINTER
[ASSIGNING]PID: 8       TYPE: PRINTER
[ASSIGNING]PID: 9       TYPE: KEYBOARD
[ASSIGNING]PID: 10      TYPE: KEYBOARD
[ASSIGNING]PID: 11      TYPE: MOUSE
[ASSIGNING]PID: 12      TYPE: PRINTER
[ASSIGNING]PID: 13      TYPE: MOUSE
[ASSIGNING]PID: 14      TYPE: KEYBOARD
...

와 같이 task들이 생성되고 각 type에 맞는 IDEController에 할당되는 것을 확인 할 수 있습니다.

3. task들의 할당이 완료되면 

output)
[ASSIGNED]PID: 1        TYPE: DISK
[ASSIGNED]PID: 5        TYPE: DISK
[ASSIGNED]PID: 19       TYPE: DISK
[ASSIGNED]PID: 24       TYPE: DISK
[ASSIGNED]PID: 34       TYPE: DISK
[ASSIGNED]PID: 39       TYPE: DISK
...
[ASSIGNED]PID: 7        TYPE: PRINTER
[ASSIGNED]PID: 8        TYPE: PRINTER
[ASSIGNED]PID: 12       TYPE: PRINTER
[ASSIGNED]PID: 28       TYPE: PRINTER
[ASSIGNED]PID: 30       TYPE: PRINTER
[ASSIGNED]PID: 40       TYPE: PRINTER
[ASSIGNED]PID: 54       TYPE: PRINTER
...
[ASSIGNED]PID: 6        TYPE: MONITOR
[ASSIGNED]PID: 17       TYPE: MONITOR
[ASSIGNED]PID: 18       TYPE: MONITOR
[ASSIGNED]PID: 23       TYPE: MONITOR
[ASSIGNED]PID: 26       TYPE: MONITOR
[ASSIGNED]PID: 27       TYPE: MONITOR
...
[ASSIGNED]PID: 2        TYPE: MOUSE
[ASSIGNED]PID: 4        TYPE: MOUSE
[ASSIGNED]PID: 11       TYPE: MOUSE
[ASSIGNED]PID: 13       TYPE: MOUSE
[ASSIGNED]PID: 15       TYPE: MOUSE
[ASSIGNED]PID: 16       TYPE: MOUSE
[ASSIGNED]PID: 33       TYPE: MOUSE
...
[ASSIGNED]PID: 3        TYPE: KEYBOARD
[ASSIGNED]PID: 9        TYPE: KEYBOARD
[ASSIGNED]PID: 10       TYPE: KEYBOARD
[ASSIGNED]PID: 14       TYPE: KEYBOARD
[ASSIGNED]PID: 20       TYPE: KEYBOARD
[ASSIGNED]PID: 21       TYPE: KEYBOARD
[ASSIGNED]PID: 22       TYPE: KEYBOARD
[ASSIGNED]PID: 25       TYPE: KEYBOARD
[ASSIGNED]PID: 29       TYPE: KEYBOARD
[ASSIGNED]PID: 43       TYPE: KEYBOARD
[ASSIGNED]PID: 47       TYPE: KEYBOARD
...

와 같이 각 IDEController의 type별로 할당된 task들을 확인 할 수 있습니다.

4. 그 이후에는 multi-thread를 이용하여 IDEController들이 각각 task들을 처리하기 시작합니다.

output)
[PROCESSING]PID: 1      TYPE: DISK
[PROCESSING]PID: 7      TYPE: PRINTER
[PROCESSING]PID: 5      TYPE: DISK
[PROCESSING]PID: 6      TYPE: MONITOR
[PROCESSING]PID: 2      TYPE: MOUSE
[PROCESSING]PID: 8      TYPE: PRINTER
[PROCESSING]PID: 19     TYPE: DISK
[PROCESSING]PID: 17     TYPE: MONITOR
[PROCESSING]PID: 3      TYPE: KEYBOARD
[PROCESSING]PID: 4      TYPE: MOUSE
[PROCESSING]PID: 12     TYPE: PRINTER
[PROCESSING]PID: 24     TYPE: DISK
[PROCESSING]PID: 18     TYPE: MONITOR
[PROCESSING]PID: 9      TYPE: KEYBOARD
[PROCESSING]PID: 11     TYPE: MOUSE
[PROCESSING]PID: 28     TYPE: PRINTER
[PROCESSING]PID: 34     TYPE: DISK
[PROCESSING]PID: 23     TYPE: MONITOR
...

5. 모든 task들의 처리가 완료되면, DMAController의 memoryBuffer에 저장된 task를 출력합니다.

output)
All tasks are done.
MemoryBuffer
[PROCESSED]PID: 1       TYPE: DISK
[PROCESSED]PID: 7       TYPE: PRINTER
[PROCESSED]PID: 5       TYPE: DISK
[PROCESSED]PID: 6       TYPE: MONITOR
[PROCESSED]PID: 2       TYPE: MOUSE
[PROCESSED]PID: 8       TYPE: PRINTER
[PROCESSED]PID: 19      TYPE: DISK
[PROCESSED]PID: 17      TYPE: MONITOR
[PROCESSED]PID: 3       TYPE: KEYBOARD
[PROCESSED]PID: 4       TYPE: MOUSE
[PROCESSED]PID: 12      TYPE: PRINTER
...

6. 마지막으로 memoryBuffer의 크기를 출력하여 1번에서 입력한 값과 처리하여 memoryBuffer에 저장된 task의 갯수가 동일한 것을 확인 할 수 있습니다.

output)
Size of MemoryBuffer : 500