You are on page 1of 105

제1장 컴퓨터와 자료

1.1 교재 내용 요약
▣ 컴퓨터란 무엇인가?
❒ 컴퓨터 → 프로그램이 가능한 데이터 처리기(programmable data processor)
• 프로그램이 컴퓨터가 처리 가능한 작업의 유형과 연산의 집합을 결정
• 데이터 처리기의 기본 기능 : 자료의 입력(input) → 처리(process) → 결과 출력(output)
▣ 컴퓨터과학이란 무엇인가?
❒ 다양한 관점에서의 컴퓨터과학의 정의
• 자료의 획득, 표현, 처리, 저장, 통신, 접근을 위한 방법들의 실행 가능성, 구조화, 표현, 기계화에
관련된 내용을 다루는 학문 분야
• ①컴퓨터 자체, ②자료(데이터), ③프로그램, ④알고리즘의 분야의 연구를 통해 효율적인 자료
처리를 위한 제반 기술과 방법들을 제공하기 위한 분야 (☞교재 그림 1.2)
▪ 알고리즘이란 주어진 문제를 해결하기 위한 처리 과정을 절차적으로 나열한 명령어들의 집
합이고, 프로그램은 컴퓨터가 이해할 수 있는 형태로 표현된 알고리즘이다.
• 알고리즘과 관련된 이슈를 다루는 학문 → 모든 관련 분야를 알고리즘을 중심으로 이해 가능
▪ 알고리즘의 존재 여부 = 문제 해결의 가능성 여부 → 컴퓨터과학의 한계와 연결
• 컴퓨터과학은 문제 해결에 대한 학문
▣ 컴퓨터 시스템
❒ 완전한 컴퓨터 시스템을 구성하는 4가지 요소 → 하드웨어, 소프트웨어, 자료(데이터), 사용자
❒ 하드웨어 → 기계를 구성하고 있는 모든 물리적인 전자장치
• 핵심장치들은 폰노이만 모델에서 제시한 4개의 서브시스템에 해당 (☞ 교재 그림 1.4)
▪ 기억장치 → 처리할 데이터와 프로그램이 저장되는 장소 (주기억장치, 보조기억장치)
▪ 산술논리연산장치(ALU, arithmetic logic unit) → 자료에 대한 산술연산 및 논리연산을 통해
직접적인 자료 처리를 담당하는 장치
▪ 제어장치(CU, control unit) → 컴퓨터의 다른 장치(기억장치, 산술논리연산장치, 입출력장치
등)의 동작을 제어하는 역할
▪ 입력장치 → 컴퓨터의 외부로부터 프로그램이나 데이터를 받아들이기 위한 장치
▪ 출력장치 → 컴퓨터 내부에서 처리된 결과를 외부로 내보내기 위한 장치
❒ 폰노이만 모델 → 컴퓨터의 내부 구조와 처리 과정을 정의한 모델 (☞ 주관식 2번 참조)
❒ 소프트웨어 → 모든 프로그램을 총체적으로 표현한 것
• 시스템 소프트웨어, 응용 소프트웨어 (☞ 객관식 15번 참조)
❒ 자료 → 모든 자료는 비트(0/1)가 나열된 형태로 표현, 입출력을 위한 적절한 변환 과정이 필요
• 폰노이만 모델에서는 자료의 저장 형태에 대해서는 정의하고 있지 않음
❒ 사용자 → 전반적인 자료 처리 과정에서 사람의 적극적인 개입이 필요
▣ 컴퓨터의 발전과 분류
❒ 초기의 전자식 컴퓨터
• 1946, ENIAC → 완전 전자식의 최초의 범용 컴퓨터
• 1950, EDVAC → 폰노이만 개념에 기반을 둔 최초의 컴퓨터
❒ 컴퓨터 기술의 세대별 분류 → 1950년 이후 현재까지를 1세대~5세대로 구분 (☞ 교재 표 1.4)
❒ 다양한 기준(사용 목적, 자료 표현 방식, 컴퓨터 성능)에 따른 컴퓨터의 분류 (☞ 교재 표 1.5)
▣ 자료의 표현

- 1 -
❒ 자료와 정보의 관계 → I = P(D), (D : 자료, P : 처리기, I : 정보)
▪ 자료 : 현실세계로부터 관찰이나 측정을 통해 단순히 얻어지는 사실이나 수치, 처리
대상 또는 정보의 원재료
▪ 정보 : 어떤 상황에 대해 적절한 의사결정을 수행할 수 있게 하는 지식
• 모든 자료는 유형(문자, 숫자, 이미지, 오디오, 비디오 등)에 상관없이 일관된 자료 표현
방식(“비트 패턴” – 비트의 나열)을 사용
❒ 자료의 표현 단위
• 비트(bit) → 0/1, 바이트(byte) → 길이가 8인 비트
• 워드(word) → 컴퓨터 연산의 기본 단위가 되는 정보의 양, 시스템에 따라 다름
• KB(210≈103바이트), MB(220≈106바이트), GB(230≈109바이트), TB(240≈1012바이트),
PB(250≈1015바이트)
❒ 진법
• r진법 → 0,1,2,…,r-1까지의 숫자만을 사용해서 수를 표현하는 방식/단위
▪ r진법에서 각 숫자는 그 위치에 따라 서로 다른 가중치(자릿값)을 가진다. 오른쪽에
서부터 각 위치마다 밑을 r로 하는 지수승(rx)의 형태로 자릿값을 부여한다.
▪ 컴퓨터에서는 2진법만을 사용 → 진법(8진법, 10진법, 16진법)간의 변환이 필요
• 2진수를 10진수로 변환 → 각 비트와 해당 위치에 따른 가중치의 곱을 모두 더한다.
• 10진수를 r진수로 변환 → 정수부분과 소수부분을 나눠서 변환 (☞ 교재 그림 1.8~1.9)
• 2진수와 8진수/16진수의 관계 → 2진수3자리=8진수1자리, 2진수4자리=16진수1자리
❒ 정수의 표현

❒ 부동소수점의 표현
• -10.100011011×25 → (-1)부호×가수×2지수 → (부호 1비트)+(지수 m비트)+(가수 n비트)
▪ IEEE 표준형식(단정도-4바이트)→부호(1비트)+지수(8비트, 초과_127)+가수(23비트)
▪ IEEE 표준형식(배정도-8바이트)→부호(1비트)+지수(11비트, 초과_1023)+가수(52비트)
• 지수의 표현
▪ 초과표기법: 부동소수점의 지수 부분만을 위한 표기 방법으로, m비트가 할당된 경
우 두 개의 매직 넘버(초과_2m-1, 초과_2m-1-1)가 존재
▻ 지수값을 저장하는 경우: (지수값 + 매직 넘버)를 이진수로 표현
▻ 지수값을 해석하는 경우: 이진수를 십진수로 변환한 값에서 매직 넘버를 뺀다.

- 2 -
• 가수의 표현
▪ 정규화: 소수점 바로 오른쪽에 하나의 1만 있도록 소수점의 위치를 조정 → 가수값
을 저장하는 경우에는 소수점 이하 부분만 저장한다.
▻ 0.00011011 → 1.1011×2-4, 10110101.0101 → 1.01101010101×27
❒ 문자의 표현
• 각 문자마다 유일한 코드 할당이 이루어지며, 이를 위해 약속된 문자 체계가 필요
• ASCII(7비트)와 Unicode(16비트)가 주로 사용, 이밖에 EBCDIC(8비트), BCD가 존재

1.2 문제 풀이 및 해설
▣ 객관식 문제
1. 다음 설명 중 가장 적절한 것은?
① 컴퓨터 자체의 작업 관리와 특정 기능의 수행을 도와주는 프로그램으로 워드프로세서가
대표적이다.
② 컴퓨터 시스템의 4대 구성요소는 컴퓨터, 사용자, 하드웨어, 소프트웨어이다.
③ 폰노이만 모델은 내장 프로그램 개념을 통해 데이터의 이진 패턴 형태로의 저장 방식을
정의하고 있다.
④ 적절한 의사결정을 할 수 있게 하는 지식의 원재료는 바로 자료이다.

[정답/해설] ④
 컴퓨터 자체의 작업 관리와 특정 기능의 수행을 도와주는 것은 시스템 소프트웨어로, 대
표적인 것으로는 운영체제, 컴파일러, 각종 유틸리티가 있다.
 컴퓨터 시스템의 4대 구성요소는 자료, 사용자, 하드웨어, 소프트웨어이다.
 폰노이만 모델은 내장 프로그램 개념을 통해 프로그램과 데이터가 동일한 형태로 저장
된다는 것을 제시하고 있지만, 실제적으로 저장 방식에 대해서는 정의하고 있지 않다.

2. 완전한 컴퓨터 시스템이 갖추어야 할 요소에 해당하지 않는 것은?


① 인터넷 ② 하드웨어 ③ 사용자 ④ 자료

[정답/해설] ①

3. 컴퓨터 연산의 기본 단위가 되는 정보의 양을 무엇이라 하는가?


① 비트 ② 패킷 ③ 워드 ④ 바이트

[정답/해설] ③, 비트는 컴퓨터에 저장할 수 있는 최소의 데이터의 단위이며, 바이트는 8개의


비트가 나열된 것이다. 패킷은 패킷 교환 방식에서의 전송 단위이다. 워드는 컴퓨터 연산의
기본 단위이며, 대개 32비트 또는 64비트의 길이로 구성되지만 시스템에 따라 달라진다.

4. 십진수 53.625를 8진수와 16진수로 각각 올바르게 표현한 것은?


① 65.5 35.A ② 65.7 35.A
③ 65.5 35.B ④ 65.7 35.B

- 3 -
[정답/해설] ①, 53.625(10) = 110101.101(2) = 65.5(8) = 35.A(16)

5. 8비트를 사용해서 표현된 정수의 비트 패턴이 10000000이다. 주어진 비트 패턴의 값을


정수로 해석할 때, 다음 중 가장 작은 값을 나타내는 정수의 표현 방법은?
① 부호화-크기 방법 ② 1의 보수 ③ 2의 보수 ④ 초과 표기법

[정답/해설] ③
 부호화-크기 방법 : 맨 앞자리 부호 비트가 1이므로 음수, 나머지 자리로 나타내는 값의
크기는 0이다. 따라서 –0이 된다.
 1의 보수 : 부호 비트가 1이므로 음수, 나머지 비트에 대해 보수를 취하면 01111111이
며 이것의 크기는 127이다. 따라서 –127이 된다.
 2의 보수 : 부호 비트가 1이므로 음수, 나머지 비트에서는 우선 –1을 한 후(01111111)
보수를 취하면 10000000이 되고 이것의 크기는 128이다. 따라서 –128이 된다.
 초과 표기법으로 해석하기 위해서는 주어진 비트를 우선 10진수로 바꾼 다음, 이 결과에
서 127(‘초과_127’을 사용한 경우)을 빼면 된다. 10000000(십진수 128)–127=1이 된다.

6. A라는 컴퓨터 시스템은 다음과 같은 방법으로 부동소수점을 표현한다고 가정하자. 16비


트 중에서 1비트는 부호비트로 사용하고 지수는 5비트를 차지해서 15 초과표기법을 이
용해서 표현하고 나머지 비트는 가수를 표현한다. 이와 같은 시스템에서 부동소수점으
로 표현된 0 10010 1011110000은 십진수로 얼마인가?
① 2.9375 ② 11.75 ③ 13.875 ④ 23.5

[정답/해설] ③
부호 지수부 가수
0 10010 1011110000
(1) 우선, 부호비트가 0이므로 양수
(2) 지수부 10010은 10진수로 18이고, 15초과표기법을 사용함으로 18-15=3
(3) 가수는 정규화 과정에서 소수점 왼쪽에 있는 1.을 앞에 붙이면 1.1011110000
(4) 위의 해석 내용을 종합적으로 표현하면 1.1011110000×23이 되며 지수값에 따라 소수
점을 3칸 오른쪽으로 이동하면 1101.1110000이 된다.
(5) 이 값을 10진수로 변환하면 13.875가 된다.

7. 531.74(8)를 16진법의 표현으로 알맞게 나타낸 것은?


① 159.F ② AC1.3C ③ 159.3C ④ AC1.F

[정답/해설] ①, 2진수와 8진수/16진수의 변환 관계는 교재 [그림 1.11]과 같이 소수점을 중


심으로 각각 좌우 방향으로 2진수를 3자리씩 묶으면 8진수 1자리에 해당하고, 2진수를 3자
리씩 묶으면 16진수 1자리에 해당하는 값을 얻을 수 있다. 반대의 경우에는 8진수 1자리를
2진수 3자리, 16진수 1자리는 2진수 4자리로 해석하면 된다.
따라서 531.74(8) = 101011001.111.100(2) = 159.F(16)

- 4 -
8. 다음 빈 칸 ㈀에 공통적으로 들어갈 단어는?
컴퓨터과학이란 컴퓨터 자체, ( ㈀ ), ( ), ( )의 연구를 통해 효율적인 자료처
리를 위한 원칙과 방법을 제공하기 위한 분야이다.
- 컴퓨터라는 것은 ( ㈀ )이 가능한 자료의 입력, 처리, 출력을 위한 기계이다
① 프로그램 ② 알고리즘 ③ 데이터 저장 ④ 통신

[정답/해설] ①
 컴퓨터과학이란 컴퓨터 자체, 프로그램, 자료(데이터), 알고리즘의 연구를 통해 효율적인
자료처리를 위한 원칙과 방법을 제공하기 위한 분야이다.
 컴퓨터라는 것은 프로그램이 가능한 데이터 처리기(programmable data processor)이며,
데이터 처리기란 자료를 입력받고 처리한 후 결과를 출력을 위한 기계이다.

9. 8비트 체계에서 2의 보수 방법으로 표현된 정수의 비트 패턴이 11100111이다. 주어진


비트 패턴의 값을 초과표기법으로 올바르게 표현한 것은? (단, 매직넘버는 127이다)
① 00011000 ② 00011001
③ 01100110 ④ 01100111

[정답/해설] ③, 8비트 체계에서 2의 보수인 11100111를 10진수로 나타내면 –25이다. 십진


수를 초과표기법으로 나타내기 위해서는 ‘십진수+매직넘버’의 결과를 이진수로 변환하면 된
다. 따라서 (–25)+127=102이 되고 이진수로 바꾸면 01100110(2)가 된다.

10. 1.001011×2-5와 같은 형태의 수를 컴퓨터 내에 표현할 때 –5에 해당하는 부분을 표시하


기 위해서 사용하는 방법은?
① 초과표기법 ② 1의 보수 방법 ③ 부호화-크기 방법 ④ 2의 보수 방법

[정답/해설] ①, 초과표기법은 정수를 나타내기 위해 사용되는 일반적인 방법이 아니라 부동


소수점 표현 방법에서 지수를 나타내기 위해서만 사용되는 수의 표기 방법이다. 이를 이용
하면 지수가 음수이든 양수이든 상관없이 부호비트를 사용하지 않고 표기할 수 있다.

11. (+24)+(-17) 연산을 2의 보수 방법으로 해결하려고 한다. 8비트 패턴을 이용할 때 연산


식으로 알맞은 것은?

00011000 00011000
+ 11101110 + 11101111
① ②
00000111 100000111

00011000 00011000
③ + 11101111 ④ - 10010001
00000111 00000111
[정답/해설] ③, 2의 보수 방법에서의 뺄셈은 빼주는 수를 2의 보수로 바꾼 다음에 더하면
된다. 즉 A-B=A+(-B)의 형태로 계산한다.
(1) 이진수로 변환: 24=00011000(2), 17=00010001(2)이고, 17은 음수이므로 2의 보수로 바꾸

- 5 -
면 11101111이 된다.
(2) 두 수를 더해준다.
(+24) 00011000(2)
+(-17) → + 11101111(2) 2의 보수 계산에서 자리올림은 그냥 버린다.
1 00000111(2)

12. 다음 중에서 가장 큰 수는 어떤 진법으로 표현된 수인가?

(227)10 (343)8 (11100101)2 (E7)16

① 10진법 ② 8진법 ③ 2진법 ④ 16진법

[정답/해설] ④, (227)10 , (343)8 = (227)10 , (11100101)2 = (229)10 , (E7)16= (231)10

13. 십진수 -100을 2의 보수 방식을 사용하여 8비트로 바르게 표현한 것은?


① 11100100 ② 11100101
③ 10011100 ④ 10011011

[정답/해설] ③, (-100)10의 절대값인 100을 8비트 2진수로 바꾸면 (01100100)2이다. 이 값의


각 비트의 보수를 취한 결과(10011011)에 1을 더하면 2의 보수로 표기된 (10011100)2을 얻
을 수 있다.

14. 8비트를 사용해서 2의 보수 방법으로 표현한 이진수 10000100은 10진수로 얼마인가?


① -123 ② -124 ③ -125 ④ -126

[정답/해설] ②, 2의 보수로 표현된 이진수를 해석하기 위해서는 우선 이진수에서 1을 뺀 다


음에 보수를 취하면 된다. 10000100-1=10000011이고, 보수를 취하면 01111100이다. 이를
십진수로 변환하면 124가 되고, 원래 이진수의 최상위비트, 즉 부호비트가 1이므로 음수가
되어 –124이다.

15. 컴퓨터 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어로 구분할 수 있다. 다음 소


프트웨어 중에서 같은 부류에 속하지 않는 다른 하나는 무엇인가?
① 포토샵 ② 윈도우 XP ③ C 컴파일러 ④ 어셈블러

[정답/해설] ①
 시스템 소프트웨어 : 컴퓨터 자체의 작업 관리와 특정 기능의 수행을 도와주는 프로그램
으로, 대표적인 것으로는 윈도우 XP, 컴파일러, 어셈블러 등이 있다.
 응용 소프트웨어 : 포토샵, 워드프로세서, 엑셀 등과 같이 사용자가 요구하는 작업을 직
접적으로 수행하는 프로그램이다.

16. 컴퓨터를 분류하는 기준 중에서 처리 능력에 따른 분류에 속하는 컴퓨터는 어느 것인


가?

- 6 -
① 마이크로컴퓨터 ② 전용 컴퓨터
③ 디지털 컴퓨터 ④ 하이브리드 컴퓨터

[정답/해설] ④
 사용 목적에 따른 분류 → 범용 컴퓨터, 전용 컴퓨터
 자료 표현 방식에 따른 분류 → 디지털 컴퓨터, 아날로그 컴퓨터, 하이브리드 컴퓨터
 처리 성능에 따른 분류 → 슈퍼컴퓨터, 대형 컴퓨터, 미니컴퓨터, 워크스테이션, 마이크로
컴퓨터

17. 컴퓨터의 명령문들 기계 안에 전자적으로 일단 저장되어 하나하나가 기계적인 일로 바


뀌면서 고속으로 실행되는 프로그램 내장 방식을 제안하여 현대적 컴퓨터의 기반을 제
공한 사람은 누구인가?
① 파스칼(Blaise Pascal) ② 찰스 배비지(Charles Babbage)
③ 모클리(John Mauchly)와 액커트(Presper Eckert) ④ 폰노이만(John von Neumann)

[정답/해설] ④, 폰노이만이 제시한 모델로 인해 오늘날의 하드웨어 구조인 제어장치, 산술논


리연산장치, 입출력장치, 기억장치가 만들어졌고, 효율적인 프로그램과 데이터 처리가 가능
하게 되어 컴퓨터 발전이 더욱 가속화하였다.

18. 다음 중에서 동일한 값을 나타내지 않는 것은?


① 13.59375(10) ② 15.43(8)
③ D.98(16) ④ 1101.10011(2)

[정답/해설] ②
 13.59375(10) = 1101.10011(2)
 15.43(8) = 1101.100011(2) →(소수점 이하 부분에서 차이 발생)
 D.98(16) = 1101.10011(2)
 1101.10011(2)

19. 현재 우리가 주로 사용하고 있는 개인용 컴퓨터(PC)에 대한 일반적인 설명으로 가장 적


절한 것은?
① 디지털 컴퓨터이면서 범용 컴퓨터이다.
② 제3세대에 속하는 마이크로컴퓨터이다.
③ 하이브리드 컴퓨터이면서 전용 컴퓨터이다.
④ 제5세대에 속하는 미니컴퓨터이다.

[정답/해설] ①, 개인용 컴퓨터는 범용의 디지털 컴퓨터를 의미한다.

20. 다음 설명에 해당하는 문자 코드 체계는 무엇인가?

- 7 -
- 16비트 코드 체계로 65,536개의 서로 다른 문자를 표현할 수 있다.
- 세계 각국의 언어를 모두 표현할 수 있어 국제 표준으로 지정

① ASCII 코드 ② EBCDIC 코드
③ 유니코드 ④ 확장된 ASCII 코드

[정답/해설] ③
ASCII 코드는 7비트 코드이며, 여기에 1비트를 추가해서 1바이트로 맞춘 것이 확장된 ASCII
코드이다. 한편 EBCDIC 코드는 컴퓨터 초기 시대에 IBM에서 개발한 8비트 코드 체계이다.

▣ 교재 주관식 문제
1. 컴퓨터 시스템의 구성 요소를 나열하고, 각각의 설명하시오.
[정답/해설] 완전한 하나의 컴퓨터 시스템을 구성하기 위한 요소 → 하드웨어(☞폰 노이만
모델), 소프트웨어, 자료, 사용자 (☞ 각 요소에 대한 설명은 요약 부분 참조)

2. 폰노이만 모델을 설명하고, 현대 컴퓨터 구조에 미친 영향을 설명하시오.


[정답/해설]
 컴퓨터의 내부 구조와 처리 과정을 정의한 모델 → 모든 컴퓨터는 폰노이만 모델에 기반을 둠
▪ 내부 구조 – 4개의 서브시스템(기억장치, ALU, CU, 입출력 장치)으로 구성
 기존 프로그래밍의 개념을 완전히 바꿔 놓은 주요 개념
▪ 내장 프로그램 → 데이터와 함께 실행될 프로그램은 메모리에 저장되어야 한다.
▻ 데이터와 프로그램이 함께 같은 메모리에 저장된다는 것은 같은 형식(“비트 패턴”)을 저장된
다는 의미를 내포
▪ 프로그램은 명령어의 나열이다. → 기본 명령어들을 미리 정의하고, 이들의 유한개의 조합으로
원하는 프로그램을 작성할 수 있다. → 명령어들의 재사용성으로 인해 프로그래밍 작업이
간단해질 수 있다.

3. 컴퓨터의 각 세대별 특징을 정리하시오.


[정답/해설] 교재 표 1.4 참조

4. 현대적 의미의 컴퓨터 분류를 위한 다양한 기준을 제시하고, 이에 따라 분류를 하시오.


[정답/해설] 교재 표 1.5 참조

5. 다음 물음에 답하시오.
(1) 십진수 23.125를 2진수로 변환하시오.
(2) 이진수 100101.1001를 8진수, 10진수, 16진수로 변환하시오.
(3) 16진수 ABC.6A를 2진수와 8진수로 변환하시오.

[정답/해설]
(1) 23.125(10) = 10111.001(2)
(2) 100101.1001(2) = 45.44(8) = 25.9(16) = 37.5625(10)

- 8 -
(3) ABC.6A(16) = 101010111100.01101010(2) = 5274.324(8)

6. 정수를 표현하는 다양한 방식을 설명하고, 각 방법에 따라 218과 -218을 8비트 정수로
표현하시오.
[정답/해설] 1장 내용 요약 부분의 ‘정수의 표현’의 그림 참조

218 -218
부호 없는 정수 01101101(2) 음수 표현 불가
부호화-크기 방식 01101101(2) 11101101(2)
1의 보수 방식 01101101(2) 10010010(2)
2의 보수 방식 01101101(2) 10010011(2)

7. 이진수 111001.00101100101과 -0.00001100110101을 IEEE 부동 소수점 표현의 단정도와


배정도 방식으로 각각 나타내시오.
[정답/해설] IEEE 부동 소수점 표현 방식은 다음과 같이 두 가지가 존재한다.

입력 이진수 111001.00101100101 -0.00001100110101


정규화 1.1100100101100101×25 -1.100110101×2-5
단정도 부호(1비트) 0 1
지수(8비트)
(4바이 127+5 = 132 =10000100(2) 127-5 = 122 =01111010(2)
(초과127)
트) 가수(23비트) 11001001011001010000000 10011010100000000000000
부호(1비트) 0 1
배정도 지수(11비트) 1023 + 5 = 1028 1023-5 = 1018
(8바이 (초과1023) = 10000000100(2) = 01111111010(2)
트) 1100100101100101 (이하 100110101 (이하 43개의
가수(52비트)
36개의 자리는 0으로 채움) 자리는 0으로 채움)

8. ASCII 코드에 대해서 설명하시오.


[정답/해설] ASCII(American Standard Code for Information Interchange)는 미국표준협회
(American National Standards Institute)에서 개발한 코드로서, 7비트를 사용해서 각 문자
를 나타내며 총 128개(27)의 서로 다른 문자를 표현할 수 있다. 실제 사용될 때에는 1바이
트에 맞추기 위해서 왼쪽에 1비트가 추가된 형태로 사용되며, 이를 확장된 ASCII라고 부른
다.

9. 이미지, 오디오, 비디오와 같은 유형의 데이터를 컴퓨터에 표현하는 방식을 조사한 후 설


명하시오.
[정답/해설]
(1) 이미지
이미지를 표현하는 방법은 비트맵(Bitmap) 방식과 벡터(Vector) 방식으로 구분할 수 있다.
비트맵 방식에서는 영상이 픽셀(pixel, picture elements)이라는 작은 점에 해당하는 화소의
행렬 형태로 나누어지며, 한 영상에서의 화소의 개수를 해상도(resolution)라고 한다. 각 화
소에는 비트패턴이 할당되는데, 패턴의 크기와 값은 영상에 따라 달라진다. 흑백 영상의 경
우에는 다음 그림과 같이 한 비트(0 또는 1)가 픽셀의 값으로 사용되어 1이면 검은 화소, 0

- 9 -
이면 흰 화소를 나타낸다.

영상이 흑백 화소로 구성되지 않는 경우에는 그레이(gray) 영상을 표현하기 위해서 비트패


턴의 크기를 증가시키면 된다. 예를 들어, 한 화소가 8비트로 표현된다면 검정색과 흰색 사
이를 256 단계로 구분하여 표시할 수 있다.
한편 컬러 영상을 나타내기 위해서는 각 화소가 3개의 색상(red, greed, blue, RGB)을 나타
내는 값을 각각 가지며, 각 색상의 밝기가 측정되어 그 값이 보통 8비트의 패턴으로 표현된
다. 따라서 컬러 영상의 경우 하나의 화소는 RGB에 해당하는 8비트씩 총 24비트로 구성된
다.

컬러 화소의 표현 방법
비트맵 방식에서는 특정 이미지를 표현하는 정확한 비트 패턴이 컴퓨터에 저장되어야 하기
때문에 이미지의 크기를 조정하는 경우에는 자연스럽지 못한 영상으로 나타난다. 하지만 벡
터 방식에서는 비트 패턴 형태로 저장하는 것이 아니라 하나의 이미지가 곡선이나 직선 등
의 조합 형태로 분해되고, 각 곡선 또는 직선은 수학적인 식에 의해서 표현된다. 결국 벡터
방식에서는 이미지가 이러한 수식의 조합 형태로 저장된다. 한편 화면이나 프린터로 출력되
는 경우에는 출력될 이미지의 크기를 지정해 주면 시스템이 새로운 크기를 사용해서 이미
지를 다시 디자인하고 동일한 수식을 사용해서 크기에 맞게 이미지를 그려준다. 따라서 이
미지가 그려질 때마다 수식이 다시 계산되고 이용되는 특징을 갖는다.

(2) 오디오
오디오는 기본적으로 아날로그 신호이다. 오디오를 저장하는 표준적인 방법은 없지만 기본
적인 아이디어는 오디오를 디지털 신호로 바꾸고 이것을 비트 패턴으로 저장하는 것이다.
따라서 오디오를 표현하고 저장하기 위해서는 다음과 같은 일련의 과정을 거친다.

- 10 -
- 아날로그 신호가 샘플링된다. 샘플링(sampling)이란 일정한 간격으로 신호의 값을 측정하
는 것을 의미한다.
- 샘플을 양자화한다. 양자화(quantization)란 각 샘플에게 값을 부여하는 것이다. 예를 들어,
만약 샘플의 값이 29.2이고 값의 범위가 0~63 사이의 정수라면, 샘플의 값으로 29를 할
당한다.
- 양자화된 값을 이진 패턴으로 변환하고, 이진 패턴을 저장한다.

(3) 비디오는 연속적으로 나열된 이미지로 해석될 수 있기 때문에, 앞서 설명한 이미지를 연


속해서 저장하는 형태로 간주하면 된다. 예를 들어 TV의 경우 초당 24개의 정지영상(이미
지)로 구성되기 때문에 24개의 이미지로 표현하고 연속해서 저장하면 된다.

제2장 컴퓨터 구조
2.1 교재 내용 요약
▣ 컴퓨터의 하드웨어적 기본 구성 요소
❒ 중앙처리장치(CPU, central processing unit) → 제어장치(CU), 연산장치(ALU), 레지스터
❒ 입력장치, 출력장치, 기억장치, 시스템 버스(→주소 버스, 데이터 버스, 제어 버스)
▣ 논리대수와 논리회로
❒ 논리대수 → 이진변수와 논리연산을 나타내는 대수
• 기본 관계식을 이용하면 복잡한 논리회로를 동일 기능의 단순한 회로로 변환 가능
❒ 논리 게이트
• 논리회로를 구성하는 기본 소자 (AND, OR, NOT, NAND, NOR, XOR)(☞교재 그림 2.2)
• 완전 집합 → 원하는 임의의 회로를 구성할 수 있는 게이트의 부분 집합
▪ {NOT, AND}, {NOT, OR}, {AND, XOR}, {OR, XOR}, {NAN}, {NOR} 등
❒ 논리회로의 종류
• 조합회로 → 출력이 주어진 입력에 의해서만 결정되는 형태의 회로
▪ 종류: 전가산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등
• 순차회로 → 출력이 주어진 입력과 저장된 회로의 상태값에 의해서 결정되는 형태의
회로 → 회로의 특정 상태를 저장하기 위한 기억장치로서 ‘플립플롭’이 사용
▪ 종류: 카운터, 레지스터 등
❒ 플립플롭
• 한 비트의 이진 정보(0 또는 1)를 저장할 수 있는 기억소자
• RS(Reset-Set) 플립플롭(2개의 NOR게이트로 구성) : R과 S신호에 따라 0/1 값 저장
• T(Toggle) 플립플립

- 11 -
▪ CP=0이면 작동하지 않기 때문에 출력에 아무런 영향을 미치지 않음
CP=1 그리고 T=1 이면 Q(t+1)=Q(t)’, CP=1 그리고 T=0 이면 Q(t+1)=Q(t)
▪ CP(clock pulse) → 주기적으로 생성되는 신호로 컴퓨터 내의 시스템 구성 요소들의
작동을 동기화시켜주는 역할
▣ 조합회로의 종류
❒ 전가산기(Full Adder) → 두 이진수(A,B)와 아래 자리에서 올라오는 올림수(Cin)를 입력받아
서 더하는(S, Cout) 회로
• 여러 비트의 전가산기는 1비트 전가산기(☞ 강의 부분의 회로 참조)를 직렬로 연결하
여 생성(낮은 자리수의 Cout이 높은 자릿수의 Cin으로 제공) (☞ 교재 그림☞ 2.6)
❒ 디코더 (☞ 교재 그림 2.8, 강의 자료)
• n개의 비트 표현을 2n개의 개별 라인으로 변환하는 회로로서 출력 라인 중 오직 하나
만 1이 되고 나머지는 0이 된다. → 주소방식으로 주어진 입력으로부터 각각의 해당
하드웨어 구성요소를 개별적으로 구동하기 위해 사용
❒ 멀티플렉서 (☞ 교재 그림 2.9, 강의 자료)
• 여러 개의 입력선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로 → 어떤 장
치로부터 들어오는 데이터가 버스를 사용할 것인가를 정하는 경우에 사용

▣ 순차회로: 카운터 (☞ 교재 그림 2.7 → T 플립플롭을 사용한 3비트 카운터)


❒ 클록펄스가 입력될 때마다 미리 정해진 순서에 따라 저장된 이진수가 1씩 증가하는 장치
▣ 기억장치
❒ ROM → 읽기 전용, 내용이 항상 고정되어 있으므로 간단히 조합회로(디코더와 OR 게이트)로 구
성 가능 (☞ 교재 표 2.7, 그림 2.10 →2비트 주소를 사용한 4개의 4비트 내용을 저장)
❒ RAM → 읽기/쓰기가 모두 가능, 순차회로로 구성
• 실제로 대부분의 컴퓨터는 축전지로 구현된 DRAM을 사용, refresh 과정이 필요
• RS 플립플롭을 사용한 1비트 RAM 기억소자 (☞ 교재 그림 2.11, 표 2.8) → 주기억장
치 구성 (☞ 교재 그림 2.12)
❒ 기억장치의 계층적 구조 (☞ 교재 그림 3.3)
• 기억장치는 접근속도와 저장용량에 따라서 계층적인 분류가 가능하며, 이는 CPU가 데
이터에 접근함에 있어서 가장 적은 비용으로 가장 높은 성능을 얻기 위한 전략
• 이론적 근거 → “참조의 지역성” (공간적 지역성, 시간적 지역성)
• 레지스터 → CPU 내부에 존재하여 각종 연산에 직접적으로 사용
• 캐시기억장치
▪ CPU와 주기억장치 사이에 설치된 접근 속도가 매우 빠른 소규모 기억장치
▪ 수행중인 명령어와 자주 사용하는 데이터의 일부를 저장하였다가 CPU 요청이 있을
경우 즉시 제공하여, 이를 위해 CPU가 주기억장치에 접근하는 속도를 개선시키는
역할 → 보통은 CPU 내부에 포함되며 SRAM을 사용하여 구현
• 주기억장치 → 현재 수행중인 프로그램과 데이터를 저장
• 보조기억장치 → 반영구적으로 프로그램과 데이터를 저장하며, 이것을 사용하기 위해
서는 우선 주기억장치에 적재되어야 함
▣ 명령어와 명령어 세트
❒ 명령어 세트(정의되어 있는 명령어들의 집합) 구조에 따른 컴퓨터의 분류(각 명령어가

- 12 -
어떤 형식을 가지고 있고 각 명령이 얼마나 복잡한 기능을 수행하느냐에 따라)
• CISC(Complex Instruction Set Computer) ↔ RISC(Reduced Instruction Set Computer)
❒ 명령어 종류 → 기억장치 관련 명령, 연산 명령, 제어 명령, 입출력 명령
• 인터럽트(interrupt) → 프로그램의 정상 수행을 잠시 멈추고 CPU 이외의 다른 장치의
요구 사항을 처리하기 위한 기능
❒ 주소 방식에 따른 명령어 형식
• 명령어의 기본 형식 → 연산자(OPcode) + 피연산자(operand)
▪ 연산자: CPU에서 수행할 동작을 지정, 연산자의 비트 수가 CPU가 수행할 수 있는
연산의 개수를 결정
▪ 피연산자: 명령어가 사용할 데이터가 저장되어 있는 기억장치의 주소를 지정, 피연
산자의 개수는 컴퓨터 구조에 따라 달라질 수 있다.
• 주소 방식(피연산자의 개수 → 연산에 사용될 값이 어디서 추출되고 결과가 어디에 저
장되느냐에 따라) → 3-주소 방식, 2-주소 방식, 1-주소 방식, 0-주소 방식
▣ 처리장치(교재에서는 ‘ALU’와 ‘레지스터’를 합쳐서 ‘처리장치’라고 함)
❒ 명령어 구현 방법
• 마이크로프로그램에 의한 제어장치
▪ 연산과 명령어 수행 순서 조작회로가 제어기억장치에 저장된 비트 패턴(“마이크로
프로그램”)으로 기동되는 장치 → 각 명령어는 여러 개의 마이크로 연산으로 구성
▪ 명령어 세트의 변경이나 명령어 추가 등이 용이, CISC 컴퓨터 구조에서 주로 사용
• 직접 회로에 의한 제어장치
▪ 연산과 명령어 수행 회로가 기억장치에 의존하지 않고 직접 구성된 제어 회로에 의
해 기동되는 장치
▪ 빠른 수행, 명령어 세트가 바뀌면 회로의 재구성이 필요, RISC 구조에서 주로 사용
❒ 제어단어(control word) (☞ 교재 그림 2.15와 65쪽)
• 각 마이크로 연산은 일대일로 매핑되는 제어단어를 가짐
• 제어단어의 각 비트들은 처리장치의 논리회로 내의 각종 MUX와 디코더의 선택 제어
선으로 연결되어 있는 하드웨어를 직접적으로 통제하기 위한 정보가 저장되어 있음
▣ 제어장치
❒ 명령어 사이클
• 제어장치 → 메모리에 저장된 명령을 어떻게 순차적으로 가져와서 수행할 것인가를 통
제하는 부분
• 명령어 사이클 : 인출(fetch) → 해독(decode) → 실행(execute) → 저장(write-back)
❒ 제어장치의 구성요소 (☞ 객관식 17번 참조)
• PC, IR, 제어기억장치, CMAR, CMDR, 명령어 해독기, 주소결정회로
• 명령어 해독기 → 하나의 명령어가 주어지면 이 명령어를 제어기억장치의 해당 마이크
로 명령이 시작하는 주소로 매핑해 주는 장치
• 주소결정회로 → 주소 정보나 연산 결과로 나오는 상태 비트 등으로부터 제어기억장치
의 다음 수행할 마이크로 명령어의 주소를 생성
❒ 제어장치의 일련의 동작 (☞ 교재 그림 2.17)
① PC가 가리키는 주기억장치 주소로부터 명령어를 가져와서 IR에 저장
② 명령어 해독기/주소결정회로가 IR에 저장된 명령어로부터 제어기억장치의 해당 마이

- 13 -
크로 명령이 시작하는 주소를 생성해서 CMAR에 저장
③ CMAR이 가리키는 제어기억장치의 주소로부터 내용물(마이크로 명령)을 가져와서
CMDR에 저장
④ CMDR의 제어단어 비트들이 처리장치로 보내져 연산이 수행되고, 연산 결과는 데이
터 버스 등을 통해 CPU 외부로 보내진다.
⑤ CMDR의 나머지 제어비트들과 주소비트들이 주소결정회로로 보내져서 처리장치의 상
태비트들과 함께 고려되어 다음에 수행할 마이크로 명령어의 주소를 결정
⑥ PC의 값은 다른 조건이 없을 시에는 하나씩 자동으로 증가하고, 만약 분기 제어신호
가 발생하면 해당 주기억장치 주소로 PC를 갱신한다. 그리고 ①부터 다시 수행한다.
▣ 입출력장치
❒ 입출력장치의 기본 구성과 구성 요소 (☞ 교재 그림 2.18)
• 입출력장치 제어기, 입출력장치 인터페이스, 입출력장치 버스
❒ 입출력 제어 방식 (☞ 객관식 9번 참조)
• CPU를 통한 제어(폴링, 인터럽트 방식), DMA 방식, 채널 방식
❒ GPGPU → 그래픽스 처리장치를 사용한 범용 연산이라는 의미로, 그래픽스 카드의 고도
의 병렬처리 능력을 연산에 사용하는 기술
▣ 병렬처리
❒ 파이프라인 처리기 → 하나의 연산(프로세스)을 서로 다른 기능을 가진 여러 개의 단계로
분할하여, 각 단계가 동시에 서로 다른 데이터를 취급하는 병렬 처리 기술 → 분할되는
각 명령어 간의 충돌/간섭이 일어나지 않아야 한다. (☞ 그림 2.19)
❒ 멀티코어 구조 → 하나의 CPU에 두 개 이상의 코어(Core, CPU의 일부분으로 명령어를
가져와서 수행하는 주회로)를 넣어서 동시에 여러 개의 명령어를 처리할 수 있는 구조

2.2 문제 풀이 및 해설
▣ 객관식 문제
1. 시스템 버스의 종류에 해당하지 않는 것은?
① 제어 버스 ② CPU 버스 ③ 주소 버스 ④ 데이터 버스

[정답/해설] ②, 시스템 버스는 CPU와 다른 장치들 간의 물리적 연결 및 데이터를 교환하는


통로로, 종류에는 제어 버스, 주소 버스, 데이터 버스가 있다.

2. 다음의 회로에서 출력이 1이 되기 위해서는 어떠한 입력 비트 패턴이 주어져야 하는가?

X Y Z
① 0 1 1
② 0 1 0
③ 0 0 1
④ 1 1 0
[정답/해설] ①, AND 게이트의 출력이 1이 되기 위해서는 모든 입력이 1이 되어야 한다. 따
라서 Z는 무조건 1이어야 하며, 한편 X와 Y를 입력으로 하는 XOR 게이트가 1이 되기 위해
서는 X와 Y가 서로 다른 값을 가져야 하므로 정답은 ①이 된다.

- 14 -
3. 다음 회로에서 출력(A)이 나머지 셋과 다른 것은?

X Y Z
0 0 1
1 0 0
1 1 0
1 1 1

[정답/해설] ③, OR 게이트의 입력 Z에 따라 문제의 보기는 두 그룹(①과④, ②와③)으로 구


분된다. ①과④는 A를 1로 만들고, ②와③의 경우에는 X와 Y에 따라 A값이 결정된다. X=1
과 Y=0은 XOR를 1로 만들고 결국 A도 1이 된다. 하지만 X=Y=1은 XOR의 출력이 0이 되어
A가 0이 된다.

4. 컴퓨터의 실행 주기 동안에 여러 단계를 서로 겹치게 하여, 실행 속도를 향상시키지 않고


도 컴퓨터의 처리율을 향상시키는데 사용되는 기술은?
① DMA ② 캐시기억장치
③ 분산 컴퓨터 ④ 파이프라이닝

[정답/해설] ④, 파이프라이닝은 명령어 처리 단계를 여러 단계로 하여, 각 단계를 처리 중일


때 다른 명령어가 다른 단계를 처리하게끔 하여 연달아 수행될 명령어들이 서로 간에 간섭
이 없을 경우 현재 명령의 첫 단계가 끝나고 다음 단계로 넘어가자마자 다음 명령을 불러
들여서 그 명령의 첫 단계를 동시에 처리하는 식으로 속도의 향상을 도모하는 기술이다.

5. CPU와 주기억장치 사이에 위치하며 주로 SRAM을 사용하는 소량 기억장치로서, CPU의


데이터에 대한 접근 속도를 향상시키기 위한 것은?
① ROM ② 가상기억장치
③ 캐시기억장치 ④ 레지스터

[정답/해설] ③

6. 다음 중 논리회로의 성격이 다른 하나는 어느 것인가?


① 카운터 ② 디코더
③ 멀티플렉서 ④ 전가산기

[정답/해설] ①, 조합회로는 출력이 단순히 입력 값에 의해서만 결정되는 회로로서 디코더,


멀티플렉서, 전가산기 등이 이에 해당된다. 한편 순차회로는 현재의 입력값과 플립플롭이라
는 기억소자를 이용해 저장된 특정 상태의 값이 출력을 결정하며, 카운터와 레지스터가 이
에 속한다.

7. 스택 구조의 컴퓨터에서 사용되고 연산 속도가 가장 빠른 명령어 형식은 어느 것인가?

- 15 -
① 1-주소 명령어 ② 3-주소 명령어 ③ 0-주소 명령어 ④ 2-주소 명령어

[정답/해설] ③, 0/1/2/3-주소 명령어은 피연산자의 개수에 의해서 구분되는 명령어 형식이


다. 1-주소 명령어의 경우에는 누산기(AC)를 통해서 연산과 데이터의 이동이 이루어지며, 0-
주소 명령어의 경우에는 스택을 이용한 데이터 삽입과 삭제를 통해서 처리가 이루어진다.

8. PUSH()와 POP() 연산을 사용하므로 연산 속도가 가장 빠른 명령어 형식은?


① 0-주소 명령어 ② 1-주소 명령어 ③ 2-주소 명령어 ④ 3-주소 명령어

[정답/해설] ①

9. 다음의 입출력 방식 중에서 CPU의 레지스터를 거치지 않고 직접 주기억장치와 입출력장


치 사이에서 데이터 전송이 이루어지는 방식은 무엇인가?
① 채널에 의한 방식 ② DMA에 의한 방식
③ 인터럽트에 의한 방식 ④ 프로그램에 의한 방식

[정답/해설] ②
 CPU를 통한 제어 : I/O 장치의 정보가 CPU를 통해 주기억장치에 쓰고 읽혀지는 방식
▪ 폴링 방식(프로그램에 의한 방식): CPU가 주기적으로 I/O 장치에 신호를 보내 I/O이
필요한 물어보는 방식
▪ 인터럽트 방식: I/O 장치가 인터럽트를 걸 떄만 CPU가 해당 장치와 연락하는 방식
 DMA(Direct Memory Access) 방식
▪ 작업을 수행하다가 CPU가 I/O를 원할 때 DMA에 I/O를 지시하고, CPU는 다른 작업을
처리 → 지시를 받은 DMA는 CPU를 거치지 않고 주기억장치와 입출력장치 사이의 데
이터 전송을 수행 → 전송이 끝나면 DMA는 CPU에게 인터럽트 신호를 보냄으로써 동
작을 마치고, 신호를 받은 CPU가 I/O 요청 이후의 작업을 재개한다.
 채널 방식 : 입출력 전용 별도의 처리장치(“채널”)을 사용하는 방식으로 입출력에 대한
CPU의 부담이 거의 없지만, DMA와는 달리 CPU를 거쳐서 주기억장치에 접근한다.

10. 컴퓨터가 프로그램의 정상 수행을 잠시 멈추고 중앙처리장치 이외의 다른 장치의 요구


사항을 수행하기 위한 기능을 무엇이라고 하는가?
① 조건적 분기 ② 폴링 ③ 호출 ④ 인터럽트

[정답/해설] ④, 폴링은 입출력 제어 방식의 하나로, CPU가 주기적으로 입출력장치에 신호를


보내 입출력 여부를 물어보는 방식이다.

11. 기억장치 계층 구조에서 다음 설명에 해당하는 기억장치는 어느 것인가?

수행 중인 명령어나 자주 사용되는 데이터를 저장하였다가 CPU의 요청이 있을 경우


즉시 제공함으로써 명령 수행이 신속하게 이루어지도록 하는 역할을 담당한다.

- 16 -
① (A) ② (B) ③ (C) ④ (D)

[정답/해설] ③, (A)는 보조기억장치, (B)는 주기억장치, (C)는 캐시기억장치 (D)는 레지스터이


며, 위의 설명은 캐시 기억장치에 대한 것이다.

12. n개의 입력으로 최대 2n개의 서로 다른 출력(하나는1이 되고 나머지출력은 모두0)을 나


타내는 논리회로는?
① 멀티플렉서 ② 카운터 ③ 레지스터 ④ 디코더

[정답/해설] ④, 디코더는 주소 방식으로 주어진 입력으로부터 각각의 해당 하드웨어 구성


요소를 개별적으로 구동하기 위해서 주로 사용된다. 멀티플렉서는 여러 개의 입력선(2n개)
중에서 하나를 선택하여 단일의 출력으로 내보내는 회로이며, 여러 입력으로부터 하나의 출
력을 결정하기 위해서 n개의 주소 선택라인도 함께 입력된다. 카운터와 레지스터는 순차회
로서, 카운터는 미리 정해진 순서에 따라 저장된 값이 1씩 증가하는 장치이며, 레지스터는
CPU 내부의 데이터를 저장하기 위한 장치로 사용된다.

13. 주어진 입력으로부터 각각의 해당 하드웨어 구성요소를 개별적으로 구동하기 위해서 주


로 사용되는 A에 해당하는 논리회로는?

① 멀티플렉서 ② 디코더 ③ 인코더 ④ 디멀티플렉서

[정답/해설] ②

14. 명령어 형식 중에서 모든 데이터의 처리가 누산기(AC)에 의해 이루어지는 것은 어느 것


인가?
① 0-주소 명령어 ② 1-주소 명령어 ③ 2-주소 명령어 ④ 3-주소 명령어

[정답/해설] ②, 1-주소 명령어는 하나의 피연산자와 누산기(AC)를 이용해서 연산이 이루어


진다.

- 17 -
15. 순차회로에서 1비트의 상태를 저장하기 위해서 사용하는 기억소자를 무엇이라고 하는
가?
① 플립플롭 ② 카운터 ③ 레지스터 ④ 축전지

[정답/해설] ①, 카운터와 레지스터는 플립플롭을 이용해서 만들어지는 순차회로이다.

16. 다음 중 플립플롭과 게이트로 구성된 회로는?


① 멀티플렉서 ② 전가산기 ③ 카운터 ④ 디코더

[정답/해설] ③
 순차회로 → 카운터, 레지스터
 조합회로 → 전가산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등

17. 다음 중에서 다음에 실행될 명령어의 주소를 가지고 있는 레지스터는 어느 것인가?


① Memory Buffer Register ② Instruction Register
③ Index Register ④ Program Counter

[정답/해설] ④
 메모리 버퍼 레지스터(MBR) → 기억장치로 쓰여질 데이터나 기억장치로부터 읽어온 데
이터를 임시로 저장하는 레지스터
 인덱스 레지스터 → 인덱스 주소지정 방식에서 사용되는 레지스터
 프로그램 카운터(PC, program counter) → 다음에 수행될 명령이 저장된 주기억장치의
주소를 저장
 명령어 레지스터(IR, instruction register) → 주기억장치에서 가져온 다음 수행할 명령어
를 저장하는 레지스터
 제어기억장치(control memory) → 마이크로 연산의 집합을 저장하고 있는 기억장치로서
ROM으로 구성
 제어기억장치 주소 레지스터(CMAR, control memory address register) → 제어기억장치
의 다음 수행할 마이크로 명령의 위치를 가리키는 주소를 저장하는 레지스터
 제어기억장치 데이터 레지스터(CMDR, control memory data register) → 제어기억장치의
다음 수행할 마이크로 명령을 저장하는 레지스터

18. 주기억장치에서 가져온 다음에 수행할 명령어를 저장하는 레지스터는?


① 프로그램 카운터 ② 제어기억장치 데이터 레지스터
③ 명령어 레지스터 ④ 메모리 버퍼 레지스터

[정답/해설] ③

19. NAND의 올바른 논리대수식은?


① X = A+B ② X = A+B' ③ X = A·B' ④ X = (A·B)’

- 18 -
[정답/해설] ④, A AND B = A⦁B, A OR B = A+B, NOT A = A’이며 NAND는 AND의
NOT이다.

20. XOR의 올바른 논리식은?


① X=(A․B)′ ② X=(A+B)′ ③ X=A′․B+A․B′ ④ X=A′․B

[정답/해설] ③, ①→ NAND ②→ NOR ③→ XOR

21. 4비트 전가산기에 입력이 0111과 1101이고, 아랫자리에 올라오는 올림수 Cin이 1이면
출력과 바로 윗자리로의 올림수 Cout은 무엇인가?
① 출력 0101 Cout 0 ② 출력 0101 Cout 1
③ 출력 0010 Cout 0 ④ 출력 0010 Cout 1

[정답/해설] ②

22. 16개의 입력으로부터 한 라인을 선택하려면 멀티플렉서의 주소 입력 라인이 몇 개 있어


야 하는가?
① 2 ② 4 ③ 8 ④ 16

[정답/해설] ②, 16(=24)개 라인 중에서 하나를 선택하기 위한 선택라인의 크기는 n=4이다.

23. 처리장치에서 디코더가 사용되는 곳은?


① 사용할 레지스터 선택 ② 논리/연산장치 입력 레지스터 선택
③ 상태 레지스터 출력 ④ 쉬프트 선택

[정답/해설] ①, ☞ 교재 그림 2.15 참조

24. 제어장치는 ( A )-( B )-( C )-( D )의 명령어 사이클을 반복한다. C에 해당하는 과정을
무엇이라고 하는가?
① 저장(write-back) ② 해독(decode) ③ 인출(fetch) ④ 실행(execute)

[정답/해설] ④, 명령 사이클: fetch → decode → execute → write-back

- 19 -
25. GPGPU는 어떤 입출력장치에 기반을 두고 있는가?
① 사운드 카드 ② 그래픽 카드
③ 네트워크 카드 ④ 디스크 구동 카드

[정답/해설] ②, GPGPU(General-Purpose Computing on Graphics Processing Unit: 그래픽스


처리장치를 사용한 범용 연산) 방식은 그래픽스 카드의 고도의 병렬처리 능력을 거꾸로 연
산에 사용하는 기술이다.

26. 파이프라인 구조가 4단계로 구성되어 있고 10개의 명령어가 들어오면 몇 번의 클록 만


에 모든 명령어가 처리될 수 있는가? (단, 각 명령어 수행에 4단계가 필요하다고 가정)?
① 40 ② 30 ③ 13 ④ 12

[정답/해설] ③, 10개의 모든 명령어의 처리가 완료되는 시점은 마지막 10번째 명령어의 처


리가 끝나는 시점이다. 마지막 10번째 명령어는 10번째 클록에 단계1의 처리를 시작하고,
나머지 3단계를 더 거쳐야 처리가 완료된다. 따라서 필요한 클록의 개수는 10+3이 된다.

▣ 교재 주관식 문제
1. NAND, NOR, XOR의 논리대수 식을 AND, OR, NOT 게이트를 사용해서 실제 회로로 구
성해 보시오.
[정답/해설]

2. 논리대수의 기본 관계식을 이용해서 NAND게이트로 AND, OR, NOT 게이트를 만들 수

- 20 -
있음을 보이시오. (힌트: De Morgan의 법칙을 사용하자.)
[정답/해설]
NAND(X, Y)=(X, Y)’ 이므로
 AND(X, Y) = NAND(NAND(X, Y), NAND(X, Y)) = ((X∙Y)’∙(X∙Y)’)’ = (X∙Y)+(X∙Y) = X∙Y
 OR(X, Y) = NAND(NAND(X, X), NAND(Y, Y)) = ((X∙X)’∙(Y∙Y)’)’ = (X∙X)+(Y∙Y) = X+Y
 NOT(X) = NAND(X, X)=(X∙X)’ = X’

3. 1비트 전가산기의 논리대수식을 게이트를 사용한 회로로 구성해 보시오.


[정답/해설] 2강 강의 자료의 전가산기 회로를 함께 참고하기 바란다. 아래의 회로의 경우에
는 XOR 게이트를 사용하지 않고, AND, OR, NOT 게이트만을 사용했다.

4. MUX와 디코더 회로를 각각의 논리대수식을 사용해서 회로로 구성해 보시오.


[정답/해설]

5. 아래의 비트 패턴을 저장하는 ROM을 [그림 2.10]을 참조해서 그려보자.


주소0: 01001
주소1: 10100
주소2: 11010
주소3: 00110

[정답/해설]

- 21 -
6. [그림 2.12]에서 주소2에 비트 패턴 101을 쓰기 위해서 입력 및 제어 라인들이 어떤 이진
수를 가져야 하는지 답하고 활성화(값이 1)된 라인을 굵은 선으로 표시하시오.
[정답/해설] (A0,A1)=(1,0) (I0,I1,I2)=(1,0,1) 읽기/쓰기 선택 = 1

7. X=(A+B)*(C+D)를 2-주소 방식, 1-주소 방식, 0-주소 방식으로 계산하는 프로그램을 작성


하고 각각의 프로그램 길이를 비교하시오.
[정답/해설]

2-Address 길이 = 6 1-Address 길이 = 7 0-Address 길이 = 8


PUSH A
LOAD A
MOVE A, R1 PUSH B
ADD B
ADD B, R1 ADD
STORE X
MOVE C, R2 PUSH C
LOAD C
ADD D, R2 PUSH D
ADD D
MUL R1, R2 ADD
MUL X
MOVE R2, X MUL
STORE X
POP X

8. 마이크로 연산에는 네 가지 종류가 있는데 이들이 무엇인지 나열하시오.


[정답/해설] 레지스터, 산술, 논리, 쉬프트

- 22 -
9. 마이크로 연산의 구현에 있어서 멀티플렉서와 디코더가 어떤 역할을 하는지 설명하시오.
[정답/해설] 멀티플렉서 → 입력 레지스터 선택, 디코더 → 출력 레지스터 선택

10. 입출력장치와 중앙처리장치의 속도의 차이로 인해서 발생할 수 있는 문제가 어떤 것들


이 있는지, 그리고 이 문제들을 어떻게 해결할 수 있는지 논하시오.
[정답/해설]
 CPU가 입출력이 끝날 때 까지 오래 기다려야 한다.
 DMA와 같이 입출력장치와 메모리가 CPU의 간섭 없이 직접 데이터를 교환하도록 한다.

11. 2.9.1항에 정의된 각 레지스터와 연산 코드 비트를 사용해서 아래의 마이크로 연산에 해


당하는 제어단어를 이진수로 표현하라.
◦ R0 ← R1 R1을 R0로 복사
◦ R0 ← R1 + R2 R1+R2의 내용을 R0에 저장
◦ R2 ← R1 - R2 R1-R2의 내용을 R2에 저장
◦ R1 ← R2' R2의 논리부정을 R1에 저장
◦ R0 ← R1∧R2 R1과 R2의 논리곱을 R0에 저장
◦ R1 ← shl R2 R2를 1비트씩 왼쪽으로 이동 후 R1에 저장

[정답/해설]
 R0 ← R1 : A: 000 B: 010 D: 000 F: 0000 H: 000
 R0 ← R1+R2 : A: 010 B: 011 D: 000 F: 0001 H: 000
 R2 ← R1-R2 : A: 010 B: 011 D: 010 F: 0101 H: 000
 R1 ← R2 : A: 000 B: 011 D: 001 F: 0101 H: 000
 R0 ← R1∧R2 : A: 010 B: 011 D: 000 F: 0100 H: 000
 R1 ← shl R2 : A: 011 B: 000 D: 001 F: 0000 H: 001

12. 처리장치에서 레지스터의 개수가 16개면 레지스터 선택 디코더가 최소 몇 개의 입력라


인을 받아야 하는가?
[정답/해설] 4개 (24=16)

13. 처리장치에서는 연산 결과로 상태레지스터 값이 변경되는데 이것이 제어장치의 프로그


램 수행 순서에 어떤 영향을 미치는지 설명하시오.
[정답/해설] 조건부 분기에 의해 다음 수행할 명령의 주소를 선택하게 된다.

14. 제어장치의 제어기억장치에 저장되어 있는 정보는 이진수의 패턴인데 이런 정보가 어떻


게 중앙처리장치 내의 다른 하드웨어 회로들을 구동하는지 설명하시오.
[정답/해설] 제어단어에서 나오는 라인들이 직접 하드웨어 회로에 연결되어 회로를 구동하
게 된다.

15. 파이프라인 구조에서 각 명령의 수행 단계가 6개이고 20개의 명령이 들어왔을 때 순차


수행에 비해서 얼마나 속도를 향상할 수 있는지 계산하시오.
[정답/해설] 이상적인 경우 처리 단계가 m개이고 n개의 명령을 처리할 경우 n×m/(m=n-1)

- 23 -
배의 속도 향상을 얻을 수 있으므로, 120/(6+19)배가 된다.

제3장 운영체제
3.1 교재 내용 요약
▣ 운영체제(Operation System, OS)란?
❒ 컴퓨터 하드웨어와 사용자 사이의 인터페이스를 제공하는 시스템 소프트웨어
• 기본 목적 → 자원의 효율적 관리, 사용의 편의성 제공
• 4개의 서브시스템(프로세서 관리자, 주기억장치 관리자, 장치 관리자, 파일 관리자)으로
구성되어, 프로세서(CPU), 기억장치, 입출력장치, 통신장치, 데이터, 정보, 프로그램 등
의 자원을 관리
▣ 운영체제의 처리 방식 (☞ 객관식 1번, 주관식 1번)
❒ 일괄처리 시스템(batch processing system), 다중 프로그래밍 시스템(multiprogramming system),
시분할처리 시스템(time-sharing processing system), 병렬처리 시스템(parallel processing
system), 실시간 처리 시스템(real-time processing system), 분산처리 시스템(distributed
processing system)
▣ 운영체제의 성능 평가 요소 (☞ 주관식 2번)
❒ 처리 능력(throughput), 반환시간(turnaround time), 응답시간(response time), 사용가능
도(availability), 신뢰도(reliability), 자원이용률(resource utilization)
▣ 주기억장치 관리
❒ 기억장치의 계층 구조 (☞ 교재 그림 3.3, 워크북 2장 요약 부분)
❒ 주기억장치의 할당 방법
• 단일 프로그래밍 연속 기억장치 할당 → 한 번에 오직 하나의 사용자 프로그램만이 하
나의 연속된 블록으로 주기억장치에 할당하는 방법
• 고정 분할 다중 프로그래밍 기법 → 주기억장치를 여러 개의 고정된 크기의 영역으로
분할하고, 각 영역별로 실행중인 프로그램에게 할당하는 방법 → 내부 단편화 문제
▪ 절대번역과 적재를 이용한 방식, 재배치 가능 번역과 적재를 이용한 방식
• 동적 분할 다중 프로그래밍 기법 → 프로그램이 주기억장치에 적재될 때마다 모든 작
업이 필요한 만큼의 연속된 공간을 할당하는 방식 → 외부 단편화가 발생
❒ 단편화(fragmentation) → 주기억장치에서 부분적인 기억공간이 프로그램에 의해서 사
용되지 못하고 낭비되는 현상
▪ 내부 단편화 : 기억공간과 작업의 크기가 정확히 맞지 않아서 발생
▪ 외부 단편화 : 기억공간의 영역이 너무 작아서 어떤 작업에게도 할당하지 못함
• 해결 방법
▪ 통합(coalescing) → 인접한 공백을 하나로 합쳐서 더 큰 하나의 공백을 만듦
▪ 집약(압축, compaction) → 기억장치 내의 흩어진 모든 공백을 하나로 모아서 하나
의 커다란 저장 공간을 만듦
❒ 기억장치 관리 기법 (☞ 주관식 4번)
• 반입 기법 → 요구(demand) 반입, 예상(anticipatory 반입
• 배치 기법 → 최초 적합(first fit), 최적(best) 적합, 최악(worst) 적합, 후속(next) 적합
• 교체 기법 → 무작위 페이지 교체, FIFO, LRU, LFU, NUR 등
▣ 가상기억장치(virtual memory)

- 24 -
❒ 기본 개념
• 주기억장치의 용량보다 훨씬 큰 보조기억장치를 주기억장치인 것처럼 사용하기 위한
기억장소 관리 기법 → 사용자의 논리적 주소공간과 컴퓨터의 물리적 공간을 분리하여
주기억장치의 크기에 구애받지 않는 개념
• 실행 중인 프로세스에 의해 참조되는 주소(가상주소)와 주기억장치에서 사용하는 주소
(실주소, 물리적 주소)를 분리하여, 프로세스는 주기억장치에 접근하기 위해 가상주소
를 참조하면 운영체제에 의해 동적 주소 변환 절차를 거쳐 가상주소를 실주소로 변환
하여 사용하기 때문에 사용자는 프로그램/데이터 전체가 주기억장치에 적재되는 실행
되는 것처럼 느낀다.
❒ 구현 방법
• 페이징(paging) 기법
▪ 동일한 크기의 블록으로 쪼개서 주기억장치에 올려서 수행하는 기법
▻ “페이지” → 동일한 크기의 프로그램 블록
▻ “페이지 프레임” → 페이지 크기와 같은 크기로 분할된 주기억장치의 영역
▪ 페이지는 블록 단위로 보조기억장치로부터 주기억장치로 옮겨져서 사용 가능한 어
떤 페이지 프레임에 위치시킨다.
• 세그먼테이션(segmentation) 기법
▪ 프로그램과 데이터를 일정하지 않은 서로 다른 크기로 분할하여 주기억장치에 적재
하는 기법 → “세그먼트” : 서로 다른 크기로 분할된 블록
▪ 사용자가 작성한 프로그램/데이터의 모듈이나 함수의 논리적 개념에 의해 가변 크
기의 블록으로 분할 → 세그먼트 전체가 하나의 단위로 주기억장치의 연속된 장소에 위치
• 혼용(페이징+세그먼테이션) 기법
▪ 프로그램은 논리적인 세그먼트 단위로 분할하고, 분할된 세그먼트는 다시 페이지
단위로 분할 → 세그먼트 단위가 아니라 분할된 페이지 단위로 주기억장치에 적재
▣ 프로세서 관리
❒ 프로세서 관리자 → 단일 CPU를 사용하여 사용자의 작업을 어떻게 수행할 것인가를 결정
❒ 프로세스? → 모든 프로세서의 활동, 실행 상태에 있는 프로그램
• 프로세스 제어 블록(PCB, process control block) → 프로세스에 대한 정보를 저장하고
있는 테이블
❒ 프로세스의 상태 (☞ 교재 그림 3.7)
• 하나의 프로세스는 시작부터 종료될 때까지 여러 단계의 상태 변화를 거침
• 생성 상태 → 작업 스케줄러에 의해 작업이 처리를 위해 시스템에 주어지는 상태
• 준비 상태 → 주기억장치 등의 필요한 자원을 할당받은 상태에서 프로세서의 할당을
기다리고 있는 상태
▪ 디스패처(dispatcher): CPU의 할당을 담당하는 OS 모듈
• 실행 상태 → 프로세서를 차지하여 프로그램 코드가 실행되고 있는 상태
▪ 실행 중 I/O 요구, 페이지 교환 요구와 같은 명령이 발생하면 대기 상태로 전이
▪ 작업 완료 또는 오류가 발생하면 종료 상태로 전이
• 대기 상태 → 필요한 자원을 요청한 후 이를 할당받을 때까지 기다리는 상태
▪ 보류 조건이 만족되면 준비 상태로 전이
❒ 스케줄링

- 25 -
• 자원 할당을 요청한 대상들에게 어떤 순서에 따라 자원을 할당해 줄 것인가를 결정
• 스케줄링의 종류와 작업 처리 과정 (☞ 교재 그림 3.9)
▪ 상위 단계 스케줄링(작업 스케줄링, 장기 스케줄링) : 작업 스케줄러에 의해 수행되
며, 어느 스케줄링 원칙에 따라 디스크 내의 어떤 작업을 주기억장치로 가져와서
시스템 내의 자원을 실제로 사용할 수 있도록 할 것인가를 결정
▪ 중간 단계 스케줄링(중기 스케줄링) : 작업에 대한 CPU의 할당과 시스템의 승인 사
이의 버퍼 역할을 하여 스케줄러에 의해 주기억장치를 할당받지 못한 프로세스에
대해 어떤 프로세스에게 주기억장치를 할당해 줄 것인지에 대한 순서를 결정
▪ 하위 단계 스케줄링(단기 스케줄링, 프로세스 스케줄링) : 사용 가능한 CPU를 어느
프로세스에게 할당할 것인가를 결정
▣ 프로세스 스케줄링 알고리즘
❒ 방법별 분류 → 선점(preemptive), 비선점(nonpreemptive) (☞ 객관식 13번)
❒ 알고리즘별 분류 → 기한부(deadline), 우선순위(priority), FCFS(First-Come First-Served),
SJF(Shortest Job First), SRT(Shortest Remaining Time), RR(Round Robin),
HRN(Highest Response Ratio Next), 다단계 피드백 큐(MFQ, Multilevel Feedback
Queue) (☞ 객관식 17번)
▣ 병행 프로세스와 교착상태
❒ 병행 프로세스
• 두 개 이상의 프로세스가 동시에 실행되는 것으로 소프트웨어적인 동시 처리 개념 (병렬 프로세
스는 하드웨어적인 동시 처리 개념)
• 비동기성이란? 프로세스 간에 상호 협력하는 것
• 비동기적 과정에서 자원의 공유로 인해 발생하는 문제의 해결 방법 (☞ 객관식 12번)
▪ 동기화(synchronization), 임계영역(critical section), 상호배제(mutual exclusion)
❒ 교착상태(deadlock) (☞ 주관식 9번)
• 시스템에서 아무리 기다려도 결코 일어날 수 없는 사건(자원의 획득 또는 자원 해제)
을 기다리고 있는 상태 ← 병행 처리와 자원 공유로 인해 발생되는 문제
• 발생의 필수 조건 → 상호배제 조건, 점유와 대기조건, 비선점 조건, 환형 대기조건
• 처리 전략 → 예방(방지, prevention), 회피(avoidance), 탐지(detection), 복구(recovery)
▣ 장치와 파일 관리
❒ 접근 방식에 따른 저장장치의 분류
• 순차 접근 저장장치(sequential access storage device) → 자기 테이프
• 직접 접근 저장장치(direct access storage device) → 자기 디스크
• 디스크 접근 시간 = 탐구시간 + 회전지연시간 + 전송시간
▪ 탐구시간(seek time) → 헤드를 움직여 원하는 트랙으로 이동시키는 데 걸리는 시
간. 기계적인 동작으로 이루어지기 때문에 가장 시간이 많이 걸리는 부분
▪ 회전지연시간(latency time, rotational time) → 헤드가 원하는 트랙에 위치한 다음
요구된 자료가 저장된 섹터가 헤드 밑에 이를 때까지 디스크가 회전하는 데 걸리
는 시간
▪ 전송시간(transfer time) → 보조기억장치와 주기억장치 사이에 자료가 이동하는 데
걸리는 시간
❒ 디스크 스케줄링

- 26 -
• 디스크의 접근 요청 서비스에 대한 가장 효율적인 방법을 결정하는 것 → 디스크 요청
간의 위치 관계를 조사하여 최소한의 기계적 동작에 의해 처리될 수 있는 순서로 요
청을 재배열한다.
• 디스크 스케줄링 방법 → FCFS 스케줄링, SSTF(Shortest Seek Time First), SCAN 스케
줄링, N-단계 SCAN 스케줄링, C-SCAN 스케줄링, C-LOOK 스케줄링, SLTF(Shortest
Latency Time First) 스케줄링 (☞ 객관식 21번)
❒ 파일 구조에 따른 분류 → 순차 파일, 직접 파일, 인덱스된 순차 파일
❒ 디스크 공간 할당
• 파일을 보조기억장치에 저장할 때 디스크 공간을 어떻게 할당할 것인가?
• 연속 할당 → 보조기억장치의 연속된 공간을 할당
• 불연속 할당
▪ 연결을 이용한 섹터 단위 할당 → 동일 파일에 속하는 섹터들이 포인터로 연결되어
섹터 단위로 할당하는 방식
▪ 블록 할당 → 개별적인 섹터를 할당하는 대신 연속된 섹터로 구성된 블록을 할당
❒ 분산 시스템
• 메모리와 클록을 공유하지 않는 프로세서의 집합
• 각 프로세서들은 자신의 로컬 메모리를 가지며, 통신 네트워크를 통해서 서로 통신
▪ 로컬: 해당 프로세서가 가지고 있는 자원
▪ 원격: 해당 프로세서 외의 나머지 프로세서와 그들에게 속하는 자원
• 구축 목적 → 자원 공유, 연산 속도 향상, 신뢰성 향상, 통신의 용이성

3.2 문제 풀이 및 해설
▣ 객관식 문제
1. 다수의 컴퓨터에서 각 CPU가 각자 독립적인 메모리를 갖고, 고속의 버스를 이용해서 다
른 CPU와 통신을 하면서 작업을 처리하는 시스템을 무엇이라 하는가?
① 실시간 처리 시스템 ② 분산 처리 시스템
③ 병렬 처리 시스템 ④ 시분할 처리 시스템

[정답/해설] ②
 일괄처리 시스템 → 처리할 작업이 발생할 때마다 즉시 처리하지 않고 일정량이 될 때
까지 모아 두었다가 한꺼번에 처리하는 방식
 다중 프로그래밍 시스템→ 주기억장치에 여러 개의 작업이 동시에 존재해서 주변장치가
사용되는 동안 CPU가 여러 작업 사이를 옮겨 다니면서 처리하므로 CPU의 유휴 시간
을 줄여 효율성의 증대시킴
 시분할처리 시스템 → 각 사용자들에게 CPU의 일정 시간(time slice, time quantum)을
제공하여 주어진 시간 동안 프로그램을 수행하는 방식
 병렬처리 시스템 → 두 개 이상의 프로세서를 병렬로 연결하여 작업을 동시에 처리하는
방식
 실시간 처리 시스템 → 처리를 요구하는 자료가 발생할 때마다 즉시 처리하여 정해진 짧
은 시간 내에 응답하는 시스템 → 데이터의 처리가 엄격한 시간제한을 갖는 시스템(예,
군사용 방어 시스템, 예약 시스템 등)

- 27 -
 분산처리 시스템 → 통신망을 통해 연결된 여러 컴퓨터 시스템에 작업과 자원을 분산시
킨 후 통신망을 통하여 교신하면서 처리하는 시스템

2. 많은 사용자가 하나의 컴퓨터를 공유하지만 각 사용자는 마치 자기 혼자 컴퓨터를 독점


하여 사용하는 것과 같은 느낌을 갖도록 CPU의 일정 시간을 각 사용자에게 제공하여
작업을 처리하는 방식은?
① 시분할 처리 시스템 ② 실시간 처리 시스템
③ 병렬 처리 시스템 ④ 일괄 처리 시스템

[정답/해설] ①

3. 다음과 같은 특성을 갖는 OS의 처리 방식은 무엇인가?

- 데이터 처리가 엄격한 시간제한을 갖는 시스템


- 사용자의 노력, 처리 시간, 처리 비용 등 절감
- 변동 사항 발생 시 즉시 수정 가능
- 입출력 자료의 일시 저장 및 대기 필요

① 다중 프로그래밍 시스템 ② 시분할 처리 시스템


③ 다중 처리 시스템 ④ 실시간 처리 시스템

[정답/해설] ④

4. 디스크와 같은 장치를 사용해서 프로그램 관점에서 사용 가능한 메모리 영역을 넓게 보


이는 기법을 무엇이라 하는가?
① 가상기억장치 ② 다중 프로그래밍
③ 스풀링 ④ 요구 페이징

[정답/해설] ①, 가상기억장치(virtual memory)란 특정한 컴퓨터 시스템의 주기억장치에서 이


용한 가능한 용량보다 훨씬 큰 보조기억장치를 주기억장치인 것처럼 사용하기 위한 기억장
소 관리 방법이다.

5. 프로세스의 상태 전이 과정에서 디스패처에 의해서 발생되는 상태의 이동은 어느 것인


가?
① 대기 → 준비 ② 준비 → 실행 ③ 실행 → 준비 ④ 실행 → 대기

[정답/해설] ②, 디스패처는 프로세스가 프로세서를 할당받게 되면 실행 상태로 옮겨주는 역


할을 담당하는 운영체제 모듈이다.

- 28 -
프로세스의 상태 전이 다이어그램

6. 프로세스의 상태 전이 과정에서 할당 시간이 만료되어 발생되는 상태의 이동은 어느 것


인가?
① 준비 → 대기 ② 준비 → 실행 ③ 실행 → 준비 ④ 실행 → 대기

[정답/해설] ③

7. 교착 상태가 발생하는 4가지 조건에 해당하지 않는 것은?


① 점유와 대기조건 ② 선점 조건
③ 환형 대기조건 ④ 상호 배제 조건

[정답/해설] ②, 교착상태 발생 조건은 상호배제 조건, 대기조건, 비선점 조건, 환형 대기조건


이다. 선점이란 프로세스가 가지고 있는 자원을 다른 프로세스가 빼앗을 수 있다는 의미이
고, 결국 다른 프로세스의 자원을 언제든지 빼앗아서 사용할 수 있다면 교착상태가 발생하
지 않을 것이다.

8. 교착상태의 해결 방안에 해당하지 않는 것은?


① 복구 ② 방지 ③ 무시 ④ 탐지

[정답/해설] ③, 교착상태를 해결하는 전략에는 예방(방지), 회피, 탐지, 복구가 있다.

9. 다음 그림과 같은 주기억장치에서 26K를 요구하는 프로그램에 대해 최악 적합 전략을 사


용할 경우 해당 프로그램이 위치할 곳은?

- 29 -
① (A) ② (B) ③ (C) ④ (D)

[정답/해설] ②, 최악 적합 전략의 경우에는 할당 후 남는 공간을 최대로 하려는 의도에서


가장 큰 공백을 찾아 할당한다. 최초 적합은 해당 프로그램이 들어갈 첫 공간에 할당하는
방식이고, 최적 적합은 프로그램의 크기와 공백의 크기가 가장 가까운 곳에 할당하는 방식
이다.

10. 기억장치 관리의 배치 기법에서 할당되고 난 후의 공백이 가장 큰 분할에 할당하는 방


법은?
① 후속 적합 ② 최적 적합 ③ 최초 적합 ④ 최악 적합

[정답/해설] ④, 후속 적합은 이전에 탐색이 끝난 다음 부분부터 사용 가능한 공백을 찾아서


할당하는 방식

11. 다음의 스케줄링 기법 중에서 스케줄링 대상이 나머지 셋과 다른 하나는 무엇인가?


① RR 스케줄링 ② HRN 스케줄링
③ MFQ 스케줄링 ④ SCAN 스케줄링

[정답/해설] ④
 프로세스 스케줄링 → 기한부, 우선순위, FCFS, SJF, SRT, RR, HRN, MFQ
 디스크 스케줄링 → FCFS, SCAN, N-단계 SCAN, C-SCAN, C-LOOK, SLTF

12. 병행 프로세스의 비동기성으로 인해 발생하는 문제들을 해결하기 위한 방법으로, 하나


의 프로세스가 공유 데이터의 사용을 완료할 때까지 다른 프로세스의 공유 데이터 접
근을 금지하는 제어 기법은 무엇인가?
① 동기화 ② 임계 영역 ③ 교착 상태 ④ 상호 배제

[정답/해설] ④
 동기화 → 프로세서가 2개 이상의 프로세스를 동시에 처리할 수 없기 때문에 이들 프로
세스에 대한 처리 순서를 결정하는 것
 임계영역 → 병행 프로세스가 공유 데이터를 접근할 수 있도록 설정된 프로그램 영역

- 30 -
 교착상태 → 2개 이상의 프로세스가 대기 중인 프로세스들 중의 하나에 의해서만 발생
할 수 있는 사건을 무작정 기다리는 상태
 상호배제 → 하나의 프로세스가 공유 데이터의 사용을 완료할 때까지 다른 프로세스의
공유 데이터 접근을 금지하는 기법

13. 다음의 프로세스 스케줄링 기법 중에서 하나의 프로세스가 프로세서를 할당받았을 때


자신에게 할당된 시간 동안 다른 작업에 의해 간섭받지 않고 끝까지 프로세서를 소유
할 수 있는 기법은 어느 것인가?
① RR 스케줄링 ② MFQ 스케줄링
③ SRT 스케줄링 ④ FIFO 스케줄링

[정답/해설] ④
• 선점 스케줄링 → 프로세서를 점유하고 있는 실행 중인 프로세스로부터 프로세서를 빼앗
아 다른 프로세스에게 할당할 수 있는 방법 → 예: RR 스케줄링, MFQ 스케줄링, SRT 스
케줄링
• 비선점 스케줄링 → 일단 작업이 CPU를 할당받고 실행이 시작되면 자신에게 할당된 시간
동안에는 다른 프로세스에 의해 간섭받지 않고 끝까지 실행 상태에 있도록 하는 방식 →
예: FIFO(FCFS), 우선순위, 기한부, SJF, HRN이 있다..

14. 프로세스 스케줄링 방법 중에서 비선점 방식에 속하는 알고리즘은 어느 것인가?


① 다단계 피드백 큐(MFQ) 스케줄링 ② SRT 스케줄링
③ RR 스케줄링 ④ SJF 스케줄링

[정답/해설] ④

15. 다음 설명 중 올바른 것은?


① 페이징 기법은 주기억장치를 페이지라고 불리는 고정 크기의 블록으로 나누고 보조기억
장치에 저장된 프로그램이나 데이터를 고정된 프레임으로 쪼개서 주기억장치의 페이지
에 올려서 수행하는 기법이다.
② 주기억장치에서 부분적인 기억 공간이 프로그램에 의해 사용되지 않고 낭비되는 현상을
해결하기 위한 방법으로는 통합과 압축(집약) 기법이 있다.
③ 페이지나 세그먼트를 주기억장치의 어디로 옮길 것인가를 결정하는 기법으로는 FIFO,
LRU, LFU 기법 등이 있다.
④ 주기억장치의 배치 전략 중 최적 적합 전략은 새로운 프로그램을 주기억장치에 적재할
때 주기억장치 내의 비어 있는 영역 중에서 그 프로그램을 수용할 수 있는 가장 큰 영
역에 배치함으로써 단편화 현상을 최소화할 수 있다.

[정답/해설] ②
 ① 페이징 기법은 주기억장치를 페이지 프레임이라고 불리는 고정 크기의 블록으로 나
누고 보조기억장치에 저장된 프로그램이나 데이터를 고정된 페이지로 쪼개서 주기억장
치의 페이지 프레임에 올려서 수행하는 기법이다.

- 31 -
 ③ FIFO, LRU, LFU 기법은 페이지를 주기억장치의 어디로 옮길 것인가를 결정하는 기법
이 아니라, 새로 적재되어야 할 페이지를 위하여 기존의 어느 페이지를 주기억장치로부
터 제거해야 할지 결정하는 기법이다.
 ④ 최적 적합 전략은 새로운 프로그램을 주기억장치에 적재할 때 주기억장치 내의 비어
있는 영역 중에서 그 프로그램을 수용할 수 있는 가장 작은 영역에 배치함으로써 단편
화 현상을 최소화하는 전략이다.

16. 다중프로그래밍 시스템에서 프로세스가 아무리 기다려도 결코 발생하지 않을 사건을 기


다리고 있는 상황으로 제한된 자원에 대한 공유와 병행 처리로 인해 발생하는 문제는
무엇인가?
① 임계영역 ② 동기화 ③ 교착상태 ④ 상호배제

[정답/해설] ③, 교착상태는 2개 이상의 프로세스가 제한된 자원을 동시에 공유함으로 서로


대기 중 상태가 되고 대기 중인 프로세스들 중의 하나에 의해서만 발생할 수 있는 사건을
무작정 기다리는 상태이다.

17. 프로세스 스케줄링 기법 중 준비상태의 프로세스들 중에서 남아있는 실행시간의 추정치


가 가장적은 프로세스를 먼저 실행시키는 방식은 무엇인가?
① SJF 스케줄링 ② FIFO 스케줄링
③ MFQ 스케줄링 ④ SRT 스케줄링

[정답/해설] ④
 기한부(deadline) → 프로세스가 주어진 시간 내에 완료되면 유용한 것으로 보고, 그렇지
않으면 가치가 없는 것으로 보는 방식
 우선순위(priority) → 우선순위가 높은 프로세스부터 먼저 처리하는 방식
 FCFS(First-Come First-Served) → 준비 큐에 도착한 순서대로 CPU를 할당하는 방식
 SJF(Shortest Job First) → 현재 준비 큐에 있는 프로세스 중에서 수행시간이 가장 짧을
것으로 예상되는 프로세스부터 먼저 처리하는 방식, 수행시간이 긴 프로세스가 프로세서
를 할당받지 못한 채 계속 기다리는 문제 발생
 SRT(Shortest Remaining Time) → 준비 큐에 있는 것과 새로 들어온 모든 작업을 포함해
서 남아있는 실행시간의 추정치가 가장 적은 프로세스부터 먼저 실행하는 방식, SJF 알
고리즘의 선점형 버전
 RR(Round Robin) → 프로세서를 할당된 시간에만 사용하는 방식
 HRN(Highest Response Ratio Next) → SJF 스케줄링의 단점 보완, 프로세스가 앞으로
필요한 서비스 시간과 그 프로세스가 서비스를 받기 위해 대기한 시간까지 고려하여 우
선순위를 결정
 다단계 피드백 큐(MFQ, Multilevel Feedback Queue) → 서로 다른 우선순위를 가진 여
러 준비 큐를 두고, 각 단계의 큐에서 제공된 시간할당량을 다 쓰고도 완료되지 못하면
우선순위가 낮은 다음 단계로 전달되며, 마지막 단계에서는 작업이 완료될 때까지 RR 방
식으로 처리하는 기법

- 32 -
18. 주기억장치의 관리 전략 중에서 최초적합, 최적적합 및 최악적합 등을 사용하는 전략은
어느 것인가?
① 배치(placement) 전략 ② 실행(execution) 전략
③ 교체(replacement) 전략 ④ 반입(fetch) 전략

[정답/해설] ①, 최초적합, 최적적합 및 최악적합은 프로세스를 주기억장치에 배치하는 전략


이다. 반입 전략으로는 요구 반입과 예상 반입이 있으며, 교체 전략으로는 무작위 페이지 교
체, FIFO, LRU, LFU, NUR 등이 있다.

19. 가상기억장치 구현 기법에서 프로그램을 동일한 크기의 영역으로 나눈 것을 무엇이라


부르는가?
① 세그먼트 ② 프레임 ③ 파티션 ④ 페이지

[정답/해설] ④, 가상기억장치의 구현 방법의 하나인 페이징 기법은 주기억장치를 페이지 프


레임이라고 불리는 고정 크기의 블록으로 나누고 보조기억장치에 저장된 프로그램이나 데
이터를 고정된 페이지로 쪼개서 주기억장치의 페이지 프레임에 올려서 수행하는 기법이다.

20. 가상기억장치 구현 기법에서 프로그램이나 데이터를 일정하지 않은 서로 다른 크기의


블록으로 나눈 것을 무엇이라고 하는가?
① 프레임 ② 세그먼트 ③ 페이지 ④ 파티션

[정답/해설] ②, 세그먼테이션 기법에서는 사용자가 작성한 프로그램/데이터의 모듈이나 함


수의 논리적 개념에 의해서 서로 다른 크기의 블록으로 분할한다.

21. 디스크 스케줄링 방법 중에서 헤드가 한 쪽 방향으로 이동할 때 진행 방향에 앞을 보고


처리할 어떤 요구도 없다면 해당 방향의 끝까지 더 이상 진행하지 않는 방식의 알고리
즘은 무엇인가?
① N-단계 SCAN 스케줄링 ② C-LOOK 스케줄링
③ C-SCAN 스케줄링 ④ SSTF 스케줄링

[정답/해설] ②
 FCFS 스케줄링 → 요청이 도착한 순서대로 서비스를 제공하는 방식
 SSTF 스케줄링 → 현재 헤드 위치에서 탐구거리가 가장 짧은 요청을 먼저 처리하는 방

 SCAN 스케줄링 → 진행 방향에서 가장 짧은 탐구거리의 요청을 먼저 서비스하고, 해당
방향에서 서비스가 끝나면 반대 방향으로 서비스를 계속 진행
 N-단계 SCAN 스케줄링 → SCAN 스케줄링과 서비스 진행 방향은 동일, 하지만 진행 중
에 새롭게 도착한 요청은 서비스하지 않고 다음의 반대 방향 때에 서비스 제공
 C-SCAN 스케줄링 → 서비스 진행 방향이 항상 바깥쪽에서 안쪽 실린더로 이동하면서
서비스 요청을 처리
 C-LOOK 스케줄링 → 한쪽 방향으로 이동할 때 진행 방향의 앞쪽에 처리할 어떤 요청도

- 33 -
없으면 더 이상 진행을 하지 않음
 SLTF 스케줄링 → 회전지연시간 최적화를 위한 방법으로, 헤드가 특정 실린더에 도착하
면 그 실린더 내의 여러 트랙에 대한 요청을 검사한 후 회전지연시간이 가장 짧은 요청
부터 서비스 제공

▣ 교재 주관식 문제
1. 다음과 같은 운영체제 처리 방식의 장단점을 비교하시오.
(1) 일괄처리 시스템
(2) 다중 프로그래밍 시스템
(3) 시분할 처리 시스템
(4) 실시간 처리 시스템
(5) 병렬 처리 시스템
(6) 분산 처리 시스템

[정답/해설]
(1) 일괄처리 시스템 → 컴퓨터 시스템 사용의 효율성 향상, 잦은 CPU의 유휴 시간, 빠른 작
업 결과 확인이 불가, 사용자가 작업 처리 과정에 관여하는 것이 불가
(1) 다중 프로그래밍 시스템 → CPU 유휴 시간 단축을 통한 효율성 증대, 기억장치 관리 및
CPU 스케줄링 기법 등이 필요
(2) 시분할 처리 시스템 → 많은 사용자가 하나의 컴퓨터를 공유, 각 사용자는 마치 자기 혼
자 컴퓨터를 독점하여 사용하는 것으로 느낌을 갖게 한다. 기억장치 관리, 디스크 스케
줄링, 실행중인 작업간의 통신, 입출력장치의 사용에 대한 제어 및 관리 등으로 인한 운
영체제의 복잡성 증가
(3) 실시간 처리 시스템 → 사용자의 노력과 처리 시간 및 처리 비용 등의 절감, 변동 사항
발생 시 즉시 수정 가능, 입출력 자료의 일시 저장 및 대기 필요
(4) 병렬 처리 시스템 → 단위 시간당 처리되는 작업량의 증가
(5) 분산 처리 시스템 → 안정적인 작업 처리에 따른 신뢰성 향상 및 계산 속도의 증가

2. 운영체제의 성능 평가를 위한 요소들에 대해서 설명하시오.


[정답/해설]
 처리 능력 → 단위 시간당 처리할 수 있는 작업량
 반환시간 → 작업이 시작부터 완료 때까지의 소요된 시간
 응답시간 → 사용자가 일의 처리를 의뢰하고 결과를 얻을 때까지 소요되는 시간
 사용가능도 → 장비의 총 운영시간에 대해 정상적인 기능을 수행하는 시간의 정도
 신뢰도 → 시스템이 주어진 환경 하에서 얼마나 원활하게 기능을 수행할 수 있는 가를
나타내는 척도
 자원이용률 → 시스템의 각종 자원을 얼마나 효율적으로 사용하는 가를 나타내는 척도

3. 기억장치의 계층 구조를 설명하고, 각 계층에 속하는 기억장치의 종류와 특징을 설명하시


오.
[정답/해설] ☞ 기억장치의 계층적 구조(레지스터→캐시기억장치→주기억장치→보조기억장

- 34 -
치)에 대한 자세한 내용은 교재 그림 3.3 및 2장 요약 부분 참조

4. 기억장치 관리 전략의 3가지 기법에 속하는 각 방법들을 비교 설명하시오.


[정답/해설]
• 반입 기법 → 보조기억장치에서 언제 주기억장치로 가져올 것인가?
▪ 요구반입 : 지금 실행되는 프로그램에 의해 참조될 때 주기억장치로 프로그램/데이터를
이동, 초기 시스템에서 주로 사용
▪ 예상 반입 : 앞으로 참조될 가능성이 높은 프로그램이나 데이터를 예상하여 미리 가져
오는 방법
• 배치 기법 → 가져온 것을 주기억장치의 어디에 위치시키느냐?
▪ 최초 적합 : 필요한 기억장치 크기를 만족시키는 첫 번째로 비어 있는 영역에 배치
▪ 최적 적합 : 필요한 기억장치 크기를 가장 근접하게 만족시키는 곳에 배치
▪ 최악 적합 : 할당하고 난 후의 공백이 가장 많이 남는 분할에 할당
▪ 후속 적합 : 이전에 탐색이 끝난 그다음 부분부터 사용이 가능한 공백을 탐색/할당
• 교체 기법 → 주기억장치에서 어느 것을 제거하여 공간을 확보하느냐?
▪ 무작위 페이지 교체 : 주기억장치를 차지고 있는 프로그램/데이터 중에서 아무것이나
선택해서 보조기억장치로 내보낸다.
▪ FIFO(First-In First-Out) 교체 : 주기억장치에 가장 오래 있었던 페이지를 교체
▪ LRU(Least Recently Used) 교체 : 가장 오랫동안 사용되지 않는 페이지를 교체
▪ LFU(Least Frequently Used) 교체 : 참조되는 횟수가 가장 적은 페이지를 교체
▪ NUR(Not Used Recently) 교체 : 최근에 사용되지 않는 페이지를 교체

5. 가상기억장치의 개념 및 이를 구현하기 위한 방법들을 설명하시오.


[정답/해설] 가상기억장치(virtual memory)란 특정한 컴퓨터 시스템의 주기억장치에서 이용
한 가능한 용량보다 훨씬 큰 보조기억장치를 주기억장치인 것처럼 사용하기 위한 기억장소
관리 방법이다. 구현 방법으로는 페이징(paging) 기법과 세그먼테이션(segmentation) 기법,
페이징과 세그먼트 혼용 기법이 있다.

6. 프로세스의 상태 변화를 그림을 나타내고, 각 상태와 변화 과정을 설명하시오.


[정답/해설] ☞ 객관식 문제 5번과 요약 부분 참조

7. 스케줄링 단계를 3단계로 나누어 설명하시오.


[정답/해설] 스케줄링 단계는 상위 단계 스케줄링(작업 스케줄링, 장기 스케줄링), 중간 단계
스케줄링(중기 스케줄링), 하위 단계 스케줄링(프로세스 스케줄링, 단기 스케줄링)의 3단계로
구분한다. (☞ 각 단계에 대한 설명은 요약 부분 참조)

8. 알고리즘에 따른 프로세스 스케줄링 방법들을 선점과 비선점 방식으로 구분하시오.


[정답/해설]

- 35 -
RR(Round-Robin)

SRT(Shortest Remaining Time)

MFQ(Multilevel Feedback Queue)

알고리즘별 우선순위(priority)

분류 기한부(deadline)

FCFS(First-Come First-Served) 선

SJF(Shortest Job First)

HRN(Highest Response ratio Next)

9. 교착상태가 발생하는 필수 조건과 교착 상태를 처리하기 위한 전략들을 설명하시오.


[정답/해설]
<발생의 필수 조건>
 상호배제 조건 → 한 프로세스가 자원을 사용 중이면 다른 프로세스는 그 자원을 사용하
지 못하고 해제될 때까지 반드시 기다려야 한다.
 점유와 대기조건 → 자신에게 할당된 자원을 점유하고 있으면서 다른 프로세스가 가진
자원을 요청하고 그것이 해제되기를 기다린다.
 비선점 조건 → 할당된 자원은 사용이 끝나거나 스스로 내놓기 전에는 해제되지 않는다.
 환형 대기조건 → 각 프로세스들이 서로 다른 프로세스가 가지고 있는 자원을 용청하며
하나의 사슬 구조를 이룬다.
<처리 전략>
 교착상태 방지 → 교착상태발생의 4가지 발생 필수조건 중에서 어느 한 가지 조건이라
도 제거하여 발생할 수 없게 하여 교착상태가 발생하지 않게 하는 것
 교착상태 회피 → 각 프로세스에서 요구하는 자원에 대한 사전 정보를 알고 사전에 교착
상태를 피해가는 방법
 교착상태 탐지 → 시스템의 상태를 주기적으로 또는 필요할 때마다 교착상태에 빠진 프
로세스가 있는 지를 조사하는 것
 교착상태 복구 → 탐지 알고리즘에 의해 교착상태의 발생이 확인되면 이 교착상태를 제
거하여 다른 프로세스가 자원을 사용할 수 있도록 하는 방법

10. 디스크 스케줄링 알고리즘에서 SCAN 방법과 이에 대한 변형 방법들을 비교하시오.


[정답/해설] ☞ 객관식 문제 21번 참조
 SCAN 스케줄링은 헤드가 지나간 후 헤드 바로 뒤에 도착하는 작업은 헤드가 진행 방향
의 끝까지 갔다가 방향을 바꾸어 되돌아올 때까지 기다려야하는 문제와 상대적으로 안
쪽 트랙이 바깥쪽 트랙보다 서비스를 많이 받는 등의 불공평성 문제점을 갖고 있다.
 N-단계 SCAN 스케줄링은 SSTF나 SCAN 방법보다 응답시간의 편차가 작다는 특징을 갖
고 있다.
 C-SCAN 스케줄링은 가장 안쪽 또는 바깥쪽의 실린더에 대한 불공평한 서비스가 완전히
제거하였으며, 응답시간의 편차가 매우 작아졌다.

- 36 -
11. 파일 관리 시스템의 디스크 공간 할당 방식이 종류와 특징을 설명하시오.
[정답/해설] ☞ 각 방법에 대한 설명은 요약 부분 참조

제4장 자료구조와 알고리즘


4.1 교재 내용 요약
▣ 배열과 리스트
❒ 자료구조란?
• 컴퓨터로 자료를 처리하기 위해서는 자료 사이에 존재하는 다양하고도 복잡한 관계를
적절히 나타낼 수 있어야 하며, 자료 사이의 논리적 관계를 프로그램에 의해 쉽게 이
용하도록 구성한 개별적인 자료 원소들의 집합을 의미한다.
❒ 알고리즘이란?
• 결과를 생성하기 위해서 종료 단계를 가진, 애매모호하지 않고 실행 가능한 단계들의
순서 있는 집합
▪ (입출력) 외부에서 0개 이상의 입력을 받아들여 하나 이상의 출력을 생성한다.
▪ (명확성) 각 단계는 단순해야 하고 모호하지 않아야 한다.
▪ (유한성) 한정된 수의 단계를 거친 후에는 반드시 종료해야 한다.
▪ (유효성) 모든 명령이 수행 가능해야 한다.
• 자료구조와 알고리즘의 관계: “프로그램 = 자료구조 + 알고리즘”
❒ 배열
• 같은 자료형을 갖는 여러 개의 데이터를 하나의 변수로 묶어놓은 데이터의 집합체
▪ 각 원소를 구분하기 위해서 ‘인덱스’ 또는 ‘첨자’를 사용 → (주소, 데이터)쌍의 집합
• 1차원 배열 → 1개의 첨자를 사용해서 원소에 접근
▪ C언어, A[n] → 첨자 범위 0~n-1, 원소수 n
▪ 파스칼, A(l:u) → 첨자 범위 l~u, 원소수 u-l+1
▪ 저장 주소 계산 → k번째 위치 = 시작주소+원소크기×(k-1)
• 2차원 배열 → 행과 열을 나타내기 위해 2개의 첨자 사용
▪ A[m][n]의 저장 방식
▻ 행우선 순서 → 크기가 m인 배열이 n개 나열된 형태
▻ 열우선 순서 → 크기가 n인 배열이 m개 나열된 형태
▪ 저장 주소 계산 → A[l1..u1, l2..u2], 각 원소의 크기 k
▻ 행우선 순서의 경우 → A[i,j]의 주소 = 주소[a[l1,l2]]+(i-l1)×(u2-l2+1)×k+(j-l2)×k
▻ 열우선 순서의 경우 → A[i,j]의 주소 = 주소[a[l1,l2]]+(j-l2)×(u1-l1+1)×k+(i-l1)×k
• 희소 행렬 → 원소값이 0인 원소가 상대적으로 많은 행렬

- 37 -
▪ 단순히 2차원 배열로 나타내면 실제 필요한 값보다 그렇지 않은 0의 값을 저장하
기 위해서 불필요한 많은 메모리가 요구 → 0이 아닌 각 원소를 “(행 번호, 열 번
호, 값)”의 형태로 나타내면, 주어진 행렬을 2차원 배열로 효율적인 표현 가능
❒ 연결 리스트
• 노드들의 연결을 통해서 구성
▪ 노드 → 적어도 두 종류의 필드(데이터 필드와 링크 필드)를 가짐
▻ 데이터 필드 → 데이터 항목을 저장
▻ 링크 필드 → 리스트에서 논리적 순서 상 다음에 오는 원소가 가진 노드가 저장
된 기억장치 주소값을 가진 필드
• 연결 리스트의 종류
▪ 링크 필드의 개수에 따라 → 단일 연결 리스트 (한쪽 방향으로만 진행하는 하나의
링크 필드), 이중 연결 리스트(두 개의 필드를 사용해서 양쪽 방향으로 이동 가능)
▪ 원형 연결 리스트 → 리스트의 마지막 노드의 링크 필드가 리스트의 맨 앞 노드를
가리키도록 구성한 형태의 연결 리스트 (단일/이중 원형 연결 리스트)
• 단일 연결 리스트에서의 삽입과 삭제
▪ 삽입: 삽입할 새 노드를 할당받고, 새 노드의 링크 필드를 삽입할 위치 바로 다음의
노드를 가리키도록 조정하고, 선행 노드의 링크 필드가 새 노드를 가리키도록 조정
▪ 삭제: 삭제할 노드의 선행 노드를 찾고, 선행 노드의 링크 필드가 삭제할 노드의 다
음 노드를 가리키도록 조정한 후 삭제할 노드를 삭제
▣ 스택과 큐
❒ 스택 ← 뷔페 접시, 책상 위에 쌓아 놓은 책과 같이 “쌓아 올린 더미”를 의미
• 데이터의 삽입과 삭제가 리스트의 한 쪽 끝에서만 이루어지는 선형 리스트
▪ top → 삽입과 삭제가 발생하는 위치를 가리키는 변수
• 후입선출(LIFO, Last-In First-Out)
• push(삽입) 연산 과정 → top = top + 1; Stack[top] = 데이터;
• pop(삭제) 연산 과정 → 데이터 = Stack[top]; top = top – 1;
• 응용 분야 → 서브루틴(함수) 호출, 인터럽트 처리, 수식 계산, 재귀(순환) 호출
❒ 큐 ← “줄 서 있는 것”
• 한쪽 끝에서는 삽입만을 수행하고 다른 쪽 끝에서는 삭제만을 수행하는 선형 리스트
• front → 삭제가 일어나는 데이터의 바로 앞을 가리키는 변수
▪ 삭제 과정 : front = front + 1; 데이터 = Queue[front];
• rear → 마지막으로 삽입된 원소가 있는 곳을 가리키는 변수
▪ 삽입 과정 : rear = rear + 1; Queue[rear] = 데이터;
• 응용 분야 → 작업 스케줄링, 버퍼 등
❒ 원형 큐
• 순차 큐의 처음 원소(Q[0])와 맨 마지막 원소(Q[n-1])가 서로 연결된 하나의 원형 구조
를 가진 큐로 이해하고 취급 → Q[n-1]에 데이터가 삽입(삭제)된 다음에는 Q[0]부터 다
시 삽입(삭제)
• 단순히 front/rear의 값을 증가시키는 대신에 모듈러 연산을 이용해 다음과 같이 처리
▪ rear ← (rear+1) mod n, front ← (front+1) mod n
❒ 데크(double ended queue, 이중 큐) → 가장 일반적인 형태의 선형 리스트로서, 리스트

- 38 -
의 양쪽 끝 모두에서 삽입과 삭제가 가가능한 구조를 갖는 리스트
▣ 트리
❒ 트리란? 노드(“정보 항목”)이 가지로 연결되어 계층적인 구조를 이루는 비선형 자료구조
❒ 주요 용어 → 차수, 트리의 차수, 리프 노드(단말 노드), 비단말 노드(내부 노드), 깊이(높
이), 부모 노드, 자식 노드, 형제 노드, 조상(선조), 후손(자손), 숲, 서브트리
❒ 이진 트리 → 공백이거나 각 노드의 차수가 2이하인 트리
• 일반 트리와의 차이점 → 공백도 이진 트리, 서브트리의 순서(왼쪽, 오른쪽) 구별
❒ 이진 트리의 종류 (☞ 객관식 8번)
• 포화(perfect) 이진 트리, 완전(complete) 이진 트리, 경사(skewed) 이진 트리
❒ 이진 트리의 특성
• n개의 노드를 갖는 경우
▪ 트리의 최대 높이 → (경사 이진 트리의 경우) n
▪ 트리의 최소 높이 → 리프 노드를 제외한 모든 노드가 2개의 자식 노드를 갖는 경
우(포화/완전 이진 트리의 경우) 󰀚log2n󰀛+1
• 각 레벨 i에서 가질 수 있는 최대 노드의 수 → 2i (i≥0)
• 깊이 k인 이진 트리의 최대 노드의 수 → 2k-1
❒ 이진 트리의 균형
• 루트 노드로부터 해당 노드까지의 거리는 효율적인 탐색과 관련
▪ 트리의 높이가 짧으면 짧을수록 노드를 빨리 찾을 수 있다.
• 균형 요소(balance factor) → 왼쪽 서브트리의 높이와 오른쪽 서브트리의 높이의 차이
• AVL 트리 → 균형 요소가 –1, 0, 1이 되어 균형을 이루고 있는 트리
❒ 이진 트리 순회
• 순회 → 일정한 순서에 따라 트리의 각 노드를 오직 한 번씩 방문하는 것 → 이를 통
해 트리 내의 정보를 선형적인 순서로 만들 수 있다.
• 순회 방법의 종류 (가정: 왼쪽 서브트리를 오른쪽 서브트리보다 우선 방문)
▪ 전위 순회(DLR): 루트 노드 방문 → 왼쪽 서브트리 방문 → 오른쪽 서브트리 방문
▪ 중위 순회(LDR): 왼쪽 서브트리 방문 → 루트 노드 방문 → 오른쪽 서브트리 방문
▪ 후위 순회(LRD): 왼쪽 서브트리 방문 → 오른쪽 서브트리 방문 → 루트 노드 방문
❒ 히프 트리
• ①각 노드의 값이 그 노드의 자식 노드의 값보다 크거나 같은 ②완전 이진 트리
• 최대값 삭제 및 원소의 삽입이 용이해서 우선순위 큐의 구현이나 히프 정렬에서 이용
❒ 이진 탐색 트리
• 각 노드의 왼쪽 서브트리에 있는 모든 노드의 키값은 해당 노드의 키값보다 작고, 오
른쪽 서브트리에 있는 모든 키값은 해당 노드의 킷값보다 크다는 성질을 만족하는 이
진트리
• 탐색 방법: 루트 노드로부터 키값의 비교를 통해 작으면 왼쪽 가지, 크면 오른쪽 가지
를 따라 이동한다.
▣ 그래프
❒ 그래프란? G=(V, E)이며, 트리와 함께 비선형 자료구조
• V: 정점의 유한 집합, E: 두 정점 쌍으로 구성되는 간선의 유한 집합
▪ 트리는 모든 정점이 연결된 무방향 비사이클 그래프이다.

- 39 -
❒ 그래프의 주요 용어
• 그래프의 종류
▪ 간선의 방향성 여부에 따라
▻ 무방향 그래프 → 간선이 방향을 갖지 않기 때문에 (a,b) = (b,a)
▻ 방향 그래프 → 간선에 방향성이 존재하므로 <a, b> ≠ <b, a>
▪ 가중치 그래프 → 간선에 특정 의미(도시와 도시 사이의 거리, 이동시간 등)를 가진
가중치를 부여한 그래프, 네트워크라고도 함
▪ 부분 그래프 → G=(V,E)에 대해서 V′(G)⊆V(G)이고 E′(G)⊆E(G)인 그래프 G′=(V′,E′)
▪ 완전 그래프 → 최대 개수의 간선을 갖는 그래프
▻ 무방향 그래프의 경우 최대 간선의 수(n개의 정점) → n(n-1)/2
▻ 방향 그래프의 경우 최대 간선의 수 → n(n-1)
• 그래프의 주요 용어 → 인접, 부수, 경로, 경로의 길이, 단순 경로, 사이클, 단순 사이클,
연결되었다, 강한 연결, 약한 연결, 차수, 진입 차수, 진출 차수
❒ 그래프의 표현 → 인접 행렬, 인접 리스트
• 인접 행렬(adjacency matrix) → n×n 행렬을 이용한 표현 방법 (n: 정점의 개수)
▪ 가중치가 없는 경우 G[i][j] ← 0 또는 1
▪ 가중치 그래프의 경우 G[i][j] ← 해당 간선의 가중치 또는 ∞
• 인접 리스트(adjacency list) → 연결 리스트를 사용
▪ n개의 연결 리스트의 첫 번째 노드를 가리키기 위한 포인터 배열 head[] 사용
▻ 가중치가 없는 경우에는 각 노드가 2개의 필드(정점번호, 포인트)로 구성
▻ 가중치 그래프의 경우 각 노드가 3개의 필드(정점번호, 가중치, 포인터)로 구성
❒ 그래프 순회 (☞ 주관식 8번)
• 그래프의 모든 정점을 한 번씩만 방문하는 것
• 순회 방법 → 깊이 우선 탐색(depth first search), 너비 우선 탐색(breadth first search)
❒ 최소 비용 신장 트리(minimum spanning tree)
• 정의 → 가중치 무방향 그래프에서 가중치의 합이 가장 작은 신장 트리
▪ 신장 트리 → 그래프 G으 모든 정점으로 구성된 트리, 즉 사이클이 존재하지 않음
• 대표적인 알고리즘 → 크루스칼(Kruskal) 알고리즘, 프림(Prim) 알고리즘
❒ 최단 경로(shortest path)
• 정의 → 가중치 방향 그래프에서 정점 u에서 정점 v까지의 최단 경로란 u에서 v까지
의 경로 중에서 가중치의 합이 가장 작은 경로
• 최단 경로 문제의 유형
▪ 단일 출발점에서 다른 모든 정점으로의 최단 경로 → 다익스트라(Dijkstra) 알고리즘
▪ 서로 다른 모든 정점 쌍 사이의 최단 경로 → 플로이드(Floyd) 알고리즘
▣ 정렬 알고리즘
❒ 정렬(sort)란 주어진 데이터를 일정한 기준에 따라 순서 있게 재배열하는 연산
• 정렬을 수행할 당시에 데이터가 어디에 저장되어 있느냐에 따라
▪ 내부 정렬 → 모든 데이터를 주기억장치에 적재해서 정렬하는 방법
▻ 선택 정렬, 버블 정렬, 삽입 정렬, 퀵 정렬, 합병 정렬 (☞ 객관식 1번)
▪ 외부 정렬 → 데이터가 많은 경우 전체 데이터를 보조기억장치에 저장하고 그중 일
부 데이터씩 번갈아가면서 주기억장치에 적재해서 정렬을 수행하는 방식

- 40 -
❒ 퀵(quick) 정렬의 특징 및 분할 과정
• 분할된 서브리스트는 다음과 같은 특징을 갖는다.
▪ 왼쪽 서브리스트의 모든 키 값 < 오른쪽 서브리스트의 가장 작은 값
▪ 왼쪽 서브리스트의 가장 큰 값 < 오른쪽 서브리스트의 모든 키 값
• 분할 과정
▪ 왼쪽에서 오른쪽으로 진행하면서 분할원소보다 큰 값의 위치를 나타내는 변수 L
▪ 오른쪽에서 왼쪽으로 진행하면서 분할원소보다 작은 값의 위치를 나타내는 변수 R
▪ L<R인 동안 반복하면서 L이 가리키는 값과 R이 가리키는 값을 서로 교환
▪ L>R이면 분할원소와 R이 가리키는 값을 서로 교환하고 분할 과정을 종료
▣ 탐색 알고리즘
❒ 탐색(search)이란? 주어진 데이터 집합에서 원하는 값을 가진 데이터를 찾는 작업
❒ 순차(sequential) 탐색 → 탐색키가 주어지면 처음 데이터부터 하나씩 차례로 비교하여
원하는 값을 가진 데이터를 찾는 방법 → 데이터가 키값과 관련해서 아무런 순서 없이
단순하게 연속적으로 저장된 경우에 적합한 방법 → 모든 데이터에 대해서 적용 가능
❒ 이진(binary) 탐색 → 주어진 데이터가 미리 정렬되어 있는 경우에 적용 가능
• 탐색 과정
▪ 가운데 위치에 있는 데이터와 탐색키를 비교
▻ 서로 같으면 탐색 성공
▻ 탐색키 < 데이터의 값 → 전반부 데이터(1~(n/2)-1)에 대해서 탐색을 반복
▻ 탐색키 > 데이터의 값 → 후반부 데이터((n/2)+1~n)에 대해서 탐색을 반복
• 탐색을 한 번 수행할 때마다 탐색 대상이 되는 데이터의 개수가 반씩 줄어듦
❒ 해싱(hasing) → 데이터의 키값이 주어지면 이를 적절한 함수를 통해 데이터가 저장된
테이블의 주소로 변환하여 원하는 데이터를 찾는 방법
• 해시 함수 → 주어진 키값을 테이블의 저장 주소로 변환하는 함수 (☞ 주관식 12번)
▪ 종류 → 제산잔여법, 중간제곱법, 폴딩법, 기수변환법, 자릿수 추출법 등
• 충돌 → 서로 다른 키값이 해시 테이블의 동일한 주소로 대응되는 현상
▪ 해결 방법
▻ 연쇄법(체인법) → 충돌된 데이터를 연결 리스트를 사용해서 저장
▻ 개방 주소법 → 정해진 방법에 따라 다른 빈 공간을 탐색으로 선형 탐사, 이차형
탐사, 이중 해싱 등이 있다. (☞ 주관식 13번)

4.2 문제 풀이 및 해설
▣ 객관식 문제
1. 다음은 오름차순으로 정렬하는 알고리즘의 처리 과정을 설명한 것이다. 어떤 알고리즘인
가?
주어진 리스트의 미정렬 부분의 처음부분부터 두 개씩 비교하면서 큰 값을
뒤쪽으로 이동시킨다.
① 삽입 정렬 ② 합병 정렬 ③ 버블 정렬 ④ 선택 정렬

[정답/해설] ③
 버블(bubble) 정렬은 주어진 리스트의 왼쪽부터 모든 이웃한 두 키를 서로 비교한 후 왼

- 41 -
쪽의 키가 더 큰 경우에는 오른쪽의 키와의 자리바꿈을 통해 정렬해 나가는 방법이다.
 선택(selection) 정렬은 정렬되지 않는 부분에서 가장 작은 값을 갖는 데이터를 골라서, 정
렬된 부분의 맨 마지막으로 이동시킴(즉 정렬되지 않은 부분의 첫 번째 원소와 교환).
 삽입(insertion) 정렬은 정렬되지 않는 부분의 왼쪽부터 한 데이터씩 꺼내어 정렬된 부분
에서 제자리를 찾아 삽입하는 방식이다.
 퀵(quick) 정렬은 주어진 입력 리스트를 특정한 키 값(“분할원소”, “피벗”)을 기준으로 두
개의 서브리스트로 분할하고, 각각의 서브리스트에 대해서 순환적으로 분할 과정을 적용
해서 정렬하는 방식
 합병(merge) 정렬은 주어진 리스트를 동일한 크기의 두 개의 서브리스트로 분할하고, 각
서브리스트에 대해서 분할 과정을 순환적으로 적용하여 왼쪽 서브리스트와 오른쪽 서브
리스트에 대한 처리가 완료되면 이들을 합병하여 하나의 정렬된 리스트를 만든다.

2. 컴퓨터의 정렬 알고리즘 중 주어진 입력 리스트를 분할원소를 기준으로 두 개의 서브리


스트로 나누어 일련의 과정을 순환적으로 적용하여 데이터를 정렬하는 방법은?
① 버블 정렬 ② 퀵 정렬 ③ 삽입 정렬 ④ 합병 정렬

[정답/해설] ②

3. 다음과 같은 특징을 갖는 정렬 방법은 무엇인가?

우선 주어진 입력 리스트를 특정한 키 값보다 작은 값을 갖는 레코드와 큰 값을 갖는


레코드로 분리하여 논리적으로 두 개의 서브리스트로 재배열한 후, 각각의 서브리스트
에 대해서 순환적으로 해당 정렬 방법을 다시 적용하여 입력 리스트의 모든 레코드를
정렬한다.

① 합병 정렬 ② 선택 정렬 ③ 버블 정렬 ④ 퀵 정렬

[정답/해설] ④

4. 사용자로부터 무작위로 입력받은 데이터를 리스트에 삽입하였다. 이런 리스트에서 원하는


데이터를 검색하려고 할 경우 어떤 방법을 적용하는 것이 가장 효과적인가?
① 피보나치 탐색 ② 이진 탐색 ③ 순차 탐색 ④ 탐색 트리

[정답/해설] ③, 피보나치 탐색, 이진 탐색, 탐색 트리를 이용해서 탐색을 수행하기 위해서는


데이터의 정렬이나 트리로 만드는 등의 사전 작업이 수행된다. 하지만 순차 탐색은 모든 데
이터에 적용 가능하며, 특히 무작위로 입력된 데이터의 경우에는 처음부터 하나씩 탐색해야
하므로 순차탐색을 써야 한다.

5. 한쪽 끝에서 모든 삽입을 수행하고 다른 쪽 끝에서 모든 삭제를 수행하는 구조의 리스트


자료 구조를 무엇이라 하는가?
① 큐 ② 스택 ③ 이중 연결 리스트 ④ 배열

- 42 -
[정답/해설] ①, 큐는 선입선출(FIFO, First-In First-Out) 특징을 갖는 선형 리스트로, 한쪽에서
는 입력이 수행되고 다른 한쪽에서는 삭제만 이루어진다. 반면에 스택은 삽입(push)과 삭제
(pop)가 리스트의 한쪽 끝에서만 이루어지므로 후입선출의 특징을 갖는다.

6. 다음 설명 중 큐(queue)에 해당하는 것은?


① 후입선출
② 리스트의 한쪽 끝에서만 삽입과 삭제가 수행한다.
③ 컴퓨터 시스템에서 작업 스케줄링, 버퍼 등에서 매우 보편적으로 사용된다.
④ 데이터의 삽입과 삭제를 위해서는 각각 push 연산과 pop 연산을 사용한다.

[정답/해설] ③

7. 트리의 루트 노드에서 리프 노드에 이르는 가장 긴 경로에 존재하는 노드의 개수를 무엇


이라고 하는가?
① 가지 수 ② 차수 ③ 레벨 ④ 깊이

[정답/해설] ④, 노드와 노드를 연결해 주는 것을 가지라고 하며, 각 노드에 연결된 가지의


수를 차수(degree)라고 한다. 레벨(level)이란 루트 노드로부터의 거리를 의미하며, 깊이
(depth)는 높이(height)라고도 하는데 루트 노드로부터 가장 긴 경로에 있는 잎 노드의 레벨
에 1의 값을 더한 것을 말한다. 즉 루트 노드로부터 리프노드까지 가장 긴 경로까지 노드
개수를 뜻한다.

8. 다음 설명에 해당하는 트리는?

트리 형태의 자료구조에서 자료를 얼마나 효율적으로 찾을 수 있느냐는 굉장히 중요한


문제이다. 이 트리는 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리가 균형을 맞추도록
하여, 어느 한쪽으로 자료가 몰려서 비효율적인 자료검색의 경우의 수를 줄였다. 각 노드
의 왼쪽 서브트리의 높이와 오른쪽 서브트리의 높이의 차이가 –1, 0, 1이 유지되도록 하
는 트리를 말한다.

① 포화 이진 트리 ② 경사 이진 트리
③ 완전 이진 트리 ④ AVL 트리

[정답/해설] ④
• 포화 이진 트리 → 레벨 0부터 k-1까지 각 레벨에서 빈자리 없이 노드를 모두 가지고 있
는 이진 트리 → 깊이 k인 이진 트리 → 노드의 최대 개수 2k-1
• 완전 이진 트리 → 마지막 레벨이 k라면, 레벨 k-1까지는 포화 이진 트리 → 레벨 k에서
는 왼쪽부터 오른쪽으로 중간에 빈자리 없이 채워진 형태의 트리
▪ 포화 이진 트리의 경우에는 루트 노드를 1번으로 시작해서 각 레벨별로 왼쪽에서 오른
쪽으로 번호를 부여할 수 있는데, 완전 이진 트리는 총 노드의 개수가 2k+1-1을 초과하지
않으면서 포화 이진 트리의 노드 번호에 해당하는 연속적인 번호를 갖는 트리
• 경사 이진 트리 → 한쪽 방향으로만 가지가 뻗어 나간 트리

- 43 -
9. 배열로 구현된 이진트리가 다음과 같을 때, 이진 트리의 모양으로 가장 적합한 것은?

① ②

③ ④

[정답/해설] ②
배열의 주소는 트리의 위치와 같다.

배열이 1부터 시작한다고 했을 때, 위의 배열은 와 같


이 6번의 자리에 데이터가 비어 있다. 트리에서도 다음과 같이 6번의 자리에 노드가 없어야
한다.

10. 다음 스택 연산을 완료한 후, 스택에 남아 있는 모든 값을 더하면 얼마인가?

push(S, 10)
push(S, 2)
pop(S)
push(S, 3)
if not empty(S), then pop(S)
push (S, 7)

① 10 ② 12 ③ 13 ④ 17

[정답/해설] ④

- 44 -
스택에 남아있는 데이터는 10과 7이므로, 이것들을 더하면 17이 된다.

11. 주어진 이진 트리를 순회하였더니, 다음과 같은 순회 결과를 얻었다. 어떤 순회 방법을


사용하였는가?

* 노드 G를 노드 H보다 먼저 방문하였다.
* 노드 P를 노드 N보다 먼저 방문하였다.
* 노드 J를 노드 M보다 먼저 방문하였다.

① 너비 우선 순회 ② 중위 순회 ③ 후위 순회 ④ 전위 순회

[정답/해설] ③
 노드 G를 노드 H보다 먼저 방문한 것은 왼쪽 서브트리를 먼저 방문한 후 루트를 방문하
였기 때문에 전위 순회는 아니다.
 노드 P를 노드 N보다 먼저 방문한 것은 루트 노드보다 오른쪽 서브트리를 먼저 방문하
였다는 것이므로 중위 순회는 아니다.
 노드 J를 노드 M보다 먼저 방문하였다는 것은 중위 순회, 전위 순회, 후위 순회 모두 가
능하다.

12. 다음 트리를 순회하여 일부 노드 B, C, G, H에 대해서 G → B → H → C의 순서를 얻


었다면 어떤 순회 방법을 사용한 것인가?

① 전위 순회 ② 너비 우선 순회 ③ 후위 순회 ④ 중위 순회

- 45 -
[정답/해설] ③, G→B이므로 전위 순회(B→G)가 아니고, 중위 순회(B→G)도 아님을 알 수 있
다.

13. 그래프 관련 용어에 대한 설명으로 틀린 것은?


① 간선이 두 정점을 직접적으로 연결시키고 있을 때 두 정점을 인접한 정점이라고 한다.
② 각 정점과 인접해 있는 정점들의 나열을 사이클이라고 한다.
③ 두 정점 사이에 경로가 존재하는 경우를 연결되었다고 한다.
④ 방향 그래프에서 적어도 두 정점이 연결되어 있지 않을 때 약하게 연결되었다고 한다.

[정답/해설] ②, 그래프에서 사이클이란 세 개 이상의 정점을 가진 경로 중에서 시작 정점과


끝 정점이 같은 경로를 말한다.

14. 자료들 사이의 논리적인 인접 구조에 따라 자료 구조를 구분할 때 비선형 자료 구조에


속하는 것은 어느 것인가?
① 배열 ② 리스트 ③ 트리 ④ 큐

[정답/해설] ③, 배열, 리스트, 큐, 스택은 선형 자료에 속하며, 트리와 그래프는 비선형 자료


에 속한다.

15. 다음의 이진 트리를 전위 순회할 때, 노드 C는 몇 번째로 방문되는가?

① 5 ② 6 ③ 7 ④ 8

[정답/해설] ②, 전위 순회는 루트 노드 방문 → 왼쪽 서브트리 방문 → 오른쪽 서브트리 방


문 순으로 이루어지기 때문에 ABDEHCFGIJ가 된다.

16. 다음과 같은 무방향 그래프를 깊이 우선 탐색을 수행할 때 방문한 노드를 순서대로 나


열한 것은?

- 46 -
① 1-2-4-5-8-6-7-3 ② 1-2-4-8-5-6-3-7
③ 1-2-3-4-5-6-7-8 ④ 1-2-4-8-5-6-7-3

[정답/해설] ②, 깊이 우선 탐색은 최근의 방문 정점과 인접하면서 방문하지 않은 정점을 우


선적으로 방문하는 것으로, 방문 순서를 그림으로 나타내면 다음과 같다.

17. 배열에 대한 설명으로 올바른 것은?


① 삽입과 삭제 연산 수행 시 추가적인 연산으로 인해 오버헤드가 발생하는 정적 구조를
갖는다.
② 두 개 이상의 서로 다른 구조를 가진 데이터 항목을 하나의 변수이름으로 묶고 인덱스
를 사용해서 구분하는 자료구조이다.
③ 배열의 기억공간은 포트란과 코볼에서처럼 항상 동적으로 할당이 이루어진다.
④ 배열에서 각 원소에 대한 접근시간은 원소가 어느 위치에 저장되어 있느냐에 따라 차이
가 발생한다.

[정답/해설] ①
 ② 두 개 이상의 서로 다른 구조를 가진 데이터 항목을 하나의 변수이름으로 묶고 인덱
스를 사용해서 구분하는 자료구조는 배열이 아니라 레코드이다.
 ③ 포트란과 코볼에서는 배열의 기억공간이 정적으로, 즉 컴파일 시점에 할당이 이루어
진다.
 ④ 배열에서 각 원소에 대한 접근은 인덱스를 통해 직접적으로 이루어지기 때문에 접근
시간은 원소가 어느 위치에 저장되어 있느냐에 무관하게 일정하다.

18. 배열에 대한 설명으로 올바른 것은?

- 47 -
① 프로그래밍 언어에 상관없이 배열의 첨자는 항상 0부터 시작한다.
② 각 원소에 대한 접근시간은 저장위치에 상관없이 일정하다.
③ 서로 다른 구조의 데이터 항목을 하나의 변수 이름으로 모아놓은 데이터 집합체이다.
④ 빈번한 삽입과 삭제가 발생하는 응용에 효과적이다.

[정답/해설] ②, C언어의 경우 첨자가 0부터 시작하고, 포트란의 경우에는 1부터 시작한다.


파스칼의 경우에는 시작 첨자와 마지막 첨자를 지정할 수 있다.

19. 그래프 순회 방법 중에서 최근의 주변정점을 먼저 방문하는 방식은 무엇인가?


① 피보나치 탐색 ② 깊이 우선 탐색
③ 이진 탐색 ④ 너비 우선 탐색

[정답/해설] ②, 그래프 순회 방법으로는 깊이 우선 탐색과 너비 우선 탐색이 있으며, 깊이


우선 탐색은 방문한 정점에 인접한 정점을 우선 방문하고, 너비 우선 탐색은 가장 오래된
주변 정점을 우선 방문한다.

20. 해싱과 관련된 다음 방법 중에서 사용하는 목적이 나머지와 다른 하나는 무엇인가?


① 연쇄법 ② 선형 탐사 ③ 이차형 탐사 ④ 제산잔여법

[정답/해설] ④, 제산잔여법은 주어진 키값을 해시 주소로 변환하는 해시함수의 한 종류이고,


반면에 연쇄법, 선형 탐사, 이차형 탐사, 이중 해싱은 충돌을 해결하는 방법이다. 특히 연쇄
법은 충돌된 데이터를 연결 리스트로 관리하는 방식이고, 선형 탐사, 이차형 탐사, 이중 해
싱은 충돌이 발생하면 정해진 순서에 따라 다른 위치를 찾는 개방 주소법에 속하는 방법들
이다.

21. C언어에서 배열 a[100]의 기본 주소가50일 때 a[15]의 주소는 얼마인가? (단, 주소단위


는 바이트이고, 각 원소는 4바이트를 차지한다.)
① 106 ② 110 ③ 114 ④ 118

[정답/해설] ②, a[m]의 주소 = a[0]의 주소 + m*4이므로 50 + 15*4 = 110이 된다.

22. 주어진 트리에 대한 설명으로 올바르지 못한 것은(단, 루트 레벨은 0부터 시작한다.)

① 트리의 차수는 3이다.

- 48 -
② 비단말 노드의 수는 모두 7이다.
③ 노드 J의 선조(조상)은 A, B, E 밖에 없다.
④ 트리의 깊이는 3이다.

[정답/해설] ④, 트리의 차수는 각 노드의 차수 중에서 가장 큰 값이 되며, 비단말 노드(내부


노드)는 리프 노드(단말 노드)를 제외한 것이다. 한편 선조라는 것은 해당 노드에서 루트 노
드까지의 경로 상에 존재하는 정점을 의미한다. 트리의 깊이(높이)는 트리에서 가장 큰 레벨
에 1을 더한 값이 된다. 위의 트리의 가장 큰 레벨은 3이고 1을 더하면 4가 된다.

23. 이진 트리에 대한 설명으로 올바른 것은?


① 각 노드의 차수 중에서 최소 차수가 2이상이다.
② 노드가 하나도 없는 공백 트리도 이진 트리이다.
③ 루트 레벨이 0이고 깊이가2인 이진 트리의 최대 노드의 수는 8개이다.
④ 한 노드에 대한 서브트리의 순서는 대칭적인 관계를 갖기 때문에 중요하지 않다.

[정답/해설] ②
 이진 트리는 공백이거나 각 노드의 차수가 2이하인 순서 트리이다. 즉 각 노드에서의 차
수는 0, 1, 2 중의 하나를 갖고, 일반적인 트리에서는 서브트리의 순서가 별 의미를 갖지
않지만, 이진 트리에서는 왼쪽 서브트리와 오른쪽 서브트리로 구분해서 취급한다.
 루트 레벨이 0이고 깊이가2인 이진트리의 최대 노드의 수(2k-1)는 3개이다.

24. 이진 트리에 대한 설명으로 적절하지 못한 것은?


① 노드가 하나도 없는 공백 트리는 이진 트리가 아니다.
② 각 노드의 차수 중에서 최대 차수가 2 이하이다.
③ 한 노드에 대한 서브트리의 순서는 중요한 의미를 갖는다.
④ 깊이가 4인 이진 트리의 최대 노드의 수는 15개이다.

[정답/해설] ①

25. 다음 트리 중에서 히프 트리가 아닌 것은?

① ②

③ ④

[정답/해설] ②, 히프는 완전 이진 트리이며, 각 노드의 값은 자식 노드의 값보다 크거나 같


아야 한다.

- 49 -
26. 최소 비용 신장 트리를 구하는 알고리즘은?
① 프림 알고리즘 ② 다익스트라 알고리즘
③ KMP 알고리즘 ④ 플로이드 알고리즘

[정답/해설] ①
 최소 비용 신장 트리 → 크루스칼 알고리즘, 프림 알고리즘
 최단 경로 → 다익스트라 알고리즘(한 출발점에서 다른 모든 정점으로 최단 경로), 플로
이드 알고리즘(모든 쌍 최단 경로)

▣ 교재 주관식 문제
1. 기본적인 자료구조의 종류와 그들 간의 관계를 설명하시오.
[정답/해설]

2. 알고리즘의 개념과 만족해야 할 조건들을 설명하시오.


[정답/해설] 알고리즘이란 주어진 문제를 해결하기 위한 단계적인 명령어들의 모임을 의미
하며, ①입출력 ②명확성 ③유한성 ④유효성의 조건을 만족해야 한다.
☞ 각 조건에 대한 설명은 요약 부분 참조

3. 이중 연결 리스트에서 노드의 삽입과 삭제 과정을 설명하시오.


[정답/해설]
이중 연결 리스트의 노드 삽입

- 50 -
이중 연결 리스트의 노드 삭제

① 삭제할 노드의 왼쪽 노드의 오른 링크를 삭제할 노드 오른 노드를 가리키게 한다.


② 삭제할 노드의 오른 노드의 왼쪽링크를 삭제할 노드 왼쪽 노드를 가리키게 한다.
③ 삭제된 노드의 메모리를 해제한다.

4. 스택과 큐가 컴퓨터 시스템에서 어떻게 활용되는 지 조사하고 설명하시오.


[정답/해설] 스택은 서브루틴 호출, 인터럽트, 수식 계산, 재귀 등에 매우 유용하게 사용되고,
큐는 작업 스케줄링, 버퍼 등에서 가장 보편적으로 활용되고 있다.

5. 다음 트리의 개념과 특징을 설명하시오.


(1) 포화 이진 트리
(2) 완전 이진 트리
(3) 경사 이진 트리
(4) AVL 트리
(5) 히프 트리
(6) 이진 탐색 트리

[정답/해설]
(1) 포화 이진트리 : 깊이가 k인 이진트리가 가질 수 있는 최대 노드의 개수 2k-1개의 노드
를 모든 가진 이진 트리이다. 즉 각 레벨에 빈 노드가 없이 가득 찬 이진 트리를 말한다.
(2) 완전 이진트리 : 트리의 마지막 레벨이 k라고 할 때 레벨 k-1까지는 포화 이진 트리를
형성하고, 레벨 k에서는 왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리이다.
(3) 경사 이진트리 : 한 쪽 방향으로만 가지가 뻗어 나간 트리이다.
(4) AVL 트리 : 트리의 균형 있는 배치를 위해 왼쪽 서브트리와 오른쪽 서브트리의 깊이 차
이가 –1, 0, 1 이 되게 하는 트리이다.
(5) 히프 트리 : 완전 이진 트리로 트리의 각 노드의 값은 그 노드의 자식 노드의 값보다 크
거나 같게 만든 트리이다. 루트 노드의 값이 가장 큰 최대값 히프 트리와 루트노드의 값
이 가장 작은 최소값 히프 트리가 있다.
(6) 이진 탐색 트리 : 각 노드의 왼쪽 서브트리의 모든 노드의 값은 해당 노드의 값보다 작
고, 오른쪽 서브트리의 모든 노드의 값은 해당 노드의 값보다 큰 이진 트리이다.

6. 다음 이진트리를 전위 순회, 중위 순회, 후위 순회하시오.

[정답/해설]

- 51 -
 전위 순회 : ABDHECFIG
 중위 순회 : DHBEAIFCG
 후위 순회 : HDEBIFGCA

7. 다음 그래프를 인접 행렬과 인접 리스트로 표현하시오.

[정답/해설]

A B C D E
A 0 4 7 1 ∞
B 4 0 ∞ 2 ∞
C 7 ∞ 0 5 6
D 1 2 5 0 3
E ∞ ∞ 6 3 0
인접 행렬 인접 리스트

8. 그래프 순회 방법을 비교 설명하시오.


[정답/해설]
 깊이 우선 탐색(depth first search) → 최근의 주변 정점(방문하지 않은 인접한 정점)을
우선 방문하는 방식 → 스택을 사용해서 구현
 너비 우선 탐색(breadth first search) → 주변 정점 중 오래된 것을 먼저 방문하는 방식
→ 큐를 사용해서 구현

9. 다음 그래프에 대해서 최소 비용 신장 트리를 구하시오.

[정답/해설]
 최소 비용 신장 트리는 크루스칼 방법이나 프림 방법으로 구할 수 있다. 크루스칼 방법
에서는 가중치가 가장 작은 간선부터 추가해 나가면서 사이클 형성 여부를 판단한다. 사
이클을 형성하는 경우에는 해당 간선을 추가시키지 않는다.

- 52 -
 크루스칼 방법을 적용한 예:

위와 같은 최소 비용 신장 트리에서 가중치를 모두 더하면 1+1+1+2+2+3=10이다.

10. n=8이고 입력 데이터가 {25, 20, 35, 10, 5, 10, 25, 15}일 때, 선택 정렬, 버블 정렬, 삽
입 정렬로 정렬되는 과정을 보이시오.
[정답/해설]
 선택정렬
초기상태 25 20 35 10 5 10 25 15
1단계 5 20 35 10 25 10 25 15
2단계 5 10 35 20 25 10 25 15
3단계 5 10 10 20 25 35 25 15
4단계 5 10 10 15 25 35 25 20
5단계 5 10 10 15 20 35 25 25
6단계 5 10 10 15 20 25 35 25
7단계 5 10 10 15 20 25 25 35

 버블 정렬

초기상태 25 20 35 10 5 10 25 15

1단계 20 25 10 5 10 25 15 35

2단계 20 10 5 10 25 15 25 35

3단계 10 5 10 20 15 25 25 35

4단계 5 10 10 15 20 25 25 35

 삽입 정렬

- 53 -
초기상태 25 20 35 10 5 10 25 15
1단계 20 25 35 10 5 10 25 15
2단계 20 25 35 10 5 10 25 15
3단계 10 20 25 35 5 10 25 15
4단계 5 10 20 25 35 10 25 15
5단계 5 10 10 20 25 35 25 15
6단계 5 10 10 20 25 25 35 15
7단계 5 10 10 15 20 25 25 35

11. n=10이고 입력 데이터가 {30, 20, 40, 35, 5, 10, 45, 50, 25, 15}일 때 퀵 정렬에서 [그
림 4.43]과 같은 분할 과정을 1회 수행한 후의 결과를 보이시오.

[정답/해설] 분할 과정에서 L<R이 동안 반복하는데 우선 L:40과 R:15가 서로 교환되고, 다음


으로 L:35와 R:25(여기서 25는 분할원소가 아님)이 서로 위치를 바꾸고, L(45)와 R(10)에서는
L>R이므로 분할원소 25와 10을 서로 교환한 후 종료한다. (L과 R은 각각 왼쪽에서 오른쪽
으로 진행하면서 분할원소보다 큰 값이 있는 위치를 나타내며, R은 오른쪽에서 왼쪽으로 진
행하면서 분할원소보다 작은 값이 있는 위치를 나타내는 변수이다.)

초기상태 25 20 40 35 5 10 45 50 25 15
1단계 10 20 15 25 5 25 45 50 35 40

12. 다음과 같은 해시 방법(함수)들을 설명하시오.

제산잔여법, 중간제곱법, 폴딩법, 자릿수 추출법, 기수변환법

[정답/해설]
▪ 제산잔여법
▻ 키값을 저장 공간의 크기로 나눠서 얻어지는 나머지를 저장 공간의 주소로 사용하는
방법
▪ 중간제곱법
▻ 키값을 제곱한 다음 중간 부분에서 적당한 자릿수를 추출하는 방법
▻ n 자릿수를 선택해서 나타낼 수 있는 해시 테이블의 크기는 10n이다
▪ 폴딩법
▻ 키를 균등한 크기의 부분으로 나누고, 이들을 모두 더하거나 XOR를 취해서 주소를
계산하는 방법
▻ 변환 과정: 주어진 키를 2진수로 변환 → 2진수를 동일한 크기의 여러 부분으로 분할
→ 여러 부분의 2진수 전부에 대해서 덧셈 또는 XOR 연산을 수행 → 계산된 2진수를
해당 데이터의 저장주소로 사용

- 54 -
▪ 기수변환법
▻ 어떤 진법으로 표현된 키를 다른 진법으로 표현되었다고 간주하고 키를 변환하는 방

▪ 자릿수 추출법
▻ 모든 키값을 이미 알고 있는 경우에만 사용 가능하며, 키가 취할 수 있는 모든 키값
들에서 그 키를 구성하는 자릿수의 분포를 조사하여 비교적 고른 분포를 보이지 자릿
수를 필요한 만큼 택하는 방법
▻ 빈번한 삽입과 삭제가 발생하는 경우에는 키값의 분포를 다시 조사해야 하므로 비효
율적

13. 해싱에서 충돌을 해결하기 위한 다음 방법들을 설명하시오.

선형 탐사, 2차 탐사, 이중 해싱

[정답/해설]
 선형 탐사 : 충돌이 일어난 자리에서 그 다음 위치를 차례로 하나씩 검색하여 최초로 나
오는 빈 공간에 충돌된 데이터를 저장하는 방법
 2차 탐사 : 충돌이 발생한 경우 원래 주소로부터 이차함수 값의 거리만큼 떨어진 빈 곳
을 차례로 찾는 방법
 이중 해싱 : 충돌이 발생한 경우 다른 해시 함수를 사용해서 다음 주소를 찾는 방법

제5장 프로그래밍 언어
5.1 교재 내용 요약
▣ 개요
❒ 프로그래밍 언어(Programming Language, PL)
• 인간과 컴퓨터 사이에서 의사소통을 가능하게 하는 컴퓨터 언어 → 미리 정의된 규칙
에 따라 프로그램으로 조합되기 위해 미리 정의된 단어의 집합
• 프로그래밍 언어의 역사와 종류
▪ 기계어 → 0/1의 나열로 된 언어
▻ 컴퓨터가 직접 이해 가능한 유일한 언어, 하드웨어를 직접 제어하는 수준의 언어
▻ 많은 코딩 시간, 높은 오류 발생 가능성, 하드웨어 의존적
▪ 어셈블리어 → 기계어의 비트 패턴을 암기하기 쉬운 기호로 표현한 기호 언어
▻ 어셈블러(어셈블리어를 기계어로 번역하는 프로그램)가 필요, 하드웨어 의존적
▪ 고급언어 → 인간이 알아보기 좀 더 쉽도록 자연 언어에 가까운 명령어를 사용
▻ 컴파일러/인터프리터 필요 : 고급언어를 기계어로 변환
▻ 기계 비의존적 → 하드웨어 간의 호환 가능
▻ 1950년대 말 FORTRAN(과학/공학계산용, 최초의 고급언어), COBOL(일반 사무용 언
어) 등장
▪ 함수형 언어 → 프로그램이 기본적으로 수식으로 구성되고, 함수를 통해 수식을 변
환하는 방식
▻ 프로그래밍이란 여러 개의 간단한 함수를 포함하는 새로운 함수를 구성하는 과정

- 55 -
▻ 함수를 적용해서 문제를 푼다는 의미에서 “적응적(applicative) 언어”라고도 함.
▻ 종류 → LISP, Scheme, ML, Haskell 등
▪ 구조적 언어
▻ 1970~1980년대 전성기, goto문과 같은 임의적인 분기 기능은 논리적 흐름에 따른 이해를
어렵게 만들기 때문에 이를 제거하여 좀 더 정확하고 이해하기 쉬운 구조의 프로그램을
개발하려는 노력의 결과를 탄생 → 제어 구조(순차 구조, 선택 구조, 반복 구조), 블록 구
조, 함수 호출 등의 여러 개념을 제공
▻ 종류 → 알골 60, 파스칼, C, 모듈라-2 등
▪ 논리형 언어 → 형식 논리에 기반을 둔 언어
▻ 사실과 규칙으로 이루어진 문제 도메인의 모델을 형성하고, 질의를 통해 논리적 추론에 기
초해서 결과를 생성하는 방식의 언어
▻ 계산의 실행 순서를 기술하는 대신에 ‘무엇(what)’을 하려는 가를 선언 → “비절차
적 언어”, “선언적(declarative) 언어”
▻ 종류 → 프롤로그(Prolog)
▪ 객체지향 언어 → 클래스(같은 속성과 연산을 갖는 객체들의 모임)와 객체(모든 데이터 항
목) 개념을 사용하여 추상화를 지향하는 언어
▻ 종류 → 시뮬라67, 스몰톡, C++, Java 등
▪ 스크립트 언어 → 유닉스와 같은 OS의 관리와 자동화를 위해 만들어져 사용되기 시작
▻ 셸 스크립트 언어(sh, bash, csh 등), 패턴 처리 스크립트 언어(awk, sed), Perl,
Phyton 등
▪ 웹 언어 → 종류 : PHP, Javascript, XML(데이터의 기술과 전달을 위한 마크업 언어) 등
❒ 구현 기법에 따른 언어의 분류
• 컴파일러 언어 → 실행 시간의 효율성에 초점을 맞춤
▪ 고급언어를 번역하여 목적 모듈을 출력시켜서, 그 목적 모듈을 링크, 로드하여 실행
시키는 방법으로 구현된 언어
• 인터프리터 언어 → 사용자의 유연성에 초점을 맞춤
▪ 고급언어로 작성된 프로그램을 구성하는 명령문을 하나하나를 적당한 중간 코드까
지만 번역해서 곧바로 실행시키는 방법
▣ 형식 문법(formal grammar)
❒ 프로그래밍 언어에서 문장의 구조를 기술하기 위해서 사용되는 문법
• 파스트리(parse tree) → 문장의 구조를 표현하는 트리
❒ 형식 문법의 요소 → 터미널 심벌, 논-터미널 심벌, 생성 규칙, 시작 심벌 (☞객관식 8번)
❒ 촘스키에 의한 형식 언어의 계층 구조
• 정규(regular) 언어 → 생성 규칙의 하나의 좌측 항의 논-터미널이 다음 중의 하나로 풀어 쓸
수 있는 언어 → 어휘 분석 과정에서 많이 사용
▪ <논-터미널> → “터미널”
▪ <논-터미널> → “터미널” + <논-터미널>
(또는 <논-터미널> → <논-터미널> + “터미널” )
▪ <논-터미널> → 빈 문자열
• 문맥-비의존(context-free) 언어 → 생성 규칙의 좌측 항이 단 하나의 논-터미널인 언어
로서, 우측 항에는 아무런 제약이 없다. → 대부분의 프로그래밍 언어가 이에 해당하

- 56 -
면, 구문 분석에서 사용
• 문맥-의존(context-sensitive) 언어 → 좌측 항 가운데의 논-터미널을 어떻게 풀어쓸 것
인지가 좌우의 문맥에 따라 달라짐 → 자연어가 이에 해당하는 것으로 추측
▣ 컴파일 과정
❒ 프로그램을 실행 가능한 코드로 변환하는 일련의 과정 (☞ 객관식 2번)
• 과정: 프로그램 입력 → [어휘 분석] → [구문 분석] → [코드 생성] → 실행코드 출력
❒ BNF(Backus-Naur Form)
• PL의 정확한 문법을 기술하기 위한 형식으로 주로 사용되는 방법
▪ 터미널: 이중따옴표(“ ”)안의 문자열
▪ 논-터미널: 부등호(< >) 안의 문자열
▪ 메타심벌: 여러 개 중 택일 ... | ..., 0번 이상 반복 { ... }, 선택 사항 [ ... ]
• <조건문>에 대한 BNF와 파스트리의 예: (☞교재 201쪽과 그림 5.2)
▣ PL의 공통 개념
❒ 대입문(할당문, assignment statement) → 변수나 기억장치 주소에 값을 저장하는 문장
• 기억장치의 내용 변경을 통해 기계의 상태를 변화시킴
• “<수식1> = <수식2>”의 의미 → <수식2>의 값을 <수식1>의 주소가 가리키는 저장
장소에 저장하라.
▪ <수식1> : l-value라고 하고 값이 저장될 위치를 가리킴
▪ <수식2> : r-value라고 하고, 저장할 값을 의미
❒ 타입 → 연산에 사용되는 상수나 변수의 종류를 의미
• 연산 수행 시에 호환성 없는 연산을 방지해서 프로그램의 정확도 향상이 목적
• 타입 검사 → 타입이 호환되지 않는 연산을 찾아내는 것
• 타입 캐스팅 → 올바른 연산을 위해 자료의 타입을 수동으로 전환시키는 것
▪ C의 경우 int a=5; float b; b = (float)a;
❒ 프로그램에 관한 사고를 간소화하기 위한 방법 (☞ 객관식 13번)
• 추상화, 구현 숨기기, 캡슐화(데이터 숨기기)
❒ 블록과 변수의 유효범위
• 블록, 복합문 → 여러 개의 명령문의 집합으로 하나의 단위로 취급 → 중첩 구조 가능
• 유효범위(유효권, scope) → 변수가 사용될 수 있는 공간적으로 유효한 코드의 범위
▪ 유효범위에 따른 변수의 구분
▻ 지역(local) 변수 → 변수가 정의된 해당 블록에서만 사용 가능한 변수
▻ 전역(global) 변수 → 프로그램 코드의 모든 영역에서 사용 가능한 변수
▪ 유효범위 결정 규칙 (☞ 교재 그림 5.3)
▻ 정적 유효권 규칙(렉시칼 유효권 규칙) → 컴파일 당시에 코드에서 가장 가까이
정의된 것으로 유효권이 결정됨
▻ 동적 유효권 규칙 → 코드의 실제 실행 환경에 따라 유효권이 결정
❒ 부프로그램
• 자주 반복 사용되는 논리적 수준의 코드 단위를 묶어서 고유 이름을 부여하고 하나의
명령어처럼 취급하는 것 → 이를 통해 프로그램의 구조화/조직화 가능
• 종류 (계산 결과의 반환 여부에 따라)
▪ 함수 → 계산된 값을 반환, 프로시저 → 계산된 어떤 값도 반환하지 않음

- 57 -
▪ C언어에서는 모든 부프로그램을 함수로 취급
• 함수의 호출과 제어의 이동 (☞ 교재 그림 5.4)
▪ ①호출 프로그램의 실행을 멈추고, 제어권을 피호출 함수로 전달 → ②피호출 함수
수행 → ③피호출 함수의 종료조건을 만족하면 값을 반환하고 수행 종료 → ④멈
췄던 호출 프로그램의 실행을 재개
❒ 매개변수(parameter)
• 호출 프로그램과 피호출 함수 사이에 필요한 정보를 주고받기 위한 방법으로는 전역
변수를 사용하는 방법과 매개변수를 사용하는 방법이 가능
▪ 전역변수를 사용하면 다른 어느 곳에서든 접근이 가능하기 때문에 변수의 값이 임
의적으로 변경되는 부작용 초래 가능성
▪ 형식(formal)매개변수 → 피호출 함수에서 선언된 매개변수로서, 호출 프로그램으로
부터 값을 받아들이는 창구 역할을 한다.
▪ 실(actual)매개변수 → 호출 프로그램에서 피호출 함수를 호출할 때 사용되는 매개
변수로서, 피호출함수로 전달할 실제의 값을 가지고 있다.
• 매개변수 전달 방법의 종류 (호출 전후의 실매개변수의 값의 변화에 초점)
▪ 값호출(call-by-value) 방식 → 실매개변수의 값만을 복사해서 형식매개변수에게 전
달한다. 따라서 피호출 함수 내에서 형식매개변수의 상태가 변화더라도 실매개변수
에게는 아무런 영향을 미치지 않음 → C언어의 기본 방법
▪ 참조호출(call-by-reference) 방식 → 실매개변수의 기억장소의 주소를 형식매개변수
로 전달한다. 이는 결국 실매개변수와 형식매개변수가 같은 기억장소를 공유하는
것을 의미하기 때문에 형식매개변수의 변화는 결국 실매개변수의 상태 변화로 이
어진다.
❒ 활성화 레코드(activation record)
• 함수 호출 시 필요한 정보(예, 함수 복귀 주소, 함수 내부에서 선언되지 않는 변수에
대한 정보, 지역 변수를 위해 할당된 메모리 공간 등)를 담고 있는 것
• 실제로는 주기억장치에 전용으로 지정된 스택 구역에서 LIFO 방식으로 관리
▪ 함수 호출 시 생성되어 스택에서 삽입되고 종료 시 스택에서 삭제되어 소멸된다.
❒ 메모리 관리
• 스택(stack)과 히프(heap) (☞ 객관식 16번)
• 쓰레기 수거기(garbage collection)
▪ 직접적으로 메모리 관리가 필요 없는 언어에서 사용되는 메모리 관리 프로그램
▪ 실행 중인 프로그램 객체에 의해 선점되고 있으나 지속적으로 사용되지 않는 메모
리를 자유롭게 풀어주는 역할을 담당한다.
▣ 패러다임에 따른 4가지 유형의 PL → 명령형 언어, 함수형 언어, 논리형 언어, 객체지향형 언어
❒ 명령형(imperative) 프로그래밍 언어
• 프로그램 실행을 위해 하드웨어가 사용하는 동일한 접근 방법을 사용, 즉 폰노이만 구
조에 기반해서 기계 사이클(인출→해독→실행)에 따라 처리된다.
▪ “명령형”이란 각 명령어가 어떤 특정 작업을 수행하도록 컴퓨터 시스템에게 명령을
한다는 의미하며, 변수, 대입문, 반복문을 가진다.
• 프로그램이라는 것은 처음부터 끝까지 순차적으로 실행되는 명령어의 집합을 나타내므
로, “절차적(procedural) 언어”라고도 함.

- 58 -
• 종류 → FORTRAN, COBOL, Pascal, BASIC, C 등
❒ 함수형 프로그래밍 언어
• 프로그램을 수학적 함수로 간주해서 처리하는 방식
• LISP(LISt Processor) → 1958, John McCarthy가 고안한 대표적인 함수형 언어
▪ 기본 구성 요소가 괄호 기호로 나타내는 함수이며, 각 함수는 수식으로 취급되어
값이 계산된다. 함수의 연산에 다른 수식이 포함되어 있는 경우에는 이런 부수식이
먼저 계산된다.
▪ 기본 단위 → 원소(atom), 리스트(list)
▪ 리스트 조작 연산
▻ (car ‘((b c) a)) → 결과=(b c), car : 리스트의 첫 번째 요소 추출 함수
▻ (cdr ‘((b c) a)) → 결과=((a)), cdr : 리스트의 첫 번째 요소를 제외한 리스트 추출
▻ (cons ‘a ’((b c) d)) → 결과=(a (b c) d), cons : 첫 번째 인자를 두 번째 인자 리
스트의 첫 번째 요소로 삽입
▪ 리스프의 특수 형식
▻ QUOTE → 인자를 계산 없이 그대로 반환, SETQ → 대입문, DEFUN → 함수 정
의, LET → 지역변수 환경 구축, IF → 조건문, EQ → 상등, PROGN → 수식 블
록, 마지막 수식 값을 반환, COND → 다중 조건문
❒ 논리형 프로그래밍 언어
• 대표적 언어 → PROLOG(PROgramming in LOGic)
▪ 형식 논리에 기반한 비절차적 언어, 인터프리터 언어, 대화식의 명령 처리 방식
▪ 사실(fact)과 규칙(rule)으로 프로그램을 작성 → 사실과 규칙을 DB로 구성하고 프로
그램 실행이라는 것은 자료에 대한 질문의 응답 형식으로 이루어짐
▻ 사실 → 단정의 특정한 실제의 예를 식별하는 데 주로 사용
▻ 규칙 → 일반적인 원칙을 기술
❒ 객체지향형 프로그래밍 언어
• 클래스(class)와 객체(object)를 기본 단위로 하는 프로그래밍 방식을 사용
▪ 모든 데이터 항목을 “객체(object)”로 취급
▪ 클래스 → 같은 속성과 함수를 갖는 객체들의 모임
▻ 한 클래스는 여러 하위 클래스로 구성 가능 → 클래스 간의 계층을 형성
▪ 다른 객체와 메시지 교환을 통해 통신하면서 작업을 처리
• 객체지향 프로그래밍을 위한 기본 개념
▪ 추상 데이터 타입 → 자료와 그 자료에 대한 연산을 하나의 단위로 묶어 놓은 것
▻ 객체지향 프로그래밍 언어에서 클래스에 해당
▪ 상속(inheritance) → 새로운 객체가 기존 객체의 서브클래스로 정의되면, 기존 객체의 데
이터와 연산을 그대로 전달받아서 사용할 수 있는 것 → 소프트웨어의 재사용성 향상
▻ 상속 계층 구조에서 클래스 상호 간에 의존성이 발생
▪ 동적 바인딩(dynamic binding) → 프로그램 실행 시점에서 연산과 기호를 연관시키는 것
▻ 객체가 필요로 하는 데이터타입이 무엇인지 미리 정하지 않고, 메소드 호출 시 적절한 클
래스의 메소드에 동적으로 바인딩되는 개념 → 새로운 클래스나 함수의 정의가 기존의
코드에 영향을 미치지 않기 때문에 확장 및 유지 보수가 용이
• 종류

- 59 -
▪ 시뮬라67 → 최초로 클래스 개념을 도입한 언어
▪ 스몰톡 → 순수 객체지향 프로그래밍을 완전하게 지원한 최초의 언어
▪ C++ → C언어 기반으로 시뮬라67로부터의 클래스/객체 개념을 추가, 크고 복잡한
언어(절차적 프로그래밍과 객체지향 프로그램을 모두 지원)
▪ Java → 가전제품의 내장형 전자장치를 위해 개발된 언어, C++ 기반으로 상당히
단순화된 형태로서 오직 객체지향 프로그래밍 개념만 지원, 웹 프로그래밍을 위해
널리 사용

5.2 문제 풀이 및 해설
▣ 객관식 문제
1. 다음 중 함수형 언어에 속하는 대표적인 프로그래밍 언어는?
① 리스프(LISP) ② 프롤로그(PROLOG)
③ 자바(Java) ④ 포트란(FORTRAN)

[정답/해설] ①, LISP(함수형 언어, 적응적 언어), PROLOG(논리형 언어, 비절차적 언어),


FORTRAN(명령형 언어), Java(객체지향형 언어)

2 컴파일 과정 중에서 토큰들을 입력받아 결과로서 파스트리를 생성하는 단계는?


① 어휘 분석 단계 ② 구문 분석 단계
③ 의미 분석 단계 ④ 코드 생성 단계

[정답/해설] ②
 어휘 분석(lexical analysis) → 프로그램으로부터 단어(“토큰”)를 추출하고 이름, 숫자, 수식기호
등으로 매핑하는 단계. 빈 칸을 기준으로 단어의 구획을 설정
 구문분석(syntax analysis) → 어휘 분석의 결과인 토큰의 나열을 해당 PL의 문법을 적용
해 문장의 구조를 결정하는 단계
 코드 생성(code generation) → 구문분석의 결과로부터 각각의 명령어를 어셈블리어로
풀어쓰거나 직접 기계어 코들 생성하는 단계, 필요한 경우 준비된 라이브러리 코드와 링
크를 수행

3. 컴파일 과정 중에서 프로그램으로부터 토큰을 추출하고 이름, 숫자, 수식기호 등으로 매


핑이 이루어지는 과정은 무엇인가?
① 코드 생성 단계 ② 어휘 분석 단계
③ 의미 분석 단계 ④ 구문 분석 단계

[정답/해설] ②

4. 하나의 연산 기호로 둘 이상의 연산 타입을 표현하는 것으로 피연산자의 타입에 의해 연


산 유형과 방식이 결정되는 것을 무엇이라 하는가?
① 바인딩 ② 오버로딩 ③ 동시성 ④ 추상화

- 60 -
[정답/해설] ②, 오버로딩은 객체지향 프로그래밍 언어에서 같은 이름의 함수를 재정의 하여
다른 기능을 하도록 표현할 수 있는 것으로 다형성을 지원한다.

5. 다음은 가격과 세금의 합을 계산하는 프로그램이다. 이 프로그램 작성에 사용된 언어는


무엇인가?

① Ada ② 어셈블리어 ③ 기계어 ④ PL/1

[정답/해설] ②, 어셈블리어는 기계어에 가장 가까운 언어로서, 기계어의 비트 패턴을 암기하


기 쉬운 기호로 표현한 기호 언어이다. 어셈블리어로 작성된 프로그램을 실행하기 위해서는
기계어로 변환이 되어야 하고, 이를 위한 프로그램이 어셈블러이다.

6. 다음과 같은 프로그램이 속하는 언어 부류는 무엇인가?

① 객체지향형 언어 ② 명령형 언어
③ 논리형 언어 ④ 함수형 언어

[정답/해설] ④, 위의 프로그램은 LISP으로 작성된 프로그래밍이다. LISP은 가장 대표적인 함


수형 언어이다. 함수형 언어는 프로그램이 기본적으로 수식(expression)으로 이루어져 있고
함수들을 사용해 수식을 변환하는 방식이다. 언어의 기본요소가 괄호로 나타낸 함수로 되어
있고 각 함수는 수식으로 취급되어 그 값이 계산되는데, 함수의 연산에 다른 수식이 포함되
어 있을 경우 이런 부수식(subexpression)이 먼저 계산된다.

7. 객체지향 언어에서 같은 속성과 함수를 갖는 객체들의 모임을 무엇이라고 하는가?


① 클래스 ② 바인딩 ③ 메시지 ④ 메소드

[정답/해설] ①, 객체지향 언어는 클래스와 객체 개념을 사용하여 추상화를 지원하는 언어로


서, 클래스는 같은 속성과 함수(연산, 메소드)를 갖는 객체들의 모임이다. 모든 데이터 항목
을 객체라고 부른다. 클래스는 자료구조와 연관된 함수와 속성으로 구성된다.

8 형식언어의 문법을 구성하는 4가지 요소에 해당하지 않는 것은?


① 터미널 심벌 ② 생성 규칙 ③ 시작 심벌 ④ 종료 심벌

[정답/해설] ④

- 61 -
 형식 문법의 4가지 구성 요소는 터미널 심벌, 논-터미널 심벌, 생성 규칙, 시작 심벌이다.
 터미널 심벌 → 문장을 이루는 단어로서 파스트리의 리프 노드에 해당, 자연어의 경우 사전에 나
오는 모든 단어가 이에 해당
 논-터미널 심벌 → 복합적으로 나열된 터미널/논-터미널의 조합으로 나타내는 심벌 → 파스트리
의 내부 노드에 해당
 생성 규칙 → 하나의 논-터미널이 다른 터미널/논-터미널로 어떻게 변환되는 지를 정의하는 규칙
 시작 심벌 → 가장 상위에 있어 가장 먼저 변환되는 논-터미널 심벌 → 파스트리의 루트 노드에
해당

9. 형식 문법의 파스 트리에서 중간 노드에 해당하는 것은?


① 터미널 ② 논-터미널 ③ 생성 규칙 ④ 시작 심벌

[정답/해설] ②

10. 다음 중 정규 언어의 생성 규칙이 될 수 있는 것은?


① <S> → <N><V>
② <S> → “a” <S>
③ “a” <S> “b” → <S>
④ <S> → “a” <S> “b”

[정답/해설] ②
정규 언어의 생성 규칙은 매우 제한적이어서 다음과 같은 형태를 가져야한다.
 <논-터미널> → “터미널”
 <논-터미널> → “터미널” + <논-터미널> (또는 <논-터미널> → <논-터미널> + “터미
널”)
 <논-터미널> → 빈 문자열
따라서 보기 중에서 이와 같은 형태를 가진 규칙은 ②밖에 없다.

11. 고급언어 프로그램에서 실행코드까지의 변환 순서로 올바른 것은?


① 구문 분석, 코드 생성, 어휘 분석
② 코드 생성, 구문 분석, 어휘 분석
③ 어휘 분석, 구문 분석, 코드 생성
④ 어휘 분석, 코드 생성, 구문 분석

[정답/해설] ③, 프로그램이 입력을 주어지면 어휘 분석→구문 분석→코드 생성의 단계를 차


례대로 거쳐서 실행 가능한 코드로 변환된다.

12. C언어에서 int x = 10 + “hello”; 의 명령이 주어졌을 때 어떤 오류나 경고가 뜨는가?


① 문법 오류 (syntax error) ② 실행 오류 (runtime error)
③ 논리 오류 (logic error) ④ 타입 (type) 경고

- 62 -
[정답/해설] ④, 수행 결과는 사용하는 컴파일러에 따라 다를 수 있으며 이러한 문제의 원
인은 덧셈의 대상이 되는 두 자료의 타입이 서로 다르기 때문이다.

13. 다음 중 프로그램에 관한 사고를 간소화하기 위한 방법이 아닌 것은?


① 암호화 ② 추상화 ③ 코드 숨기기 ④ 캡슐화

[정답/해설] ①
 추상화(abstraction) → 자세한 세부적인 구현을 인간이 효율적으로 처리할 수 있는 사고
의 단위로 승격시켜 다룰 수 있게 해 주는 것(예: 프로시저나 함수의 사용) → 복잡한 프
로그램을 작은 단위로 나누고, 자주 사용되는 공통 단위에 새로운 이름을 부여하여 PL에
서 기본으로 제공하는 명령어처럼 불러 사용할 수 있게 하는 것
 구현 숨기기(implementation hiding) → 특정 기능을 수행하는 부프로그램에서 내부의 세부
구현 사항이 변경되어도 외부에서 보는 기능을 동일하게 유지시켜 주는 것
 캡슐화(encapsulation, 데이터 숨기기 data hiding) → 프로그램의 여러 다른 부분 간의 상호
작용을 이해하는 데 불필요한 내부 데이터를 최대한 숨겨주는 것 → 부프로그램 내부의
데이터 구조를 외부에서 마음대로 접근할 수 없게 만드는 것

14. 다음과 같은 프로그램 코드에서 출력문(“print y+gx”)를 수행하였을 때 출력되는 값은


얼마인가? (정적 유효권 규칙을 사용한다고 가정)
while (참) {
int y = 5;
int gx = 10;
if (참) {
int y = 2;
int gx = 20;

}
print y+gx;

}
① 12 ② 15 ③ 22 ④ 25

[정답/해설] ②, 출력문에서 참조되는 y와 gx는 if문이 아닌 while문에서 선언된 변수로서 값


은 각각 5와 10이다.

15. 활성화 레코드는 다음의 어떤 명령으로 인해 생성되나?


① 함수 호출 ② 함수 리턴
③ 대입문 실행 ④ 메모리 동적 할당

[정답/해설] ①, 활성화 레코드는 함수 호출 시 필요한 정보를 담고 있는 것으로, 함수가 호


출되면 활성화 레코드가 생성되어 스택에 삽입되고 함수 종료 시 스택에서 삭제되어 소멸

- 63 -
된다.

16. 다음 중 malloc(), free(), new, delete 등의 명령어와 직접적인 연관이 있는 메모리 영역


은?
① 코드 세그먼트 ② 데이터 세그먼트
③ 히프 ④ 스택

[정답/해설] ③
 스택 → 함수 호출 시 각 함수의 지역적 환경을 저장하기 위한 메모리의 한 구역
 히프 → 메모리의 일부 구간을 예약 선점하여 이름을 주고 그 이름을 사용해서만 접근할
수 있게 만든 메모리의 한 구역으로, 동적 메모리 관리를 위해서 사용 → 원하는 크기의
구간이 발견되면 위치에 상관없이 예약하고 사용한다. → C언어에서는 동적 메모리 할당
과 반납을 위해서 malloc(), free(), C++의 경우 new, delete 연산자를 사용

17. 구조적 프로그래밍에서 사용하는 개념이 아닌 것은?


① if … else ② while ③ for … ④ goto

[정답/해설] ④, 구조적 프로그래밍은 goto문과 같은 임의적인 분기 기능은 프로그램의 이해


를 어렵게 만들기 때문에 이를 제거하여 좀 더 정확하고 이해하기 쉬운 구조의 프로그램을
개발하려는 것으로 순차 구조, 선택 구조, 반복 구조와 같은 제어 구조를 사용한다.

18. 객체지향 프로그래밍에서의 다형성과 직접적인 상관이 없는 것은?


① 가상함수 ② 템플릿 라이브러리
③ 제네릭 프로그래밍 ④ 친구 클래스

[정답/해설] ④, 다형성을 나타내는 예로 템플릿 라이브러리, 제네릭 프로그래밍, 가상함수,


연산자 오버로딩 등이 있다. 템플릿은 클래스의 골격을 가졌지만 다루는 데이터 타입이 다
른 여러 가지 클래스들을 하나의 템플릿으로 정의하여서 중복을 피하는 편리한 개념이다.
제네릭 프로그래밍을 이러한 템플릿을 근간으로 하기 때문에 다형성을 지원하며, 가상함수
는 계층구조에서 상속의 개념으로 재사용함으로 다형성을 지원한다.

19. 다음 중 스크립트 언어에 해당되는 것은?


① 펄(Perl) ② 리스프(LISP) ③ 프롤로그(Prolog) ④ HTML

[정답/해설] ①, 리스프(LISP)는 함수형 언어, 프롤로그(Prolog)는 논리형 언어, HTML은 웹 전


용 언어이다.

▣ 교재 주관식 문제
1. [그림 5.1]의 파스 트리와 문법을 보고 “The rat sees a cat.”가 시작 심벌 <문장>으로부
터 어떻게 파스되는지 순서대로 보이고 파스 트리를 그려보시오.
[정답/해설]

- 64 -
<문장> ⇨ <명사구> <동사구>
⇨ <관사><명사> <동사구>
⇨ The <명사> <동사구>
⇨ The rat <동사구>
⇨ The rat <동사> <명사구>
⇨ The rat sees <명사구>
⇨ The rat sees <관사> <명사>
⇨ The rat sees the <명사>
⇨ The rat sees the cat.

* 파스 방식에 따라서 위와 다른
순서로 진행될 수도 있다.

2. 5.3절의 <양의정수>의 정의는 000001과 같은 것도 적법한 문자열로 받아들인다. 앞에


늘어선 0을 받아들이지 않는 문법을 작성해 보시오.
[정답/해설]
 <영 아닌 숫자> ::= “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”
 <바른 양의 정수> ::= <숫자>|<영 아닌 숫자><양의 정수>
→ <숫자>와 <양의 정수>의 정의는 5.3절과 동일.
→ 정정: 5.3절과 위에 예시한 양의 정수는 실제로는 음이 아닌 정수의 정의임 (0을 포함).

3. 5.3절에서 정의된 <양의정수>와 <식별자>는 정규문법을 따르는가? 각각에 대해 답하시


오.
[정답/해설] 5.3절에 주어진 형식대로는 정규문법을 따르지 않는다. 왜냐하면 문법 규칙 중
에 우측 항에 논-터미널이 두개씩 들어가는 것들이 있기 때문이다. 하지만 <알파벳>이나
<숫자>를 풀어 써서 문법 규칙을 확장하면 정규 문법을 따르게 할 수 있다. 예를 들어 다
음과 같이 고쳐 쓸 수 있다:

 <식별자> :: = “a” | “b “ | ... | “z” | “A” | “B” | ... | “Z” | “0” | “1” | ... | “9” | <식별자>
“a” | <식별자> “b” | ... | <식별자> “z” | ...

4. 5.3절 마지막에서 if … if … else가 두 가지 구조로 분석될 수 있음을 보았다. 이 두 가지


경우에 파스 트리들이 어떻게 되는지 그려보시오.
[정답/해설]

- 65 -
파스 트리 1

파스 트리 2

5. 배열 A가 다음과 같이 메모리에 저장되어 있을 때 A[3]의 l-value와 r-value가 무엇인지


답하시오.

A→ 0000 11
0001 99
0010 33
0011 44
0100 55

[정답/해설] l-value = 0011, r-value = 44

6. 리스프의 리스트 ( ( 1 2 ) ( 3 ( 4 5 ) ) ( 6 ( 7 8 ) ) )를 트리 형태로 표현하시오.


[정답/해설]

- 66 -
7. 리스프로 f(x) = x! (“x 팩토리얼”)를 계산하는 함수를 정의하시오. 재귀적인 형식으로 함
수를 정의하시오. (힌트: 1! = 1이다.)
[정답/해설] 다음과 같은 재귀적인 형태의 x!를 리스프로 변환한다.
(defun factorial (x)
(if (equal x 1)
1
(* x (factorial (- x 1))
   
 ×        ⇒
)
)

8. 5.7.2항의 book 클래스 안의 임의의 멤버 함수 안에서 다음과 같은 명령을 수행할 수 있


는가? 어느 줄이 가능하고 어느 줄이 가능하지 않은지 표시하고 이유를 설명하시오.
(1) library_item L;
(2) L.set_transaction_id(1024);
(3) L.transaction_id = 12;
(4) L.check_in(25);
[정답/해설]
(1) 가능. 클래스 자체는 어디에서든지 사용할 수 있음.
(2) 가능. set_transaction_id()는 library_item 클래스의 protected 멤버이므로 자식 클래스인
book클래스에서 접근 가능하다.
(3) 불가능. transaction_id는 library_item 클래스의 private 멤버이므로 library_item 클래스
안에서만 직접 사용가능하다. book클래스가 library_item클래스의 자식이라 할지라도
private멤버의 경우 접근할 수 없다.
(4) 가능. check_in()은 library_item 클래스의 public 멤버이므로 자식 클래스인 book클래스
와 다른 모든 클래스에서 접근 가능하다.

9. 객체지향 언어에서 특정 연산자를 오버로딩하여 한 연산기호에 두 가지 이상의 연산이


가능할 때 어느 연산을 할지 어떻게 선택하는가?
[정답/해설] 주어진 매개변수의 타입을 보고 해당하는 연산을 선택한다.

10. 객체지향 언어에서 생성자 안에 동적으로 배열이 할당되었는데 소멸자 안에서 그 배열


이 해제가 되지 않으면 어느 메모리 구역에 문제가 발생하는가?
[정답/해설] 모든 동적 할당은 히프에서 이루어지므로 히프에 문제가 생기게 된다.

11. 펄(Perl), 파이선(Phyton) 등의 스크립트 언어는 C/C++와 같은 언어들과 수행 방식에서


어떻게 다른가?
[정답/해설] C/C++은 컴파일 방식의 언어이지만, 펄, 파이선 등은 기본적으로 인터프리터
방식의 언어이다.

제6장 데이터베이스

- 67 -
6.1 교재 내용 요약
▣ 기본 개념
❒ 파일처리 시스템 → 파일 단위의 데이터 저장 및 처리 시스템
• 각 사용자(응용 프로그램)가 특정한 응용을 위해서 필요한 파일을 독립적으로 소유하고 관리 →
데이터 종속성과 데이터 중복성으로 인해 데이터 공용이 불가 → 데이터베이스 기술 등장
▪ 데이터 종속성 → 응용 프로그램과 데이터 사이에 상호 의존하는 관계
▻ 응용 프로그램과 데이터 파일의 연관성이 1:1의 관계를 갖기 때문에 데이터가 보조기억장
치에 저장되는 방식이나 접근 방식에 맞게 응용 프로그램이 구성되어야 함 → 만약 파일
의 구성 요소, 접근 방식 등이 변경되면 해당 응용 프로그램도 함께 변경되어야 한다.
▪ 데이터 중복성 → 한 시스템에 같은 내용의 데이터가 여러 개 존재하는 현상
▻ 데이터 중복으로 인해 일관성, 보안성, 경제성, 무결성 측면에서 문제 발생
❒ 데이터베이스 정의 → 한 조직의 여러 응용 시스템이 공용(shared)으로 사용하기 위한
통합(integrated), 저장(stored)된 운영(operational) 데이터의 집합 (☞ 교재 그림 6.2)
▪ 공용 → 한 조직의 여러 응용 프로그램이 공동으로 소유하고 사용하기 위한 데이터
▪ 통합 → 중복된 데이터를 배제하여 각 데이터의 일관성을 유지한다.
▻ “최소한의 제한된 중복”은 허용 → 시스템 성능 향상을 위해 제한적으로 통제된 범위 내에
서 불가피하게 중복을 허용할 수 있다.
▪ 저장 → 컴퓨터가 접근할 수 있는 저장 매체에 저장되어 있다.
▪ 운영 → 단순한 입출력 데이터가 아니라 한 조직의 목적과 유용성 측면에서 반드시
유지해야 할 데이터이다.
❒ 데이터베이스 특성
• 실시간 접근성 → 데이터베이스에 수시로 접근하는 사용자의 요구를 즉시 처리하고 응
답을 제공
• 계속적인 변화 → 현재의 정확한 데이터를 항상 유지해야 하므로 삽입, 삭제, 갱신 등
의 연산을 통해 새로운 데이터로 내용을 지속적으로 갱신한다.
• 동시 공유 → 서로 다른 목적을 가진 여러 사용자가 동시에 다양한 방법으로 접근할
수 있다.
• 내용에 의한 참조 → 데이터의 참조는 저장되어 있는 데이터 레코드의 위치나 주소가
아닌 데이터의 내용 또는 값에 따라 참조된다.
❒ 데이터베이스의 장단점
• 장점 → 데이터 중복의 최소화, 데이터 공용, 데이터의 일관성, 데이터의 무결성, 데이
터의 보안, 백업과 회복, 표준화, 응용 프로그램 개발 시간의 단축, 융통성, 최신 정보
의 가용성, 규모의 경제성 등
• 단점 → 고가이고 많은 자원을 요구하므로 운영비의 증대, 복잡한 자료 처리로 인해
개발과 운영에서 고급 인력이 필요, 백업과 회복의 오버헤드, 통합된 시스템으로 인한
시스템의 신뢰성 저하 우려
▣ 데이터베이스 시스템
❒ 데이터베이스 시스템이란? 데이터를 데이터베이스에 저장하고 관리해서 필요한 정보를
생성하는 컴퓨터 중심의 시스템
• 구성요소 → DB, DBMS, 데이터 언어, 사용자, DBA, 데이터베이스 기계
❒ 데이터베이스 시스템의 구조

- 68 -
• 3단계(외부, 개념, 내부) 구조 (☞ 교잭 그림 6.3)
• 스키마(schema) → DB 구조에 대한 정의와 제약 조건의 명세를 기술한 것
▪ 종류 → 외부 스키마, 개념 스키마, 내부 스키마 (☞ 객관식 1번)
• 각 단계의 사상(mapping) → “데이터 독립성”의 제공하는 개념 (☞ 교재 그림 6.4)
▪ 외부/개념 사상(“응용 인터페이스”) → 응용 프로그램에 영향을 주지 않고, DB의 논리적
구조를 변경 가능 → “논리적 데이터 독립성” 제공
▻ 논리적 데이터 독립성이란 하나의 논리적 구조로서 많은 응용 프로그램이 요구하
는 다양한 형태의 논리적 구조를 제공할 수 있다.
▪ 개념/내부 사상(“저장 인터페이스”) → 논리적 구조에 영향을 주지 않고도 실제 데이터에
대한 저장 양식을 변경할 수 있다. → “물리적 데이터 독립성” 제공
▻ 물리적 데이터 독립성이란 하나의 논리적 구조로서 여러 가지 상이한 물리적 구조를 지원
할 수 있다.
❒ 데이터베이스 관리 시스템(DBMS, DataBase Management System)
• 응용 프로그램과 데이터의 중재자 역할을 통해 모든 응용 프로그램이 데이터베이스를
공용할 수 있도록 해 주는 소프트웨어 시스템
▻ DB의 구성, 접근 방법, 관리 유지 등에 대한 모든 책임과 권한을 갖고 있는 시스템
• 기능
▪ 정의(definition) → 응용 프로그램과 DB가 상호작용할 수 있는 방법을 제공 → 물리적으로
구현된 하나의 DB 구조로부터 여러 사용자들의 다양한 요구에 부응할 수 있는 가장 적합한
DB 구조를 정의할 수 있는 기능
▪ 조작(manipulation) → 사용자와 DB 사이의 상호작용을 위한 수단 또는 방법 → 사용자의
요구에 따라 연산 도구를 통해 DB에 체계적으로 접근하고 조작하는 기능
▪ 제어(control) → 공용 목적으로 관리되는 DB의 내용을 항상 정확하고 안전하게 유지시키는
기능 → 데이터의 무결성 유지, 보안 유지 및 권한 검사, 동시 처리의 정확성 유지
❒ 데이터 언어 → DB를 정의하고 접근하기 위해 DBMS와 통신할 수 있는 수단
• 데이터 정의어(DDL, Data Definition Language)
▪ DB의 구조나 데이터 형식, 처리 방식 등을 정의하는 언어
• 데이터 제어어(DCL, Data Control Language)
▪ 데이터 공유와 정확하고 안전한 사용을 위해 데이터 제어를 정의/기술하는 언어
• 데이터 조작어(DML, Data Manipulation Language)
▪ DB에 대한 검색, 수정, 삭제, 삽입 등의 조작을 위한 언어
▪ 절차적 조작어 → “어떻게” 구할 것인가를 명시, 일반 프로그램 속에 삽입되어 사용
▪ 비절차적 조작어 → “무엇을” 구할 것인가를 명시, SQL
❒ 데이터베이스 사용자 → DB에 접근하는 사람의 총칭
• 일반 사용자, 응용 프로그래머, 데이터베이스 관리자
• 데이터베이스 관리자(DB Administrator) → DDL과 DCL를 통해 DB를 정의하고 제어할
목적으로 접근/관리하는 사람 → DB에 대한 접근 권한 설정, 제작과 갱신, 보전과 관리, 성능
변경 요구에 대한 응답 등의 의무를 가짐
❒ 데이터베이스 기계(데이터베이스 컴퓨터) → 데이터베이스 관리 기능을 효율적으로 수행
할 수 있도록 특화되고 설계된 하드웨어 또는 소프트웨어를 의미
▣ 데이터 모델링

- 69 -
❒ 데이터 모델링이란? 실세계 데이터를 데이터 모델 상의 DB 구조로 변환하는 과정
• 데이터 모델이란? 데이터타입, 데이터의 연산, 데이터의 의미 및 일관성 제약 고전 등
DB 구조를 명시하기 위해 사용할 수 있는 개념의 집합
▪ 개념적 모델 → 많은 사용자들이 데이터를 인식하는 방법과 밀접한 개념을 제공, E-R 모델
▪ 물리적 모델 → 데이터가 컴퓨터 내에서 어떻게 저장되어 있는 지에 대한 세부 사항을 기
술하는 개념을 제공
▪ 구현 모델 → 개념적 모델과 물리적 모델의 중간에 위치한 모델로서, 데이터 구성에 대한
세부적인 사항은 숨기고 사용자가 이해할 수 있는 정도의 개념을 제공
▻ 종류 → 관계형 모델, 망형 모델, 계층형 모델, 객체지향 모델, 객체관계형 모델 등
❒ 구현 모델 (☞ 객관식 4번)
• 관계형 모델, 망형 모델, 계층형 모델, 객체지향 모델, 객체관계형 모델
❒ 데이터베이스 설계 (☞ 교재 그림 6.9)
• 사용자의 요구 조건으로부터 DB 구조를 도출해 내는 과정
▪ 요구조건 분석 → 데이터 및 처리 요구 조건 분석
▪ 개념적 설계 → DBMS 독립적 개념 스키마 설계, 트랜잭션(응용 프로그램) 모델링
▪ 논리적 설계 → 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계
▪ 물리적 설계 → 목표 DBMS에 맞는 물리적 구조 설계, 트랜잭션 세부 설계
▪ 구현 → 목표 DBMS DDL로 스키마 작성, 트랜잭션 작성
❒ E-R 모델 → 개체(Entity)-관계(relationship) 모델 → 개체 타입과 이들 간의 관계 타입을
이용해서 실세계를 사람이 이해할 수 있게 개념적으로 표현하는 방법
▪ 개체 → 데이터로 표현하려는 실세계의 유무형의 사물, 파일에서 레코드에 대응
▪ 관계 → 개체 집합 사이의 대응성 → 개체의 관계에 대한 정보를 표현하는 수단
• E-R 다이어그램 → E-R 모델을 그래프 방식으로 표현
▪ 기본적으로 개체 타입은 사각형, 관계는 다이아몬드, 속성은 타원으로 나타내고, 이
들을 연결하는 링크로 구성
❒ 논리적 모델링 → 개념적 구조를 목표 DBMS에 맞는 구조를 변환하는 과정
• E-R 다이어그램으로부터 관계 데이터 모델로 변환하는 과정
▪ 사각형의 개체 타입은 개체 릴레이션으로 만들고, 개체 타입에 속한 속성들은 이
릴레이션의 속성이 됨
▪ 다이아몬드로 나타낸 각 관계는 연관된 개체 타입의 키 속성을 포함하는 관계 릴레
이션으로 표현하며, 이 관계에 속한 속성은 그대로 관계 릴레이션 속성이 됨
▣ 관계형 데이터베이스
❒ 관계형 모델 → 실세계의 정보를 테이블 형식으로 구현, 실제 데이터가 테이블 형태로
저장되는 것을 의미하는 것은 아님
• 주요 용어 → 투플(행, 레코드), 속성(열, 필드, 데이터항목), 영역(도메인, 필드가 가질
수 있는 값), 카디널리티(투플의 개수), 차수(필드의 개수)
❒ 키 → 각 투플에 접근할 때 유일하게 구분되는 속성 집합
• 기본키(primary key) → 각 투플을 유일하게 구분하는 최소 단위의 속성
• 후보키(candidate key) → 각 투플을 구분할 수 있는 여러 개의 속성 중에서 기본키 이외의
속성
• 외래키(foreign key) → 어떤 릴레이션에 속해 있는 속성이나 속성 집합이 다른 릴레이션의

- 70 -
기본키가 되는 키
❒ 릴레이션의 특징 → 투플의 유일성, 투플의 무순서성, 속성의 무순서성, 속성의 원자성
❒ 관계 데이터 모델의 제약 조건 → 모든 릴레이션 인스턴스가 만족해야 하는 조건
• 영역 제한 조건 → 각 속성값은 반드시 해당 영역의 원자값이어야 한다.
• 키 제약 조건 → 어떤 두 투플도 릴레이션의 모든 속성에 대해서 같은 속성값의 조합
을 가질 수 없다.
• 개체 무결성 제약 조건 → 어떠한 기본키 값도 널 값이 될 수 없다.
• 참조 무결성 제약 조건 → 한 릴레이션에 있는 투플이 다른 릴레이션에 있는 투플을
참조하려면 반드시 참조되는 투플이 그 릴레이션 내에 존재해야 한다.
❒ 관계 연산 → 데이터 조작을 위한 연산으로 관계 대수와 관계 해석이 있다.
• 관계 대수 → 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자 → 원하는 결과를
얻기 위해서 어떻게 해야 되는 지 일련의 연산을 순서적으로 명시
▪ 일반 집합 연산자 → 합집합, 교집합, 차집합, 카티션 프로덕트
▪ 순수 관계 연산 → 프로젝션, 셀렉션, 조인, 디비전
▪ 집계 함수 → SUM, AVG, MAX, MIN, COUNT
• 관계 해석 → 술어해석(predicate calculus)을 관계 DB를 위한 언어로 적용시킨 것 →
원하는 정보가 무엇이라는 것만 선언하는 비절차적 특징을 가짐
▪ 투플 관계 해석 → { t | p(t) }
▪ 영역 관계 해석 → { <x1, x2, ..., xn> | p(x1, x2, ..., xn) }
▣ SQL
❒ 구조화된 질의어(Structured Query Language) → 관계 사상을 기초로 한 언어 → 입력 릴
레이션으로부터 원하는 출력 릴레이션을 사상시키는 언어
• 특징
▪ 데이터 검색만을 위한 언어가 아니라 종합적인 데이터베이스 언어
▻ 데이터 정의, 조작, 제어 기능을 모두 제공
▪ 대화식 사용뿐만 아니라 일반 프로그램에 삽입되어 사용 가능
▪ 개별 레코드 단위보다는 레코드 집합 단위로 연산을 수행 → 비절차적 언어
▪ 릴레이션, 투플, 속성과 같은 표현보다는 테이블, 행, 열과 같은 표현을 선호
❒ 데이터 정의어
• 스키마(SCHEMA), 도메인(DOMAIN), 테이블(TABLE), 뷰(VIEW), 인덱스(INDEX)를 정의
(CREATE), 수정(ALTER), 제거(DROP)하는 문장
• 주요 명령문 → CREATE, ALTER, DROP
❒ 데이터 조작어
• 조작 대상 → 기본 테이블,
• 주요 명령문 → SELECT, INSERT, DELETE, UPDATE
▪ DELETE FROM P; → 빈 테이블이 됨, DROP TABLE P; → 테이블 자체가 없어짐
❒뷰
• 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상 테이블
▪ 뷰 내용은 물리적으로 구현되어 존재하는 것이 아니라, 뷰에 대한 조작을 요구할
때마다 기본 테이블의 데이터를 이용해서 내용을 만든다.
▪ 데이터 검색에 있어서 시스템은 일반 사용자에게 뷰와 기본 테이블 사이에 아무런

- 71 -
차이가 없게 만들어준다.
▻ 갱신 연산의 경우에는 기본키의 보유 여부에 따라 다른 처리가 이루어진다.
• 뷰의 생성과 제거
▪ AS SELECT문을 사용해서 생성(SELECT문에서 UNION과 ORDER BY는 사용 불가)
▪ 기본 테이블이 제거되면 그것을 기초로 만들어진 인덱스나 뷰도 자동적으로 제거

6.2 문제 풀이 및 해설
▣ 객관식 문제
1. 모든 응용에 대한 전체적인 통합된 데이터 구조를 정의한 것으로, 사용자 및 응용 프로그
램을 위한 모든 스키마를 생성하고 지원하기 위한 스키마를 무엇인가?
① 개념 스키마 ② 구현 스키마
③ 외부 스키마 ④ 내부 스키마

[정답/해설] ①
 외부 스키마 → 개개 사용자나 응용 프로그래머가 관심을 갖는 DB 구조만을 정의한 스
키마 → 개인이나 특정 응용에 한정된 논리적 데이터 구조이기 때문에 사용자와 관련된
개체와 관계만을 표현 → 개개 사용자마다 이에 대응하는 외부 스키마가 존재 → 전체 데이터
베이스의 한 논리적 부분만을 표현하기 때문에 “서브스키마”라고도 함
 개념 스키마 → 기관(조직)의 전체적인 DB 구조를 정의한 것 → 모든 응용에 대한 전체
적인 통합된 데이터 구조를 정의한 것 → 오직 하나만 존재 → 개념 스키마로부터 사용
자와 응용 프로그래머를 위한 모든 외부 스키마가 생성되고 지원된다.
 내부 스키마 → 물리적인 데이터 구조를 정의한 것 → 개념 스키마에 대한 저장 구조를
정의한 것으로 “저장 스키마”라고도 함. 저장장치 관점에서 전체 DB가 저장되는 방법을 표현,
즉 실제로 저장될 내부 레코드 형식, 인덱스 유무, 저장 필드의 표현 방법, 저장 레코드의 물리적
순서 등을 표현 → 물리적 수준에서는 아직도 약간 한 단계 위에 있는 상태, 즉 물리적 레
코드(페이지, 블록)와 저장장치의 특성(실린더, 트랙)은 고려하지 않은 상태

2. 3단계 데이터베이스 구조에서 다음과 같은 특징을 가진 스키마는 어느 것인가?

데이터베이스 구조에서 기관의 전체적인 DB 구조를 정의하는 것으로


모든 데이터 개체들에 대한 정의, DB 접근 권한, 보안 정책, 무결성 규
칙에 대한 명세를 기술

- 72 -
① (A) ② (B) ③ (C) ④ (D)

[정답/해설] ②, (A)는 내부 스키마, (B)는 개념 스키마, (C)와 (D)는 외부 스키마이다.

3. 개별 사용자나 응용프로그래머가 접근하는 DB 구조를 정의한 것을 무엇이라 하는가?


① 개념 스키마 ② 내부 스키마
③ 외부 스키마 ④ 저장 스키마

[정답/해설] ③

4. 2차원 테이블 형태로 데이터가 조직되는 데이터베이스 모델은 무엇인가?


① 계층형 모델 ② 네트워크 모델
③ 관계형 모델 ④ 객체지향형 모델

[정답/해설] ③
 관계형 모델 → 현재 가장 많이 사용되고 있는 모델로서, DB를 2차원 테이블(“릴레이션”)
의 집합으로 간주해서 테이블을 사용해서 데이터와 데이터의 관계를 표현
 망형 모델(네트워크 모델) → 그래프 형태 → 데이터 간의 관계는 오너와 멤버의 관계
 계층형 모델 → 트리 형태로 표현 → 두 레코드 타입은 1:n 관계 (“부모-자식 관계”)
 객체지향 모델 → 데이터와 절차를 일체화된 단위로 다루는 객체지향의 사고방식을 적용
한 방식
 객체관계형 모델 → 관계형 모델과 객체지향 모델의 장점을 결합한 형태 → 관계형 시스
템에 새로운 객체 저장 능력을 추가한 형태

5. 다음과 같이 그래프구조를 기반으로 구성되어 있으며 레코드간의 관계가 오너와 멤버의


관계로서 일대다 또는 다대다의 관계를 갖는 DB 모델은?

① 네트워크형 모델 ② 관계형 모델
③ 계층형 모델 ④ 객체지향형 모델

[정답/해설] ①

6. 데이터베이스의 구조를 묘사하는 개념 도구로서 다음과 같이 테이블을 사용하는 모델은


무엇인가?

- 73 -
① 네트워크형 모델 ② 관계형 모델
③ 계층형 모델 ④ 객체지향형 모델

[정답/해설] ②

7. 릴레이션에서 행의 개수를 나타내는 용어는 무엇인가?


① 카디널리티 ② 투플 ③ 차수 ④ 속성

[정답/해설] ①

용어 의미
카디널리티 투플(행)의 개수
투플 행, 레코드
차수 필드의 개수
속성 열, 필드, 데이터 항목

8. 관계 연산중에서 두 개의 릴레이션을 취해서 공통의 속성을 기준으로 릴레이션을 합치는


이항 연산은 무엇인가?
① 프로젝션 ② 셀렉션 ③ 합집합 ④ 조인

[정답/해설] ④, 프로젝션 연산은 릴레이션으로부터 어떤 속성을 선택하고 나머지는 버리는


연산이고, 셀렉션 연산은 릴레이션에서 선택 조건을 만족하는 투플(행)들의 집합을 선택하는
연산이다. 합집합은 두 릴레이션에서 한쪽에 있거나 양쪽에 있는 모든 투플을 포함하는 릴
레이션이다.
두 릴레이션으로부터 관련된 투플들을 결합하여 하나의 투플로 만드는 연산은 조인이다.

9. 다음은 데이터베이스의 개념적 구조를 나타내는 그림이다. 그림에서 다이아몬드(◇)에 해


당하는 요소를 무엇이라 하는가?

- 74 -
① 개체 ② 속성 ③ 관계 ④ 블록
[정답/해설] ③, E-R 다이어그램에서 개체 타입은 사각형, 관계는 다이아몬드, 속성은 타원으
로 나타낸다.

10. 다음과 같은 관계형 모델의 테이블에서 차수와 카디널리티의 합은 얼마인가?

이름 나이 성별 주소 학과
홍가나 20 남 서울 컴퓨터과학
김다라 28 남 경상도 경영학
유마바 19 여 충청도 심리학

① 7 ② 8 ③ 9 ④ 10

[정답/해설] ②, 차수(필드의 개수)=5, 카디널리티(행/투플의 개수)=3

11. 다음의 SQL 명령문 중에서 데이터 조작어에 속하지 않는 것은?


① SELECT문 ② INSERT문 ③ UPDATE문 ④ DROP문

[정답/해설] ④
 데이터 조작어 → SELECT(검색), INSERT(삽입), DELETE(삭제), UPDATE(갱신)
 데이터 정의어 → CREATE(생성/정의), ALTER(수정), DROP(삭제)

12. 다음의 SQL 명령문 중에서 데이터 정의어에 속하지 않는 것은?


① CREATE문 ② SELECT문 ③ ALTER문 ④ DROP문

[정답/해설] ②

13. 데이터베이스에 대한 설명으로 올바른 것은?


① 서류, 종이철 및 컴퓨터 기반의 저장 매체에 저장된 데이터 집합이다.
② 입출력 데이터와 같이 단순한 데이터에서부터 조직의 존재 목적이나 유용성에서 필수적
인 데이터까지 모아놓은 데이터집합이다.
③ 동일한 데이터의 중복을 완전히 배제하여 각 데이터의 일관성을 유지한다.
④ 한 조직에서 여러 응용 프로그램이 공동으로 소유, 유지 가능한 데이터 집합이다.

[정답/해설] ④
 ① 저장 데이터라는 것은 컴퓨터로 접근 가능한 저장 매체에 저장되어야 함을 의미하며,
따라서 서류, 종이철 등에 저장된 데이터는 제외된다.
 ② 운영 데이터란 조직의 존재 목적이나 유용성에서 필수적인 데이터까지 모아놓은 데이
터집합을 의미하며, 따라서 단순한 형태의 입출력 데이터들은 포함되지 않는다.
 ③ 통합 데이터란 데이터의 중복을 배제한다는 의미이지만, 완전한 배제를 나타내는 것
은 아니라 “최소한의 통제된 중복”은 허용된다.

- 75 -
14. 다음 중에서 주어진 테이블의 모든 내용을 삭제해서 빈 테이블로 만드는 SQL 명령문은
어느 것인가?
① DROP TABLE 직원;
② DROP TABLE FROM 직원;
③ DELETE FROM 직원 WHERE 번호=‘*’;
④ DELETE FROM 직원;

[정답/해설] ④, DROP TABLE 명령은 테이블 자체를 제거하는 명령이고, DELETE를 이용한
테이블 삭제는 테이블 자체가 아니라 테이블의 내용을 삭제하는 명령이다. 따라서 테이블의
모든 내용을 삭제하기 위해서는 “DELETE FROM 테이블;”과 같은 명령어를 사용하면 된다.
WHERE 조건을 사용하면 조건을 만족하는 내용만 삭제되므로 모든 내용을 삭제할 수 없다.

15. 다음과 같은 직원 테이블에 대해서 SQL문을 수행한 후 얻어지는 결과 테이블에 포함


되는 내용은?

번호 이름 전화번호 성별 나이 봉급 부서번호
100 김영선 630 F 20 180 A
150 홍성철 650 M 25 200 B
201 박남진 640 M 28 230 D
330 이영철 632 M 21 180 A
340 박기동 642 M 45 350 B
450 이남영 635 F 30 230 A
478 정희선 645 F 37 300 C

SELECT 부서번호
FROM 직원
GROUP BY 부서번호
HAVING COUNT(*) >= 3;

① A ② A, B ③ A, B, C ④ A, B, C, D

[정답/해설] ①, 제시된 SELECT문은 직원 테이블을 부서번호로 그룹핑을 하고, 각 그룹에서


레코드의 개수가 3이상 되는 부서번호를 출력하는 내용이다. 즉 직원 테이블에서 같은 부서
에 속하는 직원이 3명 이상인 부서번호를 출력한다.
같은 부서에 속하는 직원이 3명 이상은 레코드는 다음과 같다.

번호 이름 전화번호 성별 나이 봉급 부서번호
100 김영선 630 F 20 180 A
330 이영철 632 M 21 180 A
450 이남영 635 F 30 230 A

부서번호
이중에서 부서번호만 출력하면 A 가 출력된다.

16. 개체-관계 모델은 데이터베이스 설계 단계 중에서 일반적으로 어떤 단계에서 사용되는


설계 도구인가?

- 76 -
① 논리적 설계 단계 ② 개념적 설계 단계
③ 물리적 설계 단계 ④ 구현 단계

[정답/해설] ②, 데이터베이스 설계 순서는 “사용자 요구 사항 분석→개념적 데이터베이스


설계→논리적 데이터베이스 설계→물리적 데이터베이스 설계→구현”이다. E-R 모델은 개체
타입과 이들 간의 관계 타입을 이용해서 실세계를 사람이 이해할 수 있게 개념적으로 표현
하는 방법이다.

▣ 교재 주관식 문제
1. 기존 파일 처리 시스템의 문제점과 해결 방안을 설명하시오.
[정답/해설] 파일 처리 시스템은 파일 단위의 데이터 저장 및 처리 시스템으로 각 사용자(응용 프로
그램)가 특정한 응용을 위해서 필요한 파일을 독립적으로 소유하고 관리한다. 따라서 기본적으로 데이
터 종속성과 데이터 중복이라는 문제가 발생하므로 각 사용자가 데이터를 공용하는 것은 불가능하다.
따라서 데이터를 공용하기 위한 기술로서 데이터베이스가 등장하였다.

2. 데이터베이스의 개념적 정의를 구체적으로 설명하시오.


[정답/해설] 데이터베이스는 “한 조직의 여러 응용 시스템이 공용(shared)으로 사용하기 위
한 통합(integrated), 저장된(stored) 운영(operational) 데이터의 집합”이라고 정의한다.
☞ 각 키워드(“공용”, “통합”, “저장”, “운영”)에 대한 자세한 설명은 요약 부분 참조

3. 데이터베이스 시스템의 구성 요소를 열거하고, 각각을 설명하시오.


[정답/해설] 데이터베이스 시스템은 데이터베이스, 데이터베이스 관리 시스템, 데이터 언어,
사용자, 데이터베이스 관리자, 데이터베이스 기계로 구성된다.
☞ 각 요소에 대한 보다 자세한 설명은 요약 부분 참조

4. 데이터 독립성이란 무엇이고, 데이터베이스 구조에서 어떤 방법으로 제공될 수 있는 지


설명하시오.
[정답/해설] 데이터의 독립성은 논리적 데이터 독립성과 물리적 데이터 독립성으로 나눌 수
있으며, 논리적 데이터 독립성이란 기존 응용 프로그램에 영향을 주지 않고 DB의 논리적
구조를 변경할 수 있는 능력을 의미한다. 물리적 데이터 독립성이란 DB의 논리적 구조에
영향을 주지 않고 데이터의 물리적 구조를 변경할 수 있는 능력이다.
이러한 데이터 독립성을 제공하기 위해서는 하나의 논리적 구조로부터 많은 응용 프로그램
이 요구하는 다양한 형태의 논리적 구조 및 여러 가지 상이한 물리적 구조를 지원할 수 있
는 사상 능력이 필요하다. 외부/개념 사상(“응용 인터페이스”)과 개념/내부 사상(“저장 인터
페이스”)을 통해 데이터의 독립성을 확보할 수 있다.

5. 데이터베이스 모델의 종류와 특징을 설명하시오.


[정답/해설] ☞ 객관식 4번
 관계형 모델, 망형(네트워크) 모델, 계층형 모델, 객체지향 모델, 객체관계형 모델

6. 데이터베이스 언어란 무엇이고, 어떤 종류가 있는 지 설명하시오.

- 77 -
[정답/해설] 데이터베이스 언어란 데이터베이스를 정의하고 접근하기 위해 데이터베이스 관
리 시스템과의 통신할 수 있는 수단으로 사용된다. 기능과 사용 목적에 따라 데이터 정의어
(DDL), 데이터 조작어(DML), 그리고 데이터 제어어(DCL)로 나눌 수 있다.

7. 데이터베이스 설계 과정에 대해서 설명하시오.


[정답/해설]
(1) 사용자 요구 사항 분석: 데이터베이스 사용자들의 데이터 요구 사항을 수집, 분석하고
사용자 요구사항 명세서를 작성하는 단계이다.
(2) 개념적 데이터베이스 설계: 특정 DBMS와는 무관한 개념적 데이터 모델을 사용해서 데
이터베이스에 대한 개념적 구조를 만든다. E-R 모델과 객체 지향 모델은 이 단계에서 가
장 많이 설계되는 모델이다.
(3) 논리적 데이터베이스 설계: 상용 DBMS를 사용해서 데이터베이스를 실제로 구현하기 위
한 구현 데이터 모델로 변환하는 단계이다. 또 이 단계에서 입출력과 기능적 행태로만
정의된 트랜잭션, 즉 응용 프로그램에 대한 인터페이스의 설계가 이루어진다.
(4) 물리적 데이터베이스 설계: 논리적 구조로부터 효율적이고 구현 가능한 물리적 데이터베
이스 구조, 즉 여러 파일 타입에 대한 저장 레코드의 양식, 순서, 접근 경로, 저장 공간
의 할당 등의 표현을 설계하는 것이다.
(5) 구현: 목표 DBMS의 데이터 정의어로 기술된 명령문을 컴파일하고 실행시켜 데이터베이
스 스키마와 데이터가 채워지지 않은 데이터베이스 파일을 생성한다. 데이터베이스 트랜
잭션은 이 시점에서 응용 프로그래머에 의해 실행 트랜잭션으로 구현된다.

8. 릴레이션의 개념과 특징을 설명하시오.


[정답/해설]
 릴레이션은 간단하게는 테이블이라는 의미로 이해될 수 있다. (정형적으로 정의하면 릴
레이션 R은 다음과 같다. R⊆D1×D2×D3×...×Dn이다. Di는 각 속성의 영역(domain)이다. 즉
릴레이션은 릴레이션이 가지고 있는 모든 속성값의 모든 경우의 수에 대한 부분집합이
다.)
 릴레이션의 특징
- 투플의 유일성: 하나의 릴레이션에는 중복된 투플이 없다.
- 투플의 무순서성: 한 릴레이션 내의 투플들 사이에는 순서가 없다.
- 속성의 무순서성: 한 릴레이션을 구성하는 속성 사이에는 순서가 없다.
- 속성의 원자성: 속성값은 더 이상 분해할 수 없는 원자값이어야 한다.

9. 관계 대수 연산의 종류와 기능을 설명하시오.


[정답/해설]
관계대수 연산은 크게 일반 집합 연산자, 순수 관계 연산, 집계 연산으로 설명할 수 있다.
(1) 일반 집합 연산자 → 합집합 ∪  , 교집합 ∩  , 차집합 R-S, 카티션 프로덕트  × 
(2) 순수 관계 연산 → 프로젝션(), 셀렉션(), 조인(⋈), 디비전(÷)
(3) 집계 함수 → SUM, AVG, MAX, MIN, COUNT 함수 등
☞ 각 연산의 기능에 대해서는 교재(274~274쪽) 참조

- 78 -
10. 다음과 같은 릴레이션에 대해서 아래의 질의문을 SQL로 표현하시오.
과목(과목번호, 과목이름, 개설학과, 담당교수)
학생(학번, 이름, 학년, 학과)
등록(과목번호, 학번, 점수)
(1) 과목이름 ‘DB’를 수강한 학생의 이름과 점수를 검색하시오.
(2) 학번이 201138인 학생이 수강한 모든 과목의 이름을 검색하시오.
(3) 학번이 2001125인 학생의 학년을 4학년으로 변경하라.
(4) ‘OS' 과목이름을 과목 릴레이션에 삽입하라. (단, 과목번호: S123, 담당교수: 홍길동).

[정답/해설]

select 이름, 점수
from 학생, 과목, 등록
where 등록.학번=학생.학번
AND 등록.과목번호=과목.과목번호
(1) AND 과목이름=‘DB';

SELECT 과목이름
FROM 과목
WHERE 과목번호 IN ( SELECT 과목번호
FROM 등록
WHERE 학번 IN (SELECT 학번
FROM 학생
WHERE 학번=201138);
select 과목이름
from 학생, 과목, 등록
(2) where 등록.학번=학생.학번 AND 등록.과목번호=과목.과목번호
AND 학생.학번=201138;

UPDATE 학생 INSERT
SET 학년=4 INTO 과목
(3) WHERE 학번=201125; (4) VALUES(‘CS123’, ‘OS’, , ‘홍길동’);

11. 뷰란 무엇이고, 어떻게 관리되는 지를 설명하시오.


[정답/해설] ☞ 뷰의 요약 부분 참조

제7장 컴퓨터 네트워크


7.1 교재 내용 요약
▣ 컴퓨터 네트워크의 역사
❒ 1960년대 ARPANet → 1970년대 Ethernet → 1980년대 BITNET, NSFNET, PC 통신 → 1990
년대 웹과 인터넷 (☞ 객관식 1번)
▣ 통신의 기초 개념

- 79 -
❒ 채널(channel) → 신호가 실제로 전달되는 통로로서 모든 통신은 통신 매체를 통해 수행된다.
❒ 주파수(frequency) → 통신 신호가 초당 몇 번 진동하는 가를 표시, 단위는 Hz(헤르츠)
❒ 대역폭(bandwidth) → 통신 채널의 최대 주파수에서 최소 주파수를 뺀 주파수 대역
❒ 노드(node) → 네트워크에 연결된 컴퓨터나 관련 장비(라우터 등)
❒ 네트워크 인터페이스 → 컴퓨터와 네트워크를 연결해주는 장치로서 컴퓨터 내부의 신호
를 물리적/전기적 신호로 변환해 줌 → 예: 이더넷 카드, 와이파이 등
❒ 프로토콜(protocol) → 통신 쌍방 간의 데이터 전송 관리를 위해서 사전에 합의한 규약의
집합 → 예: 이더넷 프로토콜, TCP/IP, HTTP 등
▣ 컴퓨터 네트워크의 구성
❒ 컴퓨터 간의 연결 방식과 네트워크와 네트워크 간의 연결 방식으로 구분 가능
• 컴퓨터 간의 연결 방식의 분류 기준 → 망의 크기, 연결 위상(topology), 교환
(switching) 방식
• 네트워크 간의 연결 방식 → 서로 다른 종류의 네트워크 간의 연결과 균일한 네트워크
끼리의 연결 형태로 구분 가능
❒ 망의 크기에 따른 분류
• 근거리 통신망(Local Area Network, LAN) → 동일 건물이나 일정 거리 내에 있는 컴퓨
터 관련 기기들을 연결
▪ 전송 방식에 따른 분류
▻ 베이스 밴드 : 데이터 신호의 변조 없이 자기 고유의 주파수 영역을 사용하여 전송
▻ 브로드 밴드 : 디지털 신호를 아날로그 신호로 광대역으로 변조하여 전송하는 방식
▪ 액세스 방법에 따른 분류 (☞ 강의 내용/자료 참조)
▻ CSMA/CD (Carrier Sense Multiple Access with Collision Detect) : 송신측에서 데이터 충
돌을 막기 위해 자신의 데이터를 전송하기 전에 현재 회선의 사용 여부를 확인한 후 송
신 중인 데이터가 없을 때에만 전송하고, 다른 장비가 송신 중일 때는 송신을 중단하여
일정 간격 기다렸다가 다시 전송을 시도
▻ 토큰 패싱 : 모든 노들이 채널을 사용할 수 있는 권리인 토큰을 정해진 순서에 따라 주고
받으면서 전송하는 방식. 자신에게 토큰이 주어지면 이를 점유하여 데이터 전송을 시작
하며 토큰이 논리적인 링을 따라 수신측에 패킷을 전송하고 자신에게 돌아오면 다시 새
로운 토큰을 링에 삽입한다. 새 토큰이 링에 삽입되면 그 다음 송신자가 토큰을 취해 자
신의 데이터 전송을 개시한다.
• 도시권 통신망(Metropolitan Area Network, MAN) → 도시
• 광역 통신망(Wide Area Network, WAN) → 국가, 대륙
❒ 연결 위상에 따른 분류 (☞ 강의 자료 참조)
• 컴퓨터들이 위상학적으로 어떻게 연결되었는가? → 주로 랜에서 물리적으로 연결된 하
나의 소규모 망의 구조를 결정할 때 사용
• 종류 → 버스(bus)형, 성(star)형, 환(ring)형, 트리형, 매시(mesh)형 (☞ 객관식 6번)
❒ 교환 방식에 따른 분류 (☞ 객관식 9번)
• 시작점에서 목표점까지 데이터가 어떤 식으로 전달되는 지에 따른 분류
• 소규모의 망처럼 동일한 물리적인 매체에 직접 연결되지 않은 컴퓨터 간의 통신을 어
떻게 할지 결정할 때 사용
• 종류 → 회선(circuit) 교환 방식, 메시지(message) 교환 방식, 패킷(packet) 교환 방식

- 80 -
❒ 네트워크와 네트워크 간의 연결 방식 (☞ 객관식 12번)
• 네트워크를 연결하기 위한 장비 → 리피터, 브리지, 스위치, 라우터, 게이트웨이
▣ 네트워크 시스템의 계층적 구조
❒ OSI 참조 모델 → 개방형 시스템 간의 상호 접속을 위한 참조 모델
• 서로 상이한 컴퓨터 시스템 네트워크를 연결하기 위해 제조업자나 네트워크 유형에 관
계없이 서로 통신할 수 있도록 최소한의 공통된 지침이나 여러 가지 연결 장치들의
표준화된 운영지침을 마련하고자 제안된 개념
▪ 서로 다른 두 시스템의 구조에 무관하게 어떻게 통신할 지를 나타내는 이론적 모델
▻ 통신 계층을 7개의 계층을 분류하고, 각 계층의 정의에 적합한 표준화된 서비스 정의와 프
로토콜을 규정한 모델
▻ 네트워크에 관련된 각 장치가 모두 7계층으로 구현해야 한다는 것을 의미하지 않음. 실제
계층의 수는 장치의 기능과 네트워크에서의 위치에 따라 달라짐
• 7계층(하위계층부터): 물리(physical) 계층 → 데이터 링크(datalink) 계층 → 네트워크
(network) 계층 → 전송(transport) 계층 → 세션(session) 계층 → 표현(presentation) 계
층 → 응용(application) 계층 (☞ 객관식 3번)
❒ TCP/IP(Transmission Control Protocol / Internet Protocol)
• 서로 다른 제조업체의 컴퓨터끼리의 통신을 위해 미국 국방성에서 제정한 프로토콜
▪ OSI 모델보다 먼저 개발되어, OSI 모델의 계층 구조와 정확히 일치하지 않음
• 현재의 인터넷의 기반이 되는 프로토콜
• 인터넷 계층 구조와 OSI 참조 모델의 대응 관계 (☞ 교재 그림 7.6 및 강의 자료)
▪ 네트워크 인터페이스(이더넷 등) ⟺ 물리 계층, 데이터 링크 계층
▪ IP ⟺ 네트워크 계층
▪ TCP ⟺ 전송 계층
▪ 응용 프로그램 ⟺ 세션 계층, 표현 계층, 응용 계층
▣ 인터넷
❒ 데이터링크 계층 프로토콜
• 이더넷
▪ CSMA/CD 방식, IEEE 802.3 표준 준수
▻ 여러 대의 컴퓨터가 하나의 선로에 접근하므로 다중 접근(Multiple Access)
▻ 현재 선로가 사용 중인지 아닌 지 확인 가능하므로 캐리어 감지(Carrier Sense)
▻ 한 번에 두 노드 이상이 선로를 사용하여 전송하는 것을 발견하므로 충돌 탐지
(Collision Detect)
▪ 하나의 이더넷 선로에는 최대 1024개의 노드까지 접속 가능
▪ 프레임 구성 요소 → 프리앰블, 송신주소, 수신주소, 타입, 몸통, CRC
▪ MAC(Media Access Control) 주소
▻ 모든 이더넷 네트워크 인터페이스 카드가 각각 가지고 있는 고유의 주소
▻ 6바이트를 사용하여 16진수 둘 씩 짝을 이루어 표현 → 형식 00:00:00:00:00:00
• 와이파이(WiFi)
▪ IEEE 802.11 표준
▻ 무선으로 방송하듯이 전송하기 때문에 송신과 동시에 인근의 수신 범위에 있는 모든 노드
에 정보가 도착

- 81 -
▻ 한 지역에서 여러 와이파이 장비가 동시에 전송 가능 → 충돌 및 전파 간섭이 발생하여
신호 품질이 떨어짐
▪ 충돌과 간섭을 피하는 방법 → 스프레드 스펙트럼, MACA 알고리즘
▪ 이더넷과는 다른 특이한 문제로서 은닉 노드 문제와 노출 노드 문제가 발생
▪ 배급 시스템 → AP(access point)로 구성된 시스템
▻ 와이파이 네트워크는 보통 여러 개의 AP로 구성되고, 이들 AP는 이더넷과 같은 유선 네트
워크에 연결
▻ 자유롭게 이동하는 노드들이 배급 시스템을 통해 다른 노드 또는 다른 네트워크와 통신
▪ 프레임 형식 → 제어 필드, 지속시간, 주소1~주소4, 순서제어, 몸통, CRC
❒ 네트워크 계층 프로토콜: IP
• 기본적으로 패킷의 시발점과 목적지 간의 전송을 위한 프로토콜
• IP 주소 → 인터넷의 각 호스트를 구별하기 위해 부여된 고유의 숫자로 된 식별자
▪ IP 주소 클래스(A~E) (☞ 교재 316쪽)
▪ 서브넷 → 클래스가 표현하는 개별 네트워크 개수의 부족을 해결하기 위해서, 예를 들어
클래스 B의 호스트 식별자의 첫 바이트를 서브넷 식별자로 지정하여 하나의 클래스 B 네트
워크를 256개의 클래스 C 주소로 쪼개는 것. 따라서 한 기관의 클래스 B의 65,536개의 호스
트 범위를 전부 사용할 것이 아니라면 서브넷으로 쪼갠 클래스 C 주소를 필요한 만큼 주는
방식
▪ IP 데이터그램(=“패킷”) 형식 (☞ 교재 318쪽 그림)
▪ IP 라우팅 → 복잡한 그물망 사이로 각 라우터가 가지고 있는 라우팅 표를 사용해
서 라우터에 도착한 데이터그램을 수신 주소 방향으로 보내주는 역할
❒ 전송 계층 프로토콜: TCP
• 종류
▪ TCP(Transmission Control Protocol) → 송신측 호스트로부터 수신측 호스트까지 신뢰성
있게 순서대로 나열된 정보 전달을 담당
▪ UDP(User Datagram Protocol) → 적은 양의 정보를 데이터그램 방식으로 보내주는데 신
뢰성이나 정확성에 대한 보장은 없다.
• TCP 기능 → 신뢰성 있는 연결 지향성 데이터 전송을 지원
▪ 송신자와 수신자 사이에 메시지 수신에 대한 확인 절차가 존재
▪ 세그먼트들을 다시 원래의 순서대로 복원하는 기능
▪ 어떤 경우에는 IP 계층에서 중복 생성되어 전달된 세그먼트를 제거하는 기능
▪ 흐름 제어 서비스 제공
▻ 흐름 제어란 수신자 측이 처리하기 벅찰 정도로 빨리 보내는 것을 삼가는 것
• TCP 세그먼트 형식 (☞ 교재 322쪽 그림)
▪ 포트(port) → 하나의 호스트에는 수많은 프로세스가 돌아가고 있기 때문에 호스트
의 IP 주소만을 가지고는 시발점과 목적지를 제대로 지칭할 수 없음을 해결하기 위
해 도입한 개념
▻ 포트가 16비트라면 최대 216개의 포트가 하나의 호스트 주소마다 존재
▻ TCP에서는 연결 시 호스트 주소와 포트 주소가 항상 쌍을 이루어 사용
• TCP의 연결 생성과 해제
▪ 최초 연결 생성 절차 (3단계 핸드셰이크 사용)

- 82 -
(1) 송신자 → SYN → 수신자
(2) 송신자 ← SYN/ACK ← 수신자
(3) 송신자 → ACK → 수신자
(4) 데이터 전송
▪ 연결 해제 절차
(1) 데이터 전송
(2) 송신자 → FIN → 수신자
(3) 송신자 ← ACK ← 수신자
(4) 송신자 ← FIN ← 수신자
(5) 송신자 → ACK → 수신자
❒ 응용 계층 프로토콜
• 인터넷 응용 프로그램들은 모두 표준화된 프로토콜을 준수하고, 이런 표준화된 프로토
콜은 전용 포트 번호를 할당받아 사용한다.
• 대표적인 종류 → ICMP, FTP, HTTP, Telnet, SSH, SMTP, DHCP (☞ 객관식 14번)
❒ 도메인 이름 시스템(DNS, Domain Name System)
• 도메인 이름 → 일반 문자열로 된 호스트 주소
• 도메인 이름 시스템 → 계층적으로 구성된 이름-주소 변환 시스템
▣ 네트워크 시스템의 운용
❒ 성능 평가 척도 → 처리율, 지연시간, 파워 (☞ 객관식 17번)
❒ 라우팅 → 패킷을 수신 주소에 따라 어디로 보내야 하는지가 표로 정해져 있고, 이에
따라 목적지 방향으로 단순히 전달하는 기능, 따라서 엄밀한 의미에서는 “포워딩”이다.
• 동적으로 표를 작성하는 방법 → 거리 벡터, 링크 상태
❒ 혼잡 제어(congestion) → 특정 라우터에 동시에 너무 많은 패킷이 쇄도하여 대기행렬의
용량을 초과하는 현상
• 혼잡 제어는 각 라우터의 자원(대역폭, 대기행렬)의 할당 문제와 밀접한 관련
• 일반적 혼잡 제어 방식 → 덧셈식 증가/곱셈식 감소, 느린 시작, 빠른 재전송
▣ 컴퓨터 네트워크의 이론적 측면
❒ 정보 이론(information theory) → 1948, 클로드 새넌, “통신의 수학적 이론”
• 확률, 불확실성, 정보 간의 상관관계를 수학적으로 정량화한 이론 → 최적 코딩, 프로
토콜 디자인, 네트워크의 성능 평가 등에 널리 사용
❒ 불확실성 → 통신 채널을 통해서 어떤 심벌이 최초로 도착하는 지 알 수 없는 것
• 통신 채널을 하나의 확률변수로 취급
• 통신 채널을 물리적인 장치이므로 여러 요인에 의해 영향을 받을 수 있다.
❒ 불확실성과 정보의 관계 → 정보가 많으면 불확실성이 줄어들기 때문에, 불확실성이 줄어
든 만큼을 정보의 양으로 정의 가능
❒ 불확실성과 확률 → 확률이 높으면 불확실성이 낮고, 확률이 낮으면 불확실성이 높다
❒ 불확실성의 정량화: 엔트로피
• 임의의 심벌 V에 대한 불확실도 척도 → 불확실도(V) = -log2(P(V))
▪ P(A)=(X=A) → 채널 X에 심벌 A가 전송되어 올 확률
• 엔트로피 H(X) → 불확실도 척도를 사용해서 계산된 채널 전체의 평균 불확실도
▪ 하나의 통신 채널 X를 통해 심벌 A와 B를 받는 경우, 이 채널 전체의 불확실성은

- 83 -
얼마인가? → H(X) = -P(A)×log2(P(A)-P(B)×log2(P(B))
❒ 조건부 엔트로피 H(X|Y), 상호 정보 I(X;Y)
• 조건부 엔트로피: 채널 Y를 관측해 채널 X에 대해서 얻은 정보를 제외하고 채널 X에
남아 있는 불확실성
▪ H(X|Y) = H(X, Y) - H(Y)
• 상호 정보: 채널 X와 Y가 긴밀한 관계를 가지는 경우 채널 Y만 관측해 채널 X에 대한
불확실성이 줄어든 정도
▪ I(X;Y) = H(X)+H(Y)-H(X,Y) = H(X)-H(X|Y) = H(Y)-H(Y|X) = H(Y)+H(X)-H(Y,X) = I(Y;X)
❒ 최신 동향과 고급 주제
• 피어-투-피어 네트워크 → 서버/클라이언트 관계없이 동등한 쌍방 간에 직접 통신
• 네트워크 코딩 → 수신한 패킷들을 수학적 함수 등을 적용해 조합(코딩) 또는 분해(디
코딩)하는 일련의 과정을 거쳐 네트워크 성능을 향상시키는 방법
• 클라우드 컴퓨팅 → 응용 프로그램의 상용, 데이터 저장 및 사용 등이 네트워크에 널
리 분산된 다양한 시스템에서 수행되고, 웹 브라우저와 같은 간단한 도구를 사용해 이
런 서비스를 언제 어디서든지 접근 가능한 개념
▪ 서비스나 정보가 지리적으로 어디에 위치하고 있는 지 일반 사용자에게는 명확하게 알려지
지 않는 특징을 갖는다.
• 네트워크 보안
▪ 인터넷 웜(worm) → 최초로 인터넷 네트워크 보안의 중요성을 환기시키는 계기
▻ 1988년, 이메일 서버와 원격 셸/원격 수행 등의 서비스와 취약한 로그인 암호 등의 허점
을 이용해서 감염된 호스트에서 다른 취약 호스트로 급격히 전파되고, 컴퓨터의 성능이
저하되고 멈추어 버렸음.
▻ 이를 계기로 미국 국방부가 CERT/CC(컴퓨터 응급상황 대처 팀 조율 센터) 설립
▪ 분산 서비스 거부 공격과 봇넷
▻ 봇넷(Robot Network의 준말): 시스템의 취약성 또는 피싱 등을 이용해 일반 사용자의 컴
퓨터를 감염시켜, 이런 감염 컴퓨터를 수만 대까지 거느리고 통제하는 것
▻ DDos(Distributed Denial-of-Service) 공격: 표적 시스템을 정하고 봇넷의 모든 컴퓨터가 일
시에 표적 시스템에 엄청나게 많은 양의 서비스를 요청하게 하여 표적 시스템을 마비시
켜 합법적이고 정상적인 사용자가 서비스를 거부당하게 하는 것
• 보안 강화 방책
▪ 방화벽(firewall) → 기관의 내부 네트워크의 외부에서의 접근을 차단하고 내부에서 외부로
의 접근은 허용
▪ VPN(Virtual Private Network, 가상 사설망) → 직접 연결되지 않은 네트워크를 하나의
독립된 보안 유지된 가상의 네트워크로 만들어줌으로써, 방화벽 외부에서 합법적으로 방화
벽 내부의 호스트를 접근할 수 있도록 함
▪ TCP 래퍼(wrapper) → 현 호스트에서 돌아가고 있는 각종 서비스에 접근 가능한 IP나 IP
범위를 제한할 수 있는 서비스
▪ SSH(Secure SHell) → Telnet의 보안 취약성을 보완하기 위해서 등장, 공개키 암호화를 사
용해서 모든 정보를 암호화하여 송수신
▪ SSL(Secure Socket Layer) → 웹 보안 취약성을 보완, 웹 메일이나 기타 웹 서비스에 로
그인 등에 필요한 모든 정보를 암호화하여 전송

- 84 -
▪ 허니팟(honey pot) → 일부러 수많은 취약성을 가진 시스템을 만들고 네트워크에 연결해
서 침입자를 유인하는 방법
❒ 네트워크 과학 → 일반적인 네트워크 전반에 걸친 현상을 연구하는 분야
• neural network, gene regulation network, social network 등

7.2 문제 풀이 및 해설
▣ 객관식 문제
1. 패킷 교환 네트워크로 현재 인터넷의 전신이 된 네트워크는?
① ARPANet ② BITNET ③ NSFNET ④ Ethernet

[정답/해설] ①
 ARPANet, 1960년대 → 패킷 교환 네트워크, 인터넷의 전신, 1973년 TCP/IP 프로토콜 적용
 Ethernet, 1970년대 → 컴퓨터간의 하드웨어 수준의 연결을 가능하게 해주는 인터페이스
장치, 1980년대부터 네트워크 하드웨어의 실질적 표준 ← ALOHANet으로부터 영향 받음
 BITNET, 1980년대 → 미국 대학 간의 연결을 위한 네트워크, 전송 시 이메일이나 파일 단
위로 서버에서 서버로 통째로 전송되는 방식을 채택
 NSFNET, 1980년대 → 미국 국립과학재단이 대학 간의 컴퓨터 통신을 위해 구축, TCP/IP
프로토콜 채용
2. OSI 모델의 계층에서 ⓑ에 들어가는 계층은?

응용계층- (ⓐ) - (ⓑ) - (ⓒ) - (ⓓ) - (ⓔ) - 물리계층

① 네트워크계층 ② 표현계층 ③ 전송계층 ④ 세션계층

[정답/해설] ④, 응용계층-(표현계층)-(세션 계층)-(전송계층)-(네트워크계층)-(데이터링크계층)-


물리계층

3. OSI 모델에서 전체 메시지를 패킷 단위로 분할하거나, 패킷들의 순서를 조정해서 전체


메시지를 재생성하는 등의 출발지와 목적지 간의 전체 메시지 전송을 담당하는 계층은?
① 전송 계층 ② 데이터 링크 계층
③ 네트워크 계층 ④ 세션 계층

[정답/해설] ①
 응용 계층 → 사용자나 응용 프로그램 사이에서 통신을 위한 서비스 제공
▪ HTTP, FTP, SMTP 등의 응용 프로토콜의 기능을 지원
 표현 계층 → 데이터가 어떻게 표현되었는지에 무관하게 잘 작동할 수 있도록 해줌
▪ 응용 계층 간에 전송하는 데이터를 표현함에 있어서 의미에 따른 구문의 차이를 해소하기 위해
데이터의 변환, 데이터 압축 및 암호화 등의 기능을 제공 → 인터넷에서는 표현 계층이 따로 없
이 개별 응용 프로그램 수준에서 표현과 관련된 문제를 직접 처리
 세션 계층 → 두 시스템 간의 통신을 위한 대화를 제어하는 기능 → 사용자 위주의 논리
적인 연결 서비스를 제공
▪ 통신 시스템 간의 상호 대화가 질서 있게 이루어질 수 있도록 설정 및 유지하고 동기화함

- 85 -
 전송 계층 → 송신측에서 수신측까지의 전체 메시지 전달 기능, 오류 제어 및 흐름 제어
기능을 제공. 메시지가 전달될 때에는 순번을 가진 세그먼트 단위로 분할되고 수신측에 도착하면
재조립 → 전체 메시지가 올바른 순서대로 도착하는 것을 보장
 네트워크 계층 → 패킷을 송신측으로부터 여러 네트워크를 통하여 수신측까지 전달 →
패킷 단위의 전송이 본격적으로 이루어지는 계층
▪ 패킷이 수신측에 전달될 수 있도록 경로를 지정하는 라우팅 기능과 혼잡 제어 기능 제공
 데이터링크 계층 → 직접 연결된 두 컴퓨터간에 프레임을 전송 단위로 통신을 수행
▪ 전송 시 프레임의 시작과 끝, 수신자 주소 등이 추가되고 전송 시 오류를 발견하고 수정하는 기
능과 흐름 제어 기능을 제공, 대표적 프로토콜 → 이더넷, 와이파이
 물리 계층 → 물리적으로 연결된 매체를 통해 비트 단위로 전송이 이루어지는 계층

4. OSI 7 계층 구조의 기능 중에서 다음과 같은 기능을 담당하는 계층은 무엇인가?

데이터 표현 형식의 변환, 데이터 압축, 데이터 암호화

① 데이터 링크 계층 ② 응용 계층
③ 세션 계층 ④ 표현 계층

[정답/해설] ④

5. OSI 모델의 네트워크 계층에서 취급되는 데이터 단위이며, 일반적으로 인터넷에서의 전


송 단위로 사용되는 것은?
① 패킷 ② 프레임 ③ Bps ④ 비트

[정답/해설] ①

6. 다음과 같은 특징을 가지고 있는 LAN의 위상 구조는 어느 것인가?

- 하나의 공용 회선을 사용하므로 구조가 간단하고 융통성이 있음


- 단말 장치의 증설이나 삭제용이
- 메시지가 모든 노드에게 전달 (브로드캐스팅)
- 메시지 전달 속도가 빠름

① 환형 ② 링형 ③ 성(star)형 ④ 버스형

[정답/해설] ④
 버스형 → 하나의 통신 회선(“버스”)에 여러 대의 노드를 연결한 형태
 성형(별형) → 중앙의 제어 노드(“호스트”)에서 다른 모든 노드들을 점대점 방식으로 연결
한 형태
 링형(환형) → 원형의 형태로 인접한 두 개의 노드를 점대점 방식으로 연결
 트리형 → 원점에서 한 개 이상의 가지로 뻗어 나가는 구조
 매시형 → 주 컴퓨터의 중계 없이 직접 노드들 간의 통신 가능하도록 구성된 형태로 통
신의 신뢰도가 중요시되는 구성 방식

- 86 -
7. 다음과 같은 특징을 갖는 LAN의 위상 구조는 어느 것인가?

- 중앙의 제어 노드에 다른 모든 노드들을 점대점 방식으로 연결


- 중앙 집중식 구조로 유지보수 및 전송 제어가 용이
- WiFi 액세스 포인트로 구성된 네트워크가 대표적인 예

① 버스형 ② 환형 ③ 성형 ④ 트리형

[정답/해설] ③

8. 중앙의 제어노드에 다른 모든 노드들을 점대점 방식으로 연결한 중앙집중식 구조를 띠고


있어 유지보수가 쉽고 전송제어가 간단한 회선망의 유형은?
① 버스형 ② 성형 ③ 매시형 ④ 트리형

[정답/해설] ②, 중앙의 제어 노드에 문제가 생기면 네트워크 전체를 사용하지 못함

9. 다음은 무엇에 대한 설명인가?

송신측 노드에서 전송할 것을 받아 적절한 회선이 빌 때까지


저장하였다가 그대로 다음 노드로 전송하는 방식
- 축적 교환 방식의 사용으로 데이터 지연 시간이 발생

① 메시지 교환망 ② 패킷 교환망


③ 회선 교환망 ④ 데이터 교환망

[정답/해설] ①
• 회선 교환 방식 → 송신측과 수신측 사이에 회선 설정, 데이터 전송, 회선 해제의 단계를
거치는 통신망
▪ 일단 회선이 연결되면 연결된 회선을 전용선처럼 사용 → 예: 일반 전화
• 메시지 교환 방식 → 송신측 노드에서 메시지를 받아 적절한 회선이 빌 때까지 저장하였
다가 한 단계씩 중간 단계의 스위치를 거쳐서 메시지의 길이 그대로 다음 노드로 전송하
는 방식
▪ 대기행렬(큐)을 사용한 축적교환(store and forward) 방식의 사용으로 인해 데이터 지연 시간이
발생 → 음성이나 대화식 통신과 같은 실시간 데이터 전송에 부적합
• 패킷 교환 방식 → 회선 교환 방식과 메시지 교환 방식의 장점을 결합한 전송망
▪ 메시지 전체가 아니라 “패킷”(메시지를 일정한 크기로 분할한 단위) 단위로 전송
▪ 종류 → 가상회선(virtual circuit) 방식, 데이터그램(datagram) 방식
▪ 패킷 교환 방식의 대표적 네트워크 → 인터넷

10. 회선 교환망과 메시지 교환망의 장점을 결합한 전송망에서는 데이터 전체가 아니라 송
신측주소와 수신측주소를 포함하는 일정형식의 데이터 블록을 기본단위로 통신이 이루
진다. 이와 같은 통신의 기본 단위를 무엇이라고 하는가?
① 패킷 ② 블록 ③ 코드 ④ 데이터그램

- 87 -
[정답/해설] ①

11. IPv6에 대한 설명으로 올바른 것은?


① 32비트의 주소를 4개의 필드로 구분한다.
② 호스트 식별자와 네트워크 식별자의 비트 수와 역할에 따라 5개의 클래스로 구분된다.
③ 네트워크 규모와 단말기 수에 따라 순차적으로 주소를 할당한다.
④ 각 필드를 10진수로 표현한다.

[정답/해설] ③, 보기 ①, ②, ④의 설명은 모두 IPv4에 해당한다.

IPv4 IPv6
주소 길이 32 비트 128 비트
8비트씩×4개 필드 16비트씩×8개 필드
표현 방법
각 필드: 10진수 표현 각 필드: 16진수 표현
주소 개수 약 43억 개 약 3.42×1038개
네트워크 규모 및 단말기 수에
주소 할당 클래스 단위의 비순차적 할당
따른 순차적 할당

12. OSI 계층 모델의 네트워크 계층에서 동작하는 장비로서, 송신측과 수신측 간의 가장 빠


르고 신뢰성 있는 경로를 설정 관리하며, 데이터를 전달하는 역할을 기본적으로 담당하
는 것은?
① 라우터 ② 스위치 ③ 브리지 ④ 게이트웨이

[정답/해설] ①
 리피터(repeater) → 송신측의 원래 비트 형태를 재생하여 수신측의 좀 더 가까운 지점을
전송
▻ 네트워크의 물리적인 길이를 확장하는 역할, 통신 기능에는 전혀 영향을 미치지 않음
 브리지(bridge) → 수신한 데이터 형식이나 내용 변화 없이 네트워크를 연결
▻ 리피터처럼 신호를 재생하고 수신측 주소의 검사를 통해 목적지가 속해 있는 세그먼트로만 재
생된 신호를 전송
 스위치(switch) → 서로 다른 속도의 다수 개의 포토를 제공하여 H/W로 데이터를 처리
 라우터(router) → 최적의 경로를 설정하고 관리하여 데이터를 전송하는 역할
▻ 패킷이 지나가야 할 경로를 저장하여 지정된 경로를 통해 전송
 게이트웨이(gateway) → 사용하는 매체나 각종 프로토콜이 일치하지 않는 서로 다른 구
조의 네트워크를 연결

13. 네트워크와 네트워크 간의 연결에 사용되는 장비가 아닌 것은?


① 브리지 ② 스위치 ③ 리피터 ④ 호스트

[정답/해설] ④, 호스트는 네트워크에 연결된 컴퓨터를 말한다.

- 88 -
14. 다음 중 인터넷 응용 계층 프로토콜이 아닌 것은?
① FTP ② HTTP ③ UDP ④ SSH

[정답/해설] ③
 ICMP(Internet Control Message Protocol) → 전송 오류에 관한 메시지를 전달하는 데 사용,
IP 수준에서 작동
 FTP(File Transfer Protocol) → 파일 전송에 사용
 HTTP(HyperText Transfer Protocol) → 웹 서버와 웹 브라우저 간의 통신에 사용
 Telnet → 원격 시스템의 텍스트 기반의 인터페이스에 접속하기 위한 프로토콜
 SSH(Secure SHell) → 호스트 컴퓨터에 안전하게 보안을 유지하며 접속하기 위한 프로토콜
 SMTP(Simple Mail Transfer Protocol) → 인터넷 이메일의 전송을 위한 프로토콜
 DHCP(Dynamic Host Configuration Protocol) → 인터넷 IP 주소의 동적 할당에 사용

15. 인터넷의 응용 계층 프로토콜 중에서 호스트 컴퓨터에 안전하게 보안을 유지하며 접속


하기 위한 프로토콜은?
① DHCP ② SSH ③ SMTP ④ HTTP

[정답/해설] ②

16. TCP에서 최초 연결 생성시의 3-단계 핸드셰이크의 올바른 순서는?


① SYN, ACK, FIN ② SYN, SYN/ACK, ACK
③ ACK, SYN, ACK ④ PSH, ACK, SYN/ACK

[정답/해설] ②
3-단계 핸드셰이크를 사용한 최소 연결 생성 절차는 다음과 같다.
(1) 송신자 → SYN → 수신자
(2) 송신자 ← SYN/ACK ← 수신자
(3) 송신자 → ACK → 수신자
(4) 데이터 전송

17. 네트워크의 성능 평가에 사용하는 척도가 아닌 것은?


① 처리율 ② 지연 시간 ③ 최초 기동 시간 ④ 파워

[정답/해설] ③
 처리율(throughput): 단위 시간당 전송량 → 처리율 = 처리량 / 처리시간
▪ 처리시간 = 왕복시간 + 1/대역폭 × 처리량
 지연시간(latency): 시발점에서 도착점까지 걸리는 시간
▪ 지연시간 = 이동시간 + 전송처리시간 + 대기시간
▻ 이동시간 = 거리 / 빛의 속도
▻ 전송처리시간 = 데이터 양 / 대역폭
▻ 대기시간 = 중간 노드의 대기행렬에서 머무는 시간

- 89 -
 파워(power = 처리율 / 지연시간) → 처리율을 사용하는 성능 수치로서, 선로 대역폭과
대기행렬 등의 할당 방법을 결정하는 데 사용

18. 정보에 관한 올바른 설명은?


① 정보량은 확률이 높을수록 높다.
② 정보량은 확률이 낮을수록 높다.
③ 정보량은 높은 불확실성 상태에서 낮은 불확실성 상태로 이행 시에 줄어든 불확실성의
양에 해당한다.
④ 정보량은 낮은 불확실성 상태에서 높은 불확실성 상태로 이행 시에 늘어난 불확실성의
양에 해당한다.

[정답/해설] ③, 정보의 양이란 정보가 많으면 불확실성이 줄어들기 때문에 불확실성이 줄어


든 만큼으로 정의한다.

19. 피어-투-피어 네트워크의 반대 개념은?


① 센서 네트워크 ② 소셜 네트워크
③ 클라이언트-서버 방식 ④ 네트워크 코딩

[정답/해설] ③, 클라이언트-서버 방식은 서비스를 제공하는 서버와 거기에 접속하는 클라이


언트 구조로 되어 있다. 그러나 피어-투-피어방식에서는 서버와 클라이언트 구분이 없이 사
용자 쌍방 간에 통신을 주고받는 것이다. 네트워크 코딩은 수신한 패킷들을 수학적인 함수
와 같은 것을 사용해 조합, 분해 하는 일련의 과정을 통해 네트워크의 성능을 향상시키는
방법이다.

20. 봇넷과 직접적으로 관계가 있는 것은?


① 인터넷 웜 ② 버퍼 오버런
③ 분산 서비스 거부 공격 ④ 방화벽

[정답/해설] ③, 봇넷은 분산 서비스 거부 공격(Distributed denial-of-service [DDoS] attack)


의 주축으로 인터넷 웜처럼 운영체제나 응용 프로그램의 취약성, 또는 피싱 등을 사용해 일
반 사용자의 컴퓨터를 감염시켜서 이런 감염된 컴퓨터들을 수천 대에서 수만 대까지 거느
리고 통제하는 것을 의미한다. 범죄적으로 작동하는 봇넷은 표적이 되는 시스템들을 일시에
서비스를 요청하고 표적 시스템은 부하를 견디지 못하고 멈추게 된다.

▣ 교재 주관식 문제
1. 이더넷과 와이파이는 둘 다 하나의 전송매체를 여러 개의 노드가 공유한다. 이 때, 여러
대의 노드가 동시에 전송하려고 할 때 충돌이 일어나는데 이더넷과 와이파이는 충돌에
어떻게 다른 방식으로 대처하는가?
[정답/해설] 이더넷의 경우 충돌이 감지되면 충돌을 일으킨 노드들이 무작위로 대기시간 간
격을 선정하고 그 간격만큼 기다렸다가 재전송을 시도한다.
와이파이의 경우 충돌을 감지하는 소극적인 방식이 아닌 충돌을 미연에 방지하는 적극적인

- 90 -
방식을 사용한다. 충돌 방지는 전송 의사 발송과 전송 권한 선점을 통해 이루어진다.

2. 와이파이의 프레임에 주소 필드가 송신주소/수신주소의 두개가 아닌 네 개가 들어있는


이유를 설명하시오.
[정답/해설] 와이파이 주소 중 첫 번째 것은 항상 최종 목적지 주소를 가진다.
나머지 3개의 주소는 아래와 같이 사용될 수 있다.
 주소2: 송신자 주소
 주소2, 주소 3: 중간 단계 AP주소; 주소 4: 최초 전송자 주소

3. IP 주소와 이더넷 주소를 짝 맞추기 위해서 사용하는 프로토콜은 무엇인가? 이런 프로토


콜이 필요한 이유는 무엇인가?
[정답/해설] ARP(address resolution protocol)이 쓰이고, IP 주소가 주어졌을 때 실제 물리적
주소로 전송하기 위해 필요하다.

4. IP 주소에서 서브네팅을 하는 이유를 설명하시오.


[정답/해설] 상위 클래스의 경우 네트워크 식별자가 짧아서 지정할 수 있는 네트워크의 개
수가 지극히 한정되어 있다. 하지만 네트워크를 지정 받은 기관이나 단체가 해당 네트워크
에 할당된 수많은 호스트(A클래스의 경우 1,600만개, B 클래스의 경우 16,384개나 된다)를
다 사용하지 못하는 경우가 많다. 이 경우 호스트 식별자의 처음 일부분을 서브넷 식별자로
활용하면 더욱 많은 기관이나 단체에 고유의 네트워크를 공급할 수 있다.

5. IP 라우팅 시에 IP 주소의 네트워크 식별자가 유용하게 쓰일 수 있는 이유를 설명하시오.


(힌트: 라우팅 표의 크기와 상관이 있다).
[정답/해설] 목적지 네트워크 내의 불특정 호스트로 가는 길을 단 한 줄로 표현할 수 있다.
따라서 라우팅 표의 크기를 크게 줄일 수 있다.

6. TCP에서 순서 번호가 필요한 이유는 무엇인가?


[정답/해설] TCP는 전송 계층의 프로토콜이므로 긴 메시지를 구성하는 각 패킷이 최종적으
로 애초에 보내진 순서에 따라 재조합되어야 한다. 이를 위해서 순서번호가 필요하다.

7. TCP에서 포트를 지정해야 하는 이유는 무엇인가?


[정답/해설] 한 호스트에 여러 개의 네트워크 관련 프로그램들이 수행되고 있으므로 이들의
접근 통로를 구분하기 위해 포트가 필요하다.

8. 두 가지 기본적인 라우팅 방법은 무엇인가?


[정답/해설]
 거리 벡터 방식: 인근 노드가 계산한 다른 모든 노드까지의 거리(비용)에 대한 정보를 받아서 자
기의 라우팅 표를 수정
 링크 상태 방식 : 모든 다른 노드가 수집한 인근 노드로 가는 링크의 상태(연결/단절) 정보를 받
아서 최적 경로를 탐

- 91 -
9. 라우팅과 혼잡 제어의 차이는 무엇인가?
[정답/해설]
 라우팅은 네트워크 상황이 변함에 따라 라우팅 표를 동적으로 변화시켜서 성능을 향상
시킨다. 패킷이 이동하는 경로를 변경시키는 것이 기본적인 라우팅 방식이다.
 혼잡 제어는 특정 라우터에 패킷이 단 시간 내에 갑자기 몰려들어 대기행렬이 넘쳐서
패킷을 버려야하는 혼잡 현상을 막는 것이 주목적이다. 패킷 전송 속도를 변경하거나 재
전송 방식을 변경하는 것이 주요한 혼잡 제어 기법이다.

10. 혼잡 제어와 흐름 제어의 차이는 무엇인가?


[정답/해설] 흐름 제어는 송신자와 최종 수신자 둘 사이에서만 이루어지지만, 혼잡제어의 경
우 경로 상의 여러 다른 노드가 연루된다.

11. 혼잡 제어와 자원 할당은 왜 연관되어 있는가?


[정답/해설] 혼잡 제어에서 대기행렬의 크기와 같은 각 노드별 자원과 자원의 활용도가 중
요한 문제로 등장한다. 따라서 자원 할당이 중요한 역할을 한다.

12. 어떤 통신 채널 X가 있어서 메시지 A와 B를 각각 0.8과 0.2의 확률로 전송할 때 이 채


널의 엔트로피 H(X)가 얼마인지 계산하시오.
[정답/해설] H(X) = -0.8×log20.8–0.2log20.2=0.72193

13. 조건부 엔트로피 H(X|Y)=H(X, Y)–H(Y)와 상호 정보 I(X; Y)=H(X)+H(Y)-H(X, Y)로부터 다


음의 두 등식이 성립함을 보이시오.
(1) I(X; Y) = H(X)-H(X|Y)
(2) I(X; Y) = H(Y)-H(Y|X)
[정답/해설]
(1) I(X; Y) = H(X) + H(Y) – H(X, Y)
= H(X) – (–H(Y) + H(X, Y) )
= H(X) – (H(X, Y)–H(Y))
= H(X) – H(X|Y)

(2) I(X; Y) = H(X) + H(Y) – H(X, Y)


= H(Y) + H(X) – H(X, Y)
= H(Y) – (–H(X) + H(X, Y) )
= H(Y) – (H(X, Y)–H(X))
= H(Y) – (H(Y, X)–H(X))
= H(Y) – H(Y|X)

14. 두개의 채널 X와 Y가 있을 때 대역폭의 낭비가 있는지 정보 이론을 사용해 검사하는 방


법을 설명하시오.
[정답/해설] I(X; Y)를 계산하여 큰 값이 나오면 낭비가 심한 것으로 판정하면 된다.

- 92 -
15. 7.8절 예제 2의 예 1에서 I(X; Y)를 직접 계산해보시오. 아래의 연합 엔트로피 식을 활용
하시오.
            × log    
 ∈

[정답/해설]
우선 확률 P(X, Y)를 (X, Y)의 모든 경우에 대해 구한다.(교재 337쪽과 동일).
X Y P(X, Y)
0 0 4/10 = 0.4
0 1 1/10 = 0.1
1 0 1/10 = 0.1
1 1 4/10 = 0.4
다음으로 연합 엔트로피 H(X, Y)를 구한다.
H(X, Y) = – 0.4×log20.4–0.1×log20.1–0.1×log20.1–0.4×log20.4 = 1.7219

16. 네트워크 코딩을 사용하는 라우터와 일반 라우터의 차이는 무엇인가?


[정답/해설] 일반 라우터의 경우 수신한 데이터에 아무런 추가 연산 없이 그래도 목적지를
향해 전송한다. 네트워크 코딩을 사용하는 라우터는 패킷들을 수학적 함수를 사용해서 조합
하거나 분해해서 전송해야 하는 메시지의 개수를 효과적으로 줄인다.

17. DDoS에서 봇넷이 서버에 보내는 요청과 일반 사용자가 보내는 요청은 그 요청의 형식
이나 합법성만 놓고 보면 같은가 다른가?
[정답/해설] 같다.

18. Telnet이 보안에 취약한 이유를 설명하시오.


[정답/해설] Telnet의 경우 로그인 아이디, 계정 번호, 로그인 암호들을 아무런 암호화 없이
그대로 전송하기 때문에 이런 정보가 지나가는 경로에 있는 불특정 호스트에서 여과 없이
불법적으로 탈취되기가 쉽다.

19. 허니팟은 주로 어떤 보안 공격을 감지하기 위해 사용하는가?


[정답/해설] 허니팟은 봇넷과 같은 자동화된 대규모 침투 방식을 감지하는데 유효하다.

제8장 인공지능
8.1 교재 내용 요약
▣ 인공지능(AI, Artificial Intelligence)의 개요
❒ 인공지능이란? 인간/동물이 가진 지능을 어떻게 컴퓨터에 구현할 것인가에 관한 분야
• 1956, 존 메카시가 주최한 “다트머스 하계 인공지능 연구 학회”에서 유래
• 인공지능은 학제간적 학문 분야 → 다양한 학문 분야에 의해 영향을 주고받는다.
❒ 튜링 테스트 → 인공지능의 성공 여부를 판단하는 방법 → 지능의 존재 여부를 외부에
나타난 행동을 가지고 판단, 하지만 인간 의식과 같은 주관적 현상은 설명하지 못함
❒ 인공지능에 대한 두 가지 입장
• 약한(weak) 인공 지능 → 개체 내부의 주관적인 현상에 대해서는 관심이 없으며, 오직
시스템이 실생활에 유용한 행동을 할 수 있는지에 초점을 맞춤

- 93 -
• 강한(strong) 인공 지능 → 외면적으로 인간과 비슷한 수준의 지능을 가진 것처럼 행동
하는 인공지능 시스템은 실제로도 내부적인 이해를 가지고 있다고 인정해야 하고, 이
런 시스템을 만드는 것이 궁극적인 목표라는 관점
▣ 탐색을 활용한 인공지능
❒ 상태 공간 탐색
• 인공지능에서 접하는 많은 문제는 상태 공간 탐색의 형태로 표현
▪ 기본 아이디어 → 주어진 시작 상태로부터 목적 상태에 도달할 때까지 어떤 연산자
를 순서대로 적용해서 한 상태에서 다른 상태로 이동한다.
• 탐색 문제의 4가지 구성 요소 → 상태 공간, 연산자의 집합, 초기 상태, 하나 이상의
목적 상태 또는 목적 상태 검토 함수
❒ 도메인 지식의 사용 여부에 따른 탐색 방법의 분류
• 지식 미사용 탐색(uninformed search) → 문제 자체의 정의만 제공되고 문제 분야의
사전 지식이 없음, 따라서 순차적이고 체계적인 방법만 가능
• 지식 사용 탐색(informed search) → 문제 정의와 사전 지식이 있는 경우로서, 휴리스
틱 함수를 사용
▪ 휴리스틱(heuristic) 함수 → 주어진 임의의 상태에서 목적 상태까지 도달하는 데 드는 비용
을 예측하는 평가 함수
❒ 여러 가지 탐색 알고리즘
• 기본 탐색 알고리즘 → 노드 리스트에 노드를 삽입하는 방식에 따라 다양한 특성/성능
을 가진 탐색 알고리즘의 구현이 가능

입력 = 탐색 문제, 리스트 삽입 방식
출력 = 결과 상태, 연산자의 리스트
(1) 노드 리스트 초기화
(2) 노드 리스트에 탐색 문제에 주어진 초기 상태 삽입
(3) 노드 리스트가 비어 버리거나 목적 상태가 발견될 때까지 반복
(a) 노드 리스트가 비어 있으면 해가 없음을 출력, 알고리즘 종료
(b) 노드 리스트의 가장 앞에서 노드 하나 추출
(c) 추출한 노드가 목적 상태이면 현재까지 적용한 연산자의 리스트를 출력하
고 알고리즘 종료
(d) 추출한 노드가 목적 상태가 아니면 그 노드에 적용 가능한 모든 연산자를
적용하고 결과로 나온 노드들을 노드 리스트에 삽입

• 지식 미사용 탐색 알고리즘
▪ 깊이 우선 탐색(depth-first search, DFS) → 리스트의 가장 앞에 새 노드 삽입, 가장 최
근에 삽입한 것들을 다음 순번에 우선적으로 탐색 → 스택 사용
▪ 너비 우선 탐색(breadth-first search, BFS) → 리스트의 가장 끝에 새 노드 삽입, 가장
오래된 것들을 다음 순번에 우선적으로 탐색 → 큐 사용
▪ 깊이 제한 탐색(depth-limited search, DLS) → DFS와 동일, 사전에 지정된 제한 깊이까
지만 탐색
▪ 반복 심화 탐색(iterative deepening search, IDS) → 깊이 제한 탐색의 깊이 제한을 1,
2, 3, …으로 늘려가면서 반복

- 94 -
• 지식 사용 탐색 알고리즘
▪ 최선 우선 탐색(best-first search) → 새 노드를 노드 리스트에 삽입, 평가 함수의 평가치
를 기준으로 노드 리스트를 정렬
▪ 탐욕스러운 탐색(greedy best-first search) → 평가 함수를 휴리스틱 함수 h(n)으로 지정
하고 최선 우선 탐색을 수행
▪ A-star 탐색(A-star search) → f(n)=g(n)+h(n)을 사용해서 최선 우선 탐색 수행
▻ g(n): 초기 상태에서 현재 상태까지 오는 데 든 비용, h(n): 현 상태의 휴리스틱 함수 값
▪ 반복 심화 A-star 탐색(iterative deepening A-star search, IDA-star) → 평가 함수는
A-star와 같은 f(n)을 사용, IDS와 유사하게 깊이 제한을 조금씩 늘려가며 DFS 반복
• 탐색 알고리즘의 평가 척도
▪ 완전성(completeness) → 해가 있다면 항상 그 해를 찾을 수 있는가?
▪ 최적성(optimality) → 여러 개의 해가 있을 때 항상 최적해를 찾는가?
▪ 시간 복잡도(time complexity) → 탐색 트리에서 해의 깊이에 비례해서 얼마나 많은 중간
단계의 상태를 거쳐야 하는가?
▪ 공간 복잡도(space complexity) → 탐색 트리에서 해의 깊이에 비례해서 얼마나 많은 중
간 단계의 상태를 기억장치에 저장해야 하는가?
❒ 탐색의 활용: 2인 게임(장기, 체스 등)에의 응용에서 주의할 점
• 두 선수의 목적 상태가 완전히 상반(한 선수가 이기는 상태 = 다른 선수가 지는 상태)
▪ “MIN-MAX 탐색”
▻ 각 상태마다 어느 선수냐에 따라 목적 상태 여부를 판단하는 것이 너무 복잡하므
로 각 상태마다 먼저 수를 두는 선수를 기준으로 승(1), 패(-1), 무승부(0)의 세
가지 값을 부여 → 첫 번째 선수는 이 값을 최대화하는 방향으로 이동하려고 하고, 두
번째 선수는 이 값을 최소화하려는 방향으로 이동한다. → 두 선수가 한 수씩 두므로, 한
번은 다음 연산자를 선정할 때 가장 효용치가 높은 상태로 가는 연산자를 선택하고, 그
다음은 가장 효용치가 낮은 상태로 가는 연산자를 선정하는 방식
• 나의 움직임에 대해 상대방 선수가 대응할 수 있는 모든 가능성을 따져봐야 하기 때문
에 목적 상태를 향해 탐색할 때 상태 공간의 모든 경우의 수를 따져야 한다. →
MIN-MAX 탐색을 위해서는 현재 상태에서 도달할 수 있는 다음 상태의 효용치를 전
부 알고 있어야 한다.
▪ “알파-베타 가지치기” → DFS 과정에서 쓸모없는 경우의 수를 최대한 줄이기 위한 작업
▻ 탐색 도중 위에서 현재까지 알려진 최적의 MAX와 MIN 값에 견주어 보아 더 이상 가망이
없는 다음 가지들을 무시하는 것
• 게임 상태 공간이 너무 방대하므로 컴퓨터 하드웨어의 제한을 넘어가지 않는 한도 내
에서 특정 깊이까지만 탐색 가능
▪ MIN-MAX 탐색을 할 때 하드웨어가 허용하는 깊이까지만 트리를 탐색하고 한계
깊이("유한 수평선")의 상태들을 잠정적으로 평가해서 효용치의 대용으로 사용하는
방법이 가능
▻ 수평선 효과 → 수평선 너머에 어떤 것이 도사리고 있는지 모름
▻ 통상적으로는 수평선에 걸친 상태들의 평가 함수값들을 효용치로 생각하고 탐색을 실시하
기 때문에 평가 함수가 얼마나 정확한지에 따라 이를 사용하는 AI의 성능이 결정
▣ 논리적 추론

- 95 -
❒ 명제논리(propositional logic)
• 명제: 추론의 최소 단위로, 참/거짓을 판정할 수 있는 문장
▪ 명제들을 논리 연산자로 연결하여 논리식을 구성
• 논리적 추론을 이용하면 선언적 프로그래밍이 가능 → 주어진 문제의 정의를 논리식을
표현하고 추론을 통해 해법의 도출이 가능
• 추론이란? 주어진 논리식의 집합과 모순이 되지 않는 새 논리식을 도출하는 것
▪ 추론 규칙: 두 개의 논리식이 주어졌을 때 새로운 모순되지 않는 식을 도출하는 규
칙 → 대표적 추론 규칙: 모더스 포넨스(modus ponens), 분해(resolution), 추이(transitivity of
implication)
• 분해 정리 증명기? → 분해 법칙에 기반을 둔 자동 정리 증명 시스템
▪ 각 논리식이 절의 모습을 갖추고 있어야 함 → 절(clause)이란 명제, 명제의 부정
또는 이들의 논리합을 의미한다.
▪ 모순에 의한 정리 증명법으로, 논리식에서 절들 중 분해 가능한 두 절을 가져와 새
로운 절을 도출하고, 이 도출된 절을 다시 기존의 식에 논리곱하는 과정으로 구성
→ 만약 가장 최근에 분해한 절들이 거짓을 도출했을 경우 증명이 완료
❒ 일차논리(first-order logic, 술어논리 predicate calculus)
• 술어가 추론의 기본 단위
▪ 술어란? 문장이 아니고 도메인 내의 객체들 간의 관계를 나타내는 함수
❒ 논리적 추론의 응용 → 지식 기반 시스템, 전문가 시스템 등
▣ 기계학습: 인공신경망
❒ 기계학습(machine learning)
• 인간처럼 시행착오를 거쳐 스스로 학습할 수 있는 능력을 통해 복잡한 명령을 주지 않
고도 주어진 정보만을 가지고 문제를 해결하는 방법을 연구
▪ 인공신경망, 유전자 알고리즘
❒ 인공신경망(artificial neural network)의 개념
• 인간의 뇌의 구조와 정보처리 방식을 모델링하여 인간이 지능적으로 처리하는 복잡한
정보처리 능력을 기계를 통해 구현하려는 연구 또는 그러한 정보 처리 모형
▪ 인경신경망을 구현하기 위해서는 신경 세포, 신경망 구조, 학습 메커니즘에 대한 모
델링이 필요
• 장점
▪ 도메인 모델이 불필요 → 입력/목표 출력의 쌍들만 가지고 문제의 해결책을 찾을 수 있기
때문에 문제 도메인에 대한 사전 지식이 불필요
▪ 일반화 능력 → 주어진 입력/목표 출력 쌍들만이 아니라 미지의 입력에 대해서도 목표 출
력에 근사한 출력을 산출
❒ 인공 신경세포(뉴런) (☞ 보다 자세한 내용은 강의 자료 참조)

• 구조 →      
 
 

• 활성화 함수(activation function)


▪ 신경세포의 입력의 가중합에 대한 출력 정도를 결정하는 함수 
▪ 종류 → 계단 함수, 부호 함수, 항등 함수, 시그모이드 함수, 하이퍼탄젠트 함수
❒ 신경망의 구조

- 96 -
• 은닉층(hidden layer)의 존재 여부 → 단층(single layer) 신경망(입력층-출력층), 다층
(multilayer) 신경망(입력층-은닉층(들)-출력층)
• 정보 흐름의 방향 → 전방향(feedforward) 신경망, 회귀(recurrent) 신경망
❒ 학습 메커니즘
• 학습(learning)이란? 시냅스의 가중치를 조정하는 것
• 종류: 헤브의 학습 규칙, 퍼셉트론 학습, 오류역전파 학습 알고리즘
❒ 퍼셉트론(Perceptron) : 1958, 로젠블라트 개발, 가장 간단한 형태의 단층 전방향 신경망
▪ 활성화 함수로 계단 함수를 사용
▪ 가중치의 조정을 통해 논리 게이트(AND, OR, NOT) 구현 가능 (☞ 교재 그림 8.10)
• 기하학적 해석 (☞ 교재 그림 8.11)
▪ 가중치 (t, a, b)를 조정하면 2차원 평면상에 임의의 위치에 임의의 기울기를 가진
경계선을 만들 수 있고, 이를 기준으로 양쪽으로 분리할 수 있다. → “선형 분리 가
능성”
• 퍼셉트론 한계 → 선형 분리 가능한 문제는 해결 가능, 하지만 XOR 문제는 해결 불가
▪ XOR는 어떤 가중치 조합을 주어도 퍼셉트론 유닛 하나만 가지고는 선형 분리가 불
가능 → 1969년, 마빈 민스키와 페퍼트가 이러한 사실을 증명, 그 이후로 다층 퍼셉트론을
위한 오류역전파 학습 알고리즘이 등장하기까지 인공신경망에 대한 관심이 줄어듬
• 퍼셉트론의 학습 규칙
▪ “만일 어떤 입력 뉴런의 활성이 출력 뉴런의 잘못된 결과를 내는데 공헌하였다면,
두 신경세포 간의 연결 가중치를 그것에 비례하여 조절해 주어야 한다.”
❒ 다층 퍼셉트론(multilayer perceptron, MLP)
• XOR 문제는 다층 신경망으로 해결 가능 → 하지만, 출력층과 연결되지 않고 더 깊이
위치하고 있는 가중치 wji를 어떻게 조정할 것인가? (즉, 어떻게 학습시킬 것인가?) →
“오류 역전파(error backpropagation) 알고리즘”이 등장 (☞ 교잭 그림 8.12)
❒ 오류 역전파 알고리즘 → 다층 퍼셉트론을 위한 학습 방법
• 기본 개념: 오차식을 각 가중치로 편미분해서 각 가중치의 값을 이 편미분값의 반대방
향으로 그 크기에 비례해서 변경
▪ 가중치의 변화량 = 현재 유닛 입력값 × 오차값 × 미분된 현재 뉴런 출력값
▪ 계단 함수와 같은 활성화 함수가 아닌 미분이 가능한 시그모이드 함수를 주로 사용
• 기울기법(경사법)의 일종 → 오차 표면의 현재 위치에서 표면의 기울기를 구해서 그 기
울기 벡터의 반대 방향으로 움직여서 오차를 줄여나가는 방법 (☞ 교재 그림 8.14)
▪ 지역적 최소점에 빠지면 더 이상 학습의 진전을 이룰 수 없는 단점
❒ 대표적인 응용 예: 세즈노프스키의 NETTalk → 음성 합성 신경망
• 역전파 알고리즘 초기에 가시적인 성과를 내서 이후 신경망 연구를 촉발시키는 역할
▣ 기계학습: 유전자 알고리즘(Genetic Algorithm)
❒ 자연계의 진화를 통한 개체의 환경 적응 능력을 모방한 모형
• 하나의 큰 개체군(population)이 있을 때 이 개체군 내의 각 개체(individual)들에 선택
(selection), 번식(reproduction, 교차 crossover), 변이(mutation)를 통해 점진적으로 성
능을 향상시킴 → 최소값 또는 최대값을 구하는 최적화 문제에 유용
▪ 주요 연산 → 선택, 교차, 변이
• 각 개체는 긴 문자열로 된 염색체로 표현되고, 각 염색체는 유전자 코드로 그 의미가

- 97 -
부여. 각 염색체는 주어진 문제에 대한 해법을 함축하고 있어서 문자열의 패턴에 따라
각기 다른 해법을 제공 → 하나의 큰 개체군은 이런 다양한 해법의 집합이라고 볼 수
있다.
❒ 기본 처리 과정

1. [초기화] 난수를 사용해 n개의 염색체로 이루어진 개체군을 생성한다.


2. [적합도] 개체군의 각 염색체에 대해 적합도 점수를 계산한다.
3. [새 개체군] 새로운 개체군이 완성될 때까지 다음 과정을 반복한다.
A. [선택] 적합도에 따라 개체군에서 두 부모 염색체를 선택한다. (더 나은 적합도를
가질수록 더 높은 선택 가능성을 갖는다)
B. [교차] 교차 확률에 따라 두 부모를 교차시켜 자손을 생성한다. 교차가 수행되지
않으면 자손은 부모의 정확한 복사본이 된다.
C. [변이] 변이 확률에 따라 새 자손의 염색체의 선택된 위치의 값을 변경한다.
D. [저장] 새 자손을 새로운 개체군에 포함시킨다.
4. [대체] 새로운 개체군으로 이전의 개체군을 대체한다.
5. [종료검사] 종료 조건이 만족되면 종료하고, 현 개체군의 가장 좋은 해를 반환한다.
6. [반복] 적합도 계산 단계부터 다시 수행한다.

8.2 문제 풀이 및 해설
▣ 객관식 문제
1. 인공지능에 직접적인 영향을 끼친 학문 분야가 아닌 것은?
① 심리학 ② 뇌과학 ③ 논리학 ④ 물리학

[정답/해설] ④, 인공지능에 직접적인 영향을 끼친 학문 분야는 논리학, 확률론, 통계학, 게임


이론, 전자공학, 기계공학, 로보틱스, 심리학, 인지과학, 심리철학, 윤리학, 신경과학 및 뇌과
학, 진화론, 유전공학 등이다.

2. 상태 공간 탐색에 관한 설명 중 중 틀린 것은?
① 현재 상태에 연산자를 가하면 항상 하나의 결과 상태가 나온다.
② 현재 상태에 연산자를 가하면 여러 개의 결과 상태가 나올 수 있다.
③ 현재 상태에 연산자를 가하면 아무런 결과가 나오지 않을 수 있다.
④ 현재 상태에 연산자를 가하면 바로 이전 상태로 돌아갈 수도 있다.

[정답/해설] ①, 현재 상태에 연산자를 가했을 때 나올 수 있는 결과 상태는 매우 다양하다.

3. 휴리스틱 함수를 사용하지 않는 탐색 알고리즘은?


① 최선 우선 탐색 ② A-star ③ 탐욕스러운 탐색 ④ 반복 심화 탐색

[정답/해설] ④
 지식 미사용 탐색 알고리즘 → 깊이 우선 탐색, 너비 우선 탐색, 깊이 제한 탐색, 반복
심화 탐색

- 98 -
 지식 사용 탐색 알고리즘 → 최선 우선 탐색, 탐욕스러운 탐색, A-star 탐색, 반복 심화
A-star 탐색

4. 휴리스틱 함수를 사용하는 탐색 알고리즘은?


① 최선 우선 탐색 ② 깊이 우선 탐색
③ 반복 심화 탐색 ④ 깊이 제한 탐색

[정답/해설] ①

5. 다음 중 완전성과 최적성을 갖추지 못한 탐색 알고리즘은?


① 너비 우선 탐색 ② 깊이 우선 탐색
③ 반복심화A-star ④ 반복심화 탐색

[정답/해설] ②

위의 표에서 깊이 우선 탐색 방법만 완전성과 최적성이 결여되었다. 완전성과 최적성을 갖


추고 있다는 것은 해가 있다면 항상 그 해를 찾을 수 있고, 여러 개의 해가 있을 때 항상
최적해를 찾을 수 있다는 의미이다. (DFS: 깊이 우선 탐색, BFS: 너비 우선 탐색, IDS: 반복
심화 탐색, IDA-star: 반복 심화 A-star 탐색)

6. 다음 중 완전성과 최적성의 장점을 갖추었는데 공간복잡도가 목적상태의 깊이에 비해 지


수적으로 증가하는 단점을 가진 탐색 알고리즘은?
① 반복 심화 A-star 탐색 ② 깊이 우선 탐색
③ 너비 우선 탐색 ④ 반복 심화 탐색

[정답/해설] ③, 너비 우선 탐색은 완전성과 최적성을 모두 갖추었지만 공간 복잡도의 경우


O(bd+1)이다. 시간 복잡도는 DFS와 동일하다. (문제 5의 표를 참조)

7. 다음 중 절(clause)의 예가 아닌 것은?
① P∧Q ② P∨Q ③ P ④ ¬Q

[정답/해설] ①, 절(clause)은 명제, 명제의 부정 또는 이들의 논리합을 말한다. P는 명제, ¬Q


는 명제의 부정, P∨Q는 명제의 합이다. 논리곱 P∧Q는 절이 아니다.

8. ¬Q∨(P∧R)을 절로 바꾸면 몇 개의 절이 나오나?

- 99 -
① 0개 ② 1개 ③ 2개 ④ 3개

[정답/해설] ③, 주어진 논리식에 분배법칙을 적용하면 ¬Q∨(P∧R)=(¬Q∨P)∧(¬Q∨R)이므로,


두 개의 절 (¬Q∨P)와 (¬Q∨R)로 분해될 수 있다.

9. 일차논리에서 명제논리의 명제에 해당하는 기본 요소는 무엇인가?


① 객체 ② 한정사 ③ 논리식 ④ 술어

[정답/해설] ④, 명제 논리에서는 추론의 최소 단위가 명제(preposition, 참/거짓을 부여할 수


있는 문장)이고, 술어논리(일차논리)에서는 술어(predicate, 도메인 내의 객체들의 관계를 나
타내는 함수)가 기본 단위이다.

10. 주어진 논리식의 집합과 모순이 되지 않는 새로운 논리식을 도출하는 것을 무엇이라고


하는가?
① 명제 ② 술어 ③ 논리 ④ 추론

[정답/해설] ④

11. 기계학습에 관한 설명으로 틀린 것은?


① 입력/목표출력의 쌍들만을 가지고 학습할 수 있다.
② 학습 시에 보지 못한 입력에 대해서는 제대로 된 출력을 생성하지 못한다.
③ 간단한 학습 알고리즘을 사용해서 자동으로 학습 가능하다.
④ 도메인 모델이 불필요하다.

[정답/해설] ②, 기계학습 방법들은 입력/목표출력의 쌍들로 구성된 데이터를 통해 자동으로


학습하여 결과를 생성할 수 있다. 이때 학습을 위해서 제시되지 못한 데이터에 대해서 목표
출력에 근사한 결과를 낼 수 있는 일반화 능력을 갖는다.

12. 바이어스와 입력 두 개를 받는 퍼셉트론 유닛의 기하학적인 의미는 무엇인가?


① 2차원 평면을 두 부분으로 구획지어 주는 직선이다.
② 3차원 공간을 두 부분으로 구획지어 주는 평면이다.
③ 2차원 평면을 두 부분으로 구획지어 주는 곡선이다.
④ 3차원 공간을 두 부분으로 구획지어 주는 곡면이다.

[정답/해설] ①, 바이어스와 입력 두 개를 받는 퍼셉트론 유닛의 출력은 2차원 평면상에 임


의의 위치에 임의의의 기울기를 가진 직선을 만들 수 있다. 따라서 이 직선을 기준으로 두
부분으로 영역이 구분된다.(교재 373~374쪽 참조)

13. 퍼셉트론 유닛 하나로 구현할 수 없는 논리게이트는?


① AND ② OR ③ XOR ④ NOT

- 100 -
[정답/해설] ③, 퍼셉트론 유닛 하나를 사용하는 경우에는 가중치 조합을 주어도 XOR를 구
현할 수 없다. 하지만 세 개의 퍼셉트론 유닛을 사용하면 XOR를 표현할 수 있다. (교재 375
쪽, 377쪽)

14. 다층 신경망의 단점은?


① 선형 분리 불가능한 문제를 해결할 수 없다.
② 지역적 최소점에서 빠져나올 수 없다.
③ 2층 이상 쌓아올릴 수 없다.
④ 일반화 능력이 없다.

[정답/해설] ②, 다층 신경망의 최대 단점 중 하나는 지역적 최소점(local minimum)에 빠지


면 더 이상 학습의 진전을 이룰 수 없다는 것이다.

15. 유전자 알고리즘에서 적용되는 연산이 아닌 것은?


① 선택 ② 변이 ③ 번식 ④ 변태

[정답/해설] ④
유전자 알고리즘의 기본 연산은 선택, 교차, 변이이다.
 선택 → 자손을 생성할 수 있는 두 부모 염색체를 선정하는 연산
 교차 → 두 부모 염색체의 특징을 결합해 하나의 새로운 자손 염색체를 만들어 내는 연산
 변이 → 자손 염색체의 임의의 유전자를 변경하는 연산

16. 유전자 알고리즘의 연산 중 부모의 형질을 나누어가지는 연산은?


① 변이 ② 교차 ③ 적합도 계산 ④ 선택

[정답/해설] ②, 교차 연산은 두 부모 염색체의 특징을 결합하여 하나의 새로운 자손 염색체를 만


들어 내는 연산이다.

▣ 교재 주관식 문제
1. 튜링 테스트에 대해 간단히 알아보고 과연 이 테스트를 사용하면 어떤 인공지능 시스템
이 정말로 지능을 가졌는지 아닌지 평가할 수 있는지 논하시오.
[정답/해설] 튜링 테스트는 알란 튜링(Alan Turing)이 고안한 테스트로 기계가 지능이 있는
지 없는지 판단할 수 있게 해주는 것이 목적이다.
기본적인 아이디어는 인간이 컴퓨터 터미널을 통해 채팅하는 두 대화 상태(하나는 인간, 하
나는 기계)가 인간인지 기계인지 구분할 수 없을 경우 대화 상대인 기계가 지능을 가졌음을
인정해야 한다는 것이다.
이 테스트로 과연 지능 여부를 판단할 수 있는가 없는가는 아직 뚜렷한 해답이 없는 미결
문제이다.

2. [그림 8.5]의 트리에서 목적 상태가 11과 6일 때 DFS와 BFS를 각각 수행해 보고 노드 방


문 순서와 각 수행 단계의 노드 리스트를 보이고 탐색 결과를 보이시오.

- 101 -
[정답/해설]
 DFS:
목적 = 11 : 1 → 2 → 4 → 8 → 9 → 5 → 10 → 11
목적 = 6 : 1 → 2 → 4 → 8 → 9 → 5 → 10 → 11 → 3 → 6
 BFS
목적 = 11 : 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11
목적 = 6 : 1 → 2 → 3 → 4 → 5 → 6

3. [그림 8.4]에서 A→B→D로 갔을 때의 f(D)=g(D)+h(D) 값과 A→D로 갔을 때의


f(D)=g(D)+h(D)값을 구해 비교해 보고, A-star 탐색을 사용한다면 어느 경로를 선택할지
생각해 보시오.
[정답/해설]
 A→B→D로 가는 경우 : f(D) = g(D) + h(D) = (143 + 61) + 105 = 309
 A→D로 가는 경우 : f(D) = g(D) + h(D) = 84 + 105 = 189
A-star를 사용하면 A→D 직행을 선호하게 될 것이다(f값이 그 경우 더 작으므로).

4. [그림 8.6]의 트리의 모든 중간 깊이의 노드(internal node)와 루트 노드의 깊이에 맞는


MIN 또는MAX 값을 DFS 방식으로 구하고 최적의 결과에 이르는 길을 표시하시오.
[정답/해설]

5. 8.3.1항의 정리 증명 예제를 자연어 수준에서 논리를 따라가서 증명해 보시오. (예: “철수
가 한국인이면 아시아인이어야 하는데 철수는 아시아인이 아니므로 한국인일 수 없다.
그런데 …”)
[정답/해설]
명제 1의 대우는
철수가 아시아인이 아니면 철수는 한국인이 아니다.
위의 결과와 명제 2(철수는 아시아인이 아니다)를 이으면
철수는 아시아인이 아니므로 철수는 한국인이 아니다
즉, 철수는 한국인이 아니다.
하지만 명제 3에 따라 철수는 한국인이거나 화성인이어야 한다. 둘 중 하나 또는 둘 다 만
족해야 한다. 하지만 바로 위에서 철수는 한국인이 아님을 밝혔으므로 철수는 화성인이어야
만 한다.

- 102 -
6. 분해 정리 증명법을 사용해서 다음을 증명하시오. (힌트: 우선 결론 부분 (5)의 논리부정
을 취하고 시작해야만 한다.)
(1) P ∨ Q ∨ ¬R
(2) Q ∨ ¬P
(3) S
(4) R ∨ ¬S
(5) Q (결론)

[정답/해설]
(1) P ∨ Q ∨ ¬R
(2) Q ∨ ¬P
(3) S
(4) R ∨ ¬S
(5) ¬Q (결론의 논리부정)

(6) ¬P (2와 5로부터)


(7) P ∨ ¬R (1과 5로부터)
(8) ¬R (6과 7로부터)
(9) ¬S (4와 8로부터)
(10) F (3과 9로부터). 증명 끝.

7. [그림 8.8]에 있는 세 가지 퍼셉트론이 올바른 출력을 하는지 진리표를 그리고 각 유닛의


출력을 계산해서 비교해 보시오.
[정답/해설]
0 0 -1*1.5+0*1.0+0*1.0=-1.5+0+0=-1.5가 0보다 작으므로 출력 = 0
0 1 -1*1.5+0*1.0+1*1.0=-1.5+0+1=-0.5가 0보다 작으므로 출력 = 0
1 0 -1*1.5+1*1.0+0*1.0=-1.5+1+0=-0.5가 0보다 작으므로 출력 = 0
 AND :
1 1 -1*1.5+1*1.0+1*1.0=-1.5+1+1=0.5가 0보다 크므로 출력 = 1
0 0 -1*0.5+0*1.0+0*1.0=-0.5+0+0=-0.5가 0보다 작으므로 출력 = 0
0 1 -1*0.5+0*1.0+1*1.0=-0.5+0+1=0.5가 0보다 크므로 출력 = 1
1 0 -1*0.5+1*1.0+0*1.0=-0.5+1+0=0.5가 0보다 크므로 출력 = 1
 OR : 1 1 -1*0.5+1*1.0+1*1.0=-0.5+1+1=1.5가 0보다 크므로 출력 = 1
0 -1*-0.5+0*-1.0=0.5+0=0.5가 0보다 크므로 출력 = 1
 NOT : 1 -1*-0.5+1*-1.0=0.5–1.0=-0.5가 0보다 작으므로 출력 = 0

8. 다음 표에 나열된 입력/목표 출력을 [그림 8.11]처럼 나타내보고 다음 질문에 답하시오.


(1) 단 하나의 퍼셉트론 유닛으로 이 표를 오차 없이 표현 가능한가? 가능하다면 경계선을
그려보시오.
(2) 만약 아니라면 퍼셉트론 유닛을 다층으로 구성하면 오차 없이 표현가능한가? 가능하다
면 경계선(들)을 그려보시오.

- 103 -
입력X 입력Y 목표 출력
0 3 0
1 3 0
1 2 1
1 1 0
2 1 1
2 0 0
3 1 0
3 0 0

[정답/해설]
(1) 불가능하다. 하나의 경계선으로 1 (흰색)과 0(검은색)을 구획 지을 수 없기 때문이다.
(2) 가능하다. 세 개의 은닉층 유닛이 각각 세 개 중 하나의 경계선을 담당하고 바로 위층의
출력 유닛이 AND를 구현하면 된다.

9. 다층 인공신경망에서 쓰이는 기울기법을 사용한 학습 알고리즘의 단점은 무엇인가?


[정답/해설] 지역적 최소점에 도달하면 미분값이 0이 되어 더 이상 가중치를 변화시킬 수
없어 빠져나올 수 없게 된다. 따라서 전역적 최소점에 도달할 수 없는 경우가 많이 생긴다.

10. 기계학습에서 학습에 사용되지 않은 입력에 대해서도 근사한 출력을 산출할 수 있는 능


력을 무엇이라 하는가?
[정답/해설] 일반화(generalization) 능력

11. 유전자 알고리즘의 세 가지 기본 연산은 무엇인가?


[정답/해설] 선택(selection), 교차(crossover, 번식 reproduction), 변이(mutation)

12. 존 써얼의 중국어 방에 대해서 알아보고 강한 인공지능의 가능성에 대해 생각해 보시


오.
[정답/해설] 존 써얼(John Searle)은 미국 캘리포니아 대학교 버클리의 철학과 교수로 튜링
테스트로 대변되는 인지과학/인공지능적인 접근법을 비판하기 위해 “중국인 방”이라는 사고
실험을 제안했다.

- 104 -
중국인 방은 사방이 막힌 방으로 안에는 영어 밖에 할 줄 모르는 사람이 앉아서
한쪽 벽에 있는 작은 서류 전달용 틈새로 전달 받은 종이에 쓰인 중국어 질문에 대해 방
안에 있는 칠판에 쓰여 있는 프로그램과 같은 절차를 따라 알고리즘을 수동으로 수행해서
최종적으로 알고리즘의 결과를 종이에 그려서 (쓰는 것이 아니다, 중국어와 한자를 모르기
때문에) 틈새로 바깥에 있는 중국인에게 전달하는 시스템이다.
만약 인지과학과 인공지능의 계산적인 모델이 옳다면 중국인 방과 글로써 대화하는 중국인
에게는 방 자체가 중국어를 “이해”한다고 느낄 것이다. 하지만 중국어 방과 방 내부의 어떤
구성 요소도 중국어를 이해한다고 볼 수 없다.
이 예로부터 존 설은 현재의 인지과학과 인공지능의 계산적이 접근방식이 한계를 가진다고
결론지었다.
이 사고 실험이 지능과 의식 등의 현상에 대한 계산적인 접근법에 대한 회의를 불러일으키
게 되었다. 이 사고 실험의 교훈을 따르자면 계산적인 접근 방법으로 강한 인공지능을 구현
하려는 것은 무의미한 일이 되는 것이다.
중국인 방에 대한 여러 가지 반박들이 있는데 이것들을 한번 찾아보는 것도 의미 있을 것
이다.

- 105 -

You might also like