티스토리 뷰

21. 하나 이상의 프로그램 또는 연속되어 있지 않은 저장 공간으로부터 데이터를 모은 다음, 데이터들을 메시지 버퍼에 넣고, 특정 수신기나 프로그래밍 인터페이스에 맞도록 그 데이터를 조직화하거나 미리 정해진 다른 형식으로 변환하는 과정을 일컫는 것은?

이 문제는 Converting과 Marshalling이 햇깔리기 쉽다.

 

1번 Porting(포팅)은 서로 다른 컴퓨터에 프로그램을 이식(Porting)하는 것을 의미하고,

4번 Streaming(스트리밍)은 데이터를 전송하는 방식을 이야기하는 것으로 생각하면

 

정답은 2번과 3번중 하나인데 "미리 정해진 다른 형식으로 변환하는 과정"이라는 문제를 보아 Converting이 정답이겠구나 하고 생각하는 사람이 있을 수 있겠으나(나처럼) 함정이다.

 

정답은 Marshalling이 맞는데 이 Marshalling의 뜻은

 

"특정 수신기나, 프로그래밍 인터페이스에 맞도록 그 데이터를 조직화 하거나 미리 정해진 다른 ㅅ형식으로 변환하는 과정"

 

이라고 되어있고, 여기서 잘 봐야하는 문구는 "데이터를 조직화"하는 것에 포커스를 맞춰서 생각해야겠다.

나도 설명을 적으면서 이 무슨 말장난 같은 문제인가 생각을 해봤는데 어쩔 수 없다. 그냥 외워야지.

 

22. 불 함수식 F = (A+B) · (A+C)를 가장 간소화한 것은?

이 문제는 그냥 인수분해해서 나열하면 금방 이해할 수 있다.

 

F = A + BC 가 정답

 

23. 하나의 입력 정보를 여러 개의 출력선 중에 하나를 선택하여 정보를 전달하는데 사용하는 것은?

"하나의 입력 정보를 여러 개의 출력선" 까지 읽으면 "멀티플렉서"가 정답이다. 하지만 "그 중에 하나를 선택하여 정보를 전달"까지 읽게 되면 "디멀티플렉서"가 정답이 된다.

 

24. 다음 명령어 사이클에 대한 설명이 가장 옳지 않은 것은?

문제지에는 "음"이라고 나와있는데 누가 앞에 "다"를 입력하는 것을 깜빡한 모양이다. "다음 명령어 사이클"이라고 읽어주는게 맞다.

 

일단 명령어 사이클에 대해서 배워보자.

 

1. Fetch Cycle(인출 사이클)

- 제어장치가 앞의 명령 실행을 완료한 후 다음에 실행할 명령을 기억 장치로부터 CPU로 가져오는 동작을 완료할 때 까지의 사이클

 

2. Indirect Cycle(간접 사이클)

- 간접 주소 지정이 허용되는 경우 실행 사이클에 앞서 간접 사이클이 진행되는데, 오퍼랜드가 지정하는 곳으로 부터 유효주소를 읽어들이기 위해 메모리에 접근하는 사이클

 

3. Excute Cycle(실행 사이클)

- 인출된 명령어를 이용하여 직접 명령어를 실행하는 사이클

 

4. Interrupt Cycle(인터럽트 사이클)

- 현재 수행 중인 명령이 예기치 않은 일의 발생으로 중단 되는 상태

 

정답은 2번이 되겠다. 인터럽트는 "멈춤" 상태다. 뭐가 실행되서 완료하지 않는다.

 

25. 아래 보기와 같이 명령어에 오퍼랜드 필드를 사용하지 않고 명령어만 사용하는 명령어 형식은?

ADD : (덧셈)

MUL : (곱셈)

오퍼랜드 필드를 사용하지 않고 명령어만 사용하는 명령어는 0주소 명령어다.

 

각 주소 명령어에 대한 설명을 덧 붙이자면

 

[Zero-Address Instruction Mode]

- OP Code부만 있고 주소를 지정하는 자료부(Operand)가 없는 명령어

- 모든 연산은 Stack 메모리의 TOP이 가리키는 Operand를 이용하여 명령을 수행

- Stack Machine이라고 부름

- 명령 수행시간이 짧고 기억 공간 효율이 높음

- Postfix 방식으로 수식을 표기

- 피연산자는 PUSH, 연산자를 만나면 연산에 사용할 피연산자를 POP한 후에 연산결과를 PUSH

 

[1-Address Instruction Mode]

- 주소를 지정하는 자료부가 1개 있음

- 누산기(AC, Accumulator)를 이용하여 처리

- 수행결과도 누산기에 저장

 

[2-Address Instruction Mode]

주소를 지정하는 자료부가 2개 있음

- 가장 일반적인 명령어 방식

- 실행 속도가 빠르고 기억 장소 효율이 좋음

- 수행결과를 기억장치에 저장하고 중앙처리장치에도 남아 있어서 결과를 테스트할 때 시간을 절약

- 전체 프로그램 길이가 길어지는 단점

- 연산 결과를 한 쪽에 저장해야 하므로 한 쪽의 자료가 사라짐

 

[3-Address Instruction Mode]

주소를 지정하는 자료부가 3개 있음

- 연산 결과를 한 영역을 사용하여 원래의 자료가 사라지지 않음

- 프로그램 길이를 짧게 할 수 있음

- 명령 인출에 필요한 주기억장치 접근 횟수가 적음

- 수행 시간이 길어짐

 

26. 인터럽트의 처리 루틴의 순서로 올바른 것은?

ㄱ. 현재 상태 보존

ㄴ. 인터럽트 인식

ㄷ. 요청 인터럽트 서비스로 분기 및 서비스

ㄹ. 사용자 상태 복구 및 재개

인터럽트는 어떤 작업을 하다가 무슨 일이 생겨서 프로그램이 멈춘 상태다.

그러면 일단 문제를 인식하고 현상태를 이해한 다음에 다른 방법을 찾고 상태를 복구하는게 일반적인 해법이된다.

 

이것의 정답은 4번 ㄴ→ㄱ→ㄷ→ㄹ 이 된다.

 

 

27. 10진수 3은 3-초과 코드(Excess-3 Code)에서 어떻게 표현되는가?

3초과 코드를 알기전에 일단 BCD코드를 먼저 알아야한다.

 

[BCD코드]

- Binary Coded Decimal Code : 2진화 10진코드, 8421 코드

- 10진수 0부터 9까지를 2진화한 코드로써 실제 표기는 2진수 이지만 10진 수 처럼 사용함

 

10진수 BCD코드
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 0001 0000
11 0001 0001
150 0001 0101 0000

[3초과 코드(Excess-3 Code)]

- 3초과 코드는 BCD코드로 표현된 값이 +3을 더하여 나타낸 코드

- 자기 보수 성질을 갖는다.

- 현재의 값에서 1의 보수를 취하면 10진수에서 9의 보수에 해당되는 값이 된다.(예 : 10진수 6에대한 보수는 3이된다)

- 3초과 코드는 2진 비트 위치에 따라서 보면 자기 보수의 관계에 있다는 것을 알 수 있음

 

그냥 3을 이진수로 바꾼 뒤에 3을 더해주면 되다는 소리니까 0011 에서 0110이 된다는 소리가 된다.

 

표로 나열하면 아래와 같다.

 

10진수 BCD코드 3초과 코드
0 0000 0011
1 0001 0100
2 0010 0101
3 0011 0110
4 0100 0111
5 0101 1000
6 0110 1001
7 0111 1010
8 1000 1011
9 1001 1100

그러므로 정답은 2번 0110이다.

 

28. 인터럽트 우선순위를 결정하는 Polling 방식에 대한 설명으로 옳지 않은 것은?

일단 이 문제는 Polling이라는 방식을 이해할 필요가 있는데 Polling방식은 어떤 환경에서도 가장 느린 처리속도를 자랑하는 방식이다. 기본적인 루틴이 "요청하고 응답 받고 데이터를 확인해서 결과를 도출"하는 과정이라서 태생부터가 느릴 수 밖에 없는 방식이다. 게다가 인터럽트의 우선순위를 결정하는 Polling방식의 경우 소프트웨어적으로 CPU가 각 장치 하나하나를 차례로 조사하는 방식이라서 느릴 수 밖에 없다.

 

그런데 "많은 인터럽트 발생 시 처리 시간 및 반응 시간이 매우 빠르다"는 당연히 틀린 말이 되겠지.

 

물론 소프트웨어적으로 처리하기 때문에 조사 순위가 우선순위가 되고 모든 인터럽트를 위한 공통의 서비스 루틴을 갖게된다.

 

29. 데이터를 고속으로 처리하기 위해 연산 장치를 병렬로 구성한 처리 구조로 벡터 계산이나 행렬계산에 주로 사용되는 프로세서의 명칭으로 가장 옳은 것은?

"벡터 계산"이 나오는 순산 답은 나왔다. "배열 프로세서"다.

 

- 코 프로세서 : 프로세서의 기능을 보완하는 프로세서. 

- 다중 프로세서 : 버스, 클럭, 메모리와 같은 자원들을 함께 공유하는 두개 이상의 프로세서를 사용하는 시스템(CPU가 여러개라고 생각하자)

- 대칭 프로세서 : 두 개 이상의 프로세서가 하나의 메모리를 공유하며 사용하는 아키텍처(다중 프로세서 하위 개념)

 

30. 레지스터 사이의 데이터 전송 방법에 대한 설명으로 가장 옳지 않은 것은?

 

 

 

1. 직렬 전송 방식에 의한 레지스터 전송은 하나의 클록 펄스 동안에 하나의 비트가 전송되고, 이러한 비트 단위 전송이 모여 워드를 전송하는 방식을 말한다.

2. 병렬 전송 방식에 의한 레지스터 전송은 하나의 클록 펄스 동안에 레지스터 내의 모든 비트 즉, 워드가 동시에 전송되는 방식을 말한다.

3. 병렬 전송 방식에 의한 레지스터 전송은 직렬 방식에 비해 속도가 빠르고 결선의 수가 적다는 장점을 가지고 있다.

4. 버스 전송 방식에 의한 레지스터 전송은 공통의 통신로를 이용하므로 병렬 전송 방식에 의한 레지스터 전송 방식보다 결선의 수가 적다.

 

 

댓글
댓글쓰기 폼