#90_자기코어

 - 전류 일치 기술(coincident-current technique)에 의하여 기억장소를 선별함

 - 데이터를 읽으면 읽은 내용이 지워지는 파괴메모리(destructive memory)이므로 내용을 읽은 후 지워진 내용을 기억하기 위한 재저장(restoration)시간이 필요함

 - 자기 코어는 중심을 통과하는 전선에 흐르는 전류의 방향에 따라 1 혹은 0의 값을 갖음

 - 자기 코어는 부피에 비해 용량이 작고 가격이 비싸 현재는 거의 사용하지 않음

 - 자기코어에는 4개의 선이 있음

  ㆍ구동선(X,Y) 2개 : 번지 선택선

  ㆍ센스선 1개 : 자기코어의 상태 검출

  ㆍ금지선 1개 : 불필요하게 자화되었을 떄 -1/2 금지 전류를 흘려 자화를 소거시키는 선

 

#91_보조기억장치

 - 자기테이프

  ㆍ순차처리(SASD)만 할 수 있는 대용량 저장매체

  ㆍ가격이 저렴하고 용량이 커서 자료의 백업용으로 많이 사용함

  ㆍ자성 물질이 코팅된 얇은 플라스틱 테이프를 동그란 릴에 감아 놓은 형태

  ㆍ테이프의 시작과 끝부분을 알리는 은박지 사이의 정보 저장부분을 7~9트랙으로 구성함

 - 자기디스크(Magnetic Disk)

  ㆍ자성 물질을 입힌 금속 원판을 여러 장 겹쳐서 만든 기억매체로 용량이 크고 접근 속도가 빠름

  ㆍ순차, 비순차(직접) 처리가 모두 가능한 DASD방식으로 데이터를 처리함

  ㆍ트랙(Track) : 디스크 표현에서 회전축(스핀들 모터)을 중심으로 데이터가 기록되는 동심원

  ㆍ섹터(Sector) : Track들을 일정한 크기로 구분한 부분이며, 정보 기록의 기본 단위임

  ㆍ실린더(Cylinder) : 서로 다른 면들에 있는 동일 위치의 Track들의 모임으로 실린더의 수는 한 면의 트랙 수와 동일함

 - 자기드럼(Magnetic Drum)

  ㆍ원통 표면에 트랙과 섹터를 구성하고, 각 트랙마다 고정된 R/W Head를 두고 있어 자기디스크에 비해 속도가 빠름

  ㆍ순차, 비순차(직접) 처리가 모두 가능한 DASD 방식으로 데이터를 처리함

  ㆍ크기에 비해 용량이 적어 현재는 거의 사용하지 않음

 

#92_블로킹(Blocking)

 - 1개 이상의 논리적 레코드를 묶어서 테이프에 기록하는 방식

블로킹

 - 하나의 블록을 구성하는 논리 레코드의 개수를 블록화 인수(BF : Blocking Factor)라고 함

 - 블로킹을 하면 블로킹을 하지 않았을 때에 비해 IRG의 수가 줄어듦으로 다음과 같은 장점이 있음

  ㆍ기억공간의 낭비가 줄어듦

  ㆍAccess Time이 감소함

  ㆍ입/출력 횟수가 감소함

 

#93_디스크의 Access Time(이동 Head)

 - 디스크 시스템은 디스크 번호, 디스크 표면 번호, 트랙 번호, 섹터 번호를 표현하는 번지 Bit를 가지고 디스크의 기억공간을 Access함

 - Access Time = Seek Time + Latency Time + Transmission Time

 - Seek Time(탐색 시간) : R/W Head가 특정 트랙까지 이동하는데 걸리는 시간

 - Latency Time(회전 지연 시간) 또는 Search Time : R/W Head가 특정 트랙까지 이동한 후 디스크가 회전하여 트랙에 포함되어 있는 특정 섹터가 R/W Head까지 도달하는데 걸리는 시간

 - Transmission Time(전송 시간) : R/W Head가 Access한 Sector와 주기억장치 간의 자료 전송에 걸리는 시간

 

#94_특수기억장치

 - 연관 기억 장치(Associative Memory)

  ㆍ기억장치에서 자료를 찾을 때 주소에 의해 접근하지 않고, 기억된 내용의 일부를 이용하여 Access할 수 있는 기억장치로 CAM(Content Addressable Memory)이라고도 함

  ㆍ주소에 의해서만 접근이 가능한 기억장치보다 정보검색이 신속함

  ㆍ캐시메모리나 가상메모리 관리 기법에서 사용하는 Mapping Table에 사용됨

  ㆍ외부의 인자와 내용을 비교하기 위한 병렬 판독 논리회로를 갖고 있기 때문에 하드웨어 비용이 증가함

 - 특수 모듈 기억장치(Memory Interleaving)

  ㆍ독자적으로 데이터를 저장할 수 있는 기억장치 모듈을 여러 개 가진 기억장치

  ㆍ주기억장치와 CPU의 속도차의 문제점을 개선함

  ㆍ기억장치 버스를 시분할하여 사용함

  ㆍ기억장소의 접근을 보다 빠르게 함

  ㆍ복수 모듈 기억장치에 사용되는 각각의 기억장치는 자체의 어드레스 레지스터와 버퍼 레지스터를 가지고 독자적으로 데이터를 저장할 수 있음

  ㆍ인터리빙 기법에 의해 기억장치를 구성하는 모듈 수만큼 단어(Word)들에 동시 접근이 가능함

 - 캐시 메모리(Cache Memory)

  ㆍCPU의 속도와 메모리의 속도 차이를 줄이기 위해 사용하는 고속 Buffer Memory임

  ㆍ캐시는 주기억장치와 CPU 사이에 위치함

  ㆍ캐시 메모리는 메모리 계층 구조에서 가장 빠른 소자이며, 처리속도가 거의 CPU의 속도와 비슷할 정도임

  ㆍ캐시를 사용하면 기억장치의 접근(access) 시간이 줄어듦으로 컴퓨터의 처리속도가 향상됨

  ㆍ캐시는 수십 Kbyte ~ 수백 Kbyte 의 용량을 사용함

 - 가상기억장치(Virtual Memory)

  ㆍ기억용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용할 수 있도록 하는 운영체제의 메모리 운영 기법

  ㆍ가상기억장치의 목적은 주기억장치의 용량 확보임

  ㆍ가상기억장치는 하드웨어적으로 실제로 존재하는 것이 아니고 소프트웨어적인 방법으로 보조기억장치를 주기억장치처럼 사용하는 것임

  ㆍ사용자 프로그램을 여러 개의 작은 블록으로 나누어서 보조기억장치 상에 보관해놓고 프로그램 실행 시 필요한 부분들만 주기억장치에 적재함

  ㆍ주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있음

  ㆍ가상기억장치 기법에서 사용하는 보조기억장치는 디스크 같은 DASD 장치이어야 함

#79_입/출력 방식

 - Programmed I/O

  ㆍ원하는 I/O이 완료되었는지의 여부를 검사하기 위해서 CPU가 상태 Flag를 계속 조사하여 I/O가 완료 되었으면 MDR(MBR)과 AC 사이의 자료전송도 CPU가 직접 처리하는 I/O방식

  ㆍ입/출력에 필요한 대부분의 일을 CPU가 해주므로 Interface는 MDR, Flag, 장치번호 디코더로만 구성하면 됨

  ㆍI/O 작업시 CPU는 계속 I/O 작업에 관여해야 하기 때문에 다른 작업을 할 수 없다는 단점이 있음

 - Interrupt I/O

  ㆍ입/출력을 하기 위해 CPU가 계속 Flag를 검사하지 않고, 데이터를 전송할 준비가 되면 입/출력 인터페이스가 컴퓨터에게 알려 입/출력이 이루어지는 방식임

  ㆍ입/출력 인터페이스는 CPU에게 인터럽트 신호를 보내 입/출력이 있음을 알림

  ㆍCPU는 작업을 수행하던 중 입/출력 인터럽트가 발생하면 수행중인 프로그럄을 중단하고 입/출력을 처리한 후 원래의 작업으로 돌아와 작업을 계속 수행함

  ㆍCPU가 계속 Flag를 검사하지 않아도 되기 때문에 Programmed I/O보다 효율적임

 - DMA(Direct Memory Access에 의한 I/O)

  ㆍ입/출력장치가 직접 주기억장치를 접근(Access)하여 Data Block을 입/출력하는 방식으로 입/출력 전송이 CPU의 레지스터를 경유하지 않고 수행됨

  ㆍCPU는 I/O에 필요한 정보를 DMA제거기에 알려서 I/O동작을 개시 시킨 후 I/O동작에 대해 더 이상 간섭하지 않고 다른 프로그램을 할당하여 수행함

  ㆍ입/출력 자료 전송 시 CPU를 거치지 않기 때문에 CPU의 부담없이 보다 빠른 데이터의 전송이 가능함

  ㆍ인터럽트 신호를 발생시켜 CPU에게 입/출력 종료를 알림

  ㆍCycle Steal 방식을 이용하여 데이터를 전송함

 - Channel에 의한 I/O

  ㆍCPU를 대신하여 주기억장치와 입/출력장치 사이에서 입/출력을 제어하는 입/출력 전용 프로세서(IOP)임

  ㆍ채널 제어기는 채널명령어로 작성된 채널 프로그램을 해독하고 실행하여 입/출력 동작을 처리

  ㆍCPU로부터 입/출력 전송을 위한 명령어를 받으면 CPU와는 독립적으로 동작하여 입/출력을 완료함

  ㆍCPU와 인터럽트로 통신함

  ㆍ채널의 종류

Selector Channel 고속 입/출력장치(자기디스크, 자기테이프, 자기드럼) 1개와 입/출력하기위해 사용됨
Multiplexer Channel 저속 입/출력장치(카드리더, 프린터)를 여러개를 동시에 제어하는 채널
Block Multiplexer Channel 동시에 여러개의 고속 입/출력 장치를 제어함

 #80_인터럽트의 정의

 - 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행 중인 작업을 즉시 중단하고, 발생된 상황을 우선 처리한 후, 실행중이던 작업으로 복귀하여 계속 처리하는 것. 일명 "끼어들기"라고도 함

 - 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 분류하는데, 외부나 내부 인터럽트는 CPU나 하드웨어의 신호에 의해 발생하고 소프트웨어 인터럽트는 명령어의 수행에 의해 발생함

 

#81_인터럽트의 종류 및 발생원인

 - 외부 인터럽트

  ㆍ전원 이상 인터럽트(Power Fail Interrupt) : 정전이 되거나 전원 이상이 있는 경우

  ㆍ기계 착오 인터럽트(Machine Check Interrupt) : CPU의 기능적인 오류동작이 발생한 경우

  ㆍ외부 신호 인터럽트(External Interrupt)

   ① 타이머에 의해 규정된 시간(Time Slice)을 알리는 경우

   ② 키보드로 인터럽트 키를 누른 경우

   ③ 외부장치로부터 인터럽트 요청이 있는 경우

  ㆍ입/출력 인터럽트(input-output interrupt)

   ① 입/출력 Data의 오류나 이상 현상이 발생한 경우

   ② 입/출력장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우

 - 내부 인터럽트

  ㆍ잘못된 명령이나 데이터를 사용할 때 발생하며, 트랩(Trap)이라고도 부름

  ㆍ명령어 잘못에 의한 인터럽트 : 프로그램에서 명령어를 잘못 사용한 경우

  ㆍ프로그램 인터럽트(Program Interrupt) : 0으로 나누거나, Overflow 또는 Underflow가 발생한 경우

 - 소프트웨어 인터럽트

  ㆍ프로그램 처리 중 명령의 요청에 의해 발생하는 것으로, 가장 대표적인 형태는 감시프로그램을 호출하는 SVC(SuperVisor Call) 인터럽트가 있음

  ㆍSVC(SuperVisor Call) 인터럽트 : 사용자가 SVC 명령을 써서 의도적으로 호출한 경우

 

#82_인터럽트 발생 시 CPU가 확인할 사항

 - 프로그램 카운터의 내용

 - 사용한 모든 레지스터의 내용

 - 상태 조건의 내용(PSW)

 

#83_인터럽트의 동작원리

 ① 인터럽트 요청 신호 발생

 ② 프로그램 실행을 중단함 : 현재 실행 중이던 명령어(Micro instruction)는 끝까지 실행함

 ③ 현재의 프로그램 상태를 보존함 : 프로그램 상태는 다음에 실행할 명령의 번지로서 PC가 가지고 있음

 ④ 인터럽트 처리 루틴을 실행함 : 인터럽트를 요청한 장치를 식별함

 ⑤ 인터럽트 서비스 루틴을 실행함 : 실질적인 인터럽트를 처리함

 ⑥ 상태복구 : 인터럽트 요청신호가 발생했을 때 보관한 PC의 값을 다시 PC에 저장함

 ⑦ 중단된 프로그램 실행 재개 : PC의 값을 이용하여 인터럽트 발생 이전에 수행 중이던 프로그램을 계속 실행함

 

#84_인터럽트 우선순위

 - 목적 : 여러 장치에서 동시에 언터럽트가 발생하였을 때 먼저 서비스할 장치를 결정하기 위해서임

 - 우선 순위 : 전원 이상 > 기계 착오 > 외부신호 > 입출력 > 명령어 잘못 > 프로그램 > SVC

 

#85_인터럽트 우선순위 판별 방법

 - 소프트웨어적인 인터럽트 우선순위 판별 방법 : Pollling

  ㆍInterrupt 발생 시 가장 높은 우선순위의 인터럽트 자원(Source)부터 차례로 검사해서, 우선순위가 가장 높은 Interrupt 자원(Source)을 찾아내어 이에 해당하는 인터럽트 서비스 루틴을 수행하는 방식

  ㆍ소프트웨어적인 방식을 폴링이라고 함

  ㆍ많은 인터럽트가 있을 때 그들을 모두 조사하는 데 많은 시간이 걸려 반응시간이 느리다는 단점이 있음

  ㆍ회로가 간단하고 융통성이 있으며 별도의 하드웨어가 필요 없으므로 경제적임

 - 하드웨어적인 인터럽트 우선순위 판별 방법

  ㆍCPU가 Interrupt를 요청할 수 있는 장치 사이에 장치 번호에 해당하는 버스를 병렬이나 직렬로 연결하여 요청장치의 번호를 CPU에 알리는 방식

  ㆍ장치 판별 과정이 간단해서 응답 속도가 빠름

  ㆍ회로가 복잡하고 융통성이 없으며, 추가적인 하드웨어가 필요하므로 비경제적임

  ㆍ직렬(Serial) 우선순위 부여방식 : 데이지 체인(Daisy-Chain)

   ① 인터럽트가 발생하는 모든 장치를 1개의 회선에 직렬로 연결함

   ② 우선순위가 높은 장치를 선두에 위치시키고 나머지를 우선순위에 따라 차례로 연결함

   ③ 직렬 우선순위 부여방식을 데이지 체인 방식이라고 함

  ㆍ병렬(Parallel) 우선순위 부여방식

   ① 인터럽트가 발생하는 각 장치를 개별적인 회선으로 연결함

   ② 각 장치의 인터럽트 요청에 따라 각 Bit가 개별적으로 Set될 수 있는 Mask Register를 사용함

   ③ 우선순위는 Mask Register를 사용함

   ④ 우선순위는 Mask Register의 Bit 위치에 의해서 결정됨

   ⑤ 우선순위가 높은 Interrupt는 낮은 Interrupt가 처리되는 중에도 우선 처리됨

 

#86_기억장치의 특성을 결정하는 요소

 - 기억용량

  ㆍ기억장치는 무조건 기억용량이 큰 것을 사용한다고 해서 좋은 것이 아니라, 사용목적에 따라 성능당 경비 비율이 적은 것을 사용하는 것이 바람직함

 - Access Time

  ㆍ기억장치에 읽기요청이 발생한 시간부터 요구한 정보를 꺼내서 사용 가능할 때까지의 시간

  ㆍ한 Word단위의 정보를 읽거나 기록하는데 걸리는 시간

  ㆍAccess time = Seek Time + Latency Time(또는 Search Time) + Transmission Time

 - Cycle Time

  ㆍ기억장치에 읽기신호를 보낸 후 다시 읽기 신호를 보낼 수 있을 때까지의 시간 간격

  ㆍCycle Time ≥ Access Time

 - Bandwidth(대역폭, 전송률)

  ㆍ메모리로부터 또는 메모리까지 1초 동안 전송되는 최대한의 정보량으로 기억장치의 자료처리 속도를 나타내는 단위

  ㆍ메모리 워드의 길이가 작을수록 대역폭이 좋음

 

#87_기억장치의 구분

 - 내용의 보존 여부

  ㆍ파괴성 메모리(Destructive Memory) : 판독 후 저장된 내용이 파괴되는 메모리로, 파괴된 내용을 재생시키기 위한 재저장 시간(Restoratiom Time)이 필요함 (예)자기 코어

  ㆍ비파괴성 메모리 : 판독 후에도 저장된 내용이 그대로 유지됨 (예)자기코어를 제외한 모든 기억장치

 - 전원단절 시 내용 소멸 여부

  ㆍ휘발성 메모리(Volatile Memory) : 전원이 단절되면 모든 정보가 지워지는 메모리 (예)RAM

  ㆍ비휘발성 메모리 : 전원이 단절되더라도 기억된 정보가 보존되는 메모리 (예)ROM, 자기코어, 보조기억장치

 - 재충전(Refresh) 여부

  ㆍ정적메모리(SRAM) : 전원이 공급되는 한 기억된 내용이 계속 유지되는 메모리

  ㆍ동적메모리(DRAM) : 전원이 공급되어도 일정시간이 지나면 내용이 지워지므로 재충전을 해야 하는 메모리

 - 접근 방식

  ㆍ간접접근방식(SASD, Sequential Access Storage Device) : 자료가 저장된 위치에 접근할 때, 처음부터 순서대로 접근하여 원하는 위치를 검색하는 메모리 (예)자기테이프

  ㆍ직접접근방식(DASD, Direct Access Storage Device) : 순서를 거치지 않고 자료가 저장된 위치를 직접 접근할 수 있는 메모리 (예)자기 테이프를 제외한 모든 기억장치

 

#88_ROM(Read Only Memory)

 - 기억된 내용을 읽을 수만 있는 기억장치로서 일반적으로 쓰기는 불가능함

 - 전원이 꺼져도 기억된 내용이 지워지지 않는 비휘발성 메모리

 - 실제로 ROM은 주기억장치로 사용하기 보다는 주로 기본 입.출력시스템(BIOS), 자가 진단 프로그램(POST) 같은 변경가능성이 희박한 시스템 소프트웨어를 기억시키는데 이용함

 - ROM의 종류와 특징

종류 특징
Mask ROM 제조공장에서 프로그램화하여 생산한 ROM으로, 사용자가 내용을 변경시킬 수 없음
PROM(Programmable ROM) PROM 프로그램장치라는 특수장치를 이용하여 비어있는 ROM에 사용자가 한번만 내용을 기입할 수 있으며, 이후엔 읽기만 가능함
EPROM(Erasable PROM)

ㆍ자외선을 쏘여서 기입한 내용을 지울 수도 있고, PROM프로그램장치로 기입할 수도 있음

ㆍ사용자가 여러 번 반복해서 지우거나 기입할 수 있음

EAROM(Erasable Alterable ROM) 전기적 특성을 이용하여 기록된 정보의 일부를 바꿀 수 있는 ROM
EEPROM(Eletronic EPROM) 전기적인 방법을 이용하여 기록된 내용을 여러 번 수정하거나 새로운 내용을 기록할 수 있는 ROM

 

#89_RAM(Random Access Memory)

 - 자유롭게 읽고 쓸 수 있는 기억장치로, RWM(Read Write Memory)라고도 함

 -  RAM에는 현재 사용 중인 프로그램이나 데이터가 저장되어 있음

 - 전원이 꺼지면 기억된 내용이 모두 사라지는 휘발성 메모리임

 - 일반적으로 '주기억장치' 또는 메모리라고 하면 램을 의미함

 - SRAM/DRAM의 특징

  동적 램(DRAM) 정적 램(SRAM)
구성 소자 콘덴서 플립플롭
특징 전원이 공급되어도 일정 시간이 지나면 전하가 방전되므로 주기적인 재충전(Refresh)이 필요함 전원이 공급되는 동안에는 기억 내용이 유지됨
전력 소모 적음 많음
접근 속도 느림 빠름
집적도(밀도) 높음 낮음
가격 저가 고가
용도 일반적인 주기억장치 캐시 메모리

#68_메이저 스테이트

 - 현재 CPU가 무엇을 하고 있는가를 나타내는 상태로서, fetch(인출), indirect(간접), execute(실행), interrupt(인터럽트) 이렇게 4개의 상태가 있음

 - CPU는 메이저 스테이트의 4가지 단계를 반복적으로 거치면서 동작을 수행

 - 메이저 스테이트는 메이저 스테이트 레지스터를 통해서 알 수 있음

 - Major Cycle 또는 Machine Cycle라고도 함

 

#69_인출단계(fetch cycle)

 - 명령어를 주기억장치에서 중앙처리장치의 명령 레지스터로 가져와 해독하는 단계

 - 읽어와 해석된 명령어가 1 Cycle 명령어면 이를 수행한 후 다시 Fetch Cycle 사이클로 변천함

 - 1 Cycle명령이 아니면, 해석된 명령어의 모드비트에 따라 직접주소와 간접 주소를 판단함

제어신호 Micro Operation 의미
C0T0 MAR <- PC PC에 있는 번지를 MAR에 전송시킴
C0T1

MBR <- M[MAR],

PC <- PC + 1

ㆍ메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함

ㆍ다음에 실행할 명령의 위치를 지정하기 위해 PC의 값을 1 증가시킴

C0T2

IR <- MBR[OP],

1 <- MBR[I]

ㆍ명령어의 OP_code 부분을 명령 레지스터에 전송함

※ 현재 MBR에는 주기억장치에서 읽어온 명령이 들어있음

ㆍ명령어의 모드비트를 플립플롭 I에 전송함

C0T3

F <- 1 또는 R <- 1

ㆍI가 0이면 F 플립플롭에 1을 전송하여 Execute 단계로 변환하고, I가 1이면 R 플립플롭에 1을 전송하여 Indirect 단계로 변천함

 

#70_간접 단계(Indirect cycle)

 - Fetch 단계에서 해석된 명령의 주소부가 간접주소인 경우 수행됨

 - Fetch 단계에서 해석한 주소를 읽어온 후 그 주소가 간접주소이면 유효주소를 계산하기 위해 다시 Indirect 단계 수행

 - 간접 주소가 아닌 경우에는 명령어에 따라서 Execute 단계 또는 Fetch 단계로 이동할지를 판단함

제어신호 Micro Operation 의미
C1T0 MAR <- MBR[AD] MBR에 있는 명령어의 번지 부분을 MAR에 전송함
C1T1 MBR <- M[MAR] 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함
C1T2 No Operation 동작없음
C1T3 F <- 1, R<- 0 F에 1, R에 0을 전송하여 Execute 단계로 변천함

 

#71_실행 단계(Execute Cycle)

 - Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계

 - 플래그 레지스터의 상태 변화를 검사하여 interrupt 단계로 변천할 것인지를 판단함

 - interrupt 요청 신호를 나타내는 플래그 레지스터의 변화가 없으면 Fetch 단계로 변천함

 - ADD 연산을 수행하는 Execute Cycle의 단계

제어신호 Micro Operation 의미
C2T0 MAR <- MBR[AD] MBR에 있는 명령어의 번지 부분을 MAR에 전송함
C2T1 MBR <- M[MAR] 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함
C2T2 AC <- AC + MBR

누산기의 값과 MBR의 값을 더해 누산기에 전송함

(실질적인 ADD연산이 이루어지는 부분임)

C2T3 F <- 0 또는 R <- 1 F에 0을 전송하면 F=0, R=0이 되어 Fetch단계로 변천하고, R에 1을 주면 F=1, R=1이 되어 Interrupt 단계로 변천함

 

#72_인터럽트 단게(Interrupt Cycle)

 - 인터럽트 발생 시 복귀주소(PC)를 저장시키고, 제어순서를 인터럽트 처리 프로그램의 첫 번째 명령으로 옮기는 단계

 - 인터럽트 단계를 마친 후에는 항상 Fetch 단계로 변천함

제어신호 Micro Operation 의미
C3T0 MBR[AD] <- PC, PC <- 0

ㆍPC가 가지고 있는, 다음에 실행할 명령의 주소를 MBR의 주소 부분으로 전송함

ㆍ복귀 주소를 저장할 0번지를 PC에 전송함

C3T1 MAR <- PC, PC <- PC+1

ㆍPC가 가지고 있는, 값 0번지를 MAR에 전송함

ㆍ인터럽트 처리 루틴으로 이동할 수 있는 인터럽트 백터의 위치를 지정하기 위해 PC의 값을 1 증가 시켜 1로 세트시킴

C3T2 M[MAR] <- MBR, IEN <- 0

ㆍMBR이 가지고 있는, 다음에 실행할 명령의 주소를 메모리의 MAR이 가리키는 위치(0번지)에 저장함

ㆍ인터럽트 단계가 끝날때까지 다른 인터럽트가 발생하지 않게 IEN에 0을 전송함

C3T3 F <- 0, R <- 0 F에 0, R에 0을 전송하여 Fetch 단계로 변천함

 

#73_주요 명령의 마이크로 오퍼레이션

 - ADD : AC <- AC + M[AD]

제어신호 Micro Operation 의미
C2T0 MAR <- MBR[AD] MBR에 있는 명령어의 번지 부분을 MAR에 전송함
C2T1 MBR <- M[MAR] 메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함
C2T2 AC <- AC + MBR 누산기의 값과 MBR의 값을 더해 누산기에 전송함
C2T3(IEN') F <- 0 F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함
C2T3(IEN) R <- 1 R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함

 - LDA(Load to AC) : AC <- M[AD]

제어신호 Micro Operation 의미
C2T0 MAR <- MBR[AD] MBR에 있는 명령어의 번지 부분을 MAR에 전송함
C2T1 MBR <- M[MAR], AC <- 0

ㆍ메모리에서 MAR이 지정하는 위치의 값을 MBR에 전송함

ㆍAC에 0을 전송하여 AC를 초기화 함

C2T2 AC <- AC + MBR

ㆍ메모리에서 가져온 MBR과 AC를 더해 AC에 전송함

ㆍ초기화된 AC에 더해지므로 메모리의 값을 AC로 불러오는 것과 같음

C2T3(IEN') F <- 0 F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함
C2T3(IEN) R <- 1 R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함

 - STA(Store AC) : M[AD] <- AC

제어신호 Micro Operation 의미
C2T0 MAR <- MBR[AD] MBR에 있는 명령어의 번지 부분을 MAR에 전송함
C2T1 MBR <- AC

AC의 값을 MBR에 전송함

C2T2 M[MAR] <- MBR

MBR의 값을 메모리 MAR이 지정하는 위치에 전송함

C2T3(IEN') F <- 0 F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함
C2T3(IEN) R <- 1 R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함

 - BUN(Branch unconditionally)

  ㆍBUN은 PC에 특정한 주소를 전송하여 실행명령의 위치를 변경하는 무조건 분기 명령임

제어신호 Micro Operation 의미
C2T0 PC<- MBR[AD]

ㆍMBR에 있는 명령어의 번지 부분을 PC에 전송함

※ 다음에 실행할 명령의 주소를 갖는 PC의 값이 변경되었으므로 변경된 주소에서 다음 명령이 실행됨

C2T1 no Operation 동작 없음
C2T2 no Operation 동작 없음
C2T3(IEN') F <- 0 F에 0을 전송하면 F=0, R=0이 되어 Fetch 단계로 변천함
C2T3(IEN) R <- 1 R에 1을 전송하면 F=1, R=1이 되어 Interrupt 단계로 변천함

 

#74_제어 데이터

 - 제어장치가 제어신호를 발생하기 위한 자료로서, CPU가 특정한 메이저 상태와 타이밍 상태에 있을 때, 제어자료에 따른 제어규칙에 의해 제어신호가 발생함

  ① 메이저 스테이트 사이의 변천을 제어하는 데이터

  ② 중앙처리장치의 제어점을 제어하는 데이터

  ③ 인스트럭션의 수행 순서를 결정하는데 필요한 제어 데이터

 

#75_제어장치의 비교

 - 제어장치는 필요한 마이크로 연산들이 연속적으로 수행할 수 있도록 제어 신호를 보내는 역할을 함

  고정배선 제어장치 마이크로 프로그래밍 기법
반응 속도 고속 저속
회로 복잡도 복잡 간단
결제성 비경제적 경제적
융통성 없음 있음
구성 하드웨어 소프트웨어

 

#76_입/출력장치의 구성

 - 입/출력 제어 장치

  ㆍ입/출력 장치와 컴퓨터 사이의 자료전송을 제어하는 장치

  ㆍ데이터 버퍼 레지스터를 이용하여 두 장치간의 속도차이를 조절함

  ㆍ제어신호의 논리적, 물리적 변환 그리고 에러를 제어함

  ㆍ종류 : DMA, 채널, 입/출력 프로세서, 입/출력 컴퓨터

 - 입/출력 인터페이스

  ㆍ동작방식이나 데이터 형식이 서로 다른 컴퓨터 내부의 주기억 장치나 CPU의 레지스터와 외부 입/출력 장치간의 이진 정보를 원활하게 전송하기 위한 방법 제공

  ㆍ컴퓨터와 각 주변 장치와의 다음과 같음 차이점을 해결하는 것이 목적임

   ① 전자기 혹은 기계적인 주변장치와 전기적인 CPU나 메모리간의 동작방식 차이

   ② 주변 장치와 CPU간의 데이터 전송속도의 차이

   ③ 주변 장치의 데이터 코드와 CPU나 메모리의 워드 형식의 차이

   ④ 동작 방식이 서로 다른 주변 장치들의 간섭 없는 제어

 - 입/출력 버스

  ㆍ주기억장치와 입/출력장치 사이의 데이터 전송을 위해 모든 주변 장치의 인터페이스에 공통으로 연결된 버스

  ㆍ데이터버스, 주소버스, 제어 버스로 구성되어 있음

 

#77_기억장치와 입출력 장치 동작의 차이

 - 기억장치는 처리속도가 nano(10-9)의 단위인 전자적인 장치이고 입출력 장치는 milli(10³)의 단위인 기계적인 장치이므로 동작방식에는 많은 차이가 있음

비교항목 입/출력 장치 기억 장치
동작의 속도 느리다 빠르다
동작의 자율성 타율/자율 자율
정보의 단위 Byte(문자) Word
착오 발생률 많다 적다

 

#78_스풀링(spooling)

- 다중 프로그래밍 환경 하에서 용량이 크고 신속한 액세스가 가능한 디스크를 이용하여 각 사용자 프로그램이 입.출력할 데이터를 직접 I/O장치로 보내지 않고 디스크에 모았다가 나중에 한꺼번에 입.출력함으로써 입.출력 장치의 공유 및 상대적으로 느린 입.출력장치의 처리속도를 보완하는 기법

 - 스풀링은 고속의 CPU와 저속의 입.출력장치가 동시에 독립적으로 동작하게 하여 높은 효율로 여러 작업을 병행 작업할 수 있도록 해줌으로써 다중 프로그래밍 시스템의 성능 향상을 가져올 수 있음

 - 스풀링은 디스크 일부를 매우 큰 버퍼처럼 사용하는 방법임

#57_중앙처리장치의 구성요소

 - 제어장치

  ㆍ컴퓨터에 있는 모든 장치들의 동작을 지시하고 제어하는 장치

  ㆍ주기억장치에서 읽어 들인 명령어를 해독하여 해당하는 장치에게 제어 신호를 보내 정확하게 수행하도록 지시함

  ㆍ프로그램 카운터(PC), 명령어레지스터(IR), 부호기(제어신호 발생기), 명령어 해독기, 번지 해독기 등으로 구성되어 있음

 - 연산장치

  ㆍ제어장치의 명령에 따라 실제로 연산을 수행하는 장치

  ㆍ연산장치가 수행하는 연산에는 산술연산, 논리연산, 관계연산, 이동(Shift) 등이 있음

  ㆍ가산기, 누산기(AC ; Accoumulater), 보수기, 데이터 레지스터, 오버플로우 검출기, Shift Register 등으로 구성

 - 레지스터

  ㆍCPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억 장소

  ㆍ플립플롭(Flip-Flop)이나 래치(Latch)들을 병렬로 연결하여 구성함

  ㆍ메모리 중에서 가장 속도가 빠름

 

#58_주요 레지스터

 - 프로그램 카운터, 프로그램 계수기(PC, Program Counter)

  ㆍ다음 번에 실행할 명령어의 번지를 기억하는 레지스터

 - 명령 레지스터(IR, Instruction Register)

  ㆍ현재 실행 중인 명령의 내용을 기억하는 레지스터

 - 누산기(AC, Accumulator)

  ㆍ연산된 결과를 일시적으로 저장하는 레지스터로 연산의 중심임

 - 상태 레지스터(Status Register) PSWR(Program Status Word Register)

  ㆍ시스템 내부의 순간순간의 상태가 기록된 정보를 PSW라고 함

  ㆍ오버플로, 언더플로, 자리올림, 인터럽트 등의 PSW를 저장하고 있는 레지스터

 - 메모리 주소 레지스터(MAR, Memory Address Register)

  ㆍ기억장치를 출입하는 데이터의 번지를 기억하는 레지스터

 - 메모리 버퍼 레지스터(MBR, Memory Buffer Register)

  ㆍ기억장치를 출입하는 데이터가 잠시 기억되는 레지스터

 - 인덱스 레지스터(Index Register)

  ㆍ주소의 변경이나 프로그램에서의 반복연산의 횟수를 계수하는 레지스터

 - 데이터 레지스터(Data Register)

  ㆍ연산에 사용될 데이터를 기억하는 레지스터

 - Shift Register = 2배 길이 레지스터

  ㆍ저장된 값을 왼쪽 또는 오른쪽으로 1Bit씩 자리 이동시키는 레지스터

  ㆍ2배 길이 레지스터라고도함

 - Major Status Register

  ㆍCPU의 메이저 상태를 저장하고 있는 레지스터

 

#59_버스

 - CPU, 메모리, I/O장치 등과 상호 필요한 정보를 교환하기 위해 연결하는 공동의 전송 선

전송하는 정보에 따른 분류

ㆍ번지 버스(Address Bus) : CPU가 메모리나 입출력기기의 번지를 지정할 떄 사용하는 단방향 전송선

ㆍ자료 버스(Data Bus) : CPU와 메모리 또는 입출력 기기 사이에서 데이터를 전송하는 양방항 버스

ㆍ제어 버스(Control Bus) : CPU의 현재 상태나 상태 변경을 메모리 또는 입출력에 알리는 제어신호는 전송하는 선

버스 위치에 따른 분류

ㆍ내부 버스 : CPU 및 메모리 내 구성된 Bus

ㆍ외부 버스 : 주변 입출력장치에 구성된 Bus

 

#60_명령어의 구성

Operation Code, 연산자 부 자료부, Operand

 - 연산자 부(Operation Code부)

  ㆍ수행해야할 동작에 맞는 연산자를 표시함, 흔히 OP-Code부라고 함

  ㆍ연산자부의 크기(비트수)는 표현할 수 있는 명령의 종류를 나타내는 것으로, nBit면 최대 2ⁿ개의 명령어를 사용할 수 있음

 - 주소부(Operand부)

  ㆍ실제 데이터에 대한 정보를 표시하는 부분

  ㆍ기억장소의 주소, 레지스터 번호, 사용할 데이터 등을 표시함

  ㆍ주소부의 크기는 메모리의 용량과 관계가 있음

 

#61_연산자(Operation Code)의 기능

함수 연산 기능

ㆍ산술 연산 : ADD, SUB, MUL, DIV, 산술 Shift 등

ㆍ논리 연산 : NOT, AND, OR, XOR, 논리적 Shift, Rdate, 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 : 주기억 장치의 자료를 입출력장치로 출력하는 명령

#62_피연산자의 수에 따른 연산자의 분류

 - 단항연산자(Unary Operator) : NOT, Complement, Shift, Rdate, MOVE 등

 - 이항연산자(Binary Operator) : 사칙연산, AND, OR, XOR, XNOR

 

#63_연산

  - AND(Masking Operation)

  ㆍ특정 문자 또는 특정 Bit를 삭제(Clear)시키는 명령으로, Masking 명령이라고도 함

  ㆍ삭제할 부분의 Bit를 0과 AND시켜서 삭제하는데, 대응시키는 0인 Bit를 Mask Bit라고 함

 - OR(SelectiveSet)

  ㆍ특정 문자를 삽입하거나 특정 Bit에 1을 세트시키는 명령으로 SelectiveSet 연산이라고도 함

  ㆍ삽입하거나 세트 시킬 Bit에 삽입할 문자코드 또는 1을 OR 연산시킴

 - XOR : 비교(Compare) 명령

  ㆍ2개의 데이터를 비교하거나, 특정 비트를 반전시킬 떄 사용

  ㆍ2개의 데이터를 XOR연산하여 결과에 1Bit라도 1이 있으면 서로 다른 데이터임

  ㆍ반전시킬 때는 반전시킬 비트와 1을 XOR 시킴

 - NOT(Complement, 보수)

  ㆍ각 비트의 값을 반전시키는 연산으로 보수를 구할 떄 사용함

 - 논리 Shift

  ㆍ왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산으로 데이터의 직렬전송(Serial Transfer)에 사용

  ㆍ삽입되는 자리는 무조건 0임

 - Rotate

  ㆍShift에서 밀려나가는 비트의 값을 반대편 값으로 입력하는 연산

  ㆍ문자 위치를 변환할 때 사용

 - 산술 Shift

  ㆍ부호(Sign)를 고려하여 자리를 이동시키는 연산으로, 2ⁿ으로 곱하거나 나눌 때 사용

  ㆍ왼쪽으로 n Bit Shift하면 원래 자료에 2ⁿ을 곱한 값과 같음

  ㆍ오른쪽으로 n Bit Shift하면 원래 자료를 2ⁿ으로 나눈 값과 같음

  ㆍ홀수를 오른쪽으로 한번 Shift하면 0.5의 오차가 발생

 

#64_명령어 형식

3번지 명령어

ㆍOperand부가 3개로 구성되는 명령어 형식으로 여러개의 범용 레지스터(GPR)를 가진 컴퓨터에서 사용

ㆍ연산의 결과는 Operand3에 기록됨

ㆍ연산시 원시 자료를 파괴하지 않음

ㆍ다른 형식의 명령어를 이용하는 것보다 프로그램 전체의 길이를 짧게 할 수 있음

ㆍ전체 프로그램 실행 시 명령 인출을 위하여 주기억장치를 접근하는 횟수가 줄어들어 프로그램 실행 속도를 단축시킴

ㆍ명령어 한 개의 길이가 너무 길어짐

2번지 명렁어

ㆍOperand부가 2개로 구성되는 명령어 형식으로 가장 일반적으로 사용되는 명령어 형식

ㆍ여러 개의 범용 레지스터를 가진 컴퓨터에서 사용

ㆍ3주소 명령에 비해 명령어의 길이가 짧음

ㆍ연산의 결과는 주로 Operand1에 저장되므로 Operand1에 있던 원시자료가 파괴됨

ㆍ전체 프로그램의 길이가 길어짐

1번지 명령어

ㆍOperand부가 1개로 구성되어 있음

ㆍAC(누산기)를 이용하여 명령어를 처리함

0번지 명령어

(스택머신)

ㆍOperand부 없이 OP Code부만으로 구성

ㆍ모든 연산은 스택 메모리에 스택 포인터가 가리키는 Operand를 이용하여 수행

ㆍ모든 연산은 스택에 있는 자료를 이용하여 수행하기 때문에 스택머신 이라고도함

ㆍ원래의 자료가 남지 않음

 

#65_주소지정방식(Addressing Mode)의 종류

 - 암시적 주소 지정 방식(Implied Mode)

  ㆍ주소를 지정하는 필드가 없는 0번지 명령어에서 Stack의 SP가 가리키는 Operand를 암시하여 이용함

 - 즉치(즉시)적 주소지정방식(Immediate Mode)

  ㆍ명령어 자체에 오퍼랜드(실제 데이터)를 내포하고 있는 방식

  ㆍ별도의 기억장치를 액세스하지 않고 CPU에서 곧바로 자료를 이용할 수 있어 실행속도가 빠르다는 장점이 있음

  ㆍ명령어의 길이에 영향을 받으므로 표현할 수 있는 데이터 값의 범위가 제한적임

 - 직접 주소 지정 방식(Direct Mode)

  ㆍ명령어 주소부(Operand)가 사용할 자료의 번지를 표현하고 있는 방식

  ㆍ명령의 Operand부에 표현된 주소를 이용하여 실제 데이터가 기억된 기억장소에서 직접 사상시킬수 있음

  ㆍ기억용량이 2ⁿ개의 Word인 메모리 시스템에서 주소를 표현하려면 n비트의 Operand부가 필요함

 - 간접 주소 지정 방식(Indirect Mode)

  ㆍ명령어에 나타낼 주소가 명령어 내에서 데이터를 지정하기 위해 할당된 비트(Operand 부의 비트)수로 나타낼 수 없을 때 사용하는 방식

  ㆍ명령어 길이가 짧고 제한되어 있어도 긴 주소에 접근 가능

  ㆍ명령어 내의 주소부에 실제 데이터가 저장된 장소의 번지를 가진 기억장소의 번지를 표현함으로써, 최소한 주기억장치를 두번 이상 접근하여 데이터가 있는 기억장소에 도달함

 - 계산에 의한 주소지정 방식

  ㆍ상대 주소 지정방식 : 명령어의 주소부분 + PC

  ㆍBase Register Mode : 명령어의 주소부분 + Base Register

  ㆍIndex Register Mode : 명령어의 주소부분 + Index Register

 

#66_마이크로 오퍼레이션(Micro Operation)의 정의

 - Instruction을 수행하기 위해 CPU내의 레지스터와 플래그가 의미 있는 상태 변환을 하도록 하는 동작

 - 레지스터에 저장된 데이터에 의해 이루어지는 동작

 - 한개의 Clock 펄스 동안 실행되는 기본 동작

 - 마이크로 오퍼레이션 순서를 결정하기 위하여 제어장치가 발생하는 신호를 제어신호 라고함

 - 한개의 Instruction은 여러개의 Micro Operation이 동작되어 실행됨

 - Micro Cycle Time : 한 개의 Micro Operation을 수행하는데 걸리는 시간

 

#67_Micro Cycle Time

동기 고정식

(Synchronous fixed)

ㆍ모든 마이크로 오퍼레이션의 동작시간이 같다고 가정하여 CPU Clock의 주기를 Micro Cycle Time과 같도록 정의하는 방식

ㆍ모든 마이크로 오퍼레이션 중에서 수행시간이 가장 긴 마이크로 오퍼레이션의 동작시간을 Micro Cycle Time으로 정함

ㆍ모든 마이크로 오퍼레이션의 동작시간이 비슷할 때 유리한 방식임

ㆍ장점 : 제어기의 구현이 단순함

ㆍ단점 : CPU의 시간낭비가 심함

동기 가변식

(Synchronous Variable)

ㆍ수행시간이 유사한 Micro Operation끼리 그룹을 만들어, 각 그룹별로 서로 다른 Micro Cycle Time을 정의하는 방식

ㆍ동기 고정식에 비해 CPU 시간 낭비를 줄일 수 있는 반면, 제어기의 구현이 조금 복잡함

ㆍ마이크로 오퍼레이션 동작시간이 차이가 날때 유리함(정수배)

비동기식

(Asynchronous)

ㆍ모든 마이크로 오퍼레이션에 대하여 서로 다른 Micro Cycle Time을 정의하는 방식

ㆍCPU의 시간 낭비는 전혀 없으나, 제어기가 매우 복잡해지기 때문에 실제로는 거의 사용되지 않음

#46_불 대수의 기본 공식

 - 교환법칙 : A+B=B+A, AB=BA

 - 결합법칙 : A+(B+C)=(A+B)+C, A(BC)=(AB)C

 - 분배법칙 : A(B+C)=AB+BC, A+BC=(A+B)(A+C)

 - 멱등법칙 : A+A=A, AA=A

 - 보수법칙 : A+A'=1, AA'=0

 - 항등법칙 : A+0=A, A+1=1, A0=0, A1=A

 - 콘센서스 : AB+BC+CA'=AB+CA', (A+B)(B+C)(C+A')=(A+B)(C+A')

 - 드모르간 : A'+B'=(AB)', A'B'(A+B)'

 - 복원법칙 : A'=A

 

#47_논리 게이트

논리게이트

#48_반가산기(HA ; Half Adder)

 

 - 1Bit짜리 2진수 2개를 덧셈한 합(S)과 자리올림 수(C)를 구하는 회로

     0          0         1         1         A

  + 0       + 1      + 0      + 1     +  B

ㅡㅡㅡ   ㅡㅡㅡ  ㅡㅡㅡ  ㅡㅡㅡ  ㅡㅡㅡ     ㆍS : 합

  0  0      0  1      0  1     1  0     C  S       ㆍC : 자리올림

 

 - 진리표

A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

 - 논리식 : C=AB     S=A' B+AB' = A⊕B

 - 논리회로

반가산기 논리회로

#49_전가산기(FA ; Full Adder)

 - 자리 올림수(Ci)를 포함하여 1Bit 크기의 2진수 3자리를 더하여 합(S)과 자리 올림수(Ci+₁)을 구하는 회로

 - 논리식

   Ci+₁ = A'BCi+AB'Ci'+ABCi

          = (A'B+AB')Ci+AB(Ci'+Ci)

          = (A⊕B)Ci+AB <- A'B+AB'=AB, Ci'+Ci=1

   S     = A'B'Ci+A'BCi'+AB'Ci'+ABCi

                 = (A'B'+AB)Ci+(A'B+AB')Ci'

                 = (A⊕B)'Ci+(AB)Ci'

                 = (A⊕B)Ci

 - 회로(전가산기는 2개의 반가산기(HA)와 1개의 OR Gate로 구성됨)

전가산기 논리회로

#50_자료 구성의 단위

  - 비트(Bit, Binary Digit)

  ㆍ자료(정보) 표현의 최소 단위

  ㆍ두 가지 상태(0과 1)를 표시하는 2진수 1자리

 - 니블(Nibble)

  ㆍ4개의 비트가 모여 1개의 니블(Nibble)을 구성

  ㆍ4비트로 구성되며 16진수 1자리를 표현하기에 적합함

 - 바이트(Byte)

  ㆍ문자를 표현하는 최소 단위로, 8개의 비트(Bit)가 모여 1Byte를 구성

  ㆍ1Byte는 256(2의 8승)가지의 정보를 표현할 수 있음

  ㆍ주소 지정의 단위로 사용

 - 워드(Word)

  ㆍCPU가 한번에 처리할 수 있는 명령 단위

  ㆍ반워드(Half Word) : 2Byte, 풀워드(Full Word) : 4Byte, 더블워드(Double Word) : 8Byte

 - 필드(Field)

  ㆍ 파일 구성의 최소 단위

  ㆍ의미 있는 정보를 표현하는 최소 단위

 - 레코드(Record)

  ㆍ하나 이상의 관련된 필드가 모여서 구성됨

  ㆍ컴퓨터 내부의 자료 처리 단위로서, 일반적으로 레코드는 논리 레코드(Logical Record)를 의미함

 - 블록(Block) = 물리 레코드(Physical Record)

  ㆍ하나 이상의 논리 레코드가 모여서 구성됨

  ㆍ각종 저장매체와의 입/출력 단위를 의미하며, 일반적으로 물리 레코드라고함

 - 파일(File)

  ㆍ프로그램 구성의 기본 단위로, 여러 레코드가 모여서 구성됨

 - 데이터베이스(Database)

  ㆍ여러 개의 관련된 파일(File)의 집합

 

#51_보수

 - 컴퓨터가 기본적으로 수행하는 가산을 이용하여 뺄셈을 수행하기 위해 사용함

 - r의 보수

  ㆍ10진법에서는 10의 보수가 있고, 2진법에는 2의 보수가 있음

  ㆍ보수를 구할 숫자의 자리 수만큼 0을 채우고 가장 왼쪽에 1을 추가하여 기준을 만듬

   ex) 33의 10의 보수는? 33+X=100 -> X=100-33 -> X=67

        10101의 2의 보수는? 10101+X=100000 -> X=100000-10101 -> X=01011

 - r-1의 보수

  ㆍ10진법에는 9의 보수가 있고, 2진법에서 1의 보수가 있음

  ㆍ10진수 N에 대한 9의 보수는 주어진 숫자의 자리 수만큼 9를 채워 기준을 만듬

   ex) 33의 9의 보수는? 33+X=99 -> X=99-33 -> X=66

  ㆍ2진수 N에 대한 1의 보수는 주어진 숫자의 자리 수만큼 1을 채워 기준을 만듬

   ex) 10101의 1의 보수는? 10101+X=11111 -> X=11111-10101 -> X=01010

 

#52_2진 연산

 - 정수 값을 2진수로 변환하여 표현하는 방식

 - 표현할 수 있는 범위가 작지만 연산 속도가 빠름

종류 표현방법 비고
부호화 절대치법(Signed Magnitude) 양수표현에 대하여 부호 Bit의 값만 0을 1로 바꾼다 2가지 형태의 0 존재(+0, -0)
부호화 1의 보수법(Signed 1's Complement) 양수 표현에 대하여 1의 보수를 취함
부호화 2의 보수법(Signed 2's Complement) 양수 표현에 대하여 2의 보수를 취함 한 가지 형태의 0만 존재(+0)

- 표현범위

종류 범위 n=8 n=16 n=32
부호화 절대치법 -2ⁿ-¹+1 ~+2ⁿ-¹-1 -127 ~ +127 -32767 ~ +32767 -2³¹+1 ~ +2³¹-1
부호화 1의 보수법
부호화 2의 보수법 -2ⁿ-¹ ~+2ⁿ-¹-1 -128 ~ +127 -32768 ~ +32767 -2³¹ ~ +2³¹-1

#53_자료의 외부적 표현(BCD, ASCII, EBCDIC)

- BCD(Binary Coded Decimal, 2진화 10진 코드)

  ㆍ6bit의 코드로 IBM에서 개발

  ㆍ1개의 문자를 2개의 Zone비트와 4개의 Digit 비트로 표현함

  ㆍ6Bit는 2의 6승개를 표현할 수 있으므로 64개의 문자 표현 가능

  ㆍ1Bit의 Parity Bit를 추가하여 7Bit로 사용함

  ㆍ영문 소문자를 표현하지 못함

 - ASCII 코드(American Standard Code fot Information Interchange)

  ㆍ7Bit 코드로 미국 표준협회에서 개발

  ㆍ1개의 문자를 3개의 Zone비트와 4개의 Digit 비트로 표현함

  ㆍ2의 7승개를 표현할 수 있으므로 128개의 문자 표현 가능

  ㆍ1Bit의 Parity Bit를 추가하여 8Bit로 사용함

  ㆍ통신 제어용 및 마이크로컴퓨터에서 사용함

 - EBCDIC(Extended BCD Interchange Code, 확장 2진화 10진 코드)

  ㆍ8bit의 코드로 IBM에서 개발

  ㆍ1개의 문자를 4개의 Zone비트와 4개의 Digit 비트로 표현함

  ㆍ2의 8승개를 표현할 수 있으므로 256개의 문자 표현 가능

  ㆍ1Bit의 Parity Bit를 추가하여 9Bit로 사용함

  ㆍ대형 기종의 컴퓨터에서 사용함

 

#54_기타 자료의 표현

  - BCD 코드 = 8421코드

  ㆍ10진수 1자리의 수를 2진수 4Bit로 표현함

  ㆍ4Bit의 2진수 각 Bit가 8(2³), 4(2²), 2(2¹), 1(2의 0승)의 자리값을 가지므로 8421코드 라고도함

  ㆍ대표적인 가중치 코드

  ㆍ문자코드인 BCD에서 Zone부분을 생략한 형태임

  ㆍ10진수 입,출력이 간편함

 - Excess-3 코드(3초과 코드)

  ㆍBCD + 3, 즉 BCD코드에 3₁.(0011₂)을 더하여 만든 코드임

  ㆍ대표적인 자보수 코드이며, 비가중치 코드임

 - Gray 코드

  ㆍBCD 코드의 인접하는 비트를 X-OR연산하여 만든 코드

  ㆍ입출력장치, D/A변환기, 주변장치 등에서 숫자를 표현할 떄 사용

  ㆍ1Bit만 변화시켜 다음 수치로 증가시키기 때문에 하드웨어적인 오류가 적음

 - 패리티 검사 코드

  ㆍ코드의 오류를 검사하기 위해서 데이터비트 외의 1Bit의 패리티 체크 비트를 추가하는 것으로 1Bit의 오류만 검출할 수 있음

  ㆍOdd Parity : Odd 패리티는 코드에서 1인 Bit의 수가 홀수가 되도록 0이나 1을 추가함

  ㆍEven Parity : OddEven 패리티는 코드에서 1인 Bit의 수가 짝수가 되도록 0이나 1을 추가함

 - 해밍 코드

  ㆍ오류를 스스로 검출하여 교정이 가능한 코드

  ㆍ1Bit의 오류만 교정할 수 있음

  ㆍ데이터 비트 외에 에러 검출 및 교정을 위한 잉여 비트가 많이 필요함

  ㆍ해밍 코드 중 1, 2, 4, 8, 16 ...... 2ⁿ번째 비트는 오류 검출을 위한 패리티 비트임

 

#55_그레이 코드 변환

 - 2진수를 Gray Code로 변환하는 방법

  ① 2진수의 첫번째 비트는 그대로 내려 쓴다

  ② 2번째 Gray Bit 부터는 변경할 2진수의 해당 번째 비트와 그 왼쪽의 비트를 XOR연산하여 씀

그레이코드 변환

 - Gray Code를 2진수로 변환하는 방법

  ① 그레이 코드의 첫 번째 비트는 그대로 내려쓴다

  ② 2번째 2진수 비트부터는 왼쪼게 구한 그레이 비트와 변경할 해당 번째 2진수 비트를 XOR연산하여 씀

그레이코드를 2진수로 변환

 

#56_코드의 분류

분류 코드 종류
가중치 코드(Weight Code) BCD(8421), 2421, 84-2-1, Biquinary(5043210), 51111, Ring-Counter(9876543210)
비가중치 코드(Non-Weight Code) 3초과(Excess-3), Gray, Jonson, 2-out-of-5, 3-out-of-5
자보수 코드(Self_Complement Code) Excess-3, 2421, 51111, 84-2-1
오류 검출용 코드 해밍 코드, 패리티 검사 코드, Biquinary, Ring-Counter, 2-out-of-5, 3-out-of-5

#41_정렬방식

 - 내부정렬

  ㆍ소량의 데이터에 대하여 주기억장치 내에만 기억시켜서 정렬하는 방식

  ㆍ종류 : 하프정렬, 삽입정렬, 버블정렬, 선택정렬, 퀵정렬, 2-Way Merge Sort, 기수정렬(=Radix Sort)

 - 외부정렬

  ㆍ대량의 데이터에 대하여 보조기억장치에 기억시켜서 정렬하는 방식으로, 대부분 합병정렬(Merge Sort)기법으로 처리

  ㆍ종류 : 밸런스 병합정렬, 캐스캐이드 병합정렬, 폴리파즈 병합정렬, 오실레이팅 병합정렬

 

#42_해싱(Hashing)

 - Hash Table이라는 기억공간을 할당하고, 해시함수(Hash Function)를 이용하여 레코드 키에 대한 Hash Table 내의 Home Address를 계산한 후, 주어진 레코드를 해당 기억장소에 저장하거나 검색작업을 수행하는 방식

 - DAM(직접접근) 파일을 구성할 떄 해싱이 사용되먀, 접근 속도는 빠르나 기억공간이 많이 요구됨

 - 검색 속도가 가장 빠름

 - 삽입, 삭제 작업의 빈도가 많을 때 유리한 방식

 - 해시 테이블(Hash Table)

  ㆍ레코드를 1개 이상 보관할 수 있는 Home Bucket들로 구성한 기억공간으로, 보조기억장치에 구성할 수도 있고 주기억장치에 구성할 수도 있음

해시 테이블 구조

  ㆍ버킷(bucket) : 하나의 주소를 갖는 파일의 한 구역을 의미하며, 버킷의 크기는 같은 주소에 포함될 수 있는 레코드 수를 의미

  ㆍ슬롯(slot) : 한 개의 레코드를 저장할 수 있는 공간으로 n개의 슬롯이 모여 하나의 버킷 형성

  ㆍCollision(충돌현상) : 서로 다른 두 개 이상의 레코드가 같은 주소를 갖는 현상

  ㆍSynonym : 같은 Home Address를 갖는 레코드들의 집합

  ㆍOverflow : 계산된 Home Address의 Bucket 내에 저장할 기억공간이 없는 상태(버킷을 구성하는 슬롯이 여러 개일 때는 Collision은 발생해도 Overflow는 발생하지 않을 수 있음)

 

#43_순차 파일(Sequential File) =  순서 파일

 - 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록하는 방식

 - 급여 관리 등과 같이 변동 사항이 크지 않고 기간 별로 일괄 처리를 주로 하는 경우에 적합함

 - 주로 순차 접근이 가능한 자기 테이프에서 사용됨

 - 순차 파일의 장점

  ㆍ기록 밀도가 높아 기억 공간을 효율적으로 사용할 수 있음

  ㆍ매체 변환이 쉬워 어떠한 매체에도 적용할 수 있음

  ㆍ레코드를 기록할 때 사용한 키 순서대로 레코드를 처리하는 경우, 다른 편성법보다 처리 속도가 빠름

 - 순차 파일의 단점

  ㆍ파일에 새로운 레코드를 삽입, 삭제하는 경우 파일 전체를 복사해야하므로 시간이 많이 소요됨

  ㆍ데이터 검색 시 처음부터 순차적으로 하기 때문에 검색 효율이 낮음

 

#44_색인 순차 파일(Indexed Sequential File)

 - 순차 처리와 랜덤 처리가 모두 가능하도록 레코드들을 키 값순으로 정렬(Sort)시켜 기록하고, 레코드의 키 항목만을 모든 색인을 구성하여 편성하는 방식

 - 색인을 이용한 순차적인 접근 방법을 제공하여 ISAM(Index Sequential Access Method)라고도 함

 - 레코드를 참조하는 경우 색인을 탐색한 후 색인이 가리키는 포인터(주소)를 사용하여 직접 참조할 수 있음

 - 일반적으로 자기 디스크에 많이 사용되며, 자기 테이프에서는 사용할 수 없음

 - 색인 순차 파일의 구성

  ㆍ기본 구역(Prime Area) : 실제 레코드들을 기록하는 부분으로, 각 레코드는 키 값 순으로 저장됨

  ㆍ색인 구역(Index Area) : 기본 구역이 있는 레코드들의 위치를 찾아가는 색인이 기록되는 부분으로, 트랙 색인 구역, 실린더 색인 구억, 마스터 색인 구역으로 구분할 수 있음

  ㆍ오버플로우 구역(Overflow Area) : 기본 구억에 빈 공간이 없어서 새로운 레코드의 삽입이 불가능할 때를 대비하여 예비적으로 확보해둔 부분

   ① 실린더 오버플로우 구역 : 각 실린더마다 만들어지는 오버플로우 구역으로, 해당 실린더의 기본 구역에서 오버플로우된 데이터를 기록함

   ② 독립 오버플로우 구역 : 실린더 오버플로우 구역에 더 이상 오버플로우된 데이터를 기록할 수 없을 때 사용할 수 있는 예비 공간으로, 실린더 오버플로우 구역과는 별도로 만들어짐

 

#45_VSAM 파일

 - 동적 인덱스 방버블 이용한 색인 순차 파일

 - 제어 구간, 제어 구역, 순차 세트, 인덱스 세트로 구성됨

  ㆍ제어 구간(Control Interval) : 데이터 레코드가 저장되는 부분

  ㆍ제어 구역(Control Area) : 몇 개의 제어 구간을 모아놓은 것

  ㆍ순차 세트(Sequence Set) : 제어 구역에 대한 인덱스를 저장한 것

  ㆍ인덱스 세트(Index Set) : 순차 세트의 상위 인덱스

 - 기본 구역과 오버플로우 구역을 구분하지 않음

 - 레코드를 삭제하면 그 공간을 재사용할 수 있음

 - 제어 구간에 가변 길이 레코드를 쉽게 수용할 수 있음

#31_내장 SQL의 특징

 - 내장 SQL : 응용 프로그램 내에 SQL 문장을 내포하여 프로그램이 실행될 때 함께 실행되도록 호스트 프로그램 언어에 삽입된 SQL

 - 일반 SQL 실행문은 호스트 언어에서 실행문이 나타날 수 있는 곳이면 프로그램의 어느 곳에서나 사용 가능

 - 일반 SQL문은 수행 결과로 여러 개의 튜플을 반환하는 반면, 내장 SQL은 단 하나의 튜플만을 반환

 - 내장 SQL문에 의해 반환되는 튜플은 일반 변수를 사용하여 저장할 수 있음

 - 호스트 프로그램의 컴파일 시 선행처리기에 의해 내장 SQL문은 분리되어 컴파일됨

 - 호스트 변수와 데이터베이스 필드의 이름은 같아도 됨

 - 내장 SQL문의 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL 데이터 타입과 일치하여야 함

 - 삽입 SQL문이 실행되면 SQL 실행의 상태가 SQL 상태 변수에 전달됨

 - 호스트 언어의 실행문과 구분시키는 방법

  ① 명령문의 구분

  ㆍC/C++에서 내장 SQL문은 $와 세미콜론(;) 문자 사이에 기술함

  ㆍVisual BASIC에서는 내장 SQL문 앞에 'EXEC SQL'을 기술함

  ② 변수의 구분

  ㆍ내장 SQL에서 사용하는 호스트 변수는 변수 앞에 콜론(:) 문자를 붙임

 

#32_시스템 카탈로그

 - 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스

 - 데이터베이스에 포함되는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블

 - 데이터 정의어(DDL)의 결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근권한 등의 데이터베이스 구조 및 통계 정보를 저장

 - 카탈로그들이 생성되면 자료 사전(Data Dictionary)에 저장되기 때문에 좁은 의미로는 카탈로그를 자료사전 이라고도함

 - 카탈로그에 저장된 정보를 메타 데이터(Meta-Data)라고 함

 - 카탈로그의 특징

  ㆍ카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있음

  ㆍINSERT, DELETE, UPDATE문으로 갱신하는 것은 허용하지 않음

  ㆍDBMS가 스스로 생성하고 유지함

  ㆍ카탈로그는 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신함

  

#33_뷰(View)

 - 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블

 - 권한이 있는 상태로 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주됨

 - 뷰(View)의 특징

  ㆍ기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 가지며, 조작도 기본 테이블과 거의 같음

  ㆍ가상 테이블이기 때문에 물리적으로 구현되어 있지 않음

  ㆍ필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해짐

  ㆍ뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있음

  ㆍ기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야만 삽입, 삭제, 갱신 연산이 가능

  ㆍ정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있음

  ㆍ하나의 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제됨

 - 뷰의 장점

  ㆍ논리적 데이터 독립성을 제공

  ㆍ동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원

  ㆍ사용자의 데이터 관리를 간단하게 해줌

  ㆍ접근제어를 통합 자동 보안이 제공

 - 뷰의 단점

  ㆍ독립적인 인덱스를 가질 수 없음

  ㆍ뷰의 정의를 변경할 수 없음

  ㆍ뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

 

#34_자료구조의 분류

 - 선형구조 : 선형리스트, 연결리스트, 스택, 큐, 데크

 - 비선형 구조 : 트리, 그래프 

 

#35_Stack(스택) ; 선형구조

 - 리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료구조

 - 가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO, Last-In, First-Out) 방식으로 자료를 처리

 - TOP(스택 포인터) : Stack으로 할당된 기억공간에 가장 마지막으로 삽입된 자료가 기억된 공간을 가리키는 요소, 스택 포인터 라고도 함

 - Bottom : 스택의 가장 밑바닥

 - Stack의 용도

  ㆍ부프로그램 호출 시 복귀주소를 저장할 때

  ㆍ인터럽트가 발생하여 복귀주소를 저장할 때

  ㆍ후위표기법(Postfix Notation)으로 표현된 산술식을 연산할 때

  ㆍ0 주소 지정방식 명령어의 자료저장소

  ㆍ재귀(RECURSIVE) 프로그램의 순서제어

  ㆍ컴파일러를 이용한 언어변역 시

 

#36_큐(Queue) ; 선형구조

 - 선형 리스트의 한쪽에서는 삽입작업이 이루어지고 다른 쪽에서는 삭제 작업이 이루어지도록 구성한 자료구조

 - 가장 먼저 삽입된 자료가 가장 먼저 삭제되는 선입선출(FIFO ; First-In. First-Out) 방식으로 처리

 - Queue를 이용하는 예

  ㆍ창구업무처럼 서비스 순서를 기다리는 등의 대기행렬의 처리에 사용

  ㆍ운영체제의 작업 스케줄링에 사용

 

#37_데크(Deque) ; 선형구조

 - 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료구조

 - 스택과 큐의 장점만 따서 구성한 것임

 - 입력이 한쪽에서만 발생하고 출력은 양쪽에서 일어날 수 이쓴 입력제한과, 입력은 양쪽에서 일어나고 출력은 한곳에서만 이루어지는 출력 제한이 있음

 - 입력 제한 데크 : Scroll

 - 출력 제한 데크 : Shelf

 

#38_트리(Tree) 관련용어

 - 노드(Node) : 하나의 자료항목과 다른 항목에 대한 가지(Branch)를 합친 것

  ex) A, B, C, D, E, F, G, H, I, J, K, L, M

 - 근노드(Root Node) : 트리의 맨 위에 있는 노드 ex) A 

 - 디그리(Degree, 차수) : 각 노드에서 뻗어 나온 가지의 수 ex) A=3, B=2, C=1, D=3

 - 트리의 디그리 : 노드들의 디그리 중에서 가장 많은 수

  ex) 노드 A나 D가 3개의 디그리를 가지므로 위 트리의 디그리는 3임

 - 단말노드(Terminal Node)=잎노드(Leaf Node) : 자식이 하나도 없는 노드 즉 Degree가 0인 노드

  ex) K, L, F, G, M, I, J

 - 비단말 노드(Non-Terminal Node) : 자식이 하나라도 있는 노드 즉, Degree가 0이 아닌 노드

  ex) A, B, C, D, E, H

 - 자노드(Son Node) : 어떤 노드에 연결된 다음 레벨의 노드들

  ex) D의 자노드 : H, I, J

 - 부노드(Parent Node) : 어떤 노드에 연결된 이전 레벨의 노드들

  ex) E, F 의 부노드는 B

- 형제노드(Brother Node, Sibling) : 동일한 부모를 갖는 노드들

  ex) H의 형제노드는 I, J

 - Level : 근노드의 Level을 1로 가정한 후 어떤 Level이 L이면 자식노드는 L+1

  ex) H의 레벨은 3

 - 깊이(Depth, Height) : 어떤 Tree에서 노드가 가질 수 있는 최대의 레벨

  ex) 위 트리의 깊이는 4

 

#39_이진트리의 운행법(Traversal)

 - Preorder 운행 : Root -> Left -> Right 순으로 운행함

 - Inorder 운행 : Left -> Root -> Right 순으로 운행함

 - Postorder 운행 : Left -> Right -> Root 순으로 운행함

 

#40_수식의 표기법

 - 전위표기법(PreFix) : 연산자 -> Left -> Right

 - 중위표기법(InFix) : Left -> 연산자 -> Right

 - 후위표기법(PostFix) : Left -> Right -> 연산자

#21_관계 데이터베이스 특징

 - 1970년 IBM에서 근무하는 E. F. Codd에 의해 처음 제안되었음

 - 개체(Entity)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현

 - 릴레이션은 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션으로 구분

 - 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이

 - 단점 : 성능이 다소 떨어짐

 

#22_관계 데이터베이스의 Relation 구조

● 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성

● 튜플(Tuple)

 - 릴레이션을 구성하는 각각의 행

 - 속성의 모임으로 구성

 - 파일 구조에서 레코드와 같은 의미

 

● 속성(Attribute, 애트리뷰트)

 - 데이터베이스를 구성하는 가장 작은 논리적 단위

 - 파일 구조상의 데이터 항목 또는 데이터 필드에 해당

 - 개체의 특성을 기술

 

● 도메인(Domain)

 - 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(atomic)값들의 집합

 - 실제 애트리뷰트 값이 나타날 때 그 값의 합법여부를 시스템이 검사하는 데에도 이용

 

● 차수(Degree) : 속성(Attribute)의 개수

 

● 기수(대응수 ; Cardinality) : 튜플(Tuple)의 개수

 

#23_키(Key)의 개념 및 종류

● 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 애트리뷰트

 

● 후보키(Candidate Key)

 - 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말함

 - 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함

 

● 기본키(Primary Key)
 - 후보키 중에서 선택한 주키(Main Key)

 - 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

 - NULL 값을 가질 수 없음

 - 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음

 

● 대체키(Alternate Key) = 보조키

 - 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말함

 - 보조키라고도 함

 

● 슈퍼키(Super Key)

 - 릴레이션에서 같은 튜플이 발생하지 않는 키를 구성할 때, 속성의 집합으로 구성하는 것을 말함

 - 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함

 

● 외래키(Foreign Key)

 - 관계(Realtionship)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션 속성

 - 외래키로 지정되면 참조테이블의 기본키에 없는 값은 입력할 수 없음

 

#24_무결성

 - 개체 무결성 : 릴레이션에서 기본키를 구성하는 속성은 널(NULL) 값이나 중복값을 가질수 없음

  ex) '학생' 릴레이션에 '학번'이 기본키로 정의 되면 튜플을 추가할 때 '주민번호'나 '성명' 필드에는 값을 입력하지 않아도 되지만 '학번' 속성에는 반드시 값이 입력되어야 함, 또한 중복 불가

 - 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함 즉, 릴레이션은 참조할 수 없는 외래키값을 가질 수 없음

  ex) '수강' 릴레이션의 '학번' 속성에는 '학생' 릴레이션의 '학번' 속성에 없는 값은 입력할 수 없음

 

#25_순수관계 연산자

● 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자

 

● Select(수평연산)

 - 릴레이션에 존재하는 튜플중에서 선택조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듬

 - 릴레이션에 행(가로)에 해당하는 튜플을 구하는 것이므로 수평연산이라고도 함

 - 연산자의 기호는 그리스문자 시그마(σ)를 사용

 - 표기 형식 : σ<조건>(R) 단, R은 릴레이션 이름

 

● Project(수직 연산자)

 - 주어진 릴레이션에서 속성 List에 제시된 속성(Attribute)만을 추출하는 연산

 - 릴레이션의 열(세로)에 해당하는 Attribute을 추출하는 것이므로 수직 연산자라고도 함

 - 연산자의 기호는 그리스문자 파이(π)를 사용

 - 표기 형식 : π<속성리스트>(R) 단, R은 릴레이션 이름

 

● Join

 - 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산

 - 연산자의 기호는 그리스문자 ▷◁를 사용

 - 표기 형식 : R▷◁키속성r=키속성sS

   단, 속성 r은 릴레이션 R의 속성이고, 키속성 s는 릴레이션 S의 속성임

 

● Division

 - X ⊃ Y인 2개의 릴레이션에서 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

 - 표기 형식 : R[속성r : 속성s] S

   단, 속성 r은 관계 R의 속성이고 속성 s는 관계 S의 속성이며, 속성 r과 속성 s는 동일 속성값을 가지는 속성이여야 함

 

#26_Anomaly(이상)의 개념 및 종류

● 이상(Anomaly) : 정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 못한 곤란한 현상

 - 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 형상

 - 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상

 - 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

 

#27_정규화 과정

#28_SQL의 분류

● DDL(데이터 정의어)

 - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어

 - 데이터베이스 관리자나 데이터베이스 설계자가 사용

 - 데이터 정의어(DDL)의 3가지 유형

  ㆍCREATE : Schema, Domain, Table, View, Index를 정의

  ㆍALTER : Table에 대한 정의를 변경하는데 사용

  ㆍDROP : Schema, Domain, Table, View, Index를 삭제

 

● DML(데이터 조작어)

 - 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어

 - 데이베이스 사용자와 데이터베이스 관리시스템 간의 인터페이스 제공

 - 데이터조작어(DML)의 4가지 유형

  ㆍSELECT : 테이블에서 조건에 맞는 튜플을 검색

  ㆍINSERT : 테이블에 새로운 튜플을 삽입

  ㆍDELETE : 테이블에서 조건에 맞는 튜플을 삭제

  ㆍUPDATE : 테이블에서 조건에 맞는 튜플의 내용을 변경

 

● DCL(데이터 제어어)

 - 데이터의 보안, 무결성, 데이터 회복, 병행 수행 제어 등을 정의하는데 사용하는 언어

 - 데이터베이스 관리자가 데이터 관리를 목적으로 사용

 - 데이터 제어어(DCL)의 종류

  ㆍCOMMIT : 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌

  ㆍROLLBACK : 데이터베이스 조작 작업이 비정상적으로 종료되었을 떄 원래의 상태로 복구

  ㆍGRANT : 데이터베이스 사용자에게 사용권한을 부여

  ㆍREVOKE : 데이터베이스 사용자의 사용권한을 취소

 

#29_Select 문

● 테이블을 구성하는 튜플(행)들 중에서 전체 또는 조건을 만족하는 튜플(행)을 검색하여 주기억장치상에 임시 테이블로 구성시키는 명령문

 

● 일반형식


  SELECT predicate [테이블명.]속성명1, [테이블명,]속성명2, ...

  FROM 테이블명1, 테이블명2, ...

  [WHERE 조건]

  [GROUP BY 속성명1, 속성명2, ...]

  [HAVING 조건]

  [ORDER BY 속성명 [ASC | DESC]];


 ① SELECT절

  - Predicate : 불러올 튜플수를 제한할 명령어를 기술

  ㆍALL : 모든 튜플을 검색할 때 지정하는 것으로, 주로 생략

  ㆍDISTLNCT : 중복된 튜플이 있으면 그 중 첫번째 한개만 검색

  ㆍDISTINCTROW : 중복된 튜플을 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로

  - 속성명 : 검색하여 불러올 속성(열) 및 수식들을 지정

  ㆍ기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술

  ㆍ두 개 이상의 테이블을 대상으로 검색할 때는 반드시 테이블명, 속성명으로 표현

 ② FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술

 ③ WHERE절 : 검색할 조건을 기술

 ④ GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화 할 속성을 지정함, 일반적으로 그룹함수와 함께 사용

 ⑤ HAVING절 : GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정

 ⑥ ORDER BY절 : 특정 속성을 기준으로 정렬하여 검색할 때 사용

  - 속성명 : 정렬의 기준이 되는 속성명을 기술

  - [ASC | DESC] : 정렬방식으로 'ASC'는 오름차순, 'DESC'는 내림차순을 의미, 생략하면 오름차순으로 지정

 

#30_삽입, 삭제, 갱신문

● 삽입문(Insert Into ~ )

 INSERT

 INTO 테이블명(속성명1, 속성명2, ...)

 VALUES (데이터1, 데이터2, ...);

 - 대응하는 속성과 데이터의 개수와 data_type이 일치해야 함

 - 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음

 - SELECT문을 사용하여 다른 테이블의 검색 결과 삽입할 수 있음

 

● 삭제문(delect From ~)

 DELETE

 FROM 테이블명

 WHERE 조건;

 - 모든 레코드를 삭제할 때는 WHERE 절을 생략함

 - 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름

 

● 갱신문(Update ~ Set ~)

 UPDATE 테이블명

 SET 속성명 = 데이터[, 속성명=데이터]

 WHER 조건;

 

 

+ Recent posts