2025년 정보처리기사실기 2회차 기출문제 정답·해설 페이지

2025년-정보처리기사실기-2회차
    12025년-정보처리기사실기-2회차

    25-2

    아래 Java 프로그램의 출력 결과를 적으시오.

    public class Main {
        interface Op {
            int calc(int v);
        }
    
        static int safe(Op op, int arg) {
            try {
                return op.calc(arg) + 1;
            } catch (RuntimeException e) {
                return -1;
            }
        }
    
        public static void main(String[] args) {
            Op half = v -> {
                if (v % 2 != 0) {
                    throw new IllegalArgumentException();
                }
                return v / 2;
            };
            System.out.print(safe(half, 8) + safe(half, 5) + safe(w -> w * 3, 4));
        }
    }
    해설

    17


    [해설]

    람다식은 함수형 인터페이스 Op의 calc 구현으로 전달되고, safe는 RuntimeException이 나면 -1을 돌려준다.

    • safe(half, 8)은 8이 짝수라 8/2 = 4에 1을 더해 5다.
    • safe(half, 5)는 5가 홀수라 IllegalArgumentException이 던져지고, RuntimeException의 하위 타입이라 catch에 잡혀 -1이다.
    • safe(w -> w * 3, 4)는 4×3 = 12에 1을 더해 13이다.

    세 값이 모두 int라 문자열 연결이 아니라 덧셈이 되어 5 + (−1) + 13 = 17이다. 예외가 나면 return 식의 +1은 실행되지 않으므로 -1에 1을 더하지 않는다.

    오류나 개정된 내용이 보이면 알려주세요

    22025년-정보처리기사실기-2회차

    25-2

    다음 설명에 모두 해당하는 GoF 디자인 패턴을 [보기]에서 골라 적으시오.

    • 실제 객체 앞에 같은 인터페이스를 가진 대리 객체를 세워, 실제 객체에 닿기 전에 필요한 처리를 끼워 넣는다.
    • 무거운 객체는 처음부터 만들지 않고 실제로 쓰일 때 생성해(지연 로딩) 메모리를 아낄 수 있다.
    • 실제 객체를 바깥에 드러내지 않아 정보 은닉 효과도 얻는다.

    [보기] Abstract Factory, Adapter, Bridge, Builder, Composite, Decorator, Facade, Flyweight, Mediator, Observer, Prototype, Proxy, Singleton, Strategy, Visitor

    해설

    Proxy


    [해설]

    실제 객체 앞에 같은 인터페이스를 가진 대리 객체를 두어 접근을 제어하는 구조 패턴은 Proxy(프록시)다.

    쓰일 때 생성하는 가상 프록시(지연 로딩), 권한을 검사하는 보호 프록시, 원격 객체를 대신하는 원격 프록시 등으로 쓰인다.

    혼동 주의: Decorator도 같은 인터페이스로 감싸지만, 목적이 접근 제어가 아니라 기능 추가다.

    오류나 개정된 내용이 보이면 알려주세요

    32025년-정보처리기사실기-2회차

    25-2

    아래 코드를 컴파일해 실행하면 화면에 찍히는 값을 적으시오.

    public class Main {
        static class Box {
            int w;
            Box(int w) {
                this.w = w;
            }
        }
    
        public static void main(String[] args) {
            Box p = new Box(4);
            Box q = new Box(7);
            Box r = new Box(9);
            Box[] list = {p, q, r};
            Box tmp = list[1];
            list[1] = list[0];
            list[0] = tmp;
            list[2].w += list[1].w;
            list[0].w = list[2].w - 1;
            System.out.println(p.w + "-" + q.w + "-" + r.w);
        }
    }
    해설

    4-12-13


    [해설]

    배열 list에는 객체 자체가 아니라 참조가 들어 있어, 배열 칸을 바꿔도 p·q·r이 가리키는 객체는 그대로다.

    • 교환 후 list = {q, p, r}
    • list[2].w += list[1].w → r.w = 9 + 4 = 13
    • list[0].w = list[2].w − 1 → q.w = 13 − 1 = 12

    p는 손대지 않았으므로 4다. 출력은 4-12-13이다.

    오류나 개정된 내용이 보이면 알려주세요

    42025년-정보처리기사실기-2회차

    25-2

    관계 데이터베이스에서 테이블의 열(Column) 하나에 해당하며, 파일 시스템의 필드(Field)와 같은 뜻으로 쓰이는 데이터 구조 단위를 [보기]에서 골라 적으시오.

    [보기] Attribute, Cardinality, Degree, Instance, Relation, Schema, Tuple

    해설

    Attribute


    [해설]

    테이블의 열 하나, 즉 개체의 특성을 나타내는 가장 작은 논리 단위는 Attribute(속성)이며 파일 시스템의 필드에 해당한다.

    행 하나는 Tuple이며 파일의 레코드에 해당한다.

    혼동 주의: Degree는 속성의 개수, Cardinality는 튜플의 개수다.

    오류나 개정된 내용이 보이면 알려주세요

    52025년-정보처리기사실기-2회차

    25-2

    아래 C 프로그램의 출력 결과를 적으시오.

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Link {
        char ch;
        struct Link *prev;
    } Link;
    
    Link *stack_up(const char *txt) {
        Link *top = NULL;
        for (int i = 0; txt[i] != '\0'; i++) {
            if (txt[i] == '-')
                continue;
            Link *nw = (Link *)malloc(sizeof(Link));
            nw->ch = txt[i];
            nw->prev = top;
            top = nw;
        }
        return top;
    }
    
    int main(void) {
        Link *cur = stack_up("MO-ON");
        while (cur != NULL) {
            Link *del = cur;
            printf("%c", cur->ch);
            cur = cur->prev;
            free(del);
        }
        return 0;
    }
    해설

    NOOM


    [해설]

    stack_up은 새 노드를 항상 맨 앞(top)에 붙이므로, 연결 리스트는 입력의 역순으로 쌓인다(스택).

    • 하이픈(-)은 continue로 건너뛰어 노드가 만들어지지 않는다.
    • M, O, O, N 순으로 쌓여 top부터 N → O → O → M

    main은 top부터 prev를 따라가며 한 글자씩 찍고 메모리를 해제하므로 NOOM이 출력된다.

    오류나 개정된 내용이 보이면 알려주세요

    62025년-정보처리기사실기-2회차

    25-2

    파일 조직(파일 편성)에 관한 설명이다. 빈칸 ①, ②에 알맞은 용어를 적으시오. (①은 여러 곳에 공통으로 들어간다.)

    • 레코드를 저장 장치에 어떻게 배치하느냐에 따라 검색 속도와 처리 효율이 크게 달라진다.
    • 접근 방식을 기준으로 파일 조직을 나누면 순차 방식, ( ① ) 방식, ( ② ) 방식으로 구분할 수 있다.
    • ( ① ) 방식은 키 값과 레코드 위치를 짝지어 둔 별도의 ( ① )을/를 먼저 조회한 다음, 거기 적힌 주소로 이동해 원하는 레코드를 읽는다.
    • ( ② ) 방식은 해시 함수 같은 사상 함수로 레코드의 키 값을 곧바로 저장 주소로 바꾸고, 그 주소에 레코드를 저장·검색하므로 색인 없이 원하는 레코드에 바로 접근한다.
    해설

    ① 인덱스(Index)

    ② 직접(해싱) 편성(Direct Organization)


    [해설]

    파일 조직은 접근 방식에 따라 순차·인덱스·직접(해싱) 방식으로 나뉜다.

    • 인덱스(Index) 방식 — 키와 레코드 주소를 짝지은 색인을 먼저 찾고, 그 주소로 가서 레코드를 읽는다.
    • 직접(해싱) 편성 — 해시 함수로 키를 저장 주소로 곧바로 바꿔 색인 없이 접근한다.

    혼동 주의: 직접 편성은 접근이 가장 빠르지만, 서로 다른 키가 같은 주소로 바뀌는 충돌을 처리해야 한다.

    오류나 개정된 내용이 보이면 알려주세요

    72025년-정보처리기사실기-2회차

    25-2

    아래 Java 프로그램을 실행하면 콘솔에 무엇이 출력되는지 적으시오.

    public class Main {
        static class Animal {
            int sound(int n) { return n * 2; }
            static String tag() { return "A"; }
        }
    
        static class Dog extends Animal {
            int sound(int n) { return n * 3 + 1; }
            String sound(String s) { return s + "!"; }
            static String tag() { return "D"; }
        }
    
        public static void main(String[] args) {
            Animal pet = new Dog();
            System.out.println(pet.sound(4) + pet.tag() + ((Dog) pet).tag());
        }
    }
    해설

    13AD


    [해설]

    인스턴스 메서드는 실제 객체 타입으로, static 메서드는 참조 변수의 선언 타입으로 결정된다.

    • pet.sound(4): 실제 객체가 Dog이므로 오버라이딩된 Dog.sound(int) 호출 → 4×3+1 = 13
    • pet.tag(): static은 오버라이딩되지 않고 숨겨질(hiding) 뿐이라 선언 타입 Animal의 tag() → "A"
    • ((Dog) pet).tag(): 식의 타입이 Dog이므로 Dog.tag() → "D"

    13 + "A"에서 문자열 연결이 시작되어 결과는 13AD다. sound(String)은 오버로딩으로 추가된 메서드라 이 호출과 관계없다.

    오류나 개정된 내용이 보이면 알려주세요

    82025년-정보처리기사실기-2회차

    25-2

    다음은 어떤 모듈의 제어 흐름을 노드 번호로 정리한 것이다. 분기 커버리지(Branch Coverage)를 100% 만족하는 테스트 경로 두 개를 노드 번호 순서로 적으시오. (각 경로는 ①에서 시작해 ⑦에 도달하거나 ①로 되돌아오는 곳까지 적는다.)

    노드내용다음 노드
    ①flag = 0②
    ②a > b ?참 → ③, 거짓 → ④
    ③flag = 1④
    ④a = a + 3⑤
    ⑤result = proc(a, flag)⑥
    ⑥result > 0 ?참 → ①, 거짓 → ⑦
    ⑦print result (종료)-
    해설

    ①→②→③→④→⑤→⑥→①

    ①→②→④→⑤→⑥→⑦

    (또는 ①→②→③→④→⑤→⑥→⑦과 ①→②→④→⑤→⑥→①의 조합도 정답)


    [해설]

    분기 커버리지는 모든 결정문의 참과 거짓 결과를 각각 한 번 이상 지나가면 된다. 결정 노드는 ②와 ⑥ 두 개다.

    • 경로 1: ②에서 참(③ 경유), ⑥에서 참(①로 복귀)
    • 경로 2: ②에서 거짓(④로 직행), ⑥에서 거짓(⑦ 종료)

    두 경로로 ②의 참·거짓과 ⑥의 참·거짓이 모두 한 번씩 수행된다. ②와 ⑥의 결과를 엇갈려 짝지은 조합도 조건을 똑같이 채우므로 정답이다.

    오류나 개정된 내용이 보이면 알려주세요

    92025년-정보처리기사실기-2회차

    25-2

    아래 C 프로그램을 실행했을 때 출력값을 적으시오.

    #include <stdio.h>
    
    struct item {
        int key;
        struct item *next;
    };
    
    int main(void) {
        struct item x = {4, NULL};
        struct item y = {7, NULL};
        struct item z = {2, NULL};
        struct item *top = &y;
        x.next = &y;
        y.next = &z;
        z.next = NULL;
        y.next = &x;
        x.next = &z;
        z.next = &y;
        y.next = NULL;
        top = &x;
        printf("%d %d %d", top->key, top->next->key, top->next->next->key);
        return 0;
    }
    해설

    4 2 7


    [해설]

    next 포인터는 마지막에 대입된 값만 남으므로, 최종 연결 상태만 따지면 된다.

    • x.next = &z (앞선 &y를 덮어씀)
    • z.next = &y (앞선 NULL을 덮어씀)
    • y.next = NULL (앞선 &z, &x를 덮어씀)

    top은 &x로 바뀌었으므로 x → z → y 순으로 따라가 4 2 7이 출력된다.

    오류나 개정된 내용이 보이면 알려주세요

    102025년-정보처리기사실기-2회차

    25-2

    다음 설명에 해당하는 서비스 거부(DoS) 공격 기법을 [보기]에서 골라 적으시오.

    • TCP 연결 수립 절차(3-Way Handshake)의 허점을 이용하는 대표적인 자원 고갈 공격이다.
    • 공격자는 출발지 주소를 위조한 연결 요청 패킷만 대량으로 보내고 마지막 응답은 보내지 않는다.
    • 서버의 반개방(half-open) 연결 대기열(백로그 큐)이 가득 차 정상 사용자의 새 연결을 받지 못하게 된다.

    [보기] Land Attack, Ping of Death, RUDY, Slowloris, Smurfing, SYN Flooding, Tear Drop, UDP Flooding

    해설

    SYN Flooding


    [해설]

    SYN 패킷만 쏟아 부어 연결 대기열을 채우는 공격은 SYN Flooding이다.

    서버는 SYN-ACK를 보낸 뒤 ACK를 기다리며 자원을 잡아 두는데, 이 반개방 연결이 쌓여 큐가 넘친다. SYN Cookie, 백로그 큐 확대, 대기 시간 단축 등으로 대응한다.

    • Land Attack: 출발지와 목적지 주소를 같게 위조한다.
    • Tear Drop: IP 단편의 오프셋을 조작해 재조립을 방해한다.
    • Smurfing: 브로드캐스트 ICMP 응답을 피해자에게 몰아 보낸다.
    • Slowloris·RUDY: HTTP 헤더나 본문을 아주 느리게 보내 연결을 붙잡아 둔다.

    오류나 개정된 내용이 보이면 알려주세요

    112025년-정보처리기사실기-2회차

    25-2

    [STAFF] 릴레이션이 다음과 같을 때, 관계대수 연산 πPOS(STAFF)\pi_{\mathrm{POS}}(\mathrm{STAFF})의 결과 릴레이션을 완성하시오. (①은 속성명, ②~⑤는 위에서부터 차례대로의 값이다.)

    [STAFF]

    SNOSNAMEDEPTPOSHIRE_DATE
    2107윤서하영업과장2014.07.01
    2215장우진개발사원2023.01.02
    2308민채원개발부장2006.10.16
    2412권태오인사대리2019.04.08

    [결과]

    ( ① )
    ( ② )
    ( ③ )
    ( ④ )
    ( ⑤ )
    해설

    ① POS

    ② 과장

    ③ 사원

    ④ 부장

    ⑤ 대리


    [해설]

    π(프로젝트)는 릴레이션에서 지정한 속성(열)만 골라내는 연산이라, 결과 릴레이션의 속성명은 POS 하나다.

    값은 원래 튜플 순서대로 과장, 사원, 부장, 대리가 남는다. 중복 값이 없어 네 튜플이 모두 그대로 나온다.

    혼동 주의: σ(셀렉트)는 조건에 맞는 행을 고르고, π는 열을 고르며 중복 튜플은 하나만 남긴다.

    오류나 개정된 내용이 보이면 알려주세요

    122025년-정보처리기사실기-2회차

    25-2

    아래 C 프로그램이 출력하는 내용을 적으시오.

    #include <stdio.h>
    
    struct pt {
        int r;
        int c;
    };
    
    int main(void) {
        struct pt grid[] = {{7, 1}, {4, 9}, {2, 6}, {8, 3}};
        struct pt *cur = grid + 1;
        struct pt **pp = &cur;
        (*pp)[1] = (*pp)[-1];
        (*pp)++;
        (**pp).c += grid[3].r;
        printf("%d, %d", grid[2].r, grid[2].c);
        return 0;
    }
    해설

    7, 9


    [해설]

    cur는 grid[1]을 가리키고, pp는 cur의 주소를 담으므로 *pp는 곧 cur다.

    • (*pp)[1] = (*pp)[-1]: cur[1]은 grid[2], cur[-1]은 grid[0] → grid[2]에 {7, 1}이 통째로 복사
    • (*pp)++: cur가 grid[2]로 한 칸 이동
    • (**pp).c += grid[3].r: grid[2].c = 1 + 8 = 9

    grid[2]는 {7, 9}가 되어 7, 9가 출력된다. 구조체끼리의 대입은 멤버 전체를 값으로 복사한다.

    오류나 개정된 내용이 보이면 알려주세요

    132025년-정보처리기사실기-2회차

    25-2

    어떤 호스트에 다음과 같이 주소가 설정되어 있다. 빈칸 ①, ②에 알맞은 값을 적으시오.

    항목값
    IP 주소223.13.234.132
    서브넷 마스크255.255.255.192
    네트워크 주소223.13.234.( ① )
    호스트에 할당 가능한 주소 수(네트워크·브로드캐스트 주소 제외)( ② )개
    해설

    ① 128

    ② 62


    [해설]

    마스크 255.255.255.192는 /26이므로 넷째 옥텟의 상위 2비트가 네트워크, 하위 6비트가 호스트 부분이다.

    • 132 = 1000 0100, 192 = 1100 0000 → AND = 1000 0000 = 128
    • 네트워크 주소 223.13.234.128, 브로드캐스트 주소 223.13.234.191

    호스트 비트가 6개이므로 26−2=64−2=2^{6} - 2 = 64 - 2 = 62개를 할당할 수 있다.

    오류나 개정된 내용이 보이면 알려주세요

    142025년-정보처리기사실기-2회차

    25-2

    아래 Java 프로그램을 실행했을 때 출력되는 내용을 적으시오.

    public class Main {
        static void edit(String[] box, String word) {
            box[1] = word + box[0];
            word = "Q";
            box = new String[] {"X", "Y"};
        }
    
        public static void main(String[] args) {
            String[] box = {"M", "N"};
            String word = "K";
            edit(box, word);
            System.out.print(box[0] + box[1] + word);
        }
    }
    해설

    MKMK


    [해설]

    Java는 값에 의한 호출(Call by Value)이라 배열은 참조값이 복사되어 넘어간다. 그래서 원소를 바꾸면 main에 반영되지만, 매개변수 자체를 재할당한 것은 반영되지 않는다.

    • box[1] = word + box[0] = K + M = KM이 되어 main의 box는 {M, KM}이 된다.
    • word = Q는 지역 매개변수만 바꾸므로 main의 word는 K 그대로다.
    • box = new String[]{…}는 매개변수가 새 배열을 가리킬 뿐 main의 box와 무관하다.

    출력은 M + KM + K = MKMK다. 혼동 주의: 메서드 안에서 만든 새 배열의 X, Y는 main에 전혀 나타나지 않는다.

    오류나 개정된 내용이 보이면 알려주세요

    152025년-정보처리기사실기-2회차

    25-2

    다음 네 프로세스를 라운드 로빈(RR) 방식으로 스케줄링할 때 평균 대기 시간을 구하시오. (시간 할당량은 4ms이며, 문맥 교환 시간은 무시한다.)

    프로세스도착 시간(ms)실행 시간(ms)
    P108
    P214
    P329
    P435
    해설

    11.75ms


    [해설]

    P1이 첫 할당량을 쓰는 동안(0~4ms) 나머지 셋이 모두 도착하므로, 큐 순서는 P2 → P3 → P4 → P1이 된다.

    • 0~4 P1(남은 4) → 4~8 P2(완료) → 8~12 P3(남은 5) → 12~16 P4(남은 1)
    • 16~20 P1(완료) → 20~24 P3(남은 1) → 24~25 P4(완료) → 25~26 P3(완료)

    대기 시간 = 종료 시각 − 도착 시간 − 실행 시간이다.

    • P1: 20 − 0 − 8 = 12 / P2: 8 − 1 − 4 = 3
    • P3: 26 − 2 − 9 = 15 / P4: 25 − 3 − 5 = 17

    평균은 12+3+15+174=474=\dfrac{12 + 3 + 15 + 17}{4} = \dfrac{47}{4} = 11.75ms다.

    오류나 개정된 내용이 보이면 알려주세요

    162025년-정보처리기사실기-2회차

    25-2

    아래 C 프로그램의 실행 결과를 적으시오.

    #include <stdio.h>
    #define CAP 4
    
    typedef struct {
        int buf[CAP];
        int head;
        int tail;
    } Ring;
    
    void push(Ring *r, int v) {
        r->buf[r->tail] = v;
        r->tail = (r->tail + 1) % CAP;
    }
    
    int pop(Ring *r) {
        int v = r->buf[r->head];
        r->head = (r->head + 1) % CAP;
        return v;
    }
    
    int main(void) {
        Ring r = {{0}, 0, 0};
        int x, y, z;
        push(&r, 5);
        push(&r, 8);
        push(&r, 6);
        pop(&r);
        push(&r, 9);
        push(&r, 7);
        x = pop(&r);
        y = pop(&r);
        z = pop(&r);
        printf("%d-%d-%d", z, x, y);
        return 0;
    }
    해설

    9-8-6


    [해설]

    Ring은 크기 4의 원형 큐다. push는 tail 위치에 넣고, pop은 head 위치에서 꺼내며, 인덱스는 % CAP으로 되돌아간다.

    • push 5, 8, 6 → buf[0..2] = 5, 8, 6, tail = 3
    • pop → 5를 꺼냄(버림), head = 1
    • push 9 → buf[3] = 9, tail = 0 / push 7 → buf[0] = 7, tail = 1
    • x = pop → 8, y = pop → 6, z = pop → 9

    printf는 z, x, y 순으로 찍으므로 9-8-6이다. 꺼내는 순서는 넣은 순서(FIFO)를 그대로 따른다.

    오류나 개정된 내용이 보이면 알려주세요

    172025년-정보처리기사실기-2회차

    25-2

    다음 설명에 해당하는 원격 접속 프로토콜을 영문 약어로 적으시오.

    • 기본 포트로 TCP 22번을 쓴다.
    • 평문으로 통신하던 Telnet·rlogin을 대신하기 위해 만들어졌으며, 오가는 데이터를 모두 암호화한다.
    • 사용자·서버 인증, 무결성 검사, 압축 기능을 제공하고 파일 전송(SCP·SFTP)에도 쓰인다.
    해설

    SSH


    [해설]

    TCP 22번 포트를 쓰는 암호화 원격 접속 프로토콜은 SSH(Secure Shell)이다.

    Telnet(23번)·rlogin은 아이디·비밀번호까지 평문으로 보내서 스니핑에 취약하다. SSH는 키 교환으로 세션 키를 만든 뒤 전 구간을 암호화하고, SCP·SFTP 파일 전송도 이 연결 위에서 이뤄진다.

    혼동 주의: FTP는 20·21번을 쓰지만, SFTP는 별도 포트 없이 SSH의 22번을 그대로 쓴다.

    오류나 개정된 내용이 보이면 알려주세요

    182025년-정보처리기사실기-2회차

    25-2

    아래 Python 프로그램의 출력 결과를 적으시오.

    nums = [2, 4, 6]
    sq = {k: k * k for k in nums}
    seen = set(sq.values())
    nums[1] = 10
    sq[6] = 16
    seen.discard(4)
    seen.add(10)
    print(len(seen | set(sq.values())), sorted(seen & set(sq.values())))
    해설

    4 [16]


    [해설]

    딕셔너리 컴프리헨션은 만들어지는 순간의 값으로 새 객체를 만들므로, 이후 nums를 바꿔도 sq에는 영향이 없다.

    • sq = {2: 4, 4: 16, 6: 36}, seen = {4, 16, 36}
    • nums[1] = 10: sq·seen과 무관
    • sq[6] = 16 → sq의 값 집합은 {4, 16}
    • seen에서 4를 빼고 10을 넣음 → seen = {10, 16, 36}

    합집합 {4, 10, 16, 36}의 크기는 4, 교집합은 {16}이다. print는 둘을 공백으로 이어 4 [16]을 출력한다.

    오류나 개정된 내용이 보이면 알려주세요

    192025년-정보처리기사실기-2회차

    25-2

    빈칸 ( ㉮ )에 들어갈 기술을 영문 약어로 적으시오.

    • ( ㉮ )은/는 JavaScript와 XML(오늘날에는 JSON도 많이 씀)을 이용해 서버와 비동기로 통신한다.
    • 페이지 전체를 새로 불러오지 않고 필요한 부분의 데이터만 받아 화면 일부를 갱신한다.
    • HTML만으로는 구현하기 어려운 상호작용을 가능하게 하며, 지도를 끌어 움직일 때 주변 지도가 이어서 로드되는 웹 지도 서비스가 대표 사례다.
    해설

    AJAX


    [해설]

    페이지 전체를 다시 받지 않고 비동기 요청으로 화면 일부만 갱신하는 기법은 AJAX(Asynchronous JavaScript and XML)다.

    브라우저의 XMLHttpRequest나 fetch로 서버에 요청을 보내고, 응답(XML·JSON)이 오면 JavaScript가 DOM의 해당 부분만 바꾼다. 웹 지도를 끌 때 화면 전환 없이 주변 지도만 이어서 불러오는 것이 이 방식이다.

    오류나 개정된 내용이 보이면 알려주세요

    202025년-정보처리기사실기-2회차

    25-2

    CPU 스케줄링 기법에 관한 설명이다. 빈칸 ①~④에 해당하는 기법을 영문 약어로 적으시오.

    • ( ① ): 준비 큐에 있는 프로세스 가운데 실행 시간이 가장 짧은 것을 골라 CPU를 주며, 한번 CPU를 얻은 프로세스는 끝날 때까지 빼앗기지 않는 비선점 방식이다.
    • ( ② ): ①에 선점 개념을 더한 방식으로, 새로 도착한 프로세스의 남은 실행 시간이 현재 실행 중인 프로세스의 남은 시간보다 짧으면 즉시 CPU를 넘겨준다.
    • ( ③ ): 기다린 시간과 실행 시간을 함께 따진 우선순위 값으로 다음 프로세스를 고르는 비선점 방식으로, 오래 기다린 긴 작업이 끝없이 밀리는 현상을 막는다.
    • ( ④ ): 모든 프로세스에 같은 크기의 시간 할당량(Time Quantum)을 주고 돌아가며 실행하는 선점 방식으로, 시분할 시스템에 알맞다.
    해설

    ① SJF

    ② SRT

    ③ HRN

    ④ RR


    [해설]

    CPU 스케줄링 기법은 선점 여부와 다음 프로세스를 고르는 기준으로 구분한다.

    • SJF(Shortest Job First)는 실행 시간이 가장 짧은 작업부터 처리하는 비선점 방식이다.
    • SRT(Shortest Remaining Time)는 SJF의 선점형으로, 남은 시간이 더 짧은 프로세스가 도착하면 CPU를 넘긴다.
    • HRN(Highest Response-ratio Next)은 (대기 시간 + 실행 시간) ÷ 실행 시간 값이 큰 것부터 실행하는 비선점 방식이다.
    • RR(Round Robin)은 같은 시간 할당량으로 돌아가며 실행하는 선점 방식이다.

    혼동 주의: HRN은 오래 기다릴수록 우선순위가 올라가 SJF의 기아(Starvation) 문제를 줄인다. RR은 할당량이 너무 크면 FCFS와 같아진다.

    오류나 개정된 내용이 보이면 알려주세요

2025년 정보처리기사실기 2회차 시험지 PDF 다운로드·인쇄 →

전 회차를 한 권으로 — 정보처리기사 실기 기출문제 PDF 전자책(문제집·정답해설집) →

2025년 정보처리기사실기 2회차 정답과 해설은 무료인가요?

이 페이지의 20문항 정답과 해설은 로그인 없이 무료로 볼 수 있습니다. 무제한 풀이·실전 모의고사·PDF 출력·전자책 다운로드는 베이직 플랜에 포함됩니다.

이 회차를 CBT 로 직접 풀어볼 수 있나요?

정보처리기사 실기 기출문제 암기장에서 이 회차를 회차별·랜덤으로 풀고 오답노트에 자동으로 모을 수 있습니다. 정보처리기사 실기 기출문제 풀러 가기 →

시험지 PDF 나 전자책으로도 볼 수 있나요?

이 회차의 인쇄용 시험지 PDF 와, 전 회차를 문제집·정답해설집으로 묶은 PDF 전자책을 제공합니다. 정보처리기사 실기 기출문제 PDF 전자책 보기 →

2025년 정보처리기사실기 2회차 문항별 상세 페이지 전체 보기