콘텐츠 내 자동삽입광고

광고1

'라운드 로빈(Round Robin Method)'에 해당되는 글 1건

  1. 2023.04.21 C언어 / 라운드 로빈(Round Robin Method) 알고리즘 소스
posted by 초코생크림빵 2023. 4. 21. 01:05
반응형

C언어 / 라운드 로빈(Round Robin Method) 알고리즘

 

아래는 C 언어로 구현된 라운드 로빈(Round Robin) 스케줄링 알고리즘의 간단한 예제 코드입니다. 이 코드는 사용자로부터 프로세스의 도착 시간, 실행 시간, 및 타임 슬라이스(Time Slice) 값을 입력받아 라운드 로빈 스케줄링을 시뮬레이션합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
 
#define MAX_PROCESSES 10
 
// 프로세스 구조체 정의
typedef struct Process {
    int arrival_time;   // 도착 시간
    int burst_time;     // 실행 시간
    int remaining_time; // 남은 실행 시간
} Process;
 
int main() {
    int num_processes;                  // 프로세스 개수
    int time_slice;                     // 타임 슬라이스
    Process processes[MAX_PROCESSES];  // 프로세스 배열
 
    // 사용자로부터 프로세스 개수 입력 받음
    printf("Enter the number of processes (up to %d): ", MAX_PROCESSES);
    scanf("%d"&num_processes);
 
    // 각 프로세스의 도착 시간과 실행 시간 입력 받음
    for (int i = 0; i < num_processes; i++) {
        printf("Enter arrival time for process %d: ", i + 1);
        scanf("%d"&processes[i].arrival_time);
        printf("Enter burst time for process %d: ", i + 1);
        scanf("%d"&processes[i].burst_time);
        processes[i].remaining_time = processes[i].burst_time;
    }
 
    // 타임 슬라이스 입력 받음
    printf("Enter time slice: ");
    scanf("%d"&time_slice);
 
    int current_time = 0;  // 현재 시간
    int completed_processes = 0;  // 완료된 프로세스 개수
 
    printf("\nRound Robin Scheduling:\n");
 
    // 라운드 로빈 스케줄링 알고리즘 수행
    while (completed_processes < num_processes) {
        for (int i = 0; i < num_processes; i++) {
            if (processes[i].remaining_time > 0) {
                if (processes[i].remaining_time > time_slice) {
                    printf("Time %d: Process %d is running\n", current_time, i + 1);
                    current_time += time_slice;
                    processes[i].remaining_time -= time_slice;
                } else {
                    printf("Time %d: Process %d is completed\n", current_time, i + 1);
                    current_time += processes[i].remaining_time;
                    processes[i].remaining_time = 0;
                    completed_processes++;
                }
            }
        }
    }
 
    return 0;
}
cs

이 코드는 사용자로부터 프로세스의 도착 시간, 실행 시간, 및 타임 슬라이스 값을 입력 받고, 라운드 로빈 스케줄링 알고리즘을 수행하여 각 프로세스의 실행 순서와 완료 시간을 출력합니다. 프로세스의 도착

반응형

콘텐츠 내 자동삽입광고