#128_구조적 프로그래밍의 규칙

 - 프로그램의 제어 흐름을 선형화

 - 단일 입구와 단일 출구만 가지게 함

 - GOTO문은 사용하지 안흠

 - 구조화 이론의 세 가지 기본 논리 구조만을 사용함(순차, 선택(조건), 반복 구조)

 

#129_결합도(Coupling)

 - 두 모듈간의 상호 의존도를 측정하는 것으로, 좋은 설계는 모듈간의 결합도를 최소화하여 모듈의 독립성을 높인 것을 의미

 - 결합도의 순서(약함→강함) : 자료 결합도 → 스탬프 결합도 → 제어 결합도 → 외부 결합도 → 공통 결합도 → 내용 결합도

자료 결합도 서로 다른 모듈 간에 매개 변수 또는 인수를 통해 꼭 필요한 자료만들 교환하는 경우의 결합도로, 설계 품질이 가장 좋음
스탬프 결합도 서로 다른 모듈이 동일한 자료 구조를 참조하는 경우의 결합도
제어 결합도 서로 다른 모듈 간에 교환하는 매개 변수(Parameter)가 제어 정보인 경우의 결합도
외부 결합도 어떤 모듈에서 외부(External)로 선언되어 있는 자료(변수)를 다른 모듈에서 참조하는 경우의 결합도
공통 결합도 서로 다른 모듈들이 하나의 기억 장소에 설정된 공통의 데이터 영역을 공유하는 경우의 결합도
내용 결합도 한 모듈이 다른 모듈의 내부 자료를 직접적으로 참조하는 경우의 결합도로, 결합도 중 의존도가 가장 높고, 순서 변경이 다른 모듈이 영향을 주기 쉬움

 

#130_응집도(Cohesion)

 - 한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준으로서, 응집도가 높을수록 모듈의 독립성은 높아짐

 - 응집도의 순서(약함→강함) : 기능적 응집도 → 순차적 응집도 → 통신적 응집도 → 절차적 응집도 → 시간적 응집도 → 논리적 응집도 → 우연적 응집도

 

#131_객체(Object)

 - 데이터(속성)와 이를 처리하기 위한 연산(메소드)을 결합시킨 실체

 - 객체마다 각각의 상태(State)를 가지고 있음

 - 행위(Behavior)에 대한 특징을 나타냄

 - 객체는 식별성을 가짐

 - 모든 객체는 다른 객체들과 구별할 수 있는 이름을 가짐

 - 일정한 기억 장소를 가지고 있음

 

#132_객체지향 기법 관련 용어

 - 속성(Attribute) : 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의하는 것으로서 성질, 분류, 식별, 수량 또는 현재 상태 등을 표현함

 - 메소드(Method) : 객체에 정의된 연산을 의미하며, 객체의 상태를 참조하거나 변경하는 수단이 됨

 - 클래스(Class) : 2개 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현하는 요소 즉, 공통된 특성과 행위를 갖는 객체의 집합이라고 할 수 있음. 한 클래스를 기준으로 하여 그 기준 클래스의 상위 클래스를 수퍼 클래스, 하위 클래스를 서브 클래스 라고 함

 - 인스턴스(Instance) : 하나의 클래스에 속하는 각각의 객체를 의미

 - 인스턴스화(Instantiation) : 클래스로부터 새로운 객체를 생성하는 행위

 - 메세지(Message) : 외부로부터 하나의 객체에 전달되는 메소드(행위)의 요구

 

#133_객체의 특정

 - 주체성 : 다른 객체들과 식별할 수 있는 속성을 의미

 - 분류성 : 동일 속성과 행위를 갖는 객체들을 하나의 클래스로 분류하는 속성을 의미

 - 다형성 : 하나의 메세지에 대해 각 클래스가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미 즉, 같은 연산자라도 각 클래스에 따라 다른 기능을 수행할 수 있음

 - 상속성(Inheritance) : 이미 정의된 상위 클래스의 메소드를 비롯한 모든 속성을 하위 클래스가 물려받을수 있는 것을 의미

 - 추상화(Abstraction) : 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는것을 의미

 - 캡슐화(Encapsulation) : 데이터 구조와 데이터를 조작하는 연산을 하나로 묶어 하나의 모듈 내에서 결합되도록 하는 것을 의미

 - 정보 은닉(Information Hidden) : 캡슐화된 정보를 외부에 감추는 것을 의미

 

#134_럼바우(Rumbaugh)의 분석 기법

 - 객체 모델링 기법(OMT)이라고 하며 그래픽 표기법을 이용하여 모든 소프트웨어 구성 요소들의 객체를 모델링함

 - 시스템의 무엇(객체 모델링)에서 언제(동적 모델링), 어떤 일(기능 모델링)이 일어나는가를 분석함

 - 분석 절차 : 객체 모델링  → 동적 모델링 → 기능 모델링

  ㆍ객체 모델링(Object Modeling) : 실세계 문제 영역으로부터 시스템에 요구되는 객체를 찾아내어 객체들 간의 관계를 연관성, 집단화, 일반화 관계를 중심으로 정의하고 객체 다이어그램으로 나타내는 것

  ㆍ동적 모델링(Dynamic Modeling) : 시간의 흐름에 따라 변하는 객체들 사이의 제어 흐름, 상호 작용, 연산 순서 등의 동적인 행위를 상태 다이어그램으로 나타내는 것

  ㆍ기능 모델링(Fuction Modeling) : 다수 프로세스 간의 데이터 흐름을 중심으로 처리과정을 데이터 흐름도로 나타내는 것

 

#135_코드(Coad)와 요돈(Yourdon)의 객체지향 기법

 - 분석 기법 : E-R다이어그램(개체 관계도)을 사용하여 개체의 활동들을 데이터 모델링하는데 초점을 둔 기법

 - 설계 기법 : 분석 사항을 하향식 방법으로 설계에 접근하여 프로토타입으로 개발하는 객체지향 설계 기법으로, 문제 영역 요소, 사람과 상호 작용 요소, 타스크(Task)관리 요소, 데이터 관리 요소로 구성됨

 

#136_Booch의 객체지향 설계

 - 1991년 Booch에 의해 발표된 객체지향 설계 기법으로, 설계 단계에 중점을 두어 클래스 및 객체의 식별과 그것들 간의 관계를 강조하였음

 - 데이터 흐름도(DFD)를 사용해서 객체를 분해하고, 객체들 간의 인터페이스를 찾아 Ada 프로그램으로 변환시키는 기법

 - 전체 시스템의 가시화와 실시간 처리(Real Time)에 유용

 - 설계를 위한 문서화 기법을 강조함

 - 분석 단계와 구현 세부 사항에 취약

#117_개발 단계에 따른 테스트 종류

 - 단위 테스트 : 각의 모듈에 대해 독립적인 환경에서 기본 데이터만 입력하여 테스트

 - 통합 테스트 : 시스템 모듈간의 상호 인터페이스가 원활하게 수행되고 있는가를 확인하는 작업으로, 프로그램 단위별로 디버깅이 끝난 것을 모아 서로 연관된 프로그램군(Group)을 계통적으로 검사하며, 시스템 분석가에 의해 테스트 데이터가 작성됨(결합 테스트)

 - 시스템 테스트 : 시스템이 초기의 목적을 만족시키는가를 확인하는 작업

 - 인수 테스트 : 사용자의 요구 사항을 만족시키는가를 확인하는 작업으로, 개발 과정 이후에 사용자에게 인수하는 과정에서 수행함

 - 테스팅 검토 : 테스트가 계획대로 수행되었는지를 확인하는 작업

 

#118_문서화의 목적 및 효과

 - 시스템 개발팀에서 운용팀으로 인수인계가 용이

 - 개발 후에 시스템의 유지보수가 용이

 - 개발팀을 원활히 운용할 수 있음

 - 시스템 개발 중의 추가 변경 또는 시스템의 개발 후의 변경에 따른 혼란을 방지할 수 있음

 - 시스템 개발 방법과 순서를 표준화할 수 있어 효율적인 작업과 관리가 가능

 - 복수 개발자에 의한 병행 개발을 가능하게 함

 - 타업무 개발에 참고할 수 있음

 

#119_폭포수 모델(Waterfall Model)

 - 전적(전통적) 생명 주기 모델로서, 폭포수에서 한번 떨어진 물이 거슬러 올라갈 수 없듯이 소프트웨어 개발도 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하며 이전 단계로 넘어 갈 수 없는 방식

 - 가장 오랫동안 사용되어 온 모델로 적용 사례가 많음

 - 단계별 정의가 분명하며, 각 단계별로 산출물이 명확히 나옴

 - 새로운 요구 사항을 시스템에 반영하기가 어려움

 - 개발 순서 : 타당성 조사 -> 계획 -> 요구 사항 분석 -> 기본 설계(개략 설계) -> 상세 설계 -> 구현(Coding) -> 통합 시험 -> 시스템 실행 -> 유지보수

타당성 조사 시스템의 정의와 가능성 조사 및 다른 방법과 비교 조사하는 단계
계획 사용자 문제의 정의, 정체 시스템 차원의 기본 목표와 요구사항 결정, 추진 방안의 제시를 통해 시스템 개발 비용 및 소요 기간, 인력 등의 개발 계획을 수립하는 단계
요구사항 분석 소프트웨어에 요구되는 기능, 성능, 그리고 인터페이스 등 사용자의 요구 사항을 구체적으로 이해하는 단계
기본 설계(=개략 설계) 개발될 소프트웨어에 대한 전체적인 하드웨어 및 소프트웨어 구조, 제어 구조, 자료 구조의 개략적인 설계를 작성하는 단계
상세 설계 각 단위 프로그램에 대한 사항을 상세히 기술하는 단계
구현(Coding) 설계 단계에서 만들어진 설계 사양서를 바탕으로 프로그램을 작성하는 단계로, 코딩과 디버깅, 단위 테스팅을 수행하는 단계
통합 시험 단위 프로그램별로 구현된 것을 통합시키며 시험하는 단계
시스템 실행 전체 시스템이 정확하게 실행하는가를 확인하는 단계
유지보수 시스템의 사용 중에 발생하는 여러 변경 사항에 대해 적응하고, 변화에 대비하는 과정

 

#120_그 밖에 소프트웨어 생명 주기

 - 프로토타이핑 모델(Prototyping Model) : 사용자의 요구 사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 모형(Prototype, 시제품)을 만들어 의사 소통의 도구로 삼으면서 개발하는 기법

 - 나선형 모델 : 폭포수 모델과 프로토타이핑의 장점에 위험 분석 기능을 추가한 모델(점증적 모델)

 - 4세대 기법(4GH) : 자연어로 표현하는 4세대 언어를 이용하여 개발자가 조사한 요구 사항을 자동으로 구현(Coding)시키는 비절차적 기법

 

#121_IPT 기법의 도입 목적

 - 보기 쉽고 이해하기 쉬우며, 개발과 유지보수의 양면에서 경제적인 프로그램을 만들 수 있게 함

 - 개발자의 생산성을 향상시킴

 - 완성된 프로그램의 품질을 향상시켜 유지보수를 용이하게 함

 - 프로그램의 표준화로 개인 격차를 해소하고, 개발요원의 교대 근무를 용이하게 함

 

#122_HIPO

 - 시스템 실행 과정인 입력, 처리, 출력을 계층적으로 기술하는 방법

 - 시스템을 설계하거나 문서화하기 위한 도구임

 - 체계화된 문서 작성이 가능하며, 보기 쉽고 알기 쉬움

 - 하향식(Top-down)방식을 사용하여 나타냄

 - 개발 과정에서 문서화를 부산물로 얻을 수 있음

 - 도표상에 기능 위주로 입력 내용, 처리 방법, 출력 내용이 제시되므로 시스템의 이해가 쉬움

 - 기능과 자료의 의존 관계를 동시에 표현 할 수 있음

 - 유지보수 및 변경이 용이함

 - HIPO의 구성

도식 목차(Visual Table of Contents)

ㆍHIPO에서 지정된 기능을 계층적으로 나타낸 도표

ㆍ시스템의 구조와 각 기능의 관계를 도식화한 것으로, 특정 기능을 쉽게 찾을 수 있음

총괄 도표(Overview Diagram)

ㆍ시스템 또는 프로그램의 기능을 입력, 처리, 출력 관계로 도표화한 것

ㆍ사용자의 관점에서 본 시스템 또는 프로그램의 기능과 처리 내용을 나타내는 것

상세 도표(Detail Diagram) 총괄 도표에 나타난 기능을 구성하는 기본 요소들을 상세히 기술한 도표

 

#123_구조적 분석

 - 요구 분석 명세서를 작성하기 위하여 널리 사용되어 오는 IPT 기법 중 하나임

 - 구조적 분석은 도형 중심의 분석용 도구와 분석 절차를 이용하여 사용자의 요구 사항을 파악하고 문서화하는 체계적인 분석 기법임

 - 구조적 분석용 도구 : 자료 흐름도(DFD), 자료 사전(DD), 소단위 명세서(Mini-Spec), 개체 관계도(ERD), 상태 전이도(STD)

 - 도형 중심의 문서화 도구를 사용함으로 분석자와 사용자간 대화가 용이

 - 시스템을 하향식으로 세분화함

 - 하향식 분할 원리를 적용하여 분석의 중복성을 배제함

 - 사용자의 요구사항을 논리적으로 표현하여 전체 시스템을 일관성 있게 이해할 수 있음

 - 자료 흐름도의 구성 요소

구성 요소 의미 표기법
처리 입력된 자료를 출력으로 변환하는 것 O
자료 흐름 발생지, 종착지, 처리 및 저장소 사이에서 자료의 흐름을 나타냄
자료 저장소 시스템 상의 자료를 저장하기 위한 장소

단말 시스템에 필요한 자료가 입력되는 발생지와 시스템에서 처리된 자료가 출력되는 종착지를 나타냄

 

#125_자료 사전(DD)

 - 자료 흐름도의 대상이 되는 모든 자료에 대한 기본적인 사항들을 더 자세히 정의하기 위해 사용되는 도구로, 메타데이터 또는 데이터의 데이터 라고도함

 - 이름을 이용해 정의를 쉽게 찾을 수 있어야 하며, 이름이 중복되어서는 안됨

 - 갱신하기 쉬워야 하며, 정의하는 방식이 명확해야 함

 - 중복된 정의가 없어야 함

 - 자료 사전의 정의 대상 : 자료 흐름(Data Flow)을 구성하는 자료 항목, 자료 저장소(Data Store)를 구성하는 자료 항목, 자료에 대한 의미, 자료 요소(Data Element)의 단위 및 값

 - 자료 사전의 기호

기호 의미 기호 의미
= 자료의 정의 {  } 자료의 반복
+ 자료의 연결 | 대체 항목의 나열
(  ) 자료의 생략 *...* 자료의 설명
[  ] 자료의 선택    

 

#126_소단위 명세서(Mini-Spec.)

 - 자료 흐름도상의 최하위 처리 절차를 상세하게 기술하는데 사용하는 도구로, 프로세스 명세서라고도 함

 - 구조적 언어, 의사 결정표, 의사 결정도를 이용하여 기술함

 

#127_상태 전이도(STD)

 - 시스템에 어떤 일이 발생할 경우 시스템의 상태와 상태의 변화를 모델링하는 것

 - 시스템의 행위를 정의하는 도구

 - 시스템의 상태란 시스템이 수행 중인 상태를 의미하는 것으로 직사각형으로 나타냄

 - 상태의 변화란 시스템이 어떤 상태에서 다른 상태로 변환되는 과정을 의미하는 것으로 화살표로 나타냄

 - 상태의 변화를 일으키는 조건과 그 조건이 상태를 변화시킬때 시스템이 취하는 행동을 제시해야됨

 - 화살표의 시작은 상태 변화를 일으키는 사건을 의미하며, 화살표의 끝은 사건의 결과로 발생하는 조검임

#106_순차 편성

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

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

 - 기억공간을 효율적으로 사용할 수 있음

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

 - 파일 중간에서 레코드를 삽입, 삭제하는 경우 시간이 많이 소요됨

 - 검색 효율이 낮음

 

#107_색인 순차 편성

 - 순차 처리와 랜덤 처리가 모두 가능하도록 레코드들을 키값순으로 정렬하여 기록하고, 레코드의 키 항목만을 모은 인덱스를 구성하여 편성하는 방식

 - 기본 데이터 구역 : 실제 레코드들을 기록하는 부분

 - 인덱스 구역 : 기본 데이터 구역에 대한 인덱스가 기록되는 부분

  ㆍ트랙 인덱스 : 기본 데이터 구역의 한 트랙에 기록되어 있는 데이터 레코드들 중에 최대 키 값과 주소가 기록되는 인덱스로, 한 실린더당 하나씩 만들어짐

  ㆍ실린더 인덱스 : 각 트랙 인덱스의 최대 키 값과 해당 레코드가 기록된 실린더의 정보가 기록되는 인덱스로, 한 파일당 하나씩 만들어짐

  ㆍ마스터 인덱스 : 실린더 인덱스 구역의 정보가 많을 경우 그것을 일정한 크기의 블록으로 구성하는데, 이때 처리할 레코드가 어느 실린더 인덱스에 기록되어 있는지를 기록하는 인덱스

 - 오버플로 구역 : 기본 데이터 구역에 빈 공간이 없어서 새로운 레코드의 삽입이 불가능할 때를 대비하여 예비로 확보해 둔 구역

 

#108_랜덤 편성

 - 입력되는 정보를 기록 순서나 코드 순서와 같은 논리적 순서와 관계없이 특정한 방법으로 키를 생성하여 임의의 위치에 보관하고 처리시에도 필요한 장소에 직접 접근할 수 있도록 편성하는 방법

 - 처리하고자 하는 레코드를 주소 계산에 의하여 직접 처리할 수 있음

 - 은행의 온라인 시스템과 같은 대화식 처리에 가장 효율적인 방법

 - 접근 시간이 빠르고 레코드의 삽입, 삭제, 갱신이 용이

 - 충돌이 발생할 염려가 있으므로, 이를 위한 기억 공간의 확보가 필요

 - 레코드의 주소 변환 과정을 위한 시간 필요

 - 주소 계산 방법에는 직접 주소법과 디렉토리 조사법, 해싱 함수 이용법이 있음

 - 해싱 함수 이용법 : 해싱은 해싱 함수를 이용하여 계산된 키값(주소)에 대항하는 기억 공간에 레코드를 보관하거나 보관된 레코드를 검색하는 방법임

  ㆍ해싱 함수 : 레코드의 키 값에서 레코드가 저장되어 있는 기억장치의 주소를 계산해내는 사상 함수를 의미

  ㆍ버킷 : 하나의 주소를 가지는 영역을 의미하는 것으로, 하나의 버킷은 하나 이상의 레코드를 포함할 수 있음

  ㆍ충돌 : 두개의 서로 다른 레코드가 같은 기억 공간(버킷)을 점유하려고 하는 현상

  ㆍ동거지(Synonym) : 같은 주소를 갖는 레코드의 집합(유사어, 동의어)

 - 해싱 함수 선택시 고려 사항 : 오버플로의 최소화, 충돌의 최소화, 계산 과정의 최소화(해싱 함수의 단순성), 키 변환 속도, 버킷의 속도

 

#109_리스트 편성

 - 레코드들을 일정한 규칙이나 제약 없이 기억 공간에 자유롭게 기록하고, 각 레코드들은 다음 레코드의 주소를 가지고 있는 포인터를 통해 논리적인 순서로 연결됨

 - 레코드는 데이터와 포인터로 구성되며, 포인터에는 다음 레코드의 주소가 저장됨

 - 앞뒤의 포인터 내용만 변경하여 레코드를 쉽게 삽입 및 삭제 할 수 있음

 - 물리적으로 연속적인 공간을 확보하기 어려운 경우나 레코드의 수가 불규칙하게 변하는 경우에 효율적

 - 포인터로 인해 레코드의 크기가 커지고, 예비 영역이 필요하므로 기억 장소가 낭비됨 

 

#110_파일 설계 순서

 - 파일의 성격 검토 -> 파일 항목의 검토 -> 파일의 특성 조사 -> 파일 매체의 검토 -> 편성법 검토

파일의 성격 검토 파일의 명칭, 작성 목적과 종류를 결정하고, 파일이 사용되는 적용 업무를 확인
파일 항목의 검토 항목의 명칭과 저장 형식, 항목의 배열 순서와 자리수, 레코드의 형식과 크기, 블록의 크기를 결정
파일의 특성 조사 효율적인 파일의 처리 형태와 처리 유형을 결정하고, 추가,수정,삭제의 발생 빈도와 처리 형태, 파일의 활동률 확인
파일 매체의 검토

ㆍ기능 검토 사항 : 액세스 형태와 처리 방식, 처리 시간과 정보의 양, 작동의 용이성을 검토

ㆍ종합 검토 사항 : 저장 매체와 매체의 개수, 장치의 대수를 결정

편성법 검토 순차 편성, 랜덤 편성, 색인 순차 편성, 리스트 편성 등 파일의 편성 방식을 결정

 

#111_프로세스 설계시 유의 사항

 - 신뢰성과 정확성을 고려하여 처리 과정을 간결하고 명확히 표현

 - 오류에 대비한 검사 시스템을 고려

 - 시스템의 상태 및 구성 요소, 기능 등을 종합적으로 표시

 - 새로운 시스템의 프로세스 설계뿐만 아니라 기존 시스템의 문제점 분석이 가능하도록 설계

 - 정보의 흐름이나 처리 과정을 모든 사람이 이해할 수 있도록 표준화

 - 하드웨어와 프로그래머의 능력을 고려

 - 분류 처리는 가능한 적게 함

 - 조작을 간결화, 자동화하여 사용자의 수동 조작을 적게 함

 

#112_흐름도(Flowchart)

 - 상태 및 구성 요소, 기능의 배열 순서와 총합 관계를 도형, 기호 등으로 표시한 것

 - 블록 차트(Block Chart) : 업무를 개괄적으로 파악하는 데 사용

 - 시스템 흐름도(System Flowchart) : 자료 발생부터 결과를 얻기까지 시스템의 전 과정을 나타내는 것

 - 프로세스 흐름도(Process Flowchart) : 컴퓨터의 입력, 처리, 출력 과정을 그림으로 표시한 것으로, 오퍼레이터에게 처리 공정을 알려주고 컴퓨터의 전체적인 논리 구조를 파악, 컴퓨터의 사용 시간 계산 등에 사용됨

 - 프로그램 흐름도(Program Flowchart) : 시스템 흐름도 중에서 컴퓨터 처리하는 부분을 중심으로 자료처리에 필요한 모든 조작 순서를 표시하는 것으로, 프로그램 전체의 내용을 개괄적으로 설명하는 개요 흐름도와 코딩, 데이터의 검토, 프로그램 기록 등을 위한 세부 사항을 기록하는 상세 흐름도가 있음

 

#113_표준 패턴

 - 변환(Conversion) : 입력 매체 상의 데이터의 오류를 제거하고, 컴퓨터가 처리할 수 있을 형태로 편집하여 파일 매체로 변환(입력 변환)하고, 파일 매체에 저장된 내용을 사람이 확인할 수 있도록 출력 매체로 변환(출력 변환)하는 기능(매체 변환)

 - 병합(Merge) : 동일한 파일 형식을 갖는 2개 이상의 파일을 일정한 규칙에 따라 하나의 파일로 통합 처리하는 기능

 - 갱신(Update) : 마스터 파일의 내용을 변동 파일에 의해 추가, 수정, 삭제 등의 작업을 하여 새로운 내용의 마스터 파일을 생성하는 것

 - 분배(Distriburion) : 하나의 파일 안에서 조건에 맞는 것과 그렇지 않은 것을 분리하는 기능

 - 추출(Extract) : 파일 안에서 특정 조건에 만족하는 데이터만을 골라내는 기능

 - 조합(Collate) : 레코드 형식이 서로 다른 2개 이상의 파일에서 조건에 맞는 것을 골라 새로운 레코드로 만드는 기능

 

#114_오류 검사 시스템

 - 컴퓨터 입력 단계에서의 검사 방법 : 체크 디지트 검사, 공란 검사, 균형 검사, 형식 검사, 한계 검사(유효 범위 검사), 일괄 합계 검사, 타당성 검사(논리 검사), 숫자 검사, 순차 검사(순서 검사), 대조 검사, 반항 검사, 데이터 수 검사

체크 디지트 검사

(Check Digit Check)

코드를 설계할 때 본래의 코드에 검사할 수 있는 1자리의 숫자를 넣어줌으로써 컴퓨터에 의하여 자동으로 검사
균형 검사(Balanced Check) 차변과 대변의 한계값을 검사하는 방법으로, 대차의 균형이나 가로, 세로의 합계가 일치하는 가를 검사함
한계 검사(Limit Check) 입력 데이터의 어떤 항목이 규정된 범위 내에 있는지를 검사

일괄 합계 검사

(Batch Total Check = Sum Check)

입력 데이터의 특정 항목 합계값을 미리 계산해서 이것을 입력 데이터와 함께 입력하고, 컴퓨터상에서 계산한 결과값과 수동 계산 결과값이 같은지를 검사

데이터 수 검사

(Data Count Check)

컴퓨터로 처리할 데이터의 개수를 미리 파악해 두었다가 컴퓨터로 처리한 데이터의 개수와 같은지 여부를 검사

 - 계산 처리 단계에서의 검사 방법 : 부호 검사, 중복 레코드 검사, 불일치 레코드 검사, 오버플로 검사, 제로 균형 검사, 불능 검사

 

#115_프로그램 설계서

 - 프로그래머의 업무 수행을 신속 정확하게 지원하는 작업 지시서의 역할을 하는 것

 - 시스템 분석가(SA) 또는 시스템 엔지니어(SE)가 작성

 - 프로그램 설계서의 구성 : 시스템명 및 코드명, 설계 방침, 프로세스 흐름도, 코드표, 입출력 설계표, 프로그래밍 지시서

 - 프로그래밍 지시서의 구성 : 프로그램명, 설계서 작성자명, 프로그램의 작성 기간, 작성 비용, 작성 시기, 입출력 알람, 처리 개요, 처리 명세, 프로그램 작성 후 제출할 사항, 참고 자료

 

#116_시스템의 평가 항목

 - 시스템의 평가 항목 : 기능 평가, 성능 평가, 신뢰성 평가

 - 신뢰성 평가를 위한 검토 항목 : 시스템 전체의 가동률, 시스템을 구성하는 각 요소의 신뢰도, 신뢰성 향상을 위해 시행한 처리의 경제적 효과

 - 시스템의 신뢰성 측정

  ㆍMTBF(Mean Time Between Failures) : 평균 고장 간격, 수리가 가능한 시스템이 고장난 후부터 다음 고장이 날 때까지 평균 시간

  ㆍMTTF(Mean Time To Failures) : 평균 가동 시간. 수리 불가능한 시스템의 사용시점부터 고장이 발생할 때까지의 가동 시간 평균으로, 고장 평균 시간이라고도 함

  ㆍMTTR(Mean Time To Repair) : 평균 수리 시간. 시스템에 고장이 발생하여 가동하지 못한 시간들의 평균

  ㆍ신뢰도(Availability, 가용도) : 시스템의 총 운용 시간 중 정상적으로 가동된 시간의 비율

#95_시스템의 개요

 - 정의 : 공통의 목적을 달성하기 위하여 여러 가지 상호 관련된 요소들을 유기적으로 결합한 것

 - 특성 : 목적성, 자동성, 제어성, 종합성

 - 기본 요소

  ㆍ입력(Input) : 처리할 데이터, 처리 방법, 처리 조건을 시스템에 투입하는 것

  ㆍ처리(Process) : 입력된 데이터를 처리 방법과 조건에 따라 처리하는 것

  ㆍ출력(Output) : 처리된 결과를 시스템에서 산출하는 것

  ㆍ제어(Control) : 자료가 입력되어 출력될 때까지의 처리 과정이 올바르게 행해지는지 감독하는 것

  ㆍ피드백(Feedback) : 출력된 결과가 예정된 목적을 만족시키지 못한 경우 목적 달성을 위해 반복 처리하는 것

 

#96_시스템 분석가(SA)

 - 시스템의 전반적인 흐름과 사용자들의 요구 사항을 파악하고 해결책을 마련하는 사람

 - 기업을 목적과 현행 시스템의 문제점을 정확히 이해하고 해결책을 제시할 수 있어야 함

 - 업무 내용이나 시스템에 대한 분석 능력이 있어야 함

 - 컴퓨터 기술과 관리 기법을 알아야 함

 - 시간 배정과 계획 등을 빠른 시간 내에 파악할 수 있어야 함

 - 컴퓨터 하드웨어와 소프트웨어에 대한 전반적인 지식을 가져야 함

 - 업계의 동향 및 관계 법규 등을 파악할 수 있어야 함

 - 창조적, 응용력, 현장 분석 경험이 있어야함

 - 사용자와 프로그래머, 경영진 간의 의사소통을 원활히 하는 해결사 역할을 수행할 수 있어야 함

 

#97_시스템 개발 생명 주기(SDLC)

 - 시스템을 개발하는 과정에서 공통적으로 반복되는 단계를 말하는 것

 - 시스템 개발 생명 주기의 순서 : 시스템 조사 -> 시스템 분석 -> 시스템 설계 -> 시스템 구현 -> 테스트 -> 시스템 운용 -> 유지보수

 - T.M.Ho의 시스템 개발 주기 순서 : 상황 조사 -> 현행 시스템의 연구 -> 사용자 요구 사항 분석 -> 대인 평가 -> 새로운 하드웨어와 소프트웨어 선택 -> 새 시스템의 설계 -> 새 시스템의 구축 -> 새 시스템의 인도

시스템 조사 현행 시스템의 상태와 문제점을 파악하고 해결 방안을 제안하는 단계로, 예비 조사와 기초 조사로 나뉨
시스템 분석 조사 단계에서 조사된 사용자의 요구 사항과 현행 시스템의 문제점을 명확히 파악하여 요구 분석 명세서를 작성하는 과정으로 기능 분석, 예비 설계, 비용 효과 분석 순으로 진행됨
시스템 설계

시스템 분석에 의해 정의된 시스템 요구 분석 명세서를 토대로 하여 새로운 시스템을 구체화하는 단계

ㆍ기본 설계 : 분석 결과에 따라 사용자 입장에서 시스템 전체를 개괄적으로 설계

ㆍ상세 설계 : 각 기능의 논리적인 절차를 확정하고, 구체적인 입/출력 내용 및 파일의 구체적인 내용의 사양을 결정하기 위한 단계

시스템 구현 설계 단계에서 산출된 설계 사양에 따라 프로그래밍 언어를 이용하여 원시코드를 작성하는 단계로, 프로그래밍 또는 코딩이라고도함
테스트 사용자의 요구에 따라 시스템이 구현되었는지 검증하는 단계로, 테스트의 종류에는 통합 테스트, 시스템 테스트, 인수 테스트가 있음
시스템 운용(이행) 개발된 시스템을 실제 업무 처리에 적용하여 활용하는 단계
유지보수

ㆍ시스템 개발 단계 중 가장 많은 비용이 투입되는 단계

ㆍ종류 : 수정 유지보수, 적용 유지보수, 완전 유지보수, 예방 유지보수

 

#98_코드 설계

 - 코드란 컴퓨터를 이용하여 자료를 처리하는 과정에서 분류, 조합 및 집계를 용이하게 하고, 특정 자료의 추출을 쉽게 하기 위해서 사용하는 기호임. 또한 어떤 단위별 수치를 알거나 파일을 체계화하기 위해서 사용됨

 - 코드의 기능

  ㆍ3대 기능 : 분류, 식별, 배열

  ㆍ그 밖의 기능 : 간소화, 표준화, 암호화, 단순화, 연상(표의성), 오류 검출, 구별, 추출

 - 코드 설계 순서 : 코드화 대상 선정 -> 코드화 목적의 명확화 -> 코드 부여 대상 수 확인 ->사용 범위 결정 -> 사용 기간 결정 -> 코드화 대상의 특성 분석 -> 코드 부여 방식의 결정 -> 코드의 문서화

 - 코드 설계 시 유의 사항 : 기계 처리의 용이성, 취급의 용이성, 분류의 편리성(공통성, 체계성), 확장성, 단순성, 고유성, 표의성

 

#99_코드의 종류

 - 순서 코드(Sequece Code) : 자료의 발생 순서, 크기 순서 등 일정 기준에 따라서 최초의 자료부터 차례로 일련번호를 부여하는 방법(순차 코드, 일련 번호식 코드)

 - 구분 코드(Block Code) : 코드화 대상 항목 중에서 공통성이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호를 부여하는 방식

 - 그룹 분류식 코드(Group Classification Code) : 코드화 대상 항목을 일정 기준에 따라 대분류, 중분류, 소분류 등으로 구분하고, 각 그룹 안에서 일련번호를 부여하는 방법

 - 10진 코드(Decimal Code) : 코드화 대상 항목을 0~9까지 10진 분할하고, 다시 그 각각에 대하여 10진 분할하는 방법을 필요한 만큼 반복하는 코드로, 도서 정리를 목적으로 널리 사용함(도서 분류식 코드)

 - 표의 숫자 코드(Significant Digit Code) : 코드화 대상 항목의 성질, 즉 길이, 넓이, 부피, 지름, 높이 등의 물리적 수치를 그대로 코드에 적용시키는 방법(유효 숫자 코드)

 - 연상 코드(Mnemonic Code) : 코드화 대상 항목의 명칭이나 약호와 관계 있는 숫자나 문자, 기호를 이용하여 코드를 부여하는 방법(기호 코드)

 

#100_코드의 오류 발생 형태

 - 필사 오류(Transcription Error) : 입력시 임의의한 자리를 잘못 기록한 경우 발생(오자 오류)

 - 전위 오류(Transposition Error) : 입력시 좌우 자리를 바꾸어 기록한 경우 발생

 - 이중 오류(Double Transposition Error) : 전위 오류가 2개 이상 발생한 경우

 - 생략 오류(Omission Error) : 입력시 한 자리를 빼놓고 기록한 경우 발생

 - 추가 오류(Addition Error) : 입력시 한 자리를 더 추가하여 기록한 경우 발생

 - 임의 오류(Random Error) : 위의 오류가 두 가지 이상 결합하여 발생한 경우

 

#101_입력 설계

 - 입력 설계 순서 : 입력 정보의 발생 -> 입력 정보의 수집 -> 입력 정보의 매체화 - > 입력 정보의 투입 -> 입력 정보의 내용

 - 입력 매체 장치 선택시 검토 사항 : 시스템의 이행 방법 및 운용 비용, 입력 정보 발생 분야에서의 업무 특성, 입력 매체와 매체화 장비의 특성, 출력 정보를 이용할 시점에 맞게 투입

 - 데이터 입력 방식

  ㆍ집중 매체화 시스템 : 발생한 데이터를 전표 상에 기록하고, 일정 시간 단위로 일괄 수집하여 입력 매체에 수록하는 방식

  ㆍ분산 매체화 시스템 : 데이터를 발생한 장소에서 매체화하여 처리하는 방식

  ㆍ턴 어라운드 시스템 : 입력된 자료가 처리되어 일단 출력된 후 이용자를 경유하여 다시 재입력되는 방식으로, 공과금, 보험료 징수 등의 지로 용지를 처리하는 데 사용됨

 

#102_원시 전표 설계시 '기입의 측면'에서 고려할 사항

 - 빠르고, 정확하고 쉽게 기입할 수 있어야 함

 - 기입 항목은 가능한 적게 하고, 간단하게 적을 수 있어야 함

 - 전표 번호나 발생 주문과 같은 고정 항목은 미리 인쇄하거나 선택할 수 있게 함

 - 일정한 순서대로 기입할 수 있어야 함

 - 혼란을 초래할 우려가 있는 것은 기입 요령을 명시함

 

#103_출력 설계

 - 출력 설계 순서 : 출력 정보의 내용 -> 출력 정보의 매체화 -> 출력 정보의 분배 -> 출력 정보의 이용

출력 정보 내용에 대한 설계 출력할 항목과 명칭, 출력항목의 배열 순서, 크기 자릿수, 출력 항목의 문자 표현 방법, 출력 항목에 대한 집계 방법, 출력 정보의 오류 검사 방법을 결정
출력 정보 매체화에 대한 설계 출력 형식, 출력 매체 및 장치, 출력 정보의 양과 출력 복사의 매수, 출력 장소와 출력 시기 및 주기. 출력 배열 순서를 결정
출력 정보 분배에 대한 설계 분배 책임자, 분배 방법 및 형태, 분배 경로, 분배 주기 및 시기에 대해 결정
출력 정보 이용에 대한 설계 출력 정보명과 출력 정보의 사용 목적, 출력 정보의 이용자와 이용 경로를 결정

 

#104_물리 레코드의 형식

 - 비블록화 고정 길이 레코드 : 하나의 논리 레코드를 그대로 전송하는 방식으로, 레코드의 수만큼 입/출력이 발생하므로 시간 낭비가 많고, 경제성이 좋지 않음

 - 블록화 고정 길이 레코드 : 길이가 동일한 여러 개의 논리 레코드를 묶어 하나의 블록으로 구성한 형태로, 프로그램 작성이 쉽고, 속도가 빠르며 경제성이 좋음

 - 비블록화 가변 길이 레코드 : 길이가 다른 하나의 논리 레코드를 그대로 전송하는 방식으로, 레코드의 길이 정보를 반드시 표시해야 하며, 프로그램 작성이 어렵고, 시간이 낭비되며 경제성이 좋지 않음

 - 블록화 가변 길이 레코드 : 길이가 서로 다른 여러개의 논리 레코드를 묶어 하나의 블록으로 구성한 형태로, 각각의 레코드와 블록의 길이 정보를 반드시 표시해야 하며, 프로그램 작성이 어렵지만 처리 속도가 빠르고 경제성이 좋음

 

#105_데이터 파일의 종류

 - 마스터 파일(Master File) : 전표 처리에서의 원장 또는 대장에 해당하는 파일로, 자료 관리의 중추적 역할을 담당하며 기본이 되는 파일임. 트랜잭션 파일에 의해 갱신됨

 - 트랜잭션 파일(Transaction File) : 거래 내역이나 변동 내용 등 일시적인 성격을 지닌 정보를 기록하는 파일로, 마스터 파일을 갱신하거나 조회할 때 사용

 - 요약 파일(Summary File) : 다른 파일의 중요 내용이나 합계를 요약해놓은 파일로, 집계용으로 많이 사용됨

 - 히스토리 파일(History File) : 후일 통계 처리에 사용할 자료나 사고 발생 시 마스터 파일 등을 원상 복구시키기 위한 자료를 보존한 파일

#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의 시간 낭비는 전혀 없으나, 제어기가 매우 복잡해지기 때문에 실제로는 거의 사용되지 않음

+ Recent posts