2015년도 국가직 9급 컴퓨터 일반 문 1. 시스템 소프트웨어에 포함되지 않는 것은? 1 1 스프레드시트(spreadsheet) 2 로더(loader) 3 링커(linker) 4 운영체제(operating system) - 시스템 소프트웨어 : 운영체제, 데이터베이스관리 프로그램,, 컴파일러, 링커, 로더, 유틸리티 소프트웨 어 등 - 스프레드시트 : 일상 업무에 많이 발생되는 여러 가지 도표 형태의 양식으로 계산하는 사무업무를 자 동으로 할 수 있는 표 계산 프로그램으로 대표적으로 엑셀 프로그램이 있으며, 응용 소프트웨어에 해당 된다. 문 2. OSI 7계층 중 브리지(bridge)가 복수의 LAN을 결합하기 위해 동작하는 계층은? 2 1 물리 계층 2 데이터 링크 계층 3 네트워크 계층 4 전송 계층 - 브리지(bridge)는 네트워크에 있어서 케이블을 통과하는 데이터를 중계하는 기기이며, 데이터링크 계 층의 중계기기이다. 서로 비슷한 MAC 프로토콜을 사용하는 LAN 사이를 연결한다. 문 3. 데이터베이스 설계 과정에서 목표 DBMS의 구현 데이터 모델로 표현된 데이터베이스 스키마가 도출되는 단계는? 3 1 요구사항 분석 단계 2 개념적 설계 단계 3 논리적 설계 단계 4 물리적 설계 단계 - 논리적 설계 단계 : 앞 단계의 개념적 설계 단계에서 만들어진 정보 구조로부터 목표 DBMS가 처리할 수 있는 스키마를 생성한다. 이 스키마는 요구 조건 명세를 만족해야되고, 무결성과 일관성 제약 조건도 만족하여야 한다. 문 4. 객체 지향 프로그래밍의 특징 중 상속 관계에서 상위 클래스에 정의된 메소드(method) 호출에 대 해 각 하위 클래스가 가지고 있는 고유한 방법으로 응답할 수 있도록 유연성을 제공하는 것은? 3 1 재사용성(reusability) 2 추상화(abstraction) 3 다형성(polymorphism) - 1 -
4 캡슐화(encapsulation) - 객체 지향 프로그래밍의 특성 중 다형성은 메소드 호출 시 호출되는 메소드가 실행시에 결정되는 성질 이 있으며, 대표적으로 오버로딩과 오버라이딩이 있다. 문 5. 다음은 캐시 기억장치를 사상(mapping) 방식 기준으로 분류한 것이다. 캐시 블록은 4개 이상이고 사상 방식을 제외한 모든 조건이 동일하다고 가정할 때, 평균적으로 캐시 적중률(hit ratio)이 높은 것에 서 낮은 것 순으로 바르게 나열한 것은? 2 ㄱ. 직접 사상(direct-mapped) ㄴ. 완전 연관(fully-associative) ㄷ. 2-way 집합 연관(set-associative) 1 ㄱ-ㄴ-ㄷ 2 ㄴ-ㄷ-ㄱ 3 ㄷ-ㄱ-ㄴ 4 ㄱ-ㄷ-ㄴ - 완전-연관 사상(fully-associative mapping) : 블록이 캐시내의 어느 곳에나 위치할 수 있는 방식이다. 이 매핑 방식은 캐시를 효율적으로 사용하게 하여 캐시의 적중률을 높일 수 있으나 CPU가 캐시의 데이 터를 참조할 때마다 어느 위치에 해당 데이터의 블록이 있는지 알아내기 위하여 전체 태그 값을 모두 병렬적으로 비교해야 하므로 구성과 과정이 매우 복잡하다는 단점을 가지고 있다.. - 집합-연관 사상(set-associative mapping) : 직접 사상의 경우 구현이 간단하다는 장점이 있고, 완전- 연관 사상은 어떤 주소든지 동시에 매핑시킬 수 있어 높은 적중률을 가질 수 있다는 장점을 가지고 있으 나 그에 준하는 단점 또한 가지고 있어 이들의 장점을 취하고, 단점을 줄이기 위한 절충안으로 나온 것이다. n-way 집합-연관 캐시는 각각 n개의 블록으로 이루어진 다수의 집합들로 구성되어 있다. 빠른 검색을 위해 n개의 블록을 병렬로 수행한다. - 직접 사상(direct mapping) : 블록이 단지 한곳에만 위치할 수 있는 방법이다. 이 방식은 구현이 매우 단순하다는 장점을 가지고 있지만 운영상 매우 비효율적인 면을 가지고 있다. 즉, 블록 단위로 나뉘어진 메모리는 정해진 블록 위치에 들어갈 수밖에 없으므로 비어 있는 라인이 있더라도 동일 라인의 메모리 주소에 대하여 하나의 데이터밖에 저장할 수 없다는 단점을 가지고 있다. 문6. 다음 논리회로의 부울식으로 옳은 것은? 3 A F B C 1 F=AC'+BC - 2 -
2 F(A, B, C)=Σm(0, 1, 2, 3, 6, 7) 3 F=(AC')' 4 F=(A'+B'+C)(A+B'+C') - F = (AC ) + BC = (A + C) + BC --- 드 모르간 법칙 적용 = A + C 1 + BC = A + C(1 + B) --- 부울 대수 기본정리 적용 = A +C = (AC ) 문7. 소프트웨어 개발 프로세스 모델 중 하나인 나선형 모델(spiral model)에 대한 설명으로 옳지 않은 것은? 4 1 폭포수(waterfall) 모델과 원형(prototype) 모델의 장점을 결합한 모델이다. 2 점증적으로 개발을 진행하여 소프트웨어 품질을 지속적으로 개선할 수 있다. 3 위험을 분석하고 최소화하기 위한 단계가 포함되어 있다. 4 관리가 복잡하여 대규모 시스템의 소프트웨어 개발에는 적합하지 않다. - 나선형 모형(Spiral Model) : 폭포수 모델과 프로토타이핑 모델의 장점을 수용하고, 새로운 요소인 위 험 분석을 추가한 진화적 개발 모델이다.. 프로젝트 수행 시 발생하는 위험을 관리하고 최소화하려는 것 을 목적으로 하며 계획수립, 위험분석, 개발, 사용자 평가의 과정을 반복적으로 수행한다. 개발 단계를 반복적으로 수행함으로써 점차적으로 완벽한 소프트웨어를 개발하는 진화적(evolutionary) 모델이며, 대 규모 시스템의 소프트웨어 개발에 적합하다. 문8. 다음 표는 단일 CPU에 진입한 프로세스의 도착 시간과 처리하는 데 필요한 실행 시간을 나타낸 것이다. 프로세스 간 문맥 교환에 따른 오버헤드는 무시한다고 할 때, SRT(shortest remaining time) 스 케줄링 알고리즘을 사용한 경우 네 프로세스의 평균 반환시간(turnaround time)은? 2 프로세스 도착시간 실행시간 P 1 0 8 P 2 2 4 P 3 4 1 P 4 6 4 1 4.25 2 7 3 8.75 4 10 - SRT(Shortest Remaining Time) 스케줄링은 실행중인 작업이 끝날 때까지 남은 실행 시간의 추정값보 다 더 작은 추정값을 갖는 작업이 들어 오게 되면 언제라도 현재 실행중인 작업을 중단하고 그것을 먼저 실행시키는 스케줄링 기법이다. - 3 -
- 처음에 프로세스 P1의 실행이 시작되며, 시간 2가 되면 프로세스 P2가 도착하는데 전체 실행시간이 P1은 6(8-2)이고 P2의 실행시간이 4이므로 선점하여 실행하는 순으로 진행된다. - 시간 4가 되면 P3가 시작되어 시간 5에 종료되면, 다시 P2 가 실행되어 시간 7에 종료되면 P4 가 시간 11까지 실행된후 나머지 P1이 시간 17까지 실행된다. - 반환시간 : P1(17), P2(7-2 = 5), P3(5-4 = 1), P4(11-6 = 5) (17 + 5 +1 + 5) / 4 = 7 문9. 이더넷(Ethernet)의 매체 접근 제어(MAC) 방식인 CSMA/CD에 대한 설명으로 옳지 않은 것은? 1 1 CSMA/CD 방식은 CSMA 방식에 충돌 검출 기법을 추가한 것으로 IEEE 802.11B의 MAC 방식으로 사용된다. 2 충돌 검출을 위해 전송 프레임의 길이를 일정 크기 이상으로 유지해야 한다. 3 전송 도중 충돌이 발생하면 임의의 시간 동안 대기하기 때문에 지연시간을 예측하기 어렵다. 4 여러 스테이션으로부터의 전송 요구량이 증가하면 회선의 유효 전송률은 단일 스테이션에서 전송할 때 얻을 수 있는 유효 전송률보다 낮아지게 된다. - CSMA/CD(Carrier Sense Multiple Access With Collision Detection; 반송파 감지 다중 접근/충돌 탐 지)은 버스형 통신망의 이더넷에서 주로 사용되며, 통신회선이 사용중이면 일정시간 동안 대기하고 통신 회선상에 데이터가 없을 때만 데이터를 송신하며, 송신중에도 전송로의 상태를 계속 감시한다. - IEEE 802.3은 CSMA/CD 액세스 제어 방식을 사용하며, 이.더넷 표준이다. - IEEE 802.11b은 IEEE가 정한 무선 LAN 규격인 IEEE 802.11의 차세대 규격이다. 문10. 다음은 C언어로 내림차순 버블정렬 알고리즘을 구현한 함수이다. ᄀ에 들어갈 if문의 조건으로 올 바른 것은? 4 (단, size는 1차원 배열인 value의 크기이다) void BubbleSprting(int *value, int size) { int x, y, temp; for(x = 0; x < size; z++) { for(y = 0; y < size - x -1; y++) { if( ᄀ ) { temp = value[y]; value[y] = value[y+1] value[y+1] = temp; 1 value[x] > value[y+1] 2 value[x] < value[y+1] 3 value[y] > value[y+1] - 4 -
4 value[y] < value[y+1] - 버블정렬(내림차순) : 프로그래밍언어론 이나 자료구조에서 흔히 나오는 문제이다. ex) 1,2,3,4,5를 내림차순으로 정렬 첫 번째 반복 (1, 2)를 비교하여 1이 작으므로 위치를 바꾼다. (2, 1, 3, 4, 5) (1, 3)를 비교하여 1이 작으므로 위치를 바꾼다. (2, 3, 1, 4, 5) (1, 4)를 비교하여 1이 작으므로 위치를 바꾼다. (2, 3, 4, 1, 5) (1, 5)를 비교하여 1이 작으므로 위치를 바꾼다. (2, 3, 4, 5, 1) (n -1)번의 비교, 즉 4번의 비교로 가장 작은수가 제일 뒤로 이동된다. 두 번째 반복 (2, 3)을 비교하여 2가 작으므로 위치를 바꾼다. (3, 2, 4, 5, 1) (2, 4)을 비교하여 2가 작으므로 위치를 바꾼다. (3, 4, 2, 5, 1) (2, 5)을 비교하여 2가 작으므로 위치를 바꾼다. (3, 4, 5, 2, 1) (n -1)번의 비교, 즉 3번의 비교로 가장 작은수가 제일 뒤로 이동된다. 세 번째 반복 (3, 4)을 비교하여 3이 작으므로 위치를 바꾼다. (4, 5, 3, 2, 1) (n -1)번의 비교, 즉 2번의 비교로 가장 작은수가 제일 뒤로 이동된다. 네 번째 반복 (4, 5)을 비교하여 4이 작으므로 위치를 바꾼다. (5, 4, 3, 2, 1) - 문제 소스코드에서 조건 만족시 value[y]값과 value[y+1]값의 자리바꿈이 이루어지며, 위의 문제는 내 림차순 정렬이므로 alue[y] < value[y+1] 조건이 만족할 때 자리바꿈이 되어야 한다. 문11. 객체지향 기법을 지원하지 않는 프로그래밍 언어는? 1 1 LISP 2 Java 3 Python 4 C# - LISP(LISt Processing) : 미국 MIT 대학의 매카시(J McCarthy) 교수 등에 의해 1950년대 후반에 개발 된 언어로 인공지능과 관련된 문제처리에 적합하며 다음과 같은 특징을 갖고 있다. 1 IPL 5와 FORTRAN의 영향을 받았다. 2 프로그램은 List와 Atom이라 불리는 객체로 구성된다. 예를 들면, (A, B, C, D)는 4개의 원자(Atom) 로 구성된 리스트이며 (A, B, (C, D))는 3개의 원자[A, B, (C, D)]로 구성된 리스트인데, 특히 원자 (C, D)는 리스트로 구성된 원자이다. 3 기본적인 자료구조는 연결리스트(Linked list)를 이용한다. 4 제어구조는 되부름(Recursion)으로 되어 있다. - 5 -
5 프로그램과 데이터를 똑같은 형태로 취급하는 언어로 로보트, 게임, 수학적 정리의 증명 등 인공지능 분야에 많이 이용된다. - 객체지향 언어 : C#, Simula, Ada95, Java, C++, Python, Smalltalk 문12. 관계형 모델(relational model)의 릴레이션(relation)에 대한 설명으로 옳지 않은 것은? 4 1 릴레이션의 한 행(row)을 투플(tuple)이라고 한다. 2 속성(attribute)은 릴레이션의 열(column)을 의미한다. 3 한 릴레이션에 존재하는 모든 투플들은 상이해야 한다. 4 한 릴레이션의 속성들은 고정된 순서를 갖는다. - 데이터베이스에서 릴레이션의 특성에 관한 기초적인 문제이다. 릴레이션의 특성 중에서 한 릴레이션 을 구성하는 애트리뷰트 사이에는 순서가 없다. 를 출제하였다. 문13. 컴퓨터 버스에 대한 설명으로 옳지 않은 것은? 1 1 주소 정보를 전달하는 주소 버스(address bus), 데이터 전송을 위한 데이터 버스(data bus), 그리고 명령어 전달을 위한 명령어 버스(instruction bus)로 구성된다. 2 3-상태(3-state) 버퍼를 이용하면 데이터를 송신하고 있지 않는 장치의 출력이 버스에 연결된 다른 장치와 간섭하지 않도록 분리시킬 수 있다. 3 특정 장치를 이용하면 버스를 통해서 입출력 장치와 주기억 장치 간 데이터가 CPU를 거치지 않고 전송될 수 있다. 4 다양한 장치를 연결하기 위한 별도의 버스가 추가적으로 존재할 수 있다. - 컴퓨터 버스는 제어 버스, 주소 버스, 데이터 버스가 있다. 문 14. 다음 이진 트리(binary tree)의 노드들을 후위 순회(post-order traversal)한 경로를 나타낸 것은? 2 A B C D E G F H I 1 F H I D E G B C A 2 D F E B H I G C A 3 D B F E A C H G I 4 I H G C F E D B A - 6 -
- 후위 순회의 노드 방문 순서는 왼쪽 오른쪽 중간 순이다. 루트를 기준으로 가장 왼쪽 자노드(D)부 터 방문한다. 문 15. 프로토콜에 대한 설명으로 옳지 않은 것은? 1 1 ARP는 데이터 링크 계층의 프로토콜로 MAC 주소에 대해 해당 IP 주소를 반환해 준다. 2 UDP를 사용하면 일부 데이터의 손실이 발생할 수 있지만 TCP에 비해 전송 오버헤드가 적다. 3 MIME는 텍스트, 이미지, 오디오, 비디오 등의 멀티미디어 전자우편을 위한 규약이다. 4 DHCP는 한정된 개수의 IP 주소를 여러 사용자가 공유할 수 있도록 동적으로 가용한 주소를 호스트 에 할당해준다. - ARP(Address Resolution Protocol)는 네트워크 상에서 IP 주소를 MAC 주소로 대응시키기 위해 사용 되는 프로토콜이다. - 보기1번은 RARP(Reverse ARP)에 대한 설명이다. 문 16. 비결정적 유한 오토마타(non-deterministic finite automata)에 대한 설명으로 옳지 않은 것은? 4 1 한 상태에서 전이 시 다음 상태를 선택할 수 있다. 2 입력 심볼을 읽지 않고도 상태 전이를 할 수 있다. 3 어떤 비결정적 유한 오토마타라도 같은 언어를 인식하는 결정적 유한 오토마타(deterministic finite automata)로 변환이 가능하다. 4 모든 문맥 자유 언어(context-free language)를 인식한다. - 이 문제는 유한 오토마타에 대한 문제라기 보다는 프로그래밍 언어론의 컴파일러부분에서 Chomsky의 문법의 계급 구조에 해당되는 문제이다. 현재는 프로그래밍 언어론이 전산직 과목에서 제외되어서 어렵 게 느껴지는 문제지만, 프로그래밍 언어론 과목에서는 가끔 출제 되었던 문제이다. - 문법의 계급 구조(Chomsky Hierarchy) ⑴ TYPE 0 문법(Unrestricted Grammar) 1 모든 생성 규칙에 어떠한 제한도 두지 않는 것이다. 2 튜링기계(Turing Machine)로 인식된다. ⑵ TYPE 1 문법(Context Sensitive Grammar) 1 모든 생성규칙 α β에서 문자열 β의 길이가 α보다 길거나 같은 경우이다. 2 문맥의존(Context sensitive) 문법으로 생성되는 언어를 문맥의존(Context Sensitive) 언어라 하고, Linear bounded automata에 의해 인식된다. ⑶ TYPE 2 문법(Context Free Grammar) 1 모든 생성규칙이 A α 의 형식을 따른다(A는 하나의 넌터미널 기호이고, α 는 터미널 집합 Vt와 넌터미널 집합Vn의 합집합인 V에 속하는 스트링이다). 2 문맥자유(Context free) 문법으로 생성되는 언어를 문맥자유(Context free) 언어라 하고, Pushdown automata에 의해 인식된다. ⑷ TYPE 3 문법(Regular Grammar) - 7 -
1 A, B Vn이고, t Vt일 때, 생성규칙은 다음 2가지의 형태를 갖는다. ᄀ 우선형(Right linear) 문법:A tb 또는 A t ᄂ 좌선형(Left linear) 문법:A Bt 또는 A t[여기서 A, B는 Nonterminal 기호(t는 Terminal 문자 열)를 의미한다] 2 정규문법(Regular Grammar)으로 생성되는 언어를 정규언어(Regular language)라 하고, 유한 오토마 타(Finite automata)에 의해 인식된다. 3 어휘분석 단계의 토큰은 유한 오토마타에 의해 인식될 수 있다. 즉, 컴파일러의 첫 번째 단계인 어휘 분석기는 유한 오토마타를 이용하여 구현할 수 있다. 문 17. 클라우드 컴퓨팅 서비스 모델과 이에 대한 설명이 바르게 짝지어진 것은? 3 ㄱ. 응용소프트웨어 개발에 필요한 개발 요소들과 실행 환경을 제공하는 서비스 모델로서, 사용자는 원하는 응용소프트웨어를 개발할 수 있으나 운영체제나 하드웨어에 대한 제어는 서비스 제공자 에 의해 제한된다. ㄴ. 응용소프트웨어 및 관련 데이터는 클라우드에 호스팅 되고 사용자는 웹 브라우저 등의 클라이언 트를 통해 접속하여 응용소프트웨어를 사용할 수 있다. ㄷ. 사용자 필요에 따라 가상화된 서버, 스토리지, 네트워크 등의 인프라 자원을 제공한다. IaaS PaaS SaaS 1 ㄷ ㄴ ㄱ 2 ㄴ ㄱ ㄷ 3 ㄷ ㄱ ㄴ 4 ㄱ ㄷ ㄴ - IaaS(Infrastructure as a Service)는 서버, 스토리지, 데이터베이스 등과 같은 시스템이나 서비스를 구 축하는데 필요한 IT 자원을 제공하는 인프라 서비스이다. - PaaS(Platform as a Service)는 SaaS의 개념을 개발 플랫폼에도 확장한 개념이며, 개발을 위한 플랫폼 을 구축 할 필요 없이 필요한 개발 요소들을 웹에서 쉽게 빌려 쓸 수 있게 하는 서비스이다. - SaaS(Software as a Service)는 사용자가 소프트웨어를 설치하는 것이 아니라 서비스 제공자가 설치 하고 관리하며, 소프트웨어를 서비스 형태로 제공하는 소프트웨어 서비스이다. 문 18. 다음 C 언어로 작성된 프로그램의 실행 결과에서 세 번째 줄에 출력되는 것은? 3-8 -
#include <stdio.h> int func(int num) { if(num == 1) return 1; else return num * func(num - 1); int main() { int i; for(i = 5; i >= 0; i--) { if(i % 2 == 1) printf("func(%d):%d n", i, func(i)); return 0; 1 func(3):6 2 func(2):2 3 func(1):1 4 func(0):0 - 문제의 소스코드는 반복문과 재귀호출이 있어 시간이 많이 걸려 보이는 문제이지만, 예전 프로그래밍 언어론에서 많이 출제된 문제이며 패턴만 안다면 금방 풀 수 있는 문제이다. - for문은 5부터 하나씩 감소하며 반복하고, if문을 보면 i값이 홀수인 경우에만 printf문이 수행된다. 즉, i값이 5, 3, 1 일 때 출력이 되며, 위의 문제에서 세 번째 줄에 출력되는 것을 물어봤으므로 1일때만 생각 하면 된다. i값이 1일 때 func 함수의 num 변수가 1이 되므로 결과적으로 1이 반환되면 출력되는 것은 func(1):1 이 된다. 문 19. 서브넷 마스크(subnet mask)fmf 255.255.255.224로 하여 한 개의 C클래스 주소 영역을 동일한 크 기의 8개 하위 네트워크로 나누었다. 분할된 네트워크에서 브로드캐스트를 위한 IP 주소의 오른쪽 8비트 에 해당하는 값으로 옳은 것은? 3 1 0 2 64 3 159 4 207 - 서브넷 마스크(Subnet Mask)는 커다란 네트워크를 서브넷으로 나눠주는 네트워크의 중요한 방법 중 하나이다. 브로드캐스트의 단점을 보완하기 위한 방법으로 할당된 IP 주소를 네트워크 환경에 알맞게 나누어주기 위해 만들어지는 이진수의 조합이다. - 9 -
- 8개 하위 네트워크로 나누기 위해 3비트가 필요하며, 오른쪽 8비트에서 하위 5비트가 모두 1인 경우는 8가지이다. (00011111, 00111111, 01011111, 01111111, 10011111, 10111111, 11011111, 11111111) 즉,(31, 63, 95, 129, 159, 191, 223, 255)이다. 문 20. 연결리스트(linked list)dml prenode 노드와 그 다음 노드 사이에 새로운 newnode 노드를 삽입 하기 위해 빈 칸 ᄀ에 들어갈 명령문으로 옳은 것은? 2 prenode data link newnode data link data link Node *newnode = (Node*)malloc(sizeof(Node)); ᄀ prenode -> link = newnode; 1 newnode -> link = prenode; 2 newnode -> link = prenode -> link; 3 newnode -> link -> link = prenode; 4 newnode = prenode -> link; - 연결 리스트(Linked List) : 포인터를 이용하여 데이터를 저장하는 자료구조이며, 배열 리스트와는 다르게 물리적 구조가 순차적이지 않다. 즉, 포인터의 변경만으로 노드를 추가하거나 삭제할 수 있다. - 소스코드는 newnode를 추가하고 있으며, ᄀ에서 newnode의 link에 prenode의 link를 대입하고 (newnode가 prenode가 가리키던 노드를 가리키게 된다.), prenode가 newnode를 카리키게 하면 (prenode -> link = newnode;) 된다. - 10 -