047 자료 구조의 분류
- 선형 구조:선형 리스트(배열), 연결 리스트, 스택, 큐, 데크
- 비선형 구조:트리, 그래프
048 연결 리스트(Linked List)
054 수식의 표기법
- 전위 표기법(Prefix):연산자→Left→Right
- 중위 표기법(Infix):Left→연산자→Right
- 후위 표기법(Postfix):Left→Right→연산자
055 정렬(Sort)
특정 키 항목을 기준으로 오름차순(Ascending) 또는 내림차순(Descending)으로 재배열하는 작업
내부 정렬
- 소량의 데이터를 RAM에만 기억시켜서 정렬하는 방식
- 종류:히프 정렬, 삽입 정렬, 셸 정렬, 버블 정렬, 선택 정렬, 퀵 정렬, 2-Way Merge 정렬, 기수 정렬(=Radix Sort)
외부 정렬
- 대량의 데이터를 보조기억장치에 기억시켜서 정렬하는 방식 대부분 병합 정렬(Merge Sort)기법으로 처리.
- 종류:밸런스 병합 정렬, 캐스케이드 병합 정렬, 폴리파즈 병합 정렬, 오실레이팅 병합 정렬
056 주요 정렬 알고리즘의 이해
삽입 정렬
초기 상태
| 8 | 5 | 6 | 2 | 4 |
1회전:두 번째 값 5를 첫 번째 값과 비교하여 첫 번째 자리에 삽입
| 8 | 5 | 6 | 2 | 4 | → | 5 | 8 | 6 | 2 | 4 |
2회전:세 번째 값 6을 첫 번째, 두 번째 값과 비교하여 8자리 삽입
| 5 | 8 | 6 | 2 | 4 | → | 5 | 6 | 8 | 2 | 4 |
3회전:네 번째 값 2를 1,2,3번째 값과 비교하여 사입하고 나머지 뒤로
| 5 | 6 | 8 | 2 | 4 | → | 2 | 5 | 6 | 8 | 4 |
4회전: 다섯 번째 값 4를 처음부터 비교 후 5의 자리에 삽입 나머지 뒤로
| 2 | 5 | 6 | 8 | 4 | → | 2 | 4 | 5 | 6 | 8 |
버블 정렬
초기 상태
| 8 | 5 | 6 | 2 | 4 |
1회전
| 5 | 8 | 6 | 2 | 4 | → | 5 | 6 | 8 | 2 | 4 |
| 5 | 6 | 2 | 8 | 4 | → | 5 | 6 | 2 | 4 | 8 |
2회전
| 5 | 6 | 2 | 4 | 8 | → | 5 | 2 | 6 | 4 | 8 |
| 5 | 2 | 4 | 6 | 8 | ||||||
3회전
| 2 | 5 | 4 | 6 | 8 | → | 2 | 4 | 5 | 6 | 8 |
4회전
| 2 | 4 | 5 | 6 | 8 |
선택 정렬
초기 상태
| 8 | 5 | 6 | 2 | 4 |
1회전:첫 번째 칸의 값을 두 번째 값부터 마지막까지 비교 후 치환
| 5 | 8 | 6 | 2 | 4 | → | 5 | 8 | 6 | 2 | 4 |
| 2 | 8 | 6 | 5 | 4 | → | 2 | 8 | 6 | 5 | 4 |
2회전:두 번째 칸의 값을 세 번째 값부터 마지막까지 비교 후 치환
| 2 | 6 | 8 | 5 | 4 | → | 2 | 5 | 8 | 6 | 4 |
| 2 | 4 | 8 | 6 | 5 | ||||||
3회전:세 번째 칸의 값을 네 번째 값부터 마지막까지 비교 후 치환
| 2 | 4 | 6 | 8 | 5 | → | 2 | 4 | 5 | 8 | 6 |
4회전:네 번째 칸의 값을 다섯 번째 값부터 마지막까지 비교 후 치환
| 2 | 4 | 5 | 6 | 8 |
2-Way 합병 정렬(Merge Sort)
초기 상태:71, 2, 38, 5, 7, 61, 11, 26, 53, 42
057 이분 검색(이진 검색, Binary Search)
- 순서화된 파일이어야 검색할 수 있다.
- 두 개의 서브 파일로 분리해 가면서 Key 레코드를 검색한다.
- 찾고자 하는 Key 값을 파일의 중간 레코드 Key값과 비교하면서 검색.
- 중간 레코드 번호(M):F+L/2 (단, F:첫 번째 레코드 번호, L:마지막 레코드 번호)
058 해싱(Hashing)
- Hash Table에 기억공간 할당, Hash Function을 이용해서 레코드 키에 대한 Hash Table내의 Home Address를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식이다.
- DAM(Direct Access Memory) 파일을 구성할 때 사용, 접근 속도 빠르지만 기억공간이 많이 요구됨.
- 검색 방식 중 속도가 가장 빠름.
- 삽입,삭제의 빈도가 많을 때 유리
- 키-주소 변환 방법이라고도 함.
059 색인 순차 파일(Indexed Sequential File)
- 순차 처리와 랜덤 처리가 모드 가능, 키 값 순으로 정렬시켜 기록, 키 항목만을 모은 색인을 구성하여 편성하는 방식
- ISAM(Index Sequential Access Method)라고도 함.
- 색인을 탐색한 후 색인이 가리키는 포인터(주소)를 사용하여 직접 참조 가능
- 자기 디스크에 많이 사용, 자기 테이프에서는 사용 못함
색인 순차 파일의 구성
- 기본 구역(Prime Area):실제 레코드들을 기록하는 부분, 키 값 순으로 저장
- 색인 구역(Index Area):위치를 찾아가는 색인이 기록되는 부분, 트랙 색인 구역, 실린더 색인 구역, 마스터 색인 구역으로 구분
- 오버플로우 구역(Overflow Area):빈 공간이 없어서 저장이 불가능 할 때를 대비해서 예비로 확보해둔 부분
- 실린더 오버플로우 구역:실린더마다 만들어지는 구역, 해당 실린더의 기본 구역에서 오버플로우 된 데이터를 기록
- 독립 오버플로우 구역:실린더 오버플로우에서 더 이상 기록할 수 없을 때 대비한 예비 공간, 실린더 오버플로우 구역과는 별도로 만들어짐
장점
- 순차/랜덤 처리 가능하므로 목적에 따라 융통성 있게 처리 가능
- 효율적인 검색 가능, 삽입, 삭제 갱신이 용이
단점
- 색인 구역과 오버플로우 구역을 구성하기 위한 추가 기억 공간이 필요.
- 정렬되어 있어야 하므로 추가, 삭제가 많으면 효율이 떨어진다.
- 색인을 이용하기 때문에 엑세스 시간이 랜덤 편성 파일보다 느리다.
060 불대수의 기본 공식
- 멱등법칙:A+A=A, AㆍA=A
- 보수법칙:A+A`=1, AㆍA`=0
- 드모르강:A`+B`=(AㆍB)`, A`ㆍB`=(A+B)`
- 복원법칙:A``=A
061 논리 게이트
- XOR=A`B + B`A
- XNOR=AB+A`B`
061 반가산기(HA; half Adder)
062 전가산기(FA; Full Adder)
- 2개의 반가산기와 1개의 OR Gate로 구성
063 디코더(Decoder)
- n Bit의 Code화된 정보를 그 Code의 각 Bit 조합에 따라 2^n개의 출력으로 변역하는 회로
- 명령어의 명령부나 번지를 해독할 때 사용.
065 플립플롭
- 현재의 상태를 그대로 유지하는 논리회로
- RS
- JK
- D
- T
- 마스터-슬레이브(M/S)
066 자료 구성의 단위
067 보수
덧셈 회로를 이용하여 뺄셈을 수행하기 위해 사용된다.
068 자료 표현 코드
| BCD 코드 | ㆍ대표적인 가중치 코드 ㆍ10진수 입ㆍ출력이 간편 |
| Excess-3초과 코드 | ㆍ대표적인 자보수 코드 ㆍ비가중치 코드 |
| Gray 코드 | X-OR연산 ㆍ입ㆍ출력장치, A/D변환기, 주변장치 등에서 숫자를 표현할 때 사용 ㆍ하드웨어적인 요류가 적음 |
| 패리티 검사 코드 | ㆍ오류 검사위해 1Bit의 패리티 체크 비트추가 ㆍ1Bit의 오류만 검출 ㆍOdd Parity:1인 Bit의 수가 홀수 ㆍEven Parity:1인 Bit의 수가 짝수 |
| 해밍 코드 | ㆍ스스로 검출 및 교정 가능 ㆍ1Bit의 오류만 교정 ㆍ검출 및 교정위한 잉여 비트가 많이 필요 ㆍ2^n번째 비트는 오류 검출을 위한 패리티 Bit |
069 그레이 코드 변환
070 CPU의 구성 요소
제어장치
- 모든 장치들의 동작을 지시하고 제어
- RAM에서 명령어를 해독하여 해당 장치에 제어 신호 보내서 정확하게 수행토록 지시
- PC, IR, 부호기, 명령어 해독기, 번지 해독기 등으로 구성
연산장치
- 연산을 수행하는 장치
- 산술, 논리, 관계, 이동(Shift) 등의 연산 수행
- 가산기, 누산기, 보수기, 데이터 레지스터, 오버플로우 검출기, Shift Register 등으로 구성
레지스터
- CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 저장소
- 플립플롭이나 래치(Latch)들을 병렬로 연결하여 구성
- 메모리 중에서 가장 속도가 빠름
071 주요 레지스터
072 버스
073 명령어의 구성
Operation Code(연산자부) + Operand(자료부)
연산자부(Operation Code부)
- 수해해야 할 동작에 맞는 연산자를 표시함, 흔히 OP-Code부라고 한다.
- n Bit면 최대 2^n개의 명령어를 사용할 수 있다
자료부(Operand부)
- 실제 데이터에 대한 정보를 표시
- 기억장소의 주소, 레지스터 번호, 사용할 데이터 등을 표시
- 크기는 메모리의 용량과 관계
- 길이가 n Bit라면 최대 2^n개의 기억장소를 주소로 지정할 수 있다.
074 연산자(Operation Code)의 기능
함수연산기능
- 산술연산:ADD, SUB, MUL, DIV, 산술 SHIFT 등
- 논리연산:NOT, AND, OR, XOR, 논리적 SHIFT, ROTATE, COMPLEMENT, CLEAR 등
자료전달기능
CPU와 기억장치 사이에서 정보를 교환하는 기능
- Load:기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령
- Store:CPU에 있는 정보를 기억장치에 기억
- Move:레지스터 간에 자료를 전달
- Push:자료를 스택에 저장
- Pop:스택에서 자료를 꺼냄
제어기능
명령어의 실행 순서를 변경시킬 때 사용
- 무조건 분기 명령:GOTO, Jump(JMP)
- 조건 분기 명령:IF 조건, SPA, SNA, SZA
- Call:부프로그램 호출
- Return:부프로그램에서 메인 프로그램으로 복귀
입/출력기능
CPU와 I/O장치, 또는 메모리와 I/O 장치 사이에서 자료를 전달
- INPUT:입/출력장치의 자료를 주기억장치로 입력
- OUTPUT:주기억장치의 자료를 입/출력장치로 출력
075 피연산자의 수에 따른 연산자의 분류
단한 연산자
이항 연산자
076 연산
AND(Masking Operation)
- 특정 문자나 Bit를 삭제(Clear)시키는 명령, Masking 명령이라고도 함
- 삭제할 부분의 Bit를 0과 AND시켜서 삭제, 대응시키는 0인 Bit를 Mask Bit라함
OR(Selective Set)
- 특정 문자나 삽입 또는 Bit에 1을 세트시키는 명령, Selective Set연산이라고도함
- 삽입하거나 세트시킬 Bit에 삽입할 문자 또는 1을 OR 연산시킴
XOR(Compare)
- 2개의
데이터를비교하거나 특정Bit를 반전시킬 때 사용 - 2개의 데이터를 XOR 연산하여 결과에 1Bit라도 1이 있으면 다른 데이터임
- 반전시킬 때는 반전시킬 Bit와 1을 XOR 시킴
NOT(Complement,보수)
- 각 Bit의 값을 반전시키는 연산, 보수 구할 때 사용
논리 Shift
- 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산으로 데이터의 직렬 전송(Serial Transfer)에 사용
- 삽입되는 자리는 무조건 0임
Rotate
- Shift에서 밀려 나가는 Bit의 값을 반대편 값으로 입력하는 연산
- 문자 위치를 변환할 때 이용
산술 Shift
- 부호(Sign)를 고려하여 자리를 이동시키는 연산, 2^n으로 곱하거나 나눌 때 사용함
왼쪽으로 n BitShift하면 원래 자료에 2^n을곱한 값과 같음오른쪽으로 n BitShift하면 원래 자료를 2^n으로나눈 값과 같음- 홀수를 오른쪽으로 한 번 Shift하면 0.5의 오차가 발생함
077 명령어 형식
3번지 명령어
- Operand부가 3개로 구성되는 명령어 형식, 여러 개의 범용 레지스터를 가진 컴퓨터에서 사용
연산의 결과는 Operand 3에 기록- 연산 시
원시 자료를 파괴하지 않음 - 다른 형식보다
프로그램 전체의 길이를 짧게할 수 있음 - 전체 P/G 실행 시 명령 인출을 위하여 RAM에 접근횟수가 줄어들어
실행속도를 단축시킴
2번지 명령어
- Operand부가 2개로 구성되는 명령어 형식, 가장 일반적으로 사용
- 여러 개의 범용 레지스터를 가진 컴퓨터에서 사용
- 3주소 명령에 비해 명령어의 길이가 짧음
연산의 결과는 주로 Operand 1에 저장되므로 Operand 1에 있던 원시자료가 파괴됨- 전체 P/G의 길이가 깅러짐
1번지 명령어
- Operand부가 1개로 구성
AC(Accumulator)를 이용하여 명령어를 처리
0번지 명령어
- Operand부 없이 OP-Code부만으로 구성
- 모든 연산은 Stack 메모리의 Stack Pointer가 가리키는 Operand를 이용하여 수행
- 수식을 계산하기 위해서는 우선, 수식을 Postfix형태로 변경해야 함
- 모든 연산은 스택에 있는 자료를 이용하여 수행하기 때문에 Stack Machine이라고도 함
- 원래의 자료가 남지 않음
078 주소 설계 시 고려 사항
079 주소지정방식(Addressing Mode)의 종류
암시적 주소지정방식(Implied Mode)
- 주소를 지정하는 필드가 없는 0번지 명령어에서 Stack의 SP가 가리키는 Operand를 암시하여 이용함
즉치(즉시)적 주소지정방식(Immediate Mode)
직접 주소지정방식(Direct Mode)
간접 주소지정방식(Indirect Mode)
계산에 의한 주소지정방
------------------------------------------------------------------
참고자료
마이크로 명령 형식
-
수평 마이크로 명령
-
수직 마이크로 명령
-
나노 명령
'정보처리기사 > 전자계산기 구조' 카테고리의 다른 글
| [정보처리기사]전자계산기 구조 문제풀이 (1) | 2009/02/20 |
|---|---|
| [정보처리기사]전자계산기 구조 요약 (0) | 2009/02/12 |