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 |
이 코드는 사용자로부터 프로세스의 도착 시간, 실행 시간, 및 타임 슬라이스 값을 입력 받고, 라운드 로빈 스케줄링 알고리즘을 수행하여 각 프로세스의 실행 순서와 완료 시간을 출력합니다. 프로세스의 도착
반응형
'C언어-소스' 카테고리의 다른 글
C언어 / 원의 넓이 구하는 소스 (0) | 2023.10.20 |
---|---|
C언어 / 네트워크 패킷양을 체크하는 소스 (0) | 2023.10.20 |
C언어 / 미적분 공식 소스 (1) | 2023.10.19 |
C언어 / '*' 20줄로 삼각형 모양 소스 (0) | 2023.04.25 |
C언어 / 윈도우 폴더 암호걸기 프로그램 소스 (0) | 2023.04.06 |
콘텐츠 내 자동삽입광고