[9급 지방직 컴퓨터일반] 20년 1회차
9급 지방직 컴퓨터일반 기출문제

20년 1회차

총 20문항 · 객관식 · A4 약 1장

1 / 1
A4정답 포함
9급 지방직 컴퓨터일반 기출문제모두CBT · moducbt.com

20년 1회차

총 20문항 · 객관식 · 정답·해설 포함
문제 1
인터프리터(Interpreter) 방식의 언어로 옳지 않은 것은?
1JavaScript
2C
3Basic
4LISP
정답 및 해설

인터프리터 방식이 아닌 언어는 C이다.

C는 소스 전체를 기계어로 미리 번역하는 컴파일러 방식 언어이고, 인터프리터 방식은 소스를 한 줄씩 해석하며 바로 실행한다.

  • JavaScript: 브라우저 등 실행 환경이 소스를 해석해 실행하는 인터프리터 방식 언어이다.
  • Basic: 대표적인 초기 인터프리터 방식 언어이다.
  • LISP: 대화형 인터프리터 환경에서 실행되는 것이 전통적인 방식이다.
문제 2
CPU 스케줄링 기법 중 라운드 로빈(Round Robin) 방식에 대한 설명으로 옳지 않은 것은?
1선점 스케줄링 기법이다.
2여러 프로세스에 일정한 시간을 할당한다.
3시간할당량이 작으면 문맥 교환수와 오버헤드가 증가한다.
4FIFO(First-In-First-Out) 방식 대비 높은 처리량을 제공한다.
정답 및 해설

라운드 로빈이 FIFO보다 높은 처리량을 제공한다는 설명이 옳지 않다.

라운드 로빈은 응답 시간 공정성을 위한 방식으로, 잦은 문맥 교환 오버헤드 때문에 처리량은 오히려 FIFO보다 같거나 낮아지기 쉽다.

  • 선점 스케줄링: 시간 할당량이 끝나면 CPU를 빼앗아 다음 프로세스에 넘기므로 선점형이다.
  • 일정 시간 할당: 모든 프로세스에 동일한 시간 할당량을 순서대로 준다.
  • 작은 시간 할당량: 교체가 잦아져 문맥 교환 횟수와 오버헤드가 늘어난다.
문제 3
프로세서의 수를 늘려도 속도를 개선하는 데 한계가 있다는 주장으로서, 병렬처리 프로세서의 성능 향상의 한계를 지적한 법칙은?
1무어의 법칙(Moore’s Law)
2암달의 법칙(Amdahl’s Law)
3구스타프슨의 법칙(Gustafson’s Law)
4폰노이만 아키텍처(von Neumann Architecture)
정답 및 해설

병렬처리 성능 향상의 한계를 지적한 법칙은 암달의 법칙이다.

프로그램에서 병렬화할 수 없는 순차 부분의 비율이 전체 속도 향상의 상한을 결정하므로, 프로세서 수를 아무리 늘려도 개선에 한계가 있다.

  • 무어의 법칙: 집적회로의 트랜지스터 수가 일정 주기로 두 배씩 늘어난다는 경험 법칙이다.
  • 구스타프슨의 법칙: 문제 크기를 함께 키우면 프로세서 수에 비례해 성능을 높일 수 있다는, 오히려 낙관적인 주장이다.
  • 폰노이만 아키텍처: 프로그램과 데이터를 같은 메모리에 저장하는 내장 프로그램 방식의 컴퓨터 구조로, 법칙이 아니다.
문제 4
교착상태 발생의 조건에 대한 설명으로 옳지 않은 것은?
1상호 배제 조건:최소한 하나의 자원이 비공유 모드로 점유되며, 비공유 모드에서는 한 번에 한 프로세스만 해당 자원을 사용할 수 있다.
2점유와 대기 조건:프로세스는 최소한 하나의 자원을 점유한 채, 현재 다른 프로세스에 의해 점유된 자원을 추가로 얻기 위해 반드시 대기해야 한다.
3비선점 조건:프로세스에 할당된 자원은 사용이 끝날 때까지 다른 프로세스가 강제로 빼앗을 수 없다.
4순환 대기 조건:대기 체인 내 프로세스들의 집합에서 이전 프로세스는 다음 프로세스가 점유한 자원을 대기하고, 마지막 프로세스는 자원을 대기하지 않아야 한다.
정답 및 해설

순환 대기 조건에서 마지막 프로세스가 자원을 대기하지 않는다는 설명이 옳지 않다.

순환 대기는 대기 체인이 고리를 이루는 상태로, 마지막 프로세스는 첫 번째 프로세스가 점유한 자원을 대기해야 순환이 성립한다.

  • 상호 배제: 비공유 자원은 한 번에 한 프로세스만 사용할 수 있다는 올바른 설명이다.
  • 점유와 대기: 자원을 쥔 채 다른 프로세스의 자원을 추가로 기다린다는 올바른 설명이다.
  • 비선점: 할당된 자원을 강제로 빼앗을 수 없다는 올바른 설명이다.
문제 5
CPU(중앙처리장치)의 성능 향상을 위해 한 명령어 사이클 동안 여러 개의 명령어를 동시에 처리할 수 있도록 설계한 CPU구조는?
1슈퍼스칼라(Superscalar)
2분기 예측(Branch Prediction)
3VLIW(Very Long Instruction Word)
4SIMD(Single Instruction Multiple Data)
정답 및 해설

한 사이클에 여러 명령어를 동시에 처리하도록 설계한 구조는 슈퍼스칼라이다.

슈퍼스칼라는 여러 개의 파이프라인을 두고 하드웨어가 독립적인 명령어들을 찾아 같은 사이클에 동시에 발행·실행한다.

  • 분기 예측: 분기 결과를 미리 예측해 파이프라인 지연을 줄이는 기법으로, 동시 처리 구조가 아니다.
  • VLIW: 컴파일러가 여러 연산을 하나의 긴 명령어로 묶어 두는 방식으로, 병렬성 추출을 하드웨어가 아닌 컴파일러가 맡는다.
  • SIMD: 하나의 명령어로 여러 데이터를 동시에 처리하는 데이터 병렬 구조이다.
문제 6
캐시기억장치 접근시간이 20ns, 주기억장치 접근시간이 150ns, 캐시기억장치 적중률이 80%인 경우에 평균 기억장치 접근시간은? (단, 기억장치는 캐시와 주기억장치로만 구성된다)
132ns
246ns
3124ns
4170ns
정답 및 해설

평균 기억장치 접근시간은 46ns이다.

캐시 적중 시에는 캐시 접근시간, 실패 시에는 주기억장치 접근시간이 걸린다고 보고 적중률로 가중 평균한다.

T=H×Tc+(1−H)×TmT = H \times T_c + (1-H) \times T_m
T=0.8×20+0.2×150T = 0.8 \times 20 + 0.2 \times 150
T=16+30=46 nsT = 16 + 30 = 46\,\mathrm{ns}

문제 7
아날로그 컴퓨터에 대한 설명으로 옳지 않은 것은?
1입력형식은 부호, 코드화된 숫자, 문자, 기호이다.
2출력형식은 곡선, 그래프 등이다.
3미적분 연산방식을 가지며, 정보처리속도가 빠르다.
4증폭회로 등으로 회로 구성을 한다.
정답 및 해설

입력형식이 부호·코드화된 숫자·문자·기호라는 설명은 디지털 컴퓨터의 특징이므로 옳지 않다.

아날로그 컴퓨터는 전압·전류·온도처럼 연속적으로 변하는 물리량을 입력으로 받는다.

  • 곡선·그래프 출력: 연속량을 다루므로 결과도 곡선이나 그래프 형태로 나타난다.
  • 미적분 연산: 연속 신호를 직접 적분·미분하므로 처리 속도가 빠르다.
  • 증폭회로 구성: 연산증폭기 등 증폭회로로 회로를 구성한다.
문제 8
RAID(Redundant Array of Inexpensive Disks)에 대한 설명으로 옳지 않은 것은?
1RAID-0은 디스크 스트라이핑(Disk Striping) 방식으로 중복 저장과 오류 검출 및 교정이 없는 방식이다.
2RAID-1은 디스크 미러링(Disk Mirroring) 방식으로 높은 신뢰도를 갖는다.
3RAID-4는 데이터를 비트(bit) 단위로 여러 디스크에 분할하여 저장하는 방식이며, 별도의 패리티(parity) 디스크를 사용한다.
4RAID-5는 별도의 패리티 디스크 대신 모든 디스크에 패리티 정보를 나누어 기록하는 방식이다.
정답 및 해설

RAID-4를 비트 단위로 분할 저장하는 방식이라고 한 설명이 옳지 않다.

RAID-4는 데이터를 블록 단위로 스트라이핑하고 별도의 패리티 전용 디스크를 두는 방식이며, 비트·바이트 단위 분할은 RAID-2·RAID-3의 특징이다.

  • RAID-0: 스트라이핑만 하고 중복 저장이나 오류 교정이 없다.
  • RAID-1: 같은 데이터를 두 디스크에 복제하는 미러링으로 신뢰도가 높다.
  • RAID-5: 패리티 정보를 모든 디스크에 분산 기록해 패리티 디스크 병목을 없앤다.
문제 9
다음 재귀 함수를 동일한 기능의 반복 함수로 바꿀 때, ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은? (순서대로 ㉠, ㉡)
int func (int n) {                 //재귀 함수
if (n == 0)
return 1;
else
return n * func (n - 1);
}
int iter_func (int n) { //반복 함수
int f = 1;
while ( ㉠ )
㉡
return f;
}
1n < 0, f = f * n--;
2n < 0, f = f * n++;
3n > 0, f = f * n--;
4n > 0, f = f * n++;
정답 및 해설

빈칸에는 n > 0과 f = f * n--;가 들어간다.

재귀 함수는 n × (n−1) × … × 1, 즉 n!을 계산한다. 반복 함수는 f = 1에서 출발해 n이 0보다 큰 동안 f에 n을 곱하고 n을 1씩 줄이면 같은 결과가 된다. 예를 들어 n = 3이면 f는 3, 6, 6으로 변하고 n이 0이 되어 반복이 끝난다.

  • n < 0과 f = f * n--;의 조합은 양수 n에서 반복문이 한 번도 실행되지 않아 항상 1을 반환한다.
  • n < 0과 f = f * n++;의 조합도 양수 n에서 조건이 처음부터 거짓이라 항상 1을 반환한다.
  • n > 0과 f = f * n++;의 조합은 n이 계속 커져 0에 도달하지 않으므로 반복이 끝나지 않는다.
문제 10
데이터의 종류 및 처리에 대한 설명으로 옳지 않은 것은?
1크롤링(Crawling)을 통해 얻은 웹문서의 텍스트 데이터는 대표적인 정형 데이터(Structured Data)이다.
2XML로 작성된 IoT 센서 데이터는 반정형 데이터(Semi-structured Data)로 분류할 수 있다.
3반정형 데이터는 데이터 구조에 대한 메타 데이터(Meta-data)를 포함한다.
4NoSQL과 Hadoop은 대규모 비정형 데이터(Unstructured Data) 처리에 적합하다.
정답 및 해설

크롤링으로 얻은 웹문서의 텍스트를 정형 데이터라고 한 설명이 옳지 않다.

웹문서 텍스트는 고정된 스키마가 없는 대표적인 비정형 데이터이다.

  • XML 센서 데이터: 태그로 구조를 표현하므로 반정형 데이터로 분류된다.
  • 반정형 데이터의 메타데이터: 태그·키처럼 데이터 구조를 설명하는 정보를 데이터 안에 포함한다.
  • NoSQL·Hadoop: 스키마가 유연하고 분산 처리가 가능해 대규모 비정형 데이터 처리에 적합하다.
문제 11
페이지 부재율(Page Fault Ratio)과 스래싱(Trashing)에 대한 설명으로 옳은 것은?
1페이지 부재율이 크면 스래싱이 적게 일어난다.
2페이지 부재율과 스래싱은 전혀 관계가 없다.
3스래싱이 많이 발생하면 페이지 부재율이 감소한다.
4다중 프로그램의 정도가 높을수록 스래싱이 증가한다.
정답 및 해설

다중 프로그래밍 정도가 높을수록 스래싱이 증가한다는 설명이 옳다.

동시에 적재된 프로세스가 많아지면 프로세스당 프레임이 부족해져 페이지 부재가 급증하고, 실행보다 페이지 교체에 더 많은 시간을 쓰게 된다.

  • 부재율이 크면 스래싱이 적다: 부재율이 클수록 스래싱이 많이 일어난다.
  • 둘은 무관하다: 스래싱은 높은 페이지 부재율 때문에 발생하므로 밀접하게 관련된다.
  • 스래싱이 많으면 부재율 감소: 스래싱이 심한 상태는 부재율이 높은 상태이다.
문제 12
전자상거래 관련 기술 중 고객의 요구에 맞춰 자재조달에서부터 생산, 판매, 유통에 이르기까지 공급사슬 전체의 기능통합과 최적화를 지향하는 정보시스템은?
1ERP(Enterprise Resource Planning)
2EDI(Electronic Data Interchange)
3SCM(Supply Chain Management)
4KMS(Knowledge Management System)
정답 및 해설

공급사슬 전체의 기능 통합과 최적화를 지향하는 시스템은 SCM이다.

SCM은 자재 조달부터 생산·판매·유통까지 기업 간 공급사슬의 흐름을 통합 관리한다.

  • ERP: 기업 내부의 인사·재무·생산 등 자원을 통합 관리하는 시스템이다.
  • EDI: 기업 간 거래 문서를 표준 형식으로 전자 교환하는 기술이다.
  • KMS: 조직 내 지식을 축적·공유하는 지식관리 시스템이다.
문제 13
프로토콜과 이에 대응하는 TCP/IP 프로토콜 계층 사이의 연결이 옳지 않은 것은?
1HTTP-응용 계층
2SMTP-데이터링크 계층
3IP-네트워크 계층
4UDP-전송 계층
정답 및 해설

SMTP를 데이터링크 계층에 연결한 것이 옳지 않다.

SMTP는 전자우편 전송 프로토콜로 TCP/IP의 응용 계층에 속한다.

  • HTTP: 웹 서비스를 위한 응용 계층 프로토콜이다.
  • IP: 주소 지정과 라우팅을 담당하는 네트워크(인터넷) 계층 프로토콜이다.
  • UDP: 비연결형 전송을 제공하는 전송 계층 프로토콜이다.
문제 14
관계 데이터베이스 스키마 STUDENT(SNO, NAME, AGE )에 대하여 다음과 같은 SQL 질의 문장을 사용한다고 할 때, 이 SQL 문장과 동일한 의미의 관계대수식은? (단, STUDENT 스키마에서 밑줄 친 속성은 기본키 속성을, 관계대수식에서 사용하는 관계대수 연산자 기호 π는 프로젝트 연산자를, 는 셀렉트 연산자를 나타낸다)
<SQL 질의문>
SELECT SNO, NAME
FROM STUDENT
WHERE AGE>20;
1
2
3
4
정답 및 해설

동일한 관계대수식은 πSNO,NAME(σAGE>20(STUDENT))\pi_{\mathrm{SNO,NAME}}(\sigma_{\mathrm{AGE}\gt 20}(\mathrm{STUDENT}))이다.

WHERE 절의 조건은 행을 고르는 셀렉트(σ)에, SELECT 절의 열 목록은 열을 고르는 프로젝트(π)에 대응한다. 먼저 AGE가 20보다 큰 행을 고른 뒤 SNO와 NAME 열만 남겨야 한다.

  • σSNO,NAME(πAGE>20(STUDENT))\sigma_{\mathrm{SNO,NAME}}(\pi_{\mathrm{AGE}\gt 20}(\mathrm{STUDENT}))는 σ의 첨자에 속성 목록을, π의 첨자에 조건식을 두어 두 연산자의 역할이 뒤바뀌었다.
  • σAGE>20(πSNO,NAME(STUDENT))\sigma_{\mathrm{AGE}\gt 20}(\pi_{\mathrm{SNO,NAME}}(\mathrm{STUDENT}))는 먼저 SNO, NAME만 남겨 AGE 속성이 사라진 뒤 조건을 평가하므로 성립하지 않는다.
  • πAGE>20(σSNO,NAME(STUDENT))\pi_{\mathrm{AGE}\gt 20}(\sigma_{\mathrm{SNO,NAME}}(\mathrm{STUDENT}))는 π와 σ의 첨자가 모두 뒤바뀐 식이다.
문제 15
두 프로토콜 개체 사이에서 흐름제어와 오류제어 및 메시지 전달 등의 기능을 수행하며, 연결성과 비연결성의 두 가지 운용모드를 제공하는 OSI 참조 모델 계층은?
1데이터링크 계층(Datalink Layer)
2네트워크 계층(Network Layer)
3전송 계층(Transport Layer)
4응용 계층(Application Layer)
정답 및 해설

설명에 해당하는 OSI 계층은 전송 계층이다.

전송 계층은 종단 간 흐름제어·오류제어를 수행하며, TCP 같은 연결형과 UDP 같은 비연결형 두 운용 모드를 제공한다.

  • 데이터링크 계층: 인접한 노드 사이의 프레임 전송과 오류 제어를 담당한다.
  • 네트워크 계층: 경로 선택과 논리 주소 지정을 담당한다.
  • 응용 계층: 사용자에게 네트워크 서비스를 제공하는 최상위 계층이다.
문제 16
소프트웨어 개발 언어에 대한 설명으로 옳지 않은 것은?
1C#은 마이크로소프트 닷넷 프레임워크를 지원하는 객체지향 언어이다.
2Python은 인터프리터 방식의 객체지향 언어로서 실행시점에 데이터 타입을 결정하는 동적 타이핑 기능을 갖는다.
3Kotlin은 그래픽 요소를 강화한 게임 개발 전용 언어이다.
4Java는 컴파일된 프로그램이 JVM상에서 인터프리터 방식으로 실행되는 플랫폼 독립적 프로그래밍 언어이다.
정답 및 해설

Kotlin을 게임 개발 전용 언어라고 한 설명이 옳지 않다.

Kotlin은 JetBrains가 만든 JVM 기반의 범용 언어로, Java와 호환되며 안드로이드 공식 개발 언어로 널리 쓰인다.

  • C#: 마이크로소프트 닷넷 프레임워크를 지원하는 객체지향 언어이다.
  • Python: 인터프리터 방식이며 실행 시점에 타입이 정해지는 동적 타이핑 언어이다.
  • Java: 바이트코드로 컴파일된 뒤 JVM에서 실행되므로 플랫폼에 독립적이다.
문제 17
소프트웨어 시스템은 기능 관점, 동적 관점 및 정보 관점으로 분류할 수 있다. 동적 관점에서 시스템을 기술할 때 사용할 수 있는 도구로 옳지 않은 것은?
1사건 추적도(Event Trace Diagram)
2자료 흐름도(Data Flow Diagram)
3상태 변화도(State Transition Diagram)
4페트리넷(Petri Net)
정답 및 해설

동적 관점의 도구가 아닌 것은 자료 흐름도(DFD)이다.

자료 흐름도는 데이터가 어떤 처리 과정을 거쳐 변환되는지를 나타내는 기능 관점의 도구이다.

  • 사건 추적도: 시간 순서에 따른 객체 간 사건 흐름을 표현하는 동적 관점 도구이다.
  • 상태 변화도: 사건에 따라 시스템 상태가 바뀌는 과정을 표현하는 동적 관점 도구이다.
  • 페트리넷: 병행 시스템의 상태와 사건 발생을 모델링하는 동적 관점 도구이다.
문제 18
다음에서 설명하는 네트워크 데이터 오류 검출 방법은?
  • 송신측: 첫 번째 비트가 1로 시작하는 임의의 n+1비트의 제수를 결정한다. 그리고 전송하고자 하는 데이터 끝에 n비트의 0을 추가한 후 제수로 모듈로-2 연산을 한다. 그러면 n비트의 나머지가 구해지는데 이 나머지가 중복 정보가 된다.
  • 수신측: 계산된 중복 정보를 데이터와 함께 전송하면 수신측에서는 전송받은 정보를 동일한 n+1제수로 모듈로-2 연산을 한다. 나머지가 0이면 오류가 없는 것으로 판단하고, 나머지가 0이 아니면 오류로 간주한다.
1수직 중복 검사(Vertical Redundancy Check)
2세로 중복 검사(Longitudinal Redundancy Check)
3순환 중복 검사(Cyclic Redundancy Check)
4체크섬(Checksum)
정답 및 해설

설명된 방법은 순환 중복 검사(CRC)이다.

CRC는 데이터 뒤에 n비트의 0을 붙여 n+1비트 생성 다항식(제수)으로 모듈로-2 나눗셈을 하고, 그 나머지를 중복 정보로 덧붙여 보낸다. 수신측은 같은 제수로 나누어 나머지가 0인지로 오류를 판단한다.

  • 수직 중복 검사는 문자 단위로 패리티 비트 하나를 붙이는 방식이다.
  • 세로 중복 검사는 데이터 블록의 같은 위치 비트끼리 패리티를 계산해 패리티 행을 붙이는 방식이다.
  • 체크섬은 데이터를 일정 단위로 더한 합(보수)을 검사값으로 쓰는 방식으로, 모듈로-2 나눗셈을 쓰지 않는다.
문제 19
다음 이진검색트리에서 28을 삭제한 후, 28의 오른쪽 서브트리에 있는 가장 작은 원소로 28을 대치하여 만들어지는 이진검색트리에서 41의 왼쪽 자식 노드는?
113
217
332
437
정답 및 해설

삭제·대치 후 41의 왼쪽 자식 노드는 37이다.

28의 오른쪽 서브트리(43을 루트로 하는 부분)에서 가장 작은 원소는 왼쪽 끝까지 내려간 30이다. 30이 28 자리로 올라가면, 30이 있던 자리(41의 왼쪽)에는 30의 오른쪽 서브트리인 37(왼쪽 자식 32)이 연결된다.

  • 13은 루트 노드로 삭제 과정에서 위치가 바뀌지 않는다.
  • 17은 28 자리에 들어온 30의 왼쪽 자식으로 그대로 남는다.
  • 32는 37의 왼쪽 자식으로 남으므로 41의 직접 자식이 아니다.
문제 20
다음은 리눅스 환경에서 fork() 시스템 호출을 이용하여 자식 프로세스를 생성하는 C 프로그램이다. 출력 결과로 옳은 것은? (단, “pid = fork();” 문장의 수행 결과 자식 프로세스의 생성을 성공하였다고 가정한다)
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<sys/wait.h>

int main(void) {
int i=0, v=1, n=5;
pid_t pid;

pid = fork();

if( pid < 0 ) {
for(i=0; i<n; i++) v+=(i+1);
printf("c = %d ", v);
} else if( pid == 0 ) {
for(i=0; i<n; i++) v*=(i+1);
printf("b = %d ", v);
} else {
wait(NULL);
for(i=0; i<n; i++) v+=1;
printf("a = %d ", v);
}
return 0;
}
1b=120, a=6
2c=16, b=120
3b=120, c=16
4a=6, c=16
정답 및 해설

출력 결과는 b = 120 다음에 a = 6이 찍힌다.

fork()가 성공하면 자식 프로세스는 pid로 0을, 부모 프로세스는 자식의 PID(양수)를 받는다. 자식은 v = 1에 1, 2, 3, 4, 5를 차례로 곱해 120을 출력한다.

부모는 wait(NULL)로 자식이 끝날 때까지 기다린 뒤, 자신의 v = 1에 1을 다섯 번 더해 6을 출력한다. 두 프로세스는 변수를 따로 가지므로 자식의 계산이 부모의 v에 영향을 주지 않는다.

  • c = 16과 b = 120을 함께 출력하는 경우는 없다. c를 출력하는 분기는 fork()가 실패해 음수를 반환할 때만 실행되므로, 생성 성공을 가정한 이 문항에서는 출력되지 않는다.
  • b = 120 다음에 c = 16이 출력된다는 것도 같은 이유로 틀리다. 부모 프로세스는 pid가 양수이므로 a를 출력하는 분기로 간다.
  • a = 6과 c = 16의 조합은 자식의 출력 b = 120이 빠지고, 실행되지 않는 c 분기가 들어가 있어 틀리다.
9급 지방직 컴퓨터일반 기출문제모두CBT · moducbt.com
20년 1회차
총 20문항 · 객관식 · 정답·해설 포함
문제 1
인터프리터(Interpreter) 방식의 언어로 옳지 않은 것은?
1JavaScript
2C
3Basic
4LISP
정답 및 해설

인터프리터 방식이 아닌 언어는 C이다.

C는 소스 전체를 기계어로 미리 번역하는 컴파일러 방식 언어이고, 인터프리터 방식은 소스를 한 줄씩 해석하며 바로 실행한다.

  • JavaScript: 브라우저 등 실행 환경이 소스를 해석해 실행하는 인터프리터 방식 언어이다.
  • Basic: 대표적인 초기 인터프리터 방식 언어이다.
  • LISP: 대화형 인터프리터 환경에서 실행되는 것이 전통적인 방식이다.
문제 2
CPU 스케줄링 기법 중 라운드 로빈(Round Robin) 방식에 대한 설명으로 옳지 않은 것은?
1선점 스케줄링 기법이다.
2여러 프로세스에 일정한 시간을 할당한다.
3시간할당량이 작으면 문맥 교환수와 오버헤드가 증가한다.
4FIFO(First-In-First-Out) 방식 대비 높은 처리량을 제공한다.
정답 및 해설

라운드 로빈이 FIFO보다 높은 처리량을 제공한다는 설명이 옳지 않다.

라운드 로빈은 응답 시간 공정성을 위한 방식으로, 잦은 문맥 교환 오버헤드 때문에 처리량은 오히려 FIFO보다 같거나 낮아지기 쉽다.

  • 선점 스케줄링: 시간 할당량이 끝나면 CPU를 빼앗아 다음 프로세스에 넘기므로 선점형이다.
  • 일정 시간 할당: 모든 프로세스에 동일한 시간 할당량을 순서대로 준다.
  • 작은 시간 할당량: 교체가 잦아져 문맥 교환 횟수와 오버헤드가 늘어난다.
문제 3
프로세서의 수를 늘려도 속도를 개선하는 데 한계가 있다는 주장으로서, 병렬처리 프로세서의 성능 향상의 한계를 지적한 법칙은?
1무어의 법칙(Moore’s Law)
2암달의 법칙(Amdahl’s Law)
3구스타프슨의 법칙(Gustafson’s Law)
4폰노이만 아키텍처(von Neumann Architecture)
정답 및 해설

병렬처리 성능 향상의 한계를 지적한 법칙은 암달의 법칙이다.

프로그램에서 병렬화할 수 없는 순차 부분의 비율이 전체 속도 향상의 상한을 결정하므로, 프로세서 수를 아무리 늘려도 개선에 한계가 있다.

  • 무어의 법칙: 집적회로의 트랜지스터 수가 일정 주기로 두 배씩 늘어난다는 경험 법칙이다.
  • 구스타프슨의 법칙: 문제 크기를 함께 키우면 프로세서 수에 비례해 성능을 높일 수 있다는, 오히려 낙관적인 주장이다.
  • 폰노이만 아키텍처: 프로그램과 데이터를 같은 메모리에 저장하는 내장 프로그램 방식의 컴퓨터 구조로, 법칙이 아니다.
문제 4
교착상태 발생의 조건에 대한 설명으로 옳지 않은 것은?
1상호 배제 조건:최소한 하나의 자원이 비공유 모드로 점유되며, 비공유 모드에서는 한 번에 한 프로세스만 해당 자원을 사용할 수 있다.
2점유와 대기 조건:프로세스는 최소한 하나의 자원을 점유한 채, 현재 다른 프로세스에 의해 점유된 자원을 추가로 얻기 위해 반드시 대기해야 한다.
3비선점 조건:프로세스에 할당된 자원은 사용이 끝날 때까지 다른 프로세스가 강제로 빼앗을 수 없다.
4순환 대기 조건:대기 체인 내 프로세스들의 집합에서 이전 프로세스는 다음 프로세스가 점유한 자원을 대기하고, 마지막 프로세스는 자원을 대기하지 않아야 한다.
정답 및 해설

순환 대기 조건에서 마지막 프로세스가 자원을 대기하지 않는다는 설명이 옳지 않다.

순환 대기는 대기 체인이 고리를 이루는 상태로, 마지막 프로세스는 첫 번째 프로세스가 점유한 자원을 대기해야 순환이 성립한다.

  • 상호 배제: 비공유 자원은 한 번에 한 프로세스만 사용할 수 있다는 올바른 설명이다.
  • 점유와 대기: 자원을 쥔 채 다른 프로세스의 자원을 추가로 기다린다는 올바른 설명이다.
  • 비선점: 할당된 자원을 강제로 빼앗을 수 없다는 올바른 설명이다.
문제 5
CPU(중앙처리장치)의 성능 향상을 위해 한 명령어 사이클 동안 여러 개의 명령어를 동시에 처리할 수 있도록 설계한 CPU구조는?
1슈퍼스칼라(Superscalar)
2분기 예측(Branch Prediction)
3VLIW(Very Long Instruction Word)
4SIMD(Single Instruction Multiple Data)
정답 및 해설

한 사이클에 여러 명령어를 동시에 처리하도록 설계한 구조는 슈퍼스칼라이다.

슈퍼스칼라는 여러 개의 파이프라인을 두고 하드웨어가 독립적인 명령어들을 찾아 같은 사이클에 동시에 발행·실행한다.

  • 분기 예측: 분기 결과를 미리 예측해 파이프라인 지연을 줄이는 기법으로, 동시 처리 구조가 아니다.
  • VLIW: 컴파일러가 여러 연산을 하나의 긴 명령어로 묶어 두는 방식으로, 병렬성 추출을 하드웨어가 아닌 컴파일러가 맡는다.
  • SIMD: 하나의 명령어로 여러 데이터를 동시에 처리하는 데이터 병렬 구조이다.
문제 6
캐시기억장치 접근시간이 20ns, 주기억장치 접근시간이 150ns, 캐시기억장치 적중률이 80%인 경우에 평균 기억장치 접근시간은? (단, 기억장치는 캐시와 주기억장치로만 구성된다)
132ns
246ns
3124ns
4170ns
정답 및 해설

평균 기억장치 접근시간은 46ns이다.

캐시 적중 시에는 캐시 접근시간, 실패 시에는 주기억장치 접근시간이 걸린다고 보고 적중률로 가중 평균한다.

T=H×Tc+(1−H)×TmT = H \times T_c + (1-H) \times T_m
T=0.8×20+0.2×150T = 0.8 \times 20 + 0.2 \times 150
T=16+30=46 nsT = 16 + 30 = 46\,\mathrm{ns}

문제 7
아날로그 컴퓨터에 대한 설명으로 옳지 않은 것은?
1입력형식은 부호, 코드화된 숫자, 문자, 기호이다.
2출력형식은 곡선, 그래프 등이다.
3미적분 연산방식을 가지며, 정보처리속도가 빠르다.
4증폭회로 등으로 회로 구성을 한다.
정답 및 해설

입력형식이 부호·코드화된 숫자·문자·기호라는 설명은 디지털 컴퓨터의 특징이므로 옳지 않다.

아날로그 컴퓨터는 전압·전류·온도처럼 연속적으로 변하는 물리량을 입력으로 받는다.

  • 곡선·그래프 출력: 연속량을 다루므로 결과도 곡선이나 그래프 형태로 나타난다.
  • 미적분 연산: 연속 신호를 직접 적분·미분하므로 처리 속도가 빠르다.
  • 증폭회로 구성: 연산증폭기 등 증폭회로로 회로를 구성한다.
문제 8
RAID(Redundant Array of Inexpensive Disks)에 대한 설명으로 옳지 않은 것은?
1RAID-0은 디스크 스트라이핑(Disk Striping) 방식으로 중복 저장과 오류 검출 및 교정이 없는 방식이다.
2RAID-1은 디스크 미러링(Disk Mirroring) 방식으로 높은 신뢰도를 갖는다.
3RAID-4는 데이터를 비트(bit) 단위로 여러 디스크에 분할하여 저장하는 방식이며, 별도의 패리티(parity) 디스크를 사용한다.
4RAID-5는 별도의 패리티 디스크 대신 모든 디스크에 패리티 정보를 나누어 기록하는 방식이다.
정답 및 해설

RAID-4를 비트 단위로 분할 저장하는 방식이라고 한 설명이 옳지 않다.

RAID-4는 데이터를 블록 단위로 스트라이핑하고 별도의 패리티 전용 디스크를 두는 방식이며, 비트·바이트 단위 분할은 RAID-2·RAID-3의 특징이다.

  • RAID-0: 스트라이핑만 하고 중복 저장이나 오류 교정이 없다.
  • RAID-1: 같은 데이터를 두 디스크에 복제하는 미러링으로 신뢰도가 높다.
  • RAID-5: 패리티 정보를 모든 디스크에 분산 기록해 패리티 디스크 병목을 없앤다.
문제 9
다음 재귀 함수를 동일한 기능의 반복 함수로 바꿀 때, ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은? (순서대로 ㉠, ㉡)
int func (int n) {                 //재귀 함수
if (n == 0)
return 1;
else
return n * func (n - 1);
}
int iter_func (int n) { //반복 함수
int f = 1;
while ( ㉠ )
㉡
return f;
}
1n < 0, f = f * n--;
2n < 0, f = f * n++;
3n > 0, f = f * n--;
4n > 0, f = f * n++;
정답 및 해설

빈칸에는 n > 0과 f = f * n--;가 들어간다.

재귀 함수는 n × (n−1) × … × 1, 즉 n!을 계산한다. 반복 함수는 f = 1에서 출발해 n이 0보다 큰 동안 f에 n을 곱하고 n을 1씩 줄이면 같은 결과가 된다. 예를 들어 n = 3이면 f는 3, 6, 6으로 변하고 n이 0이 되어 반복이 끝난다.

  • n < 0과 f = f * n--;의 조합은 양수 n에서 반복문이 한 번도 실행되지 않아 항상 1을 반환한다.
  • n < 0과 f = f * n++;의 조합도 양수 n에서 조건이 처음부터 거짓이라 항상 1을 반환한다.
  • n > 0과 f = f * n++;의 조합은 n이 계속 커져 0에 도달하지 않으므로 반복이 끝나지 않는다.
문제 10
데이터의 종류 및 처리에 대한 설명으로 옳지 않은 것은?
1크롤링(Crawling)을 통해 얻은 웹문서의 텍스트 데이터는 대표적인 정형 데이터(Structured Data)이다.
2XML로 작성된 IoT 센서 데이터는 반정형 데이터(Semi-structured Data)로 분류할 수 있다.
3반정형 데이터는 데이터 구조에 대한 메타 데이터(Meta-data)를 포함한다.
4NoSQL과 Hadoop은 대규모 비정형 데이터(Unstructured Data) 처리에 적합하다.
정답 및 해설

크롤링으로 얻은 웹문서의 텍스트를 정형 데이터라고 한 설명이 옳지 않다.

웹문서 텍스트는 고정된 스키마가 없는 대표적인 비정형 데이터이다.

  • XML 센서 데이터: 태그로 구조를 표현하므로 반정형 데이터로 분류된다.
  • 반정형 데이터의 메타데이터: 태그·키처럼 데이터 구조를 설명하는 정보를 데이터 안에 포함한다.
  • NoSQL·Hadoop: 스키마가 유연하고 분산 처리가 가능해 대규모 비정형 데이터 처리에 적합하다.
문제 11
페이지 부재율(Page Fault Ratio)과 스래싱(Trashing)에 대한 설명으로 옳은 것은?
1페이지 부재율이 크면 스래싱이 적게 일어난다.
2페이지 부재율과 스래싱은 전혀 관계가 없다.
3스래싱이 많이 발생하면 페이지 부재율이 감소한다.
4다중 프로그램의 정도가 높을수록 스래싱이 증가한다.
정답 및 해설

다중 프로그래밍 정도가 높을수록 스래싱이 증가한다는 설명이 옳다.

동시에 적재된 프로세스가 많아지면 프로세스당 프레임이 부족해져 페이지 부재가 급증하고, 실행보다 페이지 교체에 더 많은 시간을 쓰게 된다.

  • 부재율이 크면 스래싱이 적다: 부재율이 클수록 스래싱이 많이 일어난다.
  • 둘은 무관하다: 스래싱은 높은 페이지 부재율 때문에 발생하므로 밀접하게 관련된다.
  • 스래싱이 많으면 부재율 감소: 스래싱이 심한 상태는 부재율이 높은 상태이다.
문제 12
전자상거래 관련 기술 중 고객의 요구에 맞춰 자재조달에서부터 생산, 판매, 유통에 이르기까지 공급사슬 전체의 기능통합과 최적화를 지향하는 정보시스템은?
1ERP(Enterprise Resource Planning)
2EDI(Electronic Data Interchange)
3SCM(Supply Chain Management)
4KMS(Knowledge Management System)
정답 및 해설

공급사슬 전체의 기능 통합과 최적화를 지향하는 시스템은 SCM이다.

SCM은 자재 조달부터 생산·판매·유통까지 기업 간 공급사슬의 흐름을 통합 관리한다.

  • ERP: 기업 내부의 인사·재무·생산 등 자원을 통합 관리하는 시스템이다.
  • EDI: 기업 간 거래 문서를 표준 형식으로 전자 교환하는 기술이다.
  • KMS: 조직 내 지식을 축적·공유하는 지식관리 시스템이다.
문제 13
프로토콜과 이에 대응하는 TCP/IP 프로토콜 계층 사이의 연결이 옳지 않은 것은?
1HTTP-응용 계층
2SMTP-데이터링크 계층
3IP-네트워크 계층
4UDP-전송 계층
정답 및 해설

SMTP를 데이터링크 계층에 연결한 것이 옳지 않다.

SMTP는 전자우편 전송 프로토콜로 TCP/IP의 응용 계층에 속한다.

  • HTTP: 웹 서비스를 위한 응용 계층 프로토콜이다.
  • IP: 주소 지정과 라우팅을 담당하는 네트워크(인터넷) 계층 프로토콜이다.
  • UDP: 비연결형 전송을 제공하는 전송 계층 프로토콜이다.
문제 14
관계 데이터베이스 스키마 STUDENT(SNO, NAME, AGE )에 대하여 다음과 같은 SQL 질의 문장을 사용한다고 할 때, 이 SQL 문장과 동일한 의미의 관계대수식은? (단, STUDENT 스키마에서 밑줄 친 속성은 기본키 속성을, 관계대수식에서 사용하는 관계대수 연산자 기호 π는 프로젝트 연산자를, 는 셀렉트 연산자를 나타낸다)
<SQL 질의문>
SELECT SNO, NAME
FROM STUDENT
WHERE AGE>20;
1
2
3
4
정답 및 해설

동일한 관계대수식은 πSNO,NAME(σAGE>20(STUDENT))\pi_{\mathrm{SNO,NAME}}(\sigma_{\mathrm{AGE}\gt 20}(\mathrm{STUDENT}))이다.

WHERE 절의 조건은 행을 고르는 셀렉트(σ)에, SELECT 절의 열 목록은 열을 고르는 프로젝트(π)에 대응한다. 먼저 AGE가 20보다 큰 행을 고른 뒤 SNO와 NAME 열만 남겨야 한다.

  • σSNO,NAME(πAGE>20(STUDENT))\sigma_{\mathrm{SNO,NAME}}(\pi_{\mathrm{AGE}\gt 20}(\mathrm{STUDENT}))는 σ의 첨자에 속성 목록을, π의 첨자에 조건식을 두어 두 연산자의 역할이 뒤바뀌었다.
  • σAGE>20(πSNO,NAME(STUDENT))\sigma_{\mathrm{AGE}\gt 20}(\pi_{\mathrm{SNO,NAME}}(\mathrm{STUDENT}))는 먼저 SNO, NAME만 남겨 AGE 속성이 사라진 뒤 조건을 평가하므로 성립하지 않는다.
  • πAGE>20(σSNO,NAME(STUDENT))\pi_{\mathrm{AGE}\gt 20}(\sigma_{\mathrm{SNO,NAME}}(\mathrm{STUDENT}))는 π와 σ의 첨자가 모두 뒤바뀐 식이다.
문제 15
두 프로토콜 개체 사이에서 흐름제어와 오류제어 및 메시지 전달 등의 기능을 수행하며, 연결성과 비연결성의 두 가지 운용모드를 제공하는 OSI 참조 모델 계층은?
1데이터링크 계층(Datalink Layer)
2네트워크 계층(Network Layer)
3전송 계층(Transport Layer)
4응용 계층(Application Layer)
정답 및 해설

설명에 해당하는 OSI 계층은 전송 계층이다.

전송 계층은 종단 간 흐름제어·오류제어를 수행하며, TCP 같은 연결형과 UDP 같은 비연결형 두 운용 모드를 제공한다.

  • 데이터링크 계층: 인접한 노드 사이의 프레임 전송과 오류 제어를 담당한다.
  • 네트워크 계층: 경로 선택과 논리 주소 지정을 담당한다.
  • 응용 계층: 사용자에게 네트워크 서비스를 제공하는 최상위 계층이다.
문제 16
소프트웨어 개발 언어에 대한 설명으로 옳지 않은 것은?
1C#은 마이크로소프트 닷넷 프레임워크를 지원하는 객체지향 언어이다.
2Python은 인터프리터 방식의 객체지향 언어로서 실행시점에 데이터 타입을 결정하는 동적 타이핑 기능을 갖는다.
3Kotlin은 그래픽 요소를 강화한 게임 개발 전용 언어이다.
4Java는 컴파일된 프로그램이 JVM상에서 인터프리터 방식으로 실행되는 플랫폼 독립적 프로그래밍 언어이다.
정답 및 해설

Kotlin을 게임 개발 전용 언어라고 한 설명이 옳지 않다.

Kotlin은 JetBrains가 만든 JVM 기반의 범용 언어로, Java와 호환되며 안드로이드 공식 개발 언어로 널리 쓰인다.

  • C#: 마이크로소프트 닷넷 프레임워크를 지원하는 객체지향 언어이다.
  • Python: 인터프리터 방식이며 실행 시점에 타입이 정해지는 동적 타이핑 언어이다.
  • Java: 바이트코드로 컴파일된 뒤 JVM에서 실행되므로 플랫폼에 독립적이다.
문제 17
소프트웨어 시스템은 기능 관점, 동적 관점 및 정보 관점으로 분류할 수 있다. 동적 관점에서 시스템을 기술할 때 사용할 수 있는 도구로 옳지 않은 것은?
1사건 추적도(Event Trace Diagram)
2자료 흐름도(Data Flow Diagram)
3상태 변화도(State Transition Diagram)
4페트리넷(Petri Net)
정답 및 해설

동적 관점의 도구가 아닌 것은 자료 흐름도(DFD)이다.

자료 흐름도는 데이터가 어떤 처리 과정을 거쳐 변환되는지를 나타내는 기능 관점의 도구이다.

  • 사건 추적도: 시간 순서에 따른 객체 간 사건 흐름을 표현하는 동적 관점 도구이다.
  • 상태 변화도: 사건에 따라 시스템 상태가 바뀌는 과정을 표현하는 동적 관점 도구이다.
  • 페트리넷: 병행 시스템의 상태와 사건 발생을 모델링하는 동적 관점 도구이다.
문제 18
다음에서 설명하는 네트워크 데이터 오류 검출 방법은?
  • 송신측: 첫 번째 비트가 1로 시작하는 임의의 n+1비트의 제수를 결정한다. 그리고 전송하고자 하는 데이터 끝에 n비트의 0을 추가한 후 제수로 모듈로-2 연산을 한다. 그러면 n비트의 나머지가 구해지는데 이 나머지가 중복 정보가 된다.
  • 수신측: 계산된 중복 정보를 데이터와 함께 전송하면 수신측에서는 전송받은 정보를 동일한 n+1제수로 모듈로-2 연산을 한다. 나머지가 0이면 오류가 없는 것으로 판단하고, 나머지가 0이 아니면 오류로 간주한다.
1수직 중복 검사(Vertical Redundancy Check)
2세로 중복 검사(Longitudinal Redundancy Check)
3순환 중복 검사(Cyclic Redundancy Check)
4체크섬(Checksum)
정답 및 해설

설명된 방법은 순환 중복 검사(CRC)이다.

CRC는 데이터 뒤에 n비트의 0을 붙여 n+1비트 생성 다항식(제수)으로 모듈로-2 나눗셈을 하고, 그 나머지를 중복 정보로 덧붙여 보낸다. 수신측은 같은 제수로 나누어 나머지가 0인지로 오류를 판단한다.

  • 수직 중복 검사는 문자 단위로 패리티 비트 하나를 붙이는 방식이다.
  • 세로 중복 검사는 데이터 블록의 같은 위치 비트끼리 패리티를 계산해 패리티 행을 붙이는 방식이다.
  • 체크섬은 데이터를 일정 단위로 더한 합(보수)을 검사값으로 쓰는 방식으로, 모듈로-2 나눗셈을 쓰지 않는다.
문제 19
다음 이진검색트리에서 28을 삭제한 후, 28의 오른쪽 서브트리에 있는 가장 작은 원소로 28을 대치하여 만들어지는 이진검색트리에서 41의 왼쪽 자식 노드는?
113
217
332
437
정답 및 해설

삭제·대치 후 41의 왼쪽 자식 노드는 37이다.

28의 오른쪽 서브트리(43을 루트로 하는 부분)에서 가장 작은 원소는 왼쪽 끝까지 내려간 30이다. 30이 28 자리로 올라가면, 30이 있던 자리(41의 왼쪽)에는 30의 오른쪽 서브트리인 37(왼쪽 자식 32)이 연결된다.

  • 13은 루트 노드로 삭제 과정에서 위치가 바뀌지 않는다.
  • 17은 28 자리에 들어온 30의 왼쪽 자식으로 그대로 남는다.
  • 32는 37의 왼쪽 자식으로 남으므로 41의 직접 자식이 아니다.
문제 20
다음은 리눅스 환경에서 fork() 시스템 호출을 이용하여 자식 프로세스를 생성하는 C 프로그램이다. 출력 결과로 옳은 것은? (단, “pid = fork();” 문장의 수행 결과 자식 프로세스의 생성을 성공하였다고 가정한다)
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<errno.h>
#include<sys/wait.h>

int main(void) {
int i=0, v=1, n=5;
pid_t pid;

pid = fork();

if( pid < 0 ) {
for(i=0; i<n; i++) v+=(i+1);
printf("c = %d ", v);
} else if( pid == 0 ) {
for(i=0; i<n; i++) v*=(i+1);
printf("b = %d ", v);
} else {
wait(NULL);
for(i=0; i<n; i++) v+=1;
printf("a = %d ", v);
}
return 0;
}
1b=120, a=6
2c=16, b=120
3b=120, c=16
4a=6, c=16
정답 및 해설

출력 결과는 b = 120 다음에 a = 6이 찍힌다.

fork()가 성공하면 자식 프로세스는 pid로 0을, 부모 프로세스는 자식의 PID(양수)를 받는다. 자식은 v = 1에 1, 2, 3, 4, 5를 차례로 곱해 120을 출력한다.

부모는 wait(NULL)로 자식이 끝날 때까지 기다린 뒤, 자신의 v = 1에 1을 다섯 번 더해 6을 출력한다. 두 프로세스는 변수를 따로 가지므로 자식의 계산이 부모의 v에 영향을 주지 않는다.

  • c = 16과 b = 120을 함께 출력하는 경우는 없다. c를 출력하는 분기는 fork()가 실패해 음수를 반환할 때만 실행되므로, 생성 성공을 가정한 이 문항에서는 출력되지 않는다.
  • b = 120 다음에 c = 16이 출력된다는 것도 같은 이유로 틀리다. 부모 프로세스는 pid가 양수이므로 a를 출력하는 분기로 간다.
  • a = 6과 c = 16의 조합은 자식의 출력 b = 120이 빠지고, 실행되지 않는 c 분기가 들어가 있어 틀리다.