Professional Documents
Culture Documents
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대 구성요소는 자료, 사용자, 하드웨어, 소프트웨어이다.
폰노이만 모델은 내장 프로그램 개념을 통해 프로그램과 데이터가 동일한 형태로 저장
된다는 것을 제시하고 있지만, 실제적으로 저장 방식에 대해서는 정의하고 있지 않다.
[정답/해설] ①
- 3 -
[정답/해설] ①, 53.625(10) = 110101.101(2) = 65.5(8) = 35.A(16)
[정답/해설] ③
부호화-크기 방법 : 맨 앞자리 부호 비트가 1이므로 음수, 나머지 자리로 나타내는 값의
크기는 0이다. 따라서 –0이 된다.
1의 보수 : 부호 비트가 1이므로 음수, 나머지 비트에 대해 보수를 취하면 01111111이
며 이것의 크기는 127이다. 따라서 –127이 된다.
2의 보수 : 부호 비트가 1이므로 음수, 나머지 비트에서는 우선 –1을 한 후(01111111)
보수를 취하면 10000000이 되고 이것의 크기는 128이다. 따라서 –128이 된다.
초과 표기법으로 해석하기 위해서는 주어진 비트를 우선 10진수로 바꾼 다음, 이 결과에
서 127(‘초과_127’을 사용한 경우)을 빼면 된다. 10000000(십진수 128)–127=1이 된다.
[정답/해설] ③
부호 지수부 가수
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가 된다.
- 4 -
8. 다음 빈 칸 ㈀에 공통적으로 들어갈 단어는?
컴퓨터과학이란 컴퓨터 자체, ( ㈀ ), ( ), ( )의 연구를 통해 효율적인 자료처
리를 위한 원칙과 방법을 제공하기 위한 분야이다.
- 컴퓨터라는 것은 ( ㈀ )이 가능한 자료의 입력, 처리, 출력을 위한 기계이다
① 프로그램 ② 알고리즘 ③ 데이터 저장 ④ 통신
[정답/해설] ①
컴퓨터과학이란 컴퓨터 자체, 프로그램, 자료(데이터), 알고리즘의 연구를 통해 효율적인
자료처리를 위한 원칙과 방법을 제공하기 위한 분야이다.
컴퓨터라는 것은 프로그램이 가능한 데이터 처리기(programmable data processor)이며,
데이터 처리기란 자료를 입력받고 처리한 후 결과를 출력을 위한 기계이다.
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)
[정답/해설] ①
시스템 소프트웨어 : 컴퓨터 자체의 작업 관리와 특정 기능의 수행을 도와주는 프로그램
으로, 대표적인 것으로는 윈도우 XP, 컴파일러, 어셈블러 등이 있다.
응용 소프트웨어 : 포토샵, 워드프로세서, 엑셀 등과 같이 사용자가 요구하는 작업을 직
접적으로 수행하는 프로그램이다.
- 6 -
① 마이크로컴퓨터 ② 전용 컴퓨터
③ 디지털 컴퓨터 ④ 하이브리드 컴퓨터
[정답/해설] ④
사용 목적에 따른 분류 → 범용 컴퓨터, 전용 컴퓨터
자료 표현 방식에 따른 분류 → 디지털 컴퓨터, 아날로그 컴퓨터, 하이브리드 컴퓨터
처리 성능에 따른 분류 → 슈퍼컴퓨터, 대형 컴퓨터, 미니컴퓨터, 워크스테이션, 마이크로
컴퓨터
[정답/해설] ②
13.59375(10) = 1101.10011(2)
15.43(8) = 1101.100011(2) →(소수점 이하 부분에서 차이 발생)
D.98(16) = 1101.10011(2)
1101.10011(2)
- 7 -
- 16비트 코드 체계로 65,536개의 서로 다른 문자를 표현할 수 있다.
- 세계 각국의 언어를 모두 표현할 수 있어 국제 표준으로 지정
① ASCII 코드 ② EBCDIC 코드
③ 유니코드 ④ 확장된 ASCII 코드
[정답/해설] ③
ASCII 코드는 7비트 코드이며, 여기에 1비트를 추가해서 1바이트로 맞춘 것이 확장된 ASCII
코드이다. 한편 EBCDIC 코드는 컴퓨터 초기 시대에 IBM에서 개발한 8비트 코드 체계이다.
▣ 교재 주관식 문제
1. 컴퓨터 시스템의 구성 요소를 나열하고, 각각의 설명하시오.
[정답/해설] 완전한 하나의 컴퓨터 시스템을 구성하기 위한 요소 → 하드웨어(☞폰 노이만
모델), 소프트웨어, 자료, 사용자 (☞ 각 요소에 대한 설명은 요약 부분 참조)
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)
- 9 -
이면 흰 화소를 나타낸다.
컬러 화소의 표현 방법
비트맵 방식에서는 특정 이미지를 표현하는 정확한 비트 패턴이 컴퓨터에 저장되어야 하기
때문에 이미지의 크기를 조정하는 경우에는 자연스럽지 못한 영상으로 나타난다. 하지만 벡
터 방식에서는 비트 패턴 형태로 저장하는 것이 아니라 하나의 이미지가 곡선이나 직선 등
의 조합 형태로 분해되고, 각 곡선 또는 직선은 수학적인 식에 의해서 표현된다. 결국 벡터
방식에서는 이미지가 이러한 수식의 조합 형태로 저장된다. 한편 화면이나 프린터로 출력되
는 경우에는 출력될 이미지의 크기를 지정해 주면 시스템이 새로운 크기를 사용해서 이미
지를 다시 디자인하고 동일한 수식을 사용해서 크기에 맞게 이미지를 그려준다. 따라서 이
미지가 그려질 때마다 수식이 다시 계산되고 이용되는 특징을 갖는다.
(2) 오디오
오디오는 기본적으로 아날로그 신호이다. 오디오를 저장하는 표준적인 방법은 없지만 기본
적인 아이디어는 오디오를 디지털 신호로 바꾸고 이것을 비트 패턴으로 저장하는 것이다.
따라서 오디오를 표현하고 저장하기 위해서는 다음과 같은 일련의 과정을 거친다.
- 10 -
- 아날로그 신호가 샘플링된다. 샘플링(sampling)이란 일정한 간격으로 신호의 값을 측정하
는 것을 의미한다.
- 샘플을 양자화한다. 양자화(quantization)란 각 샘플에게 값을 부여하는 것이다. 예를 들어,
만약 샘플의 값이 29.2이고 값의 범위가 0~63 사이의 정수라면, 샘플의 값으로 29를 할
당한다.
- 양자화된 값을 이진 패턴으로 변환하고, 이진 패턴을 저장한다.
제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, 강의 자료)
• 여러 개의 입력선 중에서 하나를 선택하여 단일의 출력으로 내보내는 회로 → 어떤 장
치로부터 들어오는 데이터가 버스를 사용할 것인가를 정하는 경우에 사용
- 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 버스 ③ 주소 버스 ④ 데이터 버스
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
[정답/해설] ③
- 15 -
① 1-주소 명령어 ② 3-주소 명령어 ③ 0-주소 명령어 ④ 2-주소 명령어
[정답/해설] ①
[정답/해설] ②
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를 거쳐서 주기억장치에 접근한다.
- 16 -
① (A) ② (B) ③ (C) ④ (D)
[정답/해설] ②
- 17 -
15. 순차회로에서 1비트의 상태를 저장하기 위해서 사용하는 기억소자를 무엇이라고 하는
가?
① 플립플롭 ② 카운터 ③ 레지스터 ④ 축전지
[정답/해설] ③
순차회로 → 카운터, 레지스터
조합회로 → 전가산기, 디코더, 인코더, 멀티플렉서, 디멀티플렉서 등
[정답/해설] ④
메모리 버퍼 레지스터(MBR) → 기억장치로 쓰여질 데이터나 기억장치로부터 읽어온 데
이터를 임시로 저장하는 레지스터
인덱스 레지스터 → 인덱스 주소지정 방식에서 사용되는 레지스터
프로그램 카운터(PC, program counter) → 다음에 수행될 명령이 저장된 주기억장치의
주소를 저장
명령어 레지스터(IR, instruction register) → 주기억장치에서 가져온 다음 수행할 명령어
를 저장하는 레지스터
제어기억장치(control memory) → 마이크로 연산의 집합을 저장하고 있는 기억장치로서
ROM으로 구성
제어기억장치 주소 레지스터(CMAR, control memory address register) → 제어기억장치
의 다음 수행할 마이크로 명령의 위치를 가리키는 주소를 저장하는 레지스터
제어기억장치 데이터 레지스터(CMDR, control memory data register) → 제어기억장치의
다음 수행할 마이크로 명령을 저장하는 레지스터
[정답/해설] ③
- 18 -
[정답/해설] ④, A AND B = A⦁B, A OR B = A+B, NOT A = A’이며 NAND는 AND의
NOT이다.
21. 4비트 전가산기에 입력이 0111과 1101이고, 아랫자리에 올라오는 올림수 Cin이 1이면
출력과 바로 윗자리로의 올림수 Cout은 무엇인가?
① 출력 0101 Cout 0 ② 출력 0101 Cout 1
③ 출력 0010 Cout 0 ④ 출력 0010 Cout 1
[정답/해설] ②
[정답/해설] ①, ☞ 교재 그림 2.15 참조
24. 제어장치는 ( A )-( B )-( C )-( D )의 명령어 사이클을 반복한다. C에 해당하는 과정을
무엇이라고 하는가?
① 저장(write-back) ② 해독(decode) ③ 인출(fetch) ④ 실행(execute)
- 19 -
25. GPGPU는 어떤 입출력장치에 기반을 두고 있는가?
① 사운드 카드 ② 그래픽 카드
③ 네트워크 카드 ④ 디스크 구동 카드
▣ 교재 주관식 문제
1. NAND, NOR, XOR의 논리대수 식을 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’
[정답/해설]
- 21 -
6. [그림 2.12]에서 주소2에 비트 패턴 101을 쓰기 위해서 입력 및 제어 라인들이 어떤 이진
수를 가져야 하는지 답하고 활성화(값이 1)된 라인을 굵은 선으로 표시하시오.
[정답/해설] (A0,A1)=(1,0) (I0,I1,I2)=(1,0,1) 읽기/쓰기 선택 = 1
- 22 -
9. 마이크로 연산의 구현에 있어서 멀티플렉서와 디코더가 어떤 역할을 하는지 설명하시오.
[정답/해설] 멀티플렉서 → 입력 레지스터 선택, 디코더 → 출력 레지스터 선택
[정답/해설]
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
- 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 -
분산처리 시스템 → 통신망을 통해 연결된 여러 컴퓨터 시스템에 작업과 자원을 분산시
킨 후 통신망을 통하여 교신하면서 처리하는 시스템
[정답/해설] ①
[정답/해설] ④
- 28 -
프로세스의 상태 전이 다이어그램
[정답/해설] ③
- 29 -
① (A) ② (B) ③ (C) ④ (D)
[정답/해설] ④
프로세스 스케줄링 → 기한부, 우선순위, FCFS, SJF, SRT, RR, HRN, MFQ
디스크 스케줄링 → FCFS, SCAN, N-단계 SCAN, C-SCAN, C-LOOK, SLTF
[정답/해설] ④
동기화 → 프로세서가 2개 이상의 프로세스를 동시에 처리할 수 없기 때문에 이들 프로
세스에 대한 처리 순서를 결정하는 것
임계영역 → 병행 프로세스가 공유 데이터를 접근할 수 있도록 설정된 프로그램 영역
- 30 -
교착상태 → 2개 이상의 프로세스가 대기 중인 프로세스들 중의 하나에 의해서만 발생
할 수 있는 사건을 무작정 기다리는 상태
상호배제 → 하나의 프로세스가 공유 데이터의 사용을 완료할 때까지 다른 프로세스의
공유 데이터 접근을 금지하는 기법
[정답/해설] ④
• 선점 스케줄링 → 프로세서를 점유하고 있는 실행 중인 프로세스로부터 프로세서를 빼앗
아 다른 프로세스에게 할당할 수 있는 방법 → 예: RR 스케줄링, MFQ 스케줄링, SRT 스
케줄링
• 비선점 스케줄링 → 일단 작업이 CPU를 할당받고 실행이 시작되면 자신에게 할당된 시간
동안에는 다른 프로세스에 의해 간섭받지 않고 끝까지 실행 상태에 있도록 하는 방식 →
예: FIFO(FCFS), 우선순위, 기한부, SJF, HRN이 있다..
[정답/해설] ④
[정답/해설] ②
① 페이징 기법은 주기억장치를 페이지 프레임이라고 불리는 고정 크기의 블록으로 나
누고 보조기억장치에 저장된 프로그램이나 데이터를 고정된 페이지로 쪼개서 주기억장
치의 페이지 프레임에 올려서 수행하는 기법이다.
- 31 -
③ FIFO, LRU, LFU 기법은 페이지를 주기억장치의 어디로 옮길 것인가를 결정하는 기법
이 아니라, 새로 적재되어야 할 페이지를 위하여 기존의 어느 페이지를 주기억장치로부
터 제거해야 할지 결정하는 기법이다.
④ 최적 적합 전략은 새로운 프로그램을 주기억장치에 적재할 때 주기억장치 내의 비어
있는 영역 중에서 그 프로그램을 수용할 수 있는 가장 작은 영역에 배치함으로써 단편
화 현상을 최소화하는 전략이다.
[정답/해설] ④
기한부(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) 전략
[정답/해설] ②
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) 분산 처리 시스템 → 안정적인 작업 처리에 따른 신뢰성 향상 및 계산 속도의 증가
- 34 -
치)에 대한 자세한 내용은 교재 그림 3.3 및 2장 요약 부분 참조
- 35 -
RR(Round-Robin)
선
SRT(Shortest Remaining Time)
점
MFQ(Multilevel Feedback Queue)
알고리즘별 우선순위(priority)
분류 기한부(deadline)
비
FCFS(First-Come First-Served) 선
점
SJF(Shortest Job First)
- 36 -
11. 파일 관리 시스템의 디스크 공간 할당 방식이 종류와 특징을 설명하시오.
[정답/해설] ☞ 각 방법에 대한 설명은 요약 부분 참조
- 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) 정렬은 주어진 리스트를 동일한 크기의 두 개의 서브리스트로 분할하고, 각
서브리스트에 대해서 분할 과정을 순환적으로 적용하여 왼쪽 서브리스트와 오른쪽 서브
리스트에 대한 처리가 완료되면 이들을 합병하여 하나의 정렬된 리스트를 만든다.
[정답/해설] ②
① 합병 정렬 ② 선택 정렬 ③ 버블 정렬 ④ 퀵 정렬
[정답/해설] ④
- 42 -
[정답/해설] ①, 큐는 선입선출(FIFO, First-In First-Out) 특징을 갖는 선형 리스트로, 한쪽에서
는 입력이 수행되고 다른 한쪽에서는 삭제만 이루어진다. 반면에 스택은 삽입(push)과 삭제
(pop)가 리스트의 한쪽 끝에서만 이루어지므로 후입선출의 특징을 갖는다.
[정답/해설] ③
① 포화 이진 트리 ② 경사 이진 트리
③ 완전 이진 트리 ④ AVL 트리
[정답/해설] ④
• 포화 이진 트리 → 레벨 0부터 k-1까지 각 레벨에서 빈자리 없이 노드를 모두 가지고 있
는 이진 트리 → 깊이 k인 이진 트리 → 노드의 최대 개수 2k-1
• 완전 이진 트리 → 마지막 레벨이 k라면, 레벨 k-1까지는 포화 이진 트리 → 레벨 k에서
는 왼쪽부터 오른쪽으로 중간에 빈자리 없이 채워진 형태의 트리
▪ 포화 이진 트리의 경우에는 루트 노드를 1번으로 시작해서 각 레벨별로 왼쪽에서 오른
쪽으로 번호를 부여할 수 있는데, 완전 이진 트리는 총 노드의 개수가 2k+1-1을 초과하지
않으면서 포화 이진 트리의 노드 번호에 해당하는 연속적인 번호를 갖는 트리
• 경사 이진 트리 → 한쪽 방향으로만 가지가 뻗어 나간 트리
- 43 -
9. 배열로 구현된 이진트리가 다음과 같을 때, 이진 트리의 모양으로 가장 적합한 것은?
① ②
③ ④
[정답/해설] ②
배열의 주소는 트리의 위치와 같다.
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이 된다.
* 노드 G를 노드 H보다 먼저 방문하였다.
* 노드 P를 노드 N보다 먼저 방문하였다.
* 노드 J를 노드 M보다 먼저 방문하였다.
① 너비 우선 순회 ② 중위 순회 ③ 후위 순회 ④ 전위 순회
[정답/해설] ③
노드 G를 노드 H보다 먼저 방문한 것은 왼쪽 서브트리를 먼저 방문한 후 루트를 방문하
였기 때문에 전위 순회는 아니다.
노드 P를 노드 N보다 먼저 방문한 것은 루트 노드보다 오른쪽 서브트리를 먼저 방문하
였다는 것이므로 중위 순회는 아니다.
노드 J를 노드 M보다 먼저 방문하였다는 것은 중위 순회, 전위 순회, 후위 순회 모두 가
능하다.
① 전위 순회 ② 너비 우선 순회 ③ 후위 순회 ④ 중위 순회
- 45 -
[정답/해설] ③, G→B이므로 전위 순회(B→G)가 아니고, 중위 순회(B→G)도 아님을 알 수 있
다.
① 5 ② 6 ③ 7 ④ 8
- 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
[정답/해설] ①
② 두 개 이상의 서로 다른 구조를 가진 데이터 항목을 하나의 변수이름으로 묶고 인덱
스를 사용해서 구분하는 자료구조는 배열이 아니라 레코드이다.
③ 포트란과 코볼에서는 배열의 기억공간이 정적으로, 즉 컴파일 시점에 할당이 이루어
진다.
④ 배열에서 각 원소에 대한 접근은 인덱스를 통해 직접적으로 이루어지기 때문에 접근
시간은 원소가 어느 위치에 저장되어 있느냐에 무관하게 일정하다.
- 47 -
① 프로그래밍 언어에 상관없이 배열의 첨자는 항상 0부터 시작한다.
② 각 원소에 대한 접근시간은 저장위치에 상관없이 일정하다.
③ 서로 다른 구조의 데이터 항목을 하나의 변수 이름으로 모아놓은 데이터 집합체이다.
④ 빈번한 삽입과 삭제가 발생하는 응용에 효과적이다.
- 48 -
② 비단말 노드의 수는 모두 7이다.
③ 노드 J의 선조(조상)은 A, B, E 밖에 없다.
④ 트리의 깊이는 3이다.
[정답/해설] ②
이진 트리는 공백이거나 각 노드의 차수가 2이하인 순서 트리이다. 즉 각 노드에서의 차
수는 0, 1, 2 중의 하나를 갖고, 일반적인 트리에서는 서브트리의 순서가 별 의미를 갖지
않지만, 이진 트리에서는 왼쪽 서브트리와 오른쪽 서브트리로 구분해서 취급한다.
루트 레벨이 0이고 깊이가2인 이진트리의 최대 노드의 수(2k-1)는 3개이다.
[정답/해설] ①
① ②
③ ④
- 49 -
26. 최소 비용 신장 트리를 구하는 알고리즘은?
① 프림 알고리즘 ② 다익스트라 알고리즘
③ KMP 알고리즘 ④ 플로이드 알고리즘
[정답/해설] ①
최소 비용 신장 트리 → 크루스칼 알고리즘, 프림 알고리즘
최단 경로 → 다익스트라 알고리즘(한 출발점에서 다른 모든 정점으로 최단 경로), 플로
이드 알고리즘(모든 쌍 최단 경로)
▣ 교재 주관식 문제
1. 기본적인 자료구조의 종류와 그들 간의 관계를 설명하시오.
[정답/해설]
- 50 -
이중 연결 리스트의 노드 삭제
[정답/해설]
(1) 포화 이진트리 : 깊이가 k인 이진트리가 가질 수 있는 최대 노드의 개수 2k-1개의 노드
를 모든 가진 이진 트리이다. 즉 각 레벨에 빈 노드가 없이 가득 찬 이진 트리를 말한다.
(2) 완전 이진트리 : 트리의 마지막 레벨이 k라고 할 때 레벨 k-1까지는 포화 이진 트리를
형성하고, 레벨 k에서는 왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리이다.
(3) 경사 이진트리 : 한 쪽 방향으로만 가지가 뻗어 나간 트리이다.
(4) AVL 트리 : 트리의 균형 있는 배치를 위해 왼쪽 서브트리와 오른쪽 서브트리의 깊이 차
이가 –1, 0, 1 이 되게 하는 트리이다.
(5) 히프 트리 : 완전 이진 트리로 트리의 각 노드의 값은 그 노드의 자식 노드의 값보다 크
거나 같게 만든 트리이다. 루트 노드의 값이 가장 큰 최대값 히프 트리와 루트노드의 값
이 가장 작은 최소값 히프 트리가 있다.
(6) 이진 탐색 트리 : 각 노드의 왼쪽 서브트리의 모든 노드의 값은 해당 노드의 값보다 작
고, 오른쪽 서브트리의 모든 노드의 값은 해당 노드의 값보다 큰 이진 트리이다.
[정답/해설]
- 51 -
전위 순회 : ABDHECFIG
중위 순회 : DHBEAIFCG
후위 순회 : HDEBIFGCA
[정답/해설]
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
인접 행렬 인접 리스트
[정답/해설]
최소 비용 신장 트리는 크루스칼 방법이나 프림 방법으로 구할 수 있다. 크루스칼 방법
에서는 가중치가 가장 작은 간선부터 추가해 나가면서 사이클 형성 여부를 판단한다. 사
이클을 형성하는 경우에는 해당 간선을 추가시키지 않는다.
- 52 -
크루스칼 방법을 적용한 예:
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회 수행한 후의 결과를 보이시오.
초기상태 25 20 40 35 5 10 45 50 25 15
1단계 10 20 15 25 5 25 45 50 35 40
[정답/해설]
▪ 제산잔여법
▻ 키값을 저장 공간의 크기로 나눠서 얻어지는 나머지를 저장 공간의 주소로 사용하는
방법
▪ 중간제곱법
▻ 키값을 제곱한 다음 중간 부분에서 적당한 자릿수를 추출하는 방법
▻ n 자릿수를 선택해서 나타낼 수 있는 해시 테이블의 크기는 10n이다
▪ 폴딩법
▻ 키를 균등한 크기의 부분으로 나누고, 이들을 모두 더하거나 XOR를 취해서 주소를
계산하는 방법
▻ 변환 과정: 주어진 키를 2진수로 변환 → 2진수를 동일한 크기의 여러 부분으로 분할
→ 여러 부분의 2진수 전부에 대해서 덧셈 또는 XOR 연산을 수행 → 계산된 2진수를
해당 데이터의 저장주소로 사용
- 54 -
▪ 기수변환법
▻ 어떤 진법으로 표현된 키를 다른 진법으로 표현되었다고 간주하고 키를 변환하는 방
법
▪ 자릿수 추출법
▻ 모든 키값을 이미 알고 있는 경우에만 사용 가능하며, 키가 취할 수 있는 모든 키값
들에서 그 키를 구성하는 자릿수의 분포를 조사하여 비교적 고른 분포를 보이지 자릿
수를 필요한 만큼 택하는 방법
▻ 빈번한 삽입과 삭제가 발생하는 경우에는 키값의 분포를 다시 조사해야 하므로 비효
율적
선형 탐사, 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)
[정답/해설] ②
어휘 분석(lexical analysis) → 프로그램으로부터 단어(“토큰”)를 추출하고 이름, 숫자, 수식기호
등으로 매핑하는 단계. 빈 칸을 기준으로 단어의 구획을 설정
구문분석(syntax analysis) → 어휘 분석의 결과인 토큰의 나열을 해당 PL의 문법을 적용
해 문장의 구조를 결정하는 단계
코드 생성(code generation) → 구문분석의 결과로부터 각각의 명령어를 어셈블리어로
풀어쓰거나 직접 기계어 코들 생성하는 단계, 필요한 경우 준비된 라이브러리 코드와 링
크를 수행
[정답/해설] ②
- 60 -
[정답/해설] ②, 오버로딩은 객체지향 프로그래밍 언어에서 같은 이름의 함수를 재정의 하여
다른 기능을 하도록 표현할 수 있는 것으로 다형성을 지원한다.
① 객체지향형 언어 ② 명령형 언어
③ 논리형 언어 ④ 함수형 언어
[정답/해설] ④
- 61 -
형식 문법의 4가지 구성 요소는 터미널 심벌, 논-터미널 심벌, 생성 규칙, 시작 심벌이다.
터미널 심벌 → 문장을 이루는 단어로서 파스트리의 리프 노드에 해당, 자연어의 경우 사전에 나
오는 모든 단어가 이에 해당
논-터미널 심벌 → 복합적으로 나열된 터미널/논-터미널의 조합으로 나타내는 심벌 → 파스트리
의 내부 노드에 해당
생성 규칙 → 하나의 논-터미널이 다른 터미널/논-터미널로 어떻게 변환되는 지를 정의하는 규칙
시작 심벌 → 가장 상위에 있어 가장 먼저 변환되는 논-터미널 심벌 → 파스트리의 루트 노드에
해당
[정답/해설] ②
[정답/해설] ②
정규 언어의 생성 규칙은 매우 제한적이어서 다음과 같은 형태를 가져야한다.
<논-터미널> → “터미널”
<논-터미널> → “터미널” + <논-터미널> (또는 <논-터미널> → <논-터미널> + “터미
널”)
<논-터미널> → 빈 문자열
따라서 보기 중에서 이와 같은 형태를 가진 규칙은 ②밖에 없다.
- 62 -
[정답/해설] ④, 수행 결과는 사용하는 컴파일러에 따라 다를 수 있으며 이러한 문제의 원
인은 덧셈의 대상이 되는 두 자료의 타입이 서로 다르기 때문이다.
[정답/해설] ①
추상화(abstraction) → 자세한 세부적인 구현을 인간이 효율적으로 처리할 수 있는 사고
의 단위로 승격시켜 다룰 수 있게 해 주는 것(예: 프로시저나 함수의 사용) → 복잡한 프
로그램을 작은 단위로 나누고, 자주 사용되는 공통 단위에 새로운 이름을 부여하여 PL에
서 기본으로 제공하는 명령어처럼 불러 사용할 수 있게 하는 것
구현 숨기기(implementation hiding) → 특정 기능을 수행하는 부프로그램에서 내부의 세부
구현 사항이 변경되어도 외부에서 보는 기능을 동일하게 유지시켜 주는 것
캡슐화(encapsulation, 데이터 숨기기 data hiding) → 프로그램의 여러 다른 부분 간의 상호
작용을 이해하는 데 불필요한 내부 데이터를 최대한 숨겨주는 것 → 부프로그램 내부의
데이터 구조를 외부에서 마음대로 접근할 수 없게 만드는 것
- 63 -
된다.
[정답/해설] ③
스택 → 함수 호출 시 각 함수의 지역적 환경을 저장하기 위한 메모리의 한 구역
히프 → 메모리의 일부 구간을 예약 선점하여 이름을 주고 그 이름을 사용해서만 접근할
수 있게 만든 메모리의 한 구역으로, 동적 메모리 관리를 위해서 사용 → 원하는 크기의
구간이 발견되면 위치에 상관없이 예약하고 사용한다. → C언어에서는 동적 메모리 할당
과 반납을 위해서 malloc(), free(), C++의 경우 new, delete 연산자를 사용
▣ 교재 주관식 문제
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.
* 파스 방식에 따라서 위와 다른
순서로 진행될 수도 있다.
<식별자> :: = “a” | “b “ | ... | “z” | “A” | “B” | ... | “Z” | “0” | “1” | ... | “9” | <식별자>
“a” | <식별자> “b” | ... | <식별자> “z” | ...
- 65 -
파스 트리 1
파스 트리 2
A→ 0000 11
0001 99
0010 33
0011 44
0100 55
- 66 -
7. 리스프로 f(x) = x! (“x 팩토리얼”)를 계산하는 함수를 정의하시오. 재귀적인 형식으로 함
수를 정의하시오. (힌트: 1! = 1이다.)
[정답/해설] 다음과 같은 재귀적인 형태의 x!를 리스프로 변환한다.
(defun factorial (x)
(if (equal x 1)
1
(* x (factorial (- x 1))
× ⇒
)
)
제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가 저장되는 방법을 표현,
즉 실제로 저장될 내부 레코드 형식, 인덱스 유무, 저장 필드의 표현 방법, 저장 레코드의 물리적
순서 등을 표현 → 물리적 수준에서는 아직도 약간 한 단계 위에 있는 상태, 즉 물리적 레
코드(페이지, 블록)와 저장장치의 특성(실린더, 트랙)은 고려하지 않은 상태
- 72 -
① (A) ② (B) ③ (C) ④ (D)
[정답/해설] ③
[정답/해설] ③
관계형 모델 → 현재 가장 많이 사용되고 있는 모델로서, DB를 2차원 테이블(“릴레이션”)
의 집합으로 간주해서 테이블을 사용해서 데이터와 데이터의 관계를 표현
망형 모델(네트워크 모델) → 그래프 형태 → 데이터 간의 관계는 오너와 멤버의 관계
계층형 모델 → 트리 형태로 표현 → 두 레코드 타입은 1:n 관계 (“부모-자식 관계”)
객체지향 모델 → 데이터와 절차를 일체화된 단위로 다루는 객체지향의 사고방식을 적용
한 방식
객체관계형 모델 → 관계형 모델과 객체지향 모델의 장점을 결합한 형태 → 관계형 시스
템에 새로운 객체 저장 능력을 추가한 형태
① 네트워크형 모델 ② 관계형 모델
③ 계층형 모델 ④ 객체지향형 모델
[정답/해설] ①
- 73 -
① 네트워크형 모델 ② 관계형 모델
③ 계층형 모델 ④ 객체지향형 모델
[정답/해설] ②
[정답/해설] ①
용어 의미
카디널리티 투플(행)의 개수
투플 행, 레코드
차수 필드의 개수
속성 열, 필드, 데이터 항목
- 74 -
① 개체 ② 속성 ③ 관계 ④ 블록
[정답/해설] ③, E-R 다이어그램에서 개체 타입은 사각형, 관계는 다이아몬드, 속성은 타원으
로 나타낸다.
이름 나이 성별 주소 학과
홍가나 20 남 서울 컴퓨터과학
김다라 28 남 경상도 경영학
유마바 19 여 충청도 심리학
① 7 ② 8 ③ 9 ④ 10
[정답/해설] ④
데이터 조작어 → SELECT(검색), INSERT(삽입), DELETE(삭제), UPDATE(갱신)
데이터 정의어 → CREATE(생성/정의), ALTER(수정), DROP(삭제)
[정답/해설] ②
[정답/해설] ④
① 저장 데이터라는 것은 컴퓨터로 접근 가능한 저장 매체에 저장되어야 함을 의미하며,
따라서 서류, 종이철 등에 저장된 데이터는 제외된다.
② 운영 데이터란 조직의 존재 목적이나 유용성에서 필수적인 데이터까지 모아놓은 데이
터집합을 의미하며, 따라서 단순한 형태의 입출력 데이터들은 포함되지 않는다.
③ 통합 데이터란 데이터의 중복을 배제한다는 의미이지만, 완전한 배제를 나타내는 것
은 아니라 “최소한의 통제된 중복”은 허용된다.
- 75 -
14. 다음 중에서 주어진 테이블의 모든 내용을 삭제해서 빈 테이블로 만드는 SQL 명령문은
어느 것인가?
① DROP TABLE 직원;
② DROP TABLE FROM 직원;
③ DELETE FROM 직원 WHERE 번호=‘*’;
④ DELETE FROM 직원;
[정답/해설] ④, DROP TABLE 명령은 테이블 자체를 제거하는 명령이고, DELETE를 이용한
테이블 삭제는 테이블 자체가 아니라 테이블의 내용을 삭제하는 명령이다. 따라서 테이블의
모든 내용을 삭제하기 위해서는 “DELETE FROM 테이블;”과 같은 명령어를 사용하면 된다.
WHERE 조건을 사용하면 조건을 만족하는 내용만 삭제되므로 모든 내용을 삭제할 수 없다.
번호 이름 전화번호 성별 나이 봉급 부서번호
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
번호 이름 전화번호 성별 나이 봉급 부서번호
100 김영선 630 F 20 180 A
330 이영철 632 M 21 180 A
450 이남영 635 F 30 230 A
부서번호
이중에서 부서번호만 출력하면 A 가 출력된다.
- 76 -
① 논리적 설계 단계 ② 개념적 설계 단계
③ 물리적 설계 단계 ④ 구현 단계
▣ 교재 주관식 문제
1. 기존 파일 처리 시스템의 문제점과 해결 방안을 설명하시오.
[정답/해설] 파일 처리 시스템은 파일 단위의 데이터 저장 및 처리 시스템으로 각 사용자(응용 프로
그램)가 특정한 응용을 위해서 필요한 파일을 독립적으로 소유하고 관리한다. 따라서 기본적으로 데이
터 종속성과 데이터 중복이라는 문제가 발생하므로 각 사용자가 데이터를 공용하는 것은 불가능하다.
따라서 데이터를 공용하기 위한 기술로서 데이터베이스가 등장하였다.
- 77 -
[정답/해설] 데이터베이스 언어란 데이터베이스를 정의하고 접근하기 위해 데이터베이스 관
리 시스템과의 통신할 수 있는 수단으로 사용된다. 기능과 사용 목적에 따라 데이터 정의어
(DDL), 데이터 조작어(DML), 그리고 데이터 제어어(DCL)로 나눌 수 있다.
- 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’, , ‘홍길동’);
- 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 모델의 계층에서 ⓑ에 들어가는 계층은?
[정답/해설] ①
응용 계층 → 사용자나 응용 프로그램 사이에서 통신을 위한 서비스 제공
▪ HTTP, FTP, SMTP 등의 응용 프로토콜의 기능을 지원
표현 계층 → 데이터가 어떻게 표현되었는지에 무관하게 잘 작동할 수 있도록 해줌
▪ 응용 계층 간에 전송하는 데이터를 표현함에 있어서 의미에 따른 구문의 차이를 해소하기 위해
데이터의 변환, 데이터 압축 및 암호화 등의 기능을 제공 → 인터넷에서는 표현 계층이 따로 없
이 개별 응용 프로그램 수준에서 표현과 관련된 문제를 직접 처리
세션 계층 → 두 시스템 간의 통신을 위한 대화를 제어하는 기능 → 사용자 위주의 논리
적인 연결 서비스를 제공
▪ 통신 시스템 간의 상호 대화가 질서 있게 이루어질 수 있도록 설정 및 유지하고 동기화함
- 85 -
전송 계층 → 송신측에서 수신측까지의 전체 메시지 전달 기능, 오류 제어 및 흐름 제어
기능을 제공. 메시지가 전달될 때에는 순번을 가진 세그먼트 단위로 분할되고 수신측에 도착하면
재조립 → 전체 메시지가 올바른 순서대로 도착하는 것을 보장
네트워크 계층 → 패킷을 송신측으로부터 여러 네트워크를 통하여 수신측까지 전달 →
패킷 단위의 전송이 본격적으로 이루어지는 계층
▪ 패킷이 수신측에 전달될 수 있도록 경로를 지정하는 라우팅 기능과 혼잡 제어 기능 제공
데이터링크 계층 → 직접 연결된 두 컴퓨터간에 프레임을 전송 단위로 통신을 수행
▪ 전송 시 프레임의 시작과 끝, 수신자 주소 등이 추가되고 전송 시 오류를 발견하고 수정하는 기
능과 흐름 제어 기능을 제공, 대표적 프로토콜 → 이더넷, 와이파이
물리 계층 → 물리적으로 연결된 매체를 통해 비트 단위로 전송이 이루어지는 계층
① 데이터 링크 계층 ② 응용 계층
③ 세션 계층 ④ 표현 계층
[정답/해설] ④
[정답/해설] ①
① 환형 ② 링형 ③ 성(star)형 ④ 버스형
[정답/해설] ④
버스형 → 하나의 통신 회선(“버스”)에 여러 대의 노드를 연결한 형태
성형(별형) → 중앙의 제어 노드(“호스트”)에서 다른 모든 노드들을 점대점 방식으로 연결
한 형태
링형(환형) → 원형의 형태로 인접한 두 개의 노드를 점대점 방식으로 연결
트리형 → 원점에서 한 개 이상의 가지로 뻗어 나가는 구조
매시형 → 주 컴퓨터의 중계 없이 직접 노드들 간의 통신 가능하도록 구성된 형태로 통
신의 신뢰도가 중요시되는 구성 방식
- 86 -
7. 다음과 같은 특징을 갖는 LAN의 위상 구조는 어느 것인가?
① 버스형 ② 환형 ③ 성형 ④ 트리형
[정답/해설] ③
[정답/해설] ①
• 회선 교환 방식 → 송신측과 수신측 사이에 회선 설정, 데이터 전송, 회선 해제의 단계를
거치는 통신망
▪ 일단 회선이 연결되면 연결된 회선을 전용선처럼 사용 → 예: 일반 전화
• 메시지 교환 방식 → 송신측 노드에서 메시지를 받아 적절한 회선이 빌 때까지 저장하였
다가 한 단계씩 중간 단계의 스위치를 거쳐서 메시지의 길이 그대로 다음 노드로 전송하
는 방식
▪ 대기행렬(큐)을 사용한 축적교환(store and forward) 방식의 사용으로 인해 데이터 지연 시간이
발생 → 음성이나 대화식 통신과 같은 실시간 데이터 전송에 부적합
• 패킷 교환 방식 → 회선 교환 방식과 메시지 교환 방식의 장점을 결합한 전송망
▪ 메시지 전체가 아니라 “패킷”(메시지를 일정한 크기로 분할한 단위) 단위로 전송
▪ 종류 → 가상회선(virtual circuit) 방식, 데이터그램(datagram) 방식
▪ 패킷 교환 방식의 대표적 네트워크 → 인터넷
10. 회선 교환망과 메시지 교환망의 장점을 결합한 전송망에서는 데이터 전체가 아니라 송
신측주소와 수신측주소를 포함하는 일정형식의 데이터 블록을 기본단위로 통신이 이루
진다. 이와 같은 통신의 기본 단위를 무엇이라고 하는가?
① 패킷 ② 블록 ③ 코드 ④ 데이터그램
- 87 -
[정답/해설] ①
IPv4 IPv6
주소 길이 32 비트 128 비트
8비트씩×4개 필드 16비트씩×8개 필드
표현 방법
각 필드: 10진수 표현 각 필드: 16진수 표현
주소 개수 약 43억 개 약 3.42×1038개
네트워크 규모 및 단말기 수에
주소 할당 클래스 단위의 비순차적 할당
따른 순차적 할당
[정답/해설] ①
리피터(repeater) → 송신측의 원래 비트 형태를 재생하여 수신측의 좀 더 가까운 지점을
전송
▻ 네트워크의 물리적인 길이를 확장하는 역할, 통신 기능에는 전혀 영향을 미치지 않음
브리지(bridge) → 수신한 데이터 형식이나 내용 변화 없이 네트워크를 연결
▻ 리피터처럼 신호를 재생하고 수신측 주소의 검사를 통해 목적지가 속해 있는 세그먼트로만 재
생된 신호를 전송
스위치(switch) → 서로 다른 속도의 다수 개의 포토를 제공하여 H/W로 데이터를 처리
라우터(router) → 최적의 경로를 설정하고 관리하여 데이터를 전송하는 역할
▻ 패킷이 지나가야 할 경로를 저장하여 지정된 경로를 통해 전송
게이트웨이(gateway) → 사용하는 매체나 각종 프로토콜이 일치하지 않는 서로 다른 구
조의 네트워크를 연결
- 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 주소의 동적 할당에 사용
[정답/해설] ②
[정답/해설] ②
3-단계 핸드셰이크를 사용한 최소 연결 생성 절차는 다음과 같다.
(1) 송신자 → SYN → 수신자
(2) 송신자 ← SYN/ACK ← 수신자
(3) 송신자 → ACK → 수신자
(4) 데이터 전송
[정답/해설] ③
처리율(throughput): 단위 시간당 전송량 → 처리율 = 처리량 / 처리시간
▪ 처리시간 = 왕복시간 + 1/대역폭 × 처리량
지연시간(latency): 시발점에서 도착점까지 걸리는 시간
▪ 지연시간 = 이동시간 + 전송처리시간 + 대기시간
▻ 이동시간 = 거리 / 빛의 속도
▻ 전송처리시간 = 데이터 양 / 대역폭
▻ 대기시간 = 중간 노드의 대기행렬에서 머무는 시간
- 89 -
파워(power = 처리율 / 지연시간) → 처리율을 사용하는 성능 수치로서, 선로 대역폭과
대기행렬 등의 할당 방법을 결정하는 데 사용
▣ 교재 주관식 문제
1. 이더넷과 와이파이는 둘 다 하나의 전송매체를 여러 개의 노드가 공유한다. 이 때, 여러
대의 노드가 동시에 전송하려고 할 때 충돌이 일어나는데 이더넷과 와이파이는 충돌에
어떻게 다른 방식으로 대처하는가?
[정답/해설] 이더넷의 경우 충돌이 감지되면 충돌을 일으킨 노드들이 무작위로 대기시간 간
격을 선정하고 그 간격만큼 기다렸다가 재전송을 시도한다.
와이파이의 경우 충돌을 감지하는 소극적인 방식이 아닌 충돌을 미연에 방지하는 적극적인
- 90 -
방식을 사용한다. 충돌 방지는 전송 의사 발송과 전송 권한 선점을 통해 이루어진다.
- 91 -
9. 라우팅과 혼잡 제어의 차이는 무엇인가?
[정답/해설]
라우팅은 네트워크 상황이 변함에 따라 라우팅 표를 동적으로 변화시켜서 성능을 향상
시킨다. 패킷이 이동하는 경로를 변경시키는 것이 기본적인 라우팅 방식이다.
혼잡 제어는 특정 라우터에 패킷이 단 시간 내에 갑자기 몰려들어 대기행렬이 넘쳐서
패킷을 버려야하는 혼잡 현상을 막는 것이 주목적이다. 패킷 전송 속도를 변경하거나 재
전송 방식을 변경하는 것이 주요한 혼잡 제어 기법이다.
- 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
17. DDoS에서 봇넷이 서버에 보내는 요청과 일반 사용자가 보내는 요청은 그 요청의 형식
이나 합법성만 놓고 보면 같은가 다른가?
[정답/해설] 같다.
제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)의 개념
• 인간의 뇌의 구조와 정보처리 방식을 모델링하여 인간이 지능적으로 처리하는 복잡한
정보처리 능력을 기계를 통해 구현하려는 연구 또는 그러한 정보 처리 모형
▪ 인경신경망을 구현하기 위해서는 신경 세포, 신경망 구조, 학습 메커니즘에 대한 모
델링이 필요
• 장점
▪ 도메인 모델이 불필요 → 입력/목표 출력의 쌍들만 가지고 문제의 해결책을 찾을 수 있기
때문에 문제 도메인에 대한 사전 지식이 불필요
▪ 일반화 능력 → 주어진 입력/목표 출력 쌍들만이 아니라 미지의 입력에 대해서도 목표 출
력에 근사한 출력을 산출
❒ 인공 신경세포(뉴런) (☞ 보다 자세한 내용은 강의 자료 참조)
• 구조 →
- 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 -
부여. 각 염색체는 주어진 문제에 대한 해법을 함축하고 있어서 문자열의 패턴에 따라
각기 다른 해법을 제공 → 하나의 큰 개체군은 이런 다양한 해법의 집합이라고 볼 수
있다.
❒ 기본 처리 과정
8.2 문제 풀이 및 해설
▣ 객관식 문제
1. 인공지능에 직접적인 영향을 끼친 학문 분야가 아닌 것은?
① 심리학 ② 뇌과학 ③ 논리학 ④ 물리학
2. 상태 공간 탐색에 관한 설명 중 중 틀린 것은?
① 현재 상태에 연산자를 가하면 항상 하나의 결과 상태가 나온다.
② 현재 상태에 연산자를 가하면 여러 개의 결과 상태가 나올 수 있다.
③ 현재 상태에 연산자를 가하면 아무런 결과가 나오지 않을 수 있다.
④ 현재 상태에 연산자를 가하면 바로 이전 상태로 돌아갈 수도 있다.
[정답/해설] ④
지식 미사용 탐색 알고리즘 → 깊이 우선 탐색, 너비 우선 탐색, 깊이 제한 탐색, 반복
심화 탐색
- 98 -
지식 사용 탐색 알고리즘 → 최선 우선 탐색, 탐욕스러운 탐색, A-star 탐색, 반복 심화
A-star 탐색
[정답/해설] ①
[정답/해설] ②
7. 다음 중 절(clause)의 예가 아닌 것은?
① P∧Q ② P∨Q ③ P ④ ¬Q
- 99 -
① 0개 ② 1개 ③ 2개 ④ 3개
[정답/해설] ④
- 100 -
[정답/해설] ③, 퍼셉트론 유닛 하나를 사용하는 경우에는 가중치 조합을 주어도 XOR를 구
현할 수 없다. 하지만 세 개의 퍼셉트론 유닛을 사용하면 XOR를 표현할 수 있다. (교재 375
쪽, 377쪽)
[정답/해설] ④
유전자 알고리즘의 기본 연산은 선택, 교차, 변이이다.
선택 → 자손을 생성할 수 있는 두 부모 염색체를 선정하는 연산
교차 → 두 부모 염색체의 특징을 결합해 하나의 새로운 자손 염색체를 만들어 내는 연산
변이 → 자손 염색체의 임의의 유전자를 변경하는 연산
▣ 교재 주관식 문제
1. 튜링 테스트에 대해 간단히 알아보고 과연 이 테스트를 사용하면 어떤 인공지능 시스템
이 정말로 지능을 가졌는지 아닌지 평가할 수 있는지 논하시오.
[정답/해설] 튜링 테스트는 알란 튜링(Alan Turing)이 고안한 테스트로 기계가 지능이 있는
지 없는지 판단할 수 있게 해주는 것이 목적이다.
기본적인 아이디어는 인간이 컴퓨터 터미널을 통해 채팅하는 두 대화 상태(하나는 인간, 하
나는 기계)가 인간인지 기계인지 구분할 수 없을 경우 대화 상대인 기계가 지능을 가졌음을
인정해야 한다는 것이다.
이 테스트로 과연 지능 여부를 판단할 수 있는가 없는가는 아직 뚜렷한 해답이 없는 미결
문제이다.
- 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
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 (결론의 논리부정)
- 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를 구현하면 된다.
- 104 -
중국인 방은 사방이 막힌 방으로 안에는 영어 밖에 할 줄 모르는 사람이 앉아서
한쪽 벽에 있는 작은 서류 전달용 틈새로 전달 받은 종이에 쓰인 중국어 질문에 대해 방
안에 있는 칠판에 쓰여 있는 프로그램과 같은 절차를 따라 알고리즘을 수동으로 수행해서
최종적으로 알고리즘의 결과를 종이에 그려서 (쓰는 것이 아니다, 중국어와 한자를 모르기
때문에) 틈새로 바깥에 있는 중국인에게 전달하는 시스템이다.
만약 인지과학과 인공지능의 계산적인 모델이 옳다면 중국인 방과 글로써 대화하는 중국인
에게는 방 자체가 중국어를 “이해”한다고 느낄 것이다. 하지만 중국어 방과 방 내부의 어떤
구성 요소도 중국어를 이해한다고 볼 수 없다.
이 예로부터 존 설은 현재의 인지과학과 인공지능의 계산적이 접근방식이 한계를 가진다고
결론지었다.
이 사고 실험이 지능과 의식 등의 현상에 대한 계산적인 접근법에 대한 회의를 불러일으키
게 되었다. 이 사고 실험의 교훈을 따르자면 계산적인 접근 방법으로 강한 인공지능을 구현
하려는 것은 무의미한 일이 되는 것이다.
중국인 방에 대한 여러 가지 반박들이 있는데 이것들을 한번 찾아보는 것도 의미 있을 것
이다.
- 105 -