2017년 2월 19일 일요일

공부

last writed  : 2017. 02. 19

병행제어 기법의 종류
 - 로킹(Locking) : 한 트랜잭션이 어떤 데이터에 대해서 액세스하는 동안 다른 트랜잭션 역시 이 데이터에 접근하기 위해서는 lock을 소유하고 있어야만 액세스할 수 있도록 하는 방법
   * 주요 데이터에 대한 액세스를 상호배타적으로 동작하게 만듬
   * 로크를 소유하고 해제하는 규칙을 정하여 동시에 여러 트랜잭션이 하나의 데이터를 갱신하는 문제를 해결


- 로킹 단위(Locking Granularity) : 병행제어에서 한번에 로킹할 수 있는 단위
   * DB, 파일, 레코드, 필드 등
   * 작을수록 병행수준은 뛰어나지만 DB 전체를 수많은 작은 단위로 나누어서 관리-> 관리할 로크 수가 많아짐 -> 관리가 어렵다. => 로킹 오버헤드가 증가한다,
   * 클수록 병행수준은 낮아지지만 더 큰단위를 묶어 관리 -> 관리할 로크가 적다 -> 관리가 쉽다. => 데이터베이스 공유도가 감소한다.


- 로크의 종류
   * 공유 로크(S, Shared)
   * 배타 로크(X, Exclusive)
   * 의도 로크(I, Intention)
   * 의도 공유 로크(IS, Intention-Shared)
   * 배타 의도 로크(IX, Intention-Exclusive)
   * 공유 의도 독점 로크(SIX, Shared-Intention-Exclusive)
   * 공유 형태로 로킹을 하면, 읽기 권한은 가지지만 쓰기 권한은 갖지 못한다. 동시에 여러 트랜잭션이 해당 로크를 획득하여 데이터를 읽어들일 수 있다.
   * 독점 형태(배타)로 로킹을 하면, 읽기와 쓰기 권한을 모두 갖게된다. 또한, 하나의 트랜잭션이 독점 로크를 획득한 상태이면 다른 트랜잭션은 해당 데이터에 대한 접근이 불가능하게 된다.


- 2단계 로킹 규약 : 각 트랜잭션의 로크 요청과 해제 요청을 2단계로 실시한다. 직렬성을 보장하는 대표적인 로킹 규약이지만. 교착상태에 대한 예방은 불가능하게 된다.
   * 요청 단계(Growing Phase) : 확장 단계로, 트랜잭션은 로크 획득만 가능하며, unlock은 수행할 수 없는 상태
   * 반납 단계(Shrinking Phase) : 축소 단계로, 트랜잭션은 unlock만 수행 가능하며, 로크를 획득할 수 없는 상태


- 타임 스탬프 순서(Time Stamp Ordering) : 직렬성 보장을 위해, DBMS가 트랜잭션의 처리 순서를 미리 선택하는 기법
   * 트랜잭션이 시스템에 들어오면, 들어온 순서대로 시간표(Time Stamp)를 부여하여, 부여도니 순서에 따라 트랜잭션 작업을 실행하게 된다.
   * 타임 스탬프를 사용하면 로크를 사용하지 않으며, 따라서 교착상태가 발생하지 않는다.


- 최적 병행수행(검증 기법, 확인기법, 낙관적 기법)
   * 병행 수행하려는 트랜잭션의 대부부분이 읽기작업만을 수행하는 트랜잭션이라면, 특별히 병행제어 기법을 사용하지 않더라도 트랜잭션간 충돌이 일어날 가능성이 적다
   * 최적 병행수행 기법은 이러한 특성을 이용한 것으로, 트랜잭션이 수행되고 있는 동안에는 어떠한 검사도 하지않으며, 갱신작업이 발생한 이후로 아래의 3가지 단계를 수행한다.
       1. 읽기 단계(Read) : 트랜잭션이 DB로부터 데이터를 읽을 수는 있지만, 갱신 작업은 트랜잭션의 작업공간에 유지도괴 있는 데이터 항목들의 지여 사본에 대해서만 적용된다.      
       2. 검증 단계(Validation) : 트랜잭션 수행의 마지막 단계에서, 갱신된 내용들이 DB에 반영되더라도 직렬성이 보장된다는 것을 확인하기 위한 검증 작업을 수행
       3. 쓰기 단계(Write) : 검증 단계가 성공하면 트랜잭션의 갱신된 데이터들이 DB에 반영되며, 검증 단계가 실패하였다면 갱신된 내용들을 폐끼하고 트랜잭션을 재시작한다.

- 다중 버전기법(Multiversion concerrency control) : 타임 스탠프의 개념을 이용한 기법으로 타임 스탬프 기법이 트랜잭션의 시간 순서를 관리했다면, 다중 버전 기법은 갱신될 때마다 버전을 부여하여 관리
   * 특정 데이터가 갱신될 때에, 해당 항목의 이전값을 보존하기 위해 한 데이터 항목에 대해 여러 버전의 값을 유지한다.
   * 트랜잭션이 쓰기 작업을 수행할 시에 새로운 버전에 쓰기 작업을 진행하고 그항목의 이전 버전은 계속 보존하고 있는 식으로 동작한다.
   * 다른 기법을 사용할시에는 실패하게 될 일부 읽기 작업들이 해당 항목의 이전 버전을 읽도록 함으로써 일기 작업도 수행 가능하며, 직렬성도 보장


정규화
 - 비정규화의 조건
    1NF를 만족하고 모든 도메인이 원자 값이어야 한다.
 - 2NF의 조건
    1NF를 만족하고 키가 아닌 모든 속성이 기본 키에 완전 함수적 종속되어야 한다.
 - 3NF의 조건
    1NF를 만족하고 키가 아닌 모든 애트리뷰트들이 기본 키에 이행적으로 함수 종속되지 않아야 한다.
 - BCNF의 조건
     1NF를 만족하고 다치 종속이 제거되어야 한다.



해싱함수의 종류
1. 제곱법 : 레코드 키 값을 소수로 나누어 나머지 값을 주소로 결정
2. 제산법 : 키 값을 제곱한 후 중간의 몇자리를 선택하고 그 중값을 주소로 이용
3. 중첩법(폴딩) : 길이를 동일하게 여루ㅓ 부분으로 나눈 후 더하고나 XOR하여 주소로 이용
4. 숫자분석법 : 각 숫자의 분포를 이용해서 균등한 분포의 숫자를 선택하여 이용
5. 기수변환법 : 주어진 키 값을 다른 진법으로 변환하여 얻은 값을 주소로 이용
6. 무작위방법 : 난수 발생, 충돌이 발생하면 다음 난수를 이용

해밍코드(Hamming Code)
 - R. W. Hamming에 의해 고안됨
 - 오류 검출만 가능한 패리티 비트(Parity Bit)에 의한 오류 검출이 아닌 오류 정정까지 가능한 방식으로 고안됨
 - 구해지는 수식은 2(p승) >= m + p +1(m : 데이터 비트값)
   ex) 해밍코드에 의해 구성된 코드가 16bit일 경우 2(p승) = 16이므로 16 >= m + 4 + 1,
        즉 m = 11이 됨, 패리티비트 : 5(4+1)

 - 4bit 데이터 0101을 해밍코드로 표현, 코드의 구성은 P1P2D3P4D5D6D7, 여기서 Pn는 패리티 비트를 의미, Dn는 데이터를 의미함... 변환된 해밍코드는?
  * P1 : 행 1, 3, 5, 7 짝수 패리티 체크

  * P2 : 행 2, 3, 6, 7 짝수 패리티 체크
  * P4 : 행 4, 5, 6, 7 짝수 패리티 체크
P1
P2
D3
P4
D5
D6
D7
0
1
0
1

  * P1 => 1, 3, 5, 7 => P1, 0, 1, 1 => P1이 0이어야 짝수가 됨
P1
P2
D3
P4
D5
D6
D7
0
0
1
0
1

  * P2 => 2, 3, 6, 7 => P2, 0, 0, 1 => P1이 1이어야 짝수가 됨
P1
P2
D3
P4
D5
D6
D7
0
1
0
1
0
1

  * P4 => 4, 5, 6, 7 => P4, 1, 0, 1 => P1이 0이어야 짝수가 됨
P1
P2
D3
P4
D5
D6
D7
0
1
0
0
1
0
1

P1, P2, P4인 이유는 2(0승) = 1, 2(1승) = 2, 2(2승) = 4이기 때문이며 2승까지만 하는 이유는 2(3승) = 6을 할 경우 0101인 수 5보다 초과가 되기 때문에 미수행

P1의 짝수 패리티 하는 숫자가 1, 3, 5, 7인 이유는 아래와 같이 각각의 수에 맞게 1이 되는 경우로서 정확한 오류검출을 위해 수행됨
10진수

2진수
P4
P2
P1
1
0
0
1
2
0
1
0
3
0
1
1
4
1
0
0
5
1
0
1
6
1
1
0
7
1
1
1



- 폴링 방식 : 인터럽트 요청신호 플래그(Flag)를 차례로 검사하여 인터럽틔 원인을 판별하는 방식
- 스트로브 방식
- 데이터체인 방식
- 하드웨어 방식

간접상태(Indirect state) 동안 오퍼랜드의 주소를 읽는다.

누산기(Accumulator)는 연산장치에 있는 레지스터(register)의 하나로 연산 결과를 일시적으로 기억하는 장치이다.

메이저 스테이트(Major State) : 현재 CPU가 무엇을 하는 지 나타내는 상태, Major Cycle 또는 Machine Cycle이라고도 함.
 - 메이저 스테이트는 메이서 레지스터(Major Register)로 알아본다.
 - 사이클 제어는 플립플롭 상태에 따라 메이서 스테이트를 결정한다.
 - 종류 : fetch, Indirect, Excute, Interrupt
   * 인출단계(Fetch Cycle) : 명령어슬 주기억장치에서 중앙기억장치의 명령레지스터로 가져와 해독하는 단계
   * 간접단계(Indirect) : 기억장치로부터 오퍼랜드(데이터)의 번지 인출, 인출 단계에서 해석된 명령의 주소부가 간접주소인 경우 수행, 간접주소가 아닌 경우 Excute 또는 Fetch로 이동할지 판단
   * 실행단계(Excute) : 실제로 명령어를 실행하는 단계, Interrupt로 변천할 것인지 판단
   * 인터럽트(Interrupt) : 인터럽트 발생 시 복귀주소(PC)를 저장하고 제엇순서를 인터럽트 처리 프로그램의 첫번째 명령으로 옮기는 단계 후 항상 Fetch로 변천
7

마이크로 프로그램 제어기가 다음에 수행할 마이크로 명령(Instruction)의 주소를 결정할 때 사용하는 정보
 - 인스트럭션 레지스터(IR)
 - CPU 상태 레지스터
 - 마이크로 인스트럭션에 나타난 주소


4bit 병렬 가산기



플립플롭
  - RS 플립플롭 : 기본 플립플롭, S와 R선의 입력을 조절하여 임의의 bit값을 그대로 유지시키거나, 무조건 0 또느 1의 값을 기억시키기 위해 사용
 - JK 플립플롭 : RS에서 S=R=1일 때의 결점(미동작) 보완(모든 FF의 기능 포함)
 - D 플립플롭 : 입력하는 값을 그대로 저장하는 기능 수행, RS의 R선에 인버터를 추가, S선과 하나로 묶어서 입력선 구성
 - T 플립플롭 : T=0인 경우 변화가 없고 T=1인 경우 현재 상태를 토글 시킴, JK FF의 두 입력선을 하나로 묶어 한 개의 입력선으로 구성
 - M/S 플립플롭 : 출력측의 일부가 입력측에 피드백 되어 유발되는 레이스 현상을 없애기 위하여 고안된 FF


프로세스들이 처리하는 명령어와 데이터의 스트림(Stream)의 수에 따라 분류
 - SISD : 단일 명령어 스트림 - 단일 데이터 스트림
 - SIMD : 단일 명령어 스트림 - 복수 데이터 스트림
 - MISD : 복수 명령어 스트림 - 단일 데이터 스트림
 - MIMD : 복수 명령어 스트림 - 복수 데이터 스트림


주기억장치의 Bandwidth : 주기억장치의 하드웨어 특성상 주기업 ㄱ장치가 제공할 수 잇는 정보전달 능력의 한계


interleaved memory(교차배치 메모리)
 - 중앙처리장치의 쉬는 시간을 줄임
 - 단위 시간당 수행할 수 있는 명령어의 수 증가 가능
 - 이 기억장치를 구성하는 모듈의 수만큼 단어들에 동시 접근 가능


파일 구성 방식 중 ISAM(Indexed Sequential Access-Method)의 물리적 특성에 따른 3단계 색인(index) 구성
 - Cylinder Index
 - Track Index
 - Master Index


SSTF(Shortest Seek Time First)
 - 탐색 거리가 가장 짧은 요청을 먼저 서비스
 - 가운데 트랙이 안쪽이나 바깥쪽 트랙보다 서비스 받을 확률이 높음
 - 헤드에서 멀리 떨어진 요청은 기아상태(starvation) 발생 가능성 존재


스케줄링 방식 중 라운드로빈(Round Robin) 방식의 시간간격을 무한히 크게 함 = FIFO 방식


매핑(Mapping) : 가상 메모리(Virtual Memory)에서 메인 메모리(Main Memory)로 페이지를 옮겨 넣을 때 수행되는 주소 조정


가상메모를 운용하는 기법으로는 페이징과 세그먼테이션 기법이 있다.
 - 페이징 기법 : 가상기억장치를 같은 크기의 블록으로 편성하여 운영, 이 때 일정한 크기의 블록을 페이지라 함. 주소 변환을 위한 맵 테이블 필요, 내부 단편화 발생 가능함
 - 세그먼테이션 기법 : 메모리 크기를 실제 운여ㅇ되는 작업의 크기에 따라 편성, 메모리의 논리적 단위를 세그먼트라 함. 외부 단편화 발생 가능함


은행원 알고리즘에서 교착상태 해결 방법은 회피(Avoidance)


2단계 디렉토리 구조 : 마스터 파일 디렉토리와 각 사용자별로 만들어지는 사용자 파일 디렉토리로 구성

UNIX의 특성
 - 트리 구조의 파일 시스템
 - 대화식 운영체제
 - Main User, Multi-Tasking 지원
 - 이식성이 높고, 장치, 프로세스 간 호환성이 높다.

adaptive 형태 : OS와 Compiler와 같은 개발환경의 변화 또는 주변 장치(Peripheral Device), System Component, element가 향상, 변경될 경우 대처 가능한 maintenance 형태

White Box Testing
 - Source Code의 모든 문장을 한번 이상 수행함
 - 모듈 안의 작동을 직접 관찰
 - 산출물의 각 기능별로 적절한 프로그램 제어구조에 따라 선택, 반복 등의 부분들을 수행함으로 논리적 경로를 점검

효과적인 모듈화 설계
 - 복잡성(Complexity)와 불필요한 중복(Redundancy)을 최대한 줄일 수 있도록 설계
 - 유지(Maintenance)가 용이하도록 설계
 - 모듈 크기는 시스템 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계

정적테스트(Formal Technical Review) : 프로그램 코드를 실행하지 않고 여러 참여자가 모여 소프트웨어 개발중에 해성되는 모든 명세나 코드를 검토하여 실패보다는 결함(defects)를 찾아내는 방법
계획 -> 착수 -> 개별 준비 -> 검토회의 수행 -> 재작업 및 수정 -> 완료 작업 또는 후속 처리 확인 순으로 진행

정적테스트의 지침사항
 - 논쟁과 반박의 제한을 둔다.
 - 자원과 시간 일정을 할당한다.
 - 문제 영역을 명확히 표현한다.
 - 모든 검토자들을 위해 의미 있는 훈련을 행한다.

소프트웨어 리엔지니어링(Reengineering) : 유지보수의 문제로 인하여 필요성이 대두,  급격하게 성과 향상의 달성을 위해 재사고, 재설계하는 것
 - 재조정(Restructuring)은 리엔지니어링의 한 유형으로 유저 요청사항(Requirement)이나 기술적 설계의 변경없이 Software를 개선하는 것이다.
 - 재개발(Redevelopment)와 리엔지니어링은 동일한 의미가 아니다.
 - 유저 요청사항을 변경시키지 않고, 기술적 설계를 변경하여 프로그램을 개선하는 것도 포함된다.
 - 현재 시스템을 변경하거나 재조정하는 것이다.

공정확인 검사(Validation) : alpah test, beta test 등 수행

() : 자료 사전에서 자료의 생략을 의미

올바른 설계의 기준
 - 모듈적인 설계
 - 자료와 프로시저에 대해 분명하고 분리도니 표현을 포함
 - 소프트웨어 요소들 간의 효과적 제어 -> 계층적 조직이 제시

객체지향기법의 캡슐화(Encapsulation)
 - 변경 발생 시 오류의 파급효과가 적음
 - 소프트웨어 재사용성이 높아짐
 - 인터페이스의 단순화

브룩스의 법칙 : 소프트웨어 프로젝트 일정의 지연 발생 될 때, 사업 말기에 인력을 추가 배치하는 것은 사업일정을 더욱 지연시키는 결과를 초래한다는 법칙

 ISO 9126에 근거한 소프트웨어 품질목표 중 명시된 조건 하에서 소프트웨어 제품의 일정한 성능과 자원 소요량의 관계에 관한 속성, 즉 요구되는 기능을 수행하기 위해 필요한 자원의 소요 정도를 효율성(Efficiency)라고 한다.

RIP : 패킷을 목적지까지 전달하기 위해 사용되는 라우팅 프로토콜

변조방식의 종류
 - ASK : 진폭 편이 변조, 신호 변동과 잡음에 약하여 데이터 전송으로 거의 사용 불가
 - PSK : 위상 편이 변조, 일정한 진폭 또는 주파수를 갖는 정현파의 위상을 180º/90º/45º 단위로 2등분/4등분/8등분 했을 때의 각 위치에 신호를 할당하여 전송하는 방식(파형의 시작위치를 달리하여 신호 전송)

16진 QAM
1. 16진 PSK  변조방식보다 동일한 전송 에너지에 대해 오류 확률이 낮다.
2. 진폭과 위상이 변화하는 변조방식이다.
3. 2차원 벡터 공간에 신호를 나타낼 수 있다.

파형 부호화
 - 디지털 부호를 전송 채널에 적합한 파형으로 변환하는 신호 부호화
 - 하나의 파형 집합을 좀 더 개선된 파형 집합으로 변환
 - 대역 제한된 채널을 극복하기 위한 신호 파형으로의 변환
 - 메세지 데이터 비트 값에 따라 신호 파형이 변화
 - 오류/왜곡을 극복하기 위해 좀 더 나은 파형으로 변환하는 신호 설계의 과정
 - 기법 : PCM, DCPM, ADPCM, DM  등

CSMA/CD : 자유 경쟁으로 채널사용권을 확보하는 방법으로 노드 간의 충돌을 허용하는 네트워크 접근 방법

ALOHA : 최초의 라디오 패킷(Radio Packet) 통신방식을 적용한 컴퓨터 네트워크 시스템

UDP 헤더
1. checksu,
2. UDP total length
3. soource port address

X.25 : 패킷 교환망에서 DCE와 DTE 사이에 이루어지는 상호작용을 규정한 프로토콜

베이스밴드 전송방식 : 디지털 데이터 신호를 변조하지 않고 직접 전송하는 방식
 ex) ETHERNET
전송방식의 유형
1. NRZ-L(None Return to Zero-Level) : 1은 High, 0은 Low, 디지털 논리회로에서 광범위하게 사용된다.
2. NRZ-M(None Return to Zero-Mark) : 1은 전압변환, 0은 전압변환 없음
3. NRZ-S(None Return to Zero-Space) : 1은 전압변환 없음, 0은 전압변환
4. NRZ-I(None Return to Zero-Inverted) : 1은 Low Voltage/High Voltage로 변화, 0은 변화 없음

TDM : 다수의 타임 슬롯으로 하나의 프레임이 구성되고, 각 타임 슬롯에 채널을 할당하여 다중화는 것

IEEE 802의 표준안
 - IEEE 802.1 : 무선LAN 네트워크 표준
 - IEEE 802.2 : 2계층(데이터링크)의 서브계층인 논리링크제어(LLC)의 표준
 - IEEE 802.3 : CSMA/CD 네트워크 표준
 - IEEE 802.4 : 토큰 버스 방식 표준
 - IEEE 802.11 : 무선 LAN
 - IEEE 802.15 : WPAN, 블루투스 표준

파형부호화 방식(Waveform Coding)

PSK : 반송파의 진폭과 위상을 상호 변환하여 신호를 전송함으로써 전송 속도를 높임