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