포스트

모의고사 13회

Q. 초정밀 반도체 기술을 바탕으로 전자기계 소자를 육안으로 보이지 않을 정도로 작은 수 mm에서 수 μm의 크기로 제작하는 초미세 장치를 무엇이라고 하는가?

초소형 전자 기계 시스템(MEMS; Micro Electro Mechanical System)

  • 소자: 기본적 요소. 전자 회로의 구성 요소가 되는 낱낱의 부품이나 장치로서, 독립된 고유의 기능을 가지고 있는 것. 전자 부품이라고도 한다.

Q. 웹으로 제공하고 있는 정보와 서비스를 융합하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술로 서로 다른 웹사이트의 콘텐츠를 조합하여 새로운 차원의 콘텐츠나 서비스를 창출하는 웹사이트 또는 애플리케이션 기술을 무엇이라고 하는가?

매시업(Mashup)

  • 매시업(Mashup)은 웹으로 제공하고 있는 정보와 서비스를 융합하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 기술이다.
  • 서로 다른 웹사이트의 콘텐츠를 조합하여 새로운 차원의 콘텐츠나 서비스를 창출하는 웹사이트 또는 애플리케이션 기술이다.

Q. 다음은 파티션의 종류이다. () 안에 들어갈 종류를 쓰시오.

조합 분할 또는 컴포지트 파티셔닝(Composite Partitioning)

  • Range Partitioning: 분할 키값이 범위 내에 있는지 여부를 구분하는 분할 기법
  • Hash Partitioning: 해시 함수의 값에 따라 파티션에 포함할지 여부를 결정하는 분할 기법
  • List Partitioning: 값 목록에 파티션을 할당하고 분할 키값을 그 목록에 맞게 분할하는 기법
  • (): 범위 분할, 해시 분할, 목록 분할 중 2개 이상의 분할 기법을 결정하는 기법
  • 파티션의 종류에는 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝, 컴포지트 파티셔닝 기법이 있다.

    종류설명
    범위 분할(레인지 파티셔닝; Range Partitioning)분할 키값이 범위 내에 있는지 여부를 구분하는 분할 기법
    해시 분할(해시 파티셔닝; Hash Partitioning)해시 함수의 값에 따라 파티션에 포함할지 여부를 결정하는 분할 기법
    목록 분할(리스트 파티셔닝; List Partitioning)값 목록에 파티션을 할당하고 분할 키값을 그 목록에 맞게 분할하는 기법
    조합 분할(컴포지트 파티셔닝; Composite Partitioning)범위 분할, 해시 분할, 목록 분할 중 2개 이상의 분할 기법을 결정하는 기법
  • 파티션(Partition)
    • 하드디스크를 논리적으로 쪼갬, C드라이브, D드라이브
    • 데이터베이스에서 파티션은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말함
    • 대용량 DB의 경우 몇 개의 중요한 테이블에만 집중(학생 테이블)되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산(년도별)시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐
    • 데이터 처리는 테이블 단위로 이뤄지고, 데이터 저장은 파티션별로 수행됨
  • 파티션의 장단점
    • 장점
      • 데이터 접근 시 액세스 범위를 줄여 쿼리 성능이 향상됨
      • 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상됨
      • 파티션별로 백업 및 복구를 수행하므로 속도가 빠름
      • 시스템 장애 시 데이터 손상 정도를 최소화할 수 있음
      • 데이터 가용성이 향상됨
      • 파티션 단위로 입•출력을 분산시킬 수 있음
    • 단점
      • 하나의 테이블을 세분화하여 관리하므로 세심한 관리가 요구됨
      • 테이블간 조인에 대한 비용이 증가함
      • 용량이 작은 테이블에 파티셔닝을 수행하면 오히려 성능이 저하(대용량에 대해 파티셔닝)
  • 파티션 유형: 파티셔닝 방식에 따라 범위 분할, 해시 분할, 조합 분할, 목록 분할, 라운드 로빈 분할 등으로 나뉨
    • 범위 분할(Range Partitioning)
      • 지정한 열의 값의 기준으로 분할함
      • 예) 일별, 월별, 분기별 등

        이미지

    • 해시 분할(Hash Partitioning)
      • 해시 함수를 적용한 결과 값에 따라 데이터를 분할함
      • 특정 파티션에 데이터가 집중되는 범위 분할의 단점(쇼핑몰)을 보완한 것으로, 데이터를 고르게 분산할 때 유용함
      • 특정 데이터가 어디에 있는지 판단할 수 없음(함수 결과 값에 따른 분할)
      • 고객번호, 주민번호 등과 같이 데이터가 고른 컬럼(중복x)에 효과적임

        이미지

    • 목록 분할(List Partitioning)
      • 지정한 열 값에 대한 목록을 만들어 이를 기준으로 분할함
      • 예) ‘국가’라는 열에 ‘한국’, ‘미국’, ‘일본’이 있는 경우 ‘미국’을 제외할 목적으로 ‘아시아’라는 목록을 만들어 분할함
    • 조합 분할(Composite Partitioning)
      • 범위 분할로 분할한 다음 해시 함수를 적용하여 다시 분할하는 방식
      • 범위 분할한 파티션이 너무 커서 관리가 어려울 때 유용함

        이미지

    • 라운드 로빈 분할(Round Robin Partitioning)
      • 레코드를 균일하게 분배하는 방식
      • 각 레코드가 순차적으로 분배되며, 기본키가 필요 없음

        이미지


Q. 다음은 백업의 유형이다. () 안에 들어갈 백업의 유형을 쓰시오.

전체 백업(Full Backup), 차등 백업(=차분 백업)(Differential Backup)

  • ( ① ): 백업받고자 하는 데이터 전체에 대해 백업하는 방식
  • ( ② ): 마지막 전체 백업 이후 변경된 모든 데이터를 백업하는 방식
  • 백업 유형 중 전체 백업과 차등 백업은 다음과 같다. [전차증]

    유형설명
    전체 백업(Full Backup)백업받고자 하는 데이터 전체에 대해 백업하는 방식
    차등 백업(=차분 백업)(Differential Backup)전체 백업 이후로 다음 전체 백업이 실시되기 직전까지 이전 전체 백업 이후 변화된 데이터를 백업하는 방식
    증분 백업(Incremental Backup)차등 백업과 유사하나 전체 백업 이후 변경분이 누적되어 백업되는 방식
  • 차분은 t 시점의 데이터가 t-1 시점 데이터에 비해 얼마나 증감했는지 알 수 있게 된다.
  • 함수y = f(x) 에서 x의 값이 a에서 b까지 변할 때 x의 값의 변화량b - a가 x의 증분이고, x의 값 a와 b에 각각 대응하는 y의 값 f(a), f(b)의 변화량 f(a) - f(b)가 y의 증분이다. 증분은 increment를 번역한 것이다.

    이미지


Q. [학생] 테이블을 제거할 때 [학생] 테이블을 참조하는 모든 데이터도 함께 제거하는 DDL 문을 작성하시오.

1
DROP TABLE 학생 CASCADE;
  • DROP TABLE은 테이블을 삭제하는 명령이다.
  • DROP TABLE 문법은 다음과 같다.

    1
    
      DROP TABLE 테이블명 [CASCADE|RESTRICT];
    
    • DROP TABLE 명령어의 옵션에는 CASCADE와 RESTRICT가 있다.
    • CASCADE와 RESTRICT의 경우 외래 키(FOREIGN KEY)가 걸려 있을 때 해당한다.

      옵션설명
      CASCADE참조하는 테이블까지 연쇄적으로 제거하는 옵션
      RESTRICT다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션

Q. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

11

1
2
3
4
5
6
7
8
class Soojebi:
	def fn(self, a, b);
		self.a = 9
		self.b = b
		print(a+self.b)

a = Soojebi()
a.fn(4, 7)
  • a.fn(4, 7)에 의해 Soojebi 클래스의 fn 메서드를 호출한다.
  • fn 메서드는 a에 4라는 값이, b에 7이라는 값이 넘어가게 되고, self.a라는 변수에 9, self.b에는 b의 값인 7을 대입한다.
  • fn 메서드에서 a는 4이고, self.b는 7이므로 4+7인 11이 출력된다.

Q. 시스템 처리능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서 시스템의 처리를 테스트하는 성능 테스트 유형은 무엇인가?

강도 테스트(Stress Testing)

  • 성능 테스트의 상세 유형은 다음과 같다. [부강스내]
    • 부하 테스트(Load Testing)
      • 시스템에 부하를 계속 증가시키면서 시스템의 임계점을 찾는 테스트
      • 부하 테스트를 통해 병목 지점을 찾아서 병목 현상을 제거하는 과정 반복
    • 강도 테스트(Stress Testing)
      • 시스템 처리 능력 이상의 부하, 즉 임계점 이상의 부하를 가하여 비정상적인 상황에서 시스템의 동작 상태를 확인하는 테스트
    • 스파이크 테스트(Spike Testing)
      • 짧은 시간에 사용자가 몰릴 때 시스템의 반응을 측정하는 테스트
    • 내구성 테스트(Endurance Testing)
      • 오랜 시간 동안 시스템에 높은 부하를 가하여 시스템의 반응을 측정하는 테스트
  • 컴퓨터계에서는 시스템이 수행해야 할 양의 척도로, 여러 프로세스들을 관리하는 서버 및 네트워크 분야에서의 부하 개념은 실행 중인 프로세스의 양과 대기 중인 프로세스의 양을 모두 합친 전체 프로세스의 양을 가리킨다.

Q. 소프트웨어 아키택처 패턴 유형 중 각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공하는 패턴은 무엇인가?

계층화(Layered Pattern) 패턴

  • 소프트웨어 아키텍처 패턴의 유형은 다음과 같다.
    • 계층화 패턴(Layered Pattern)
      • 시스템을 계층(Layer)으로 구분하여 구성하는 패턴
      • 각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공
      • 서로 마주 보는 두 개의 계층 사이에서만 상호작용이 이루어짐

      이미지

    • 클라이언트-서버 패턴(Client-Server Pattern)
      • 하나의 서버와 다수의 클라이언트로 구성된 패턴
      • 사용자가 클라이언트를 통해서 서버에 서비스를 요청하면 서버는 클라이언트에게 서비스를 제공
      • 서버는 계속 클라이언트로부터 요청을 대기

      이미지

    • 파이프-필터 패턴(Pipe-Filter Pattern)
      • 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
      • 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복
      • 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장이 용이

      이미지

    • 브로커 패턴(Broker Pattern)
      • 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스 실행을 통해 상호작용이 가능한 패턴
      • 브로커 컴포넌트는 컴포넌트 간의 통신을 조정하는 역할 수행
      • 서버는 자신의 기능들(서비스 및 특성)을 브로커에 넘겨주며(Publish), 클라이언트가 브로커에 서비를 요청하면 브로커는 클라이언트를 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션(Redirection) 함

      이미지

    • 모델-뷰-컨트롤러 패턴(MVC; Model View Controller Pattern)
      • MVC 패턴이라고도 하는 이 패턴은 대화형 애플리케이션을 모델, 뷰, 컨트롤러 3개의 서브 시스템으로 구조화하는 패턴
        • 모델(Model): 핵심 기능과 데이터 보관
        • 뷰(View): 사용자에게 정보 표시(하나 이상의 뷰가 정의될 수 있음)
        • 컨트롤러(Controller): 사용자로부터 요청을 입력받아 처리
      • 각 부분이 별도의 컴포넌트로 분리되어 있어서 서로 영향을 받지 않고 개발 작업 수행 가능
      • 컴포넌트를 분리하여 코드의 효율적인 재사용을 가능하게 하고, 여러 개의 뷰가 있어야 하는 대화형 애플리케이션 구축에 적합

      이미지


Q. 자바 바이트 코드를 실행할 수 있는 주체로 CPU나 운영체제 종류와 무관하게 동작하는 것을 보장하는 가상 머신을 무엇이라 하는지 쓰시오.

JVM(Java Virtual Machine)

  • 자바와 관련된 3대 용어로는 JVM, JRE, JDK가 있다. JRE는 Java Runtime Environment의 약자로 자바 코드를 실행하기 위한 소프트웨어이다. JDK는 Java Development Kit의 약자로 자바 응용소프트웨어 개발 키트이다.

Q. 주어진 ‘성적’ 테이블에서 학점은 내림차순 정렬을 수행하고, 같은 값일 때 이름을 오름차순으로 정렬하는 SQL을 작성하시오.

1
2
3
SELECT *
FROM 성적
ORDER BY 학점 DESC, 이름 ASC;
1
2
3
SELECT 이름, 과목, 학점
FROM 성적
ORDER BY 학점 DESC, 이름 ASC;

[성적]

이름과목학점
김창완자료구조B
이승환설계패턴F
이문세소프트웨어 공학F
이지은공업수학C
  • ORDER BY절은 속성값을 정렬하고자 할 때 사용한다.
  • SELECT 주요 명령어는 다음과 같다.
    • SELECT절
      • 검색하고자 하는 속성명, 계산식을 기술
      • 속성명 별칭은 AS를 사용하며 생략 가능함
      • 2개 이상의 테이블을 대상으로 검색할 때는 테이블명.속성명으로 표현
      • 술어 부분은 ALL이 기본값
        • ALL
          • 모든 튜플을 검색할 때 사용
          • SELECT 뒤에 명시하지 않은 경우 ALL로 인식
        • DISTINCT
          • 중복된 속성이 조회될 경우 그중 한 개만 검색(SELECT 뒤에 명시된 속성이 중복될 경우 한 개만 검색)
    • FROM절
      • 질의의 의해 검색될 데이터들을 포함하는 테이블명을 기술
    • WHERE절
      • 검색할 조건을 기술
    • GROUP BY절
      • 속성값을 그룹으로 분류하고자 할 때 사용
    • HAVING절
      • GROUP BY에 의해 분류한 후 그룹에 대한 조건 지정
    • ORDER BY절
      • 속성값을 정렬하고자 할 때(ASC: 오름차순, DESC, 내림차순, ASC, DESC 키워드 생략 시 오름차순 정렬) 사용
  • ORDER BY 학점 DESC, 이름; 도 정답이다. ASC와 DESC를 써주지 않을 경우 기본값이 ASC이기 때문이다.

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

1 2 3 4 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Soojebi {
	public static void main(Stirng[] args) {
		int[] arr = {3, 5, 4, 2, 1}
		int i=0;
		int temp=0;
		
		do {
			int j=i;
			do {
				if(arr[i] > arr[j]){
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
				j++;
			}	while(j<5);
			i++;
		}while(i<4);
		
		for(i=0; i<5; i++) {
			System.out.printf(arr[i] + "");
		}
	}
}
  • 1차원 정수형 배열 arr은 3, 5, 4, 2, 1로 초기화한다.
  • i는 0, temp는 0으로 선언과 동시에 초기화한다.
  • 2중 do-while 구문이 수행된다. 바깥쪽 do-while에서 i 값을 j에 대입한다. 안쪽 do-while 반복문에서 arr[i]와 arr[j] 값을 비교하여 arr[i]가 더 크면 두 값을 교환(swap)한다. 교환은 arr[i]를 temp에 대입하고 arr[j]를 arr[i]에 대입하고 temp를 arr[j]에 대입하는 방식으로 수행된다.
  • j 값을 1 증가시키고 j가 5보다 작을 때까지 반복을 수행한다.
  • 안쪽 do-while 문이 종료되고 i++을 수행하여 i값을 1 증가시킨다.
  • 바깥쪽 i가 4보다 작을 때까지 반복을 수행한다.

    ijarr[i]arr[j]비고arr
    0033  
    0135  
    0234  
    0332swap 발생2 5 4 3 1
    0421swap 발생1 5 4 3 2
    1155  
    1254swap 발생1 4 5 3 2
    1343swap 발생1 3 5 4 2
    1432swap 발생1 2 5 4 3
    2255  
    2354swap 발생1 2 4 5 3
    2443swap 발생1 2 3 5 4
    3355  
    3454swap 발생1 2 3 4 5
  • Java 언어에서 do-while 구문은 다음과 같다.

    1
    2
    3
    
      do {
      	명령문;
      } while(조건문);
    
    • 무조건 한 번은 명령문이 실행된 후에 while 문의 조건문이 실행됨

Q. 데이터베이스의 4가지 특징에는 Integrated Data, Stored Data, Operational Data, ()이/가 있다. () 안에 들어갈 특징을 쓰시오.

공용 데이터(Shared Data)

  • 데이터베이스의 특징은 다음과 같다.

    특징설명
    통합된 데이터(Integrated Data)자료의 중복을 배제한 데이터의 모임
    저장된 데이터(Stored Data)저장 매체에 저장된 데이터
    운영 데이터(Operational Data)조직의 업무를 수행하는 데 필요한 데이터
    공용 데이터(Shared Data)여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터

Q. 결합도의 유형 중 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도는 무엇인가?

내용 결합도(Content Coupling)

  • 결합도는 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성이다.
  • 결합도의 유형은 다음과 같다.
    • 내용 결합도(Content Coupling)
      • 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
    • 공통 결합도(Common Coupling)
      • 파라미터가 아닌 모듈 밖에 선언되어있는 전역변수를 참조하고 전역 변수를 갱신하는 식으로 상호작용하는 경우의 결합도
    • 외부 결합도(External Coupling)
      • 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 또는 디바이스 인터페이스를 공유할 경우의 결합도
    • 제어 결합도(Control Coupling)
      • 단순 처리할 대상인 값만 전달되는 게 아니라 어떻게 처리를 해야 한다는 제어 요소가 전달되는 경우의 결합도
    • 스탬프 결합도(Stamp Coupling)
      • 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
    • 자료 결합도(Data Coupling)
      • 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우의 결합도

이미지


Q. 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자의 PC에 소프트웨어를 설치 또는 업데이트 시에 자동적으로 감염되도록 하는 공격을 무엇이라고 하는가?

공급망 공격(Supply Chain Attack)

  • 보안 관련 용어는 다음과 같다.

    용어설명
    공급망 공격(Supply Chain Attack)소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자 PC에 소프트웨어 설치 또는 업데이트 시에 자동적으로 감염되도록 하는 공격 기법
    제로데이 공격(Zero Day Attack)보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격 기법
    웜(Worm)스스로 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램
    악성 봇(Malicious Bot)스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능 프로그램 혹은 코드
    사이버 킬체인(Cyber Kill Chain)공격형 방위시스템으로 지능적, 지속적 사이버 공격에 대해 7단계 프로세스별 공격 분석 및 대응을 체계화한 APT 공격 방어 분석 모델

Q. 테이블을 DROP 하려고 하는데 테이블에 외래 키(FOREIGN KEY)가 걸려있다. 참조하는 테이블까지 연쇄적으로 제거하려고 할 때는 ( ① ) 옵션을 사용하고, 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않을 때는 ( ② ) 옵션을 사용한다. ()에 앎자은 옵션을 쓰시오.

CASCADE, RESTRICT

  • DROP TABLE 명령어의 옵션에는 CASCADE와 RESTRICT가 있다.
  • CASCADE와 RESTRICT의 경우 외래 키(FOREIGN KEY)가 걸려 있을 때 해당한다.
  • DROP TABLE 명령어 옵션은 다음과 같다.

    옵션설명
    CASCADE참조하는 테이블까지 연쇄적으로 제거하는 옵션
    RESTRICT다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션

Q. 프로세스 스케줄링 유형 중에서 ( ① )은/는 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식이다. 또한 ( ① ) 알고리즘 중에는 ( ② )은/는 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 방식이다. () 안에 들어갈 용어를 쓰시오.

선점형 스케줄링(Preemptive Scheduling), SRT(Shortest Remaining Time First)

  • 프로세스 스케줄링 유형에는 선점형 스케줄링과 비선점형 스케줄링이 있다.
  • 선점형 스케줄링 알고리즘 유형에는 라운드 로빈(Round), SRT(Shortest Remaining Time First), 다단계 큐(Multi Level Queue), 다단계 피드백 큐(Multi Level Feedback Queue)가 있다.
  • 선점형 스케줄링
    • 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
    • 비교적 빠른 응답과 대화식 시분할 시스템에 적합한 프로세스 스케줄링 기법
  • SRT(Shortest Remaining Time First)
    • 가장 짧은 시간이 소요되는 프로세스를 먼저 수행하고, 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점되는 스케줄링 알고리즘

Q. 둘 이상의 프로세스나 스레드가 공유자원을 동시에 접근할 때 접근 순서에 따라 비정상적인(원하지 않는) 결과가 발생하는 조건/상황에서 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하게 하는 공격 기법은 무엇인가?

레이스 컨디션 공격(Race condition Attack)

  • 둘 이상의 프로세스나 스레드가 공유자원을 동시에 접근할 때 접근순서에 따라 비정상적인(원하지 않는) 결과가 발생하는 조건/상황에서 실행되는 프로세스가 임시파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시파일을 심볼릭 링크하여 악의적인 행위를 수행하게 하는 공격 기법은 레이스 컨디션 공격이다.

Q. 다음은 데이터 링크 계층(2계층) 프로토콜에 대한 설명이다. () 안에 올바른 용어를 쓰시오.

HDLC(High-level Data Link Control), PPP(Point-to-Point)

( ① )은/는 점대점 방식이나 다중방식의 통신에 사용되는 ISO에서 표준화한 동기식 비트 중심의 데이터 링크 프로토콜이고, ( ② )은/는 네트워크 분야에서 두 통신 노드 간의 직업적인 연결을 위해 일반적으로 사용되는 데이터 링크 프로토콜이다.

  • 데이터 링크 계층의 프로토콜 중 HDLC와 PPP는 다음과 같다.

    프로토콜설명
    HDLC(High-level Data Link Control)점대점 방식이나 다중방식의 통신에서 사용되는 ISO에서 표준화한 동기식 비트 중심의 데이터 링크 프로토콜
    PPP(Point-to-Point Protocol)네트워크 분야에서 두 통신 노드 간의 직접적인 연결을 위해 일반적으로 사용되는 데이터 링크 프로토콜
  • 다중 통신 방식(multiplex communication system)
    • 다중화 장치를 이용하여 하나의 회선 또는 전송로를 분할함으로써 복수의 통신로(다중 통신로)를 설정하여 다수의 개별적인 신호를 동시에 송수신하는 통신 방식 → 다중 전송 방식
  • 다중화(Multiplexing; MUX)
    • 하나의 회선 또는 전송로(유선의 경우 1조의 케이블, 무선의 경우 1조의 송수신기)를 분할하여 개별적으로 독립된 신호를 동시에 송수신할 수 있는 다수의 통신로(채널)를 구성하는 기술
    • 다중화 방식으로는 하나의 회선을 다수의 주파수 대역으로 분할하여 다중화하는 주파수 분할 다중 방식(FDM)과 하나의 회선을 다수의 아주 짧은 시간 간격(time interval)으로 분할하여 다중화하는 시분할 다중 방식(TDM) 등이 있다.
  • 주파수 분할 다중 방식(Frequency Division Multiplexing; FDM)

    이미지

    • 하나의 물리적 통신 채널을 여러 개의 논리적 채널로 나누어 사용하는 다중화 방식 중의 하나로, 보통 넓은 대역폭을 복수 개의 좁은 대역 채널로 구분하여 사용하는 방식. 이때 다중 통신 방식의 일종으로 다수 채널의 신호를 각각 다른 반송파로 변조하여 하나의 전송로로 보내고, 수신 측에서는 필요한 주파수 대역만 추출한 후 각각의 반송파로 복조하여 원래 신호를 복원한다.
    • 반송파(carrier signal)란 통신에서 정보의 전달을 위해 입력 신호를 변조한 전자기파(일반적으로 사인파)를 의미한다.

Q. CMM(I) 단계적 표현 모형의 성숙도 레벨 중에서 ( ① )단계는 조직의 표준 프로세스를 활용하여 업무를 수행하는 상태 표준화, 일관된 프로세스가 존재하는 단계로 엔지니어링 및 관리 프로세스가 통합된 단계이고, ( ② )단계는 프로세스 역량 향상을 위해 신기술도입, 프로세스 혁신 활동 수행하는 단계, 프로세스 개선이 내재화된 단계이다. () 안에 들어갈 올바른 성숙도 레벨을 쓰시오.

정의(Defined), 최적화(Optimized)

  • CMMI 단계적 표현 모델의 성숙도 레벨은 다음과 같다. [초관정정최]
    • 초기화 단계(Initial)
      • 수준: 1
      • 정의된 프로세스가 없고 작업자 능력에 따라 성과가 좌우되는 단계
      • 프로세스 미비/비공식적, 예측 불가
    • 관리 단계(Managed)
      • 수준: 2
      • 특정한 프로젝트 내의 프로세스가 정의되고 수행되는 단계
      • 프로젝트 관리 시스템 정착, 프로젝트 결과의 반복성
    • 정의 단계(Defined)
      • 수준: 3
      • 조직의 표준 프로세스를 활용하여 업무를 수행하는 상태
      • 표준화, 일관된 프로세스가 존재하는 단계
      • 엔지니어링 및 관리 프로세스의 통합
    • 정량적 관리 단계(Quantitatively Managed)
      • 정량적 기법을 활용하여 핵심 프로세스를 통제하는 단계
      • 제품 및 프로세스의 정량적 통제
    • 최적화 단계(Optimized)
      • 프로세스 역량 향상을 위해 신기술 도입, 프로세스 혁신 활동 수행하는 단계
      • 프로세스 개선이 내재화된 조직

Q. 다음은 C언어 코드이다. 출력 결과를 쓰시오.

031425

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
void main() {
	int i, j;
	int arr[3][4];
	
	for(i=0; i<3; i++) {
		for(j=0; j<4; j++) {
			arr[i][j] = i+j;
			if(j%3==0) {
				printf("%d", arr[i][j]);
			}
		}
	}
}
  • for 반복문에서 사용할 정수형 변수 i, j를 선언한다. 값을 저장할 정수형 변수 arr 배열을 3행 4열로 선언한다.
  • 2중 for 문에서 i와 j를 더한 값을 arr 배열에 대입한다. 만약 j가 3으로 나눈 나머지가 0인 경우 arr 배열의 값을 화면에 출력한다.
  • 그다음 출력은 ‘\n’이나 ‘’, ‘,’이 없으므로 이어서 출력한다.

    ijarr[i][j]j%3
    0000
    0111
    0222
    0330
    1010
    1121
    1232
    1340
    2020
    2131
    2242
    2350


참고 자료


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.