아래 내용은 2020 정보처리 산업기사 시나공 기본서를 공부해 요약한 내용이며
완벽하게 모든 내용을 정리한것이 아니고 제 편의껏 요약한것 입니다 보다 자세한 내용과 여러 동작에 대한 원리등이
궁금하시다면 책과 함께봐주세요
출처 : 정보처리 산업기사 필기 - 시나공 시리즈
출판사 : 길벗

1. 논리회로

 

1) 불 대수

 

불 대수
: 하나의 명제가 참 또는 거짓인가를 판단하는데 이용되는 수학적인 방법으로 영국의 불(G. Boole)에 의해 개발되었다

 

기본적인 논리함수

 

- AND : 입력 정보의 값이 모두 1일 때만 결과가 1이 된다 입력되는 값이 A, B라면 A AND B 또는 A·B로 표현한다
- OR : 입력 정보의 값 중 한 개라도 1이며 결과가 1이된다 입력되는 값이 A, B라면 A OR B 또는 A+B로 표현한다
- NOT : 입력되는 정보의 반대값이 출력된다 입력되는 값이 항상 1개이며 입력되는 값이 A라면 NOT A 또는 A'로 표현

           한다

 

불 대수의 기본 공식

 

- 교환법칙 : A+B = B+A, A·B = B·A
- 결합법칙 : A+(B+C) = (A+B)+C, A·(B·C) = (A·B)·C
- 분배법칙 : A·(B+C) = A·B+A·C, A+B·C = (A+B)·(A+C)
- 멱등법칙 : A+A = A, A·A = A
- 보수법칙 : A+A' = 1, A·A' = 0
- 항등법칙 : A+0 = A, A+1 = 1, A·0 = 0, A·1 = A
- 콘센서스 : AB+BC+CA' = AB+CA'
- 드모르강 : (A+B)' = A'·B', (A·B)' = A'+B'
- 복원법칙 : A" = A

 

*(논리식의 간소화)

 

2) 논리 게이트

 

논리 게이트
: 논리회로를 구성하는 기본적인 전자소자로 0또는 1을 입력과 출력으로 사용한다

 

3) 조합논리회로

 

조합논리회로
:임의의 시간에서의 출력이 이전의 입력에는 관계없이 현재의 입력조합으로부터 직접결정되는 논리회로이다

 

조합논리회로의 종류

 

- 반가산기 : 2진수 두 개를 덧셈하여 합과 자리올림수를 구하는 회로이다
- 전가산기 : 뒷자리에서 올라온 자리올림수를 포함하여 1 bit 크기의 2진수 3자리를 더하여 합과 자리올림수를 구하는

                회로이다
- 병렬가산기 : n bit로 된 2진수 A, B에 대한 덧셈을 n개의 전가산기를 이용하여 구성한 실질적인 가산기이다
- 반감산기 : 1 bit짜리 2진수 2자리에 대한 감산을 하는 회로이다
- 전감산기
- 디코더 : n bit의 Code화된 정보를 그 Code의 각 bit 조합에 따라 2ⁿ개의 출력으로 번역하는 회로이다
- 인코더 : 디코더의 반대 기능을 한다
- 멀티플렉서 : 2ⁿ의 입력선 중 1개를 선택하여 그 선으로부터 입력되는 값을 1개의 출력선으로 출력시키는 회로이다
- 디멀티플렉서 : 1개의 입력선으로 들어오는 정보를 2ⁿ개의 출력선 중 1개를 선택하여 출력하는 회로이다
- 다수결회로
- 비교기

 

4) 순서논리회로

 

순서논리회로
: 외부로부터의 입력과 현재 상태에 따라 출력이 결정된다

 

순서논리회로의 종류

 

- 플립플롭
- 카운터
- 레지스터
- RAM
- CPU

 

플립플롭(FF, Flip-Flop)의 특징

 

- 두 개의 NAND 또는 NOR 게이트를 이용하여 구성한다
- 전원이 공급되고 있는 한 상태의 변화를위한 외부 신호가 발생할 때까지 현재의 상태를 그대로 유지하는 논리회로이다

 

RS 플립플롭(Reset-Set FF)
: 모든 플립플롭의 기본으로 S와 R선의 입력을 조절하여 임의의 bit 값을 그대로 유지시키거나 무조건 0 또는 1의 값을 기억시키기 위해서 사용되는 플립플롭이다

 

D 플립플롭
: RS FF의 R선에 인버터를 추가하여 S선과 하나로 묶어서 입력선을 하나만 구성한 플립플롭이며 입력하는 값을 그대로 저장하는 기능을 수행한다

 

JK 플립플롭
: RS FF에서 S=R-1일 떄 동작되지 않는 결점을 보완한 플립플롭이며 입력선 S와 R에 AND 게이트 2개를 추가하여 JK FF의 입력선 J와 K로 사용한다

 

T 플립플롭
: JK FF의 두 입력선을 묶어서 한 개의 입력선으로 구성한 플립플롭이다

 

마스터-슬레이브 플립플롭(주종 플립플롭)
: 출력 측의 일부가 입력 측에 궤환되어 유발되는 레이스 현상을 없애기 위해 고안된 플립플롭이다

 

2. 자료의 표현

 

1) 자료 구성의 단위

 

자료 구성의 단위

 

- 비트(Bit) : 자료 표현의 최소 단위
- 니블(Nibble) : 4개의 Bit가 모여 구성
- 바이트(Byte) : 문자를 표현하는 최소 단위 8개의 Bit가 모여 1Byte
- 워드(Word) : 컴퓨터가 한 번에 처리할 수 있는 명령 단위, 반워드(Half-Word)2Byte, 전워드(Full-Word)4Byte, 더블

                    워드 (Double-Word)8Byte
- 필드(Field) : 파일 구성의 최소 단위이다
- 레코드(Record) : 하나 이상의 관련된 필드가 모여서 구성된다
- 블록(Block), 물리 레코드(Physical Record) : 하나 이상의 논리 레코드가 모여서 구성된다
- 파일(File) : 프로그램 구성의 기본 단위로 같은 종류의 여러 레코드가 모여서 구성된다
- 데이터베이스(Database) : 여러 개의 관련된 파일의 집합이다

 

2) 수의 표현 및 진법 변환

 

진법

 

- 컴퓨터 내부에서는 2진법을 사용하여 모든 연산을 수행한다
- 2진수 외에 컴퓨터를 연구할 때 자주 사용하는 진법은 8진수와 16진수이다

 

진법의 종류

 

- 2진법(Binary) : 0과 1 두 개의 숫자로 표현한다
- 8진법(Octal) : 0~7까지의 숫자로 표현하며 2진수 3자리를 묶어서 하나의 수로 표현한다
- 10진법(Decimal) : 0~9까지의 숫자로 표현한다
- 16진법(Hexadecimal) : 0~9까지의 숫자와 10~15까지를 의미하는 A~F까지의 문자로 표현한다

 

*(다른 진법으로의 변환 익히기)

 

3) 보수

 

보수

 

- 컴퓨터가 기본적으로 수행하는 덧셈 회로를 이용하여 뺄셈을 수행하기 위해 사용한다
- r진법에는 r의 보수와 r-1의 보수가 있다

 

보수를 이용한 뺄셈
: A-B는 A+(-B)이므로 B에 대한 보수를 구하여 덧셈 연산으로 뺄셈을 한다

- 1의 보수 이용
- 2의 보수 이용

 

4) 자료의 내부적 표현 - 고정 소수점 표현

 

2진 연산

 

- 음수의 표현 방법 : 부호와 절대치, 부호와 1의 보수, 부호와 2의 보수

 

10진 연산

 

- 언팩(Unpack)연산 : 연산이 불가능하고 데이터의 입출력에 사용된다
- 팩(Pack)연산 : 연산이 가능하고 데이터의 입출력이 불가능하다

 

5) 자료의 내부적 표현 _ 부동 소수점 표현

 

부동 소수점 방식의 특징

 

- 매우 큰 수나 작은수 매우 정밀한 수를 적은 비트로 표현할 수 있다
- 고정 소수점 방식에 비해 연산 시간이 많이 걸린다
- 지수부와 가수부를 분리하는 정규화 과정이 필요하다
- 과학이나 공학 또는 수학적인 응용에 주로 사용된다

 

부동 소수점 수의 연산 방법

 

- 덧셈, 뺄셈 : 0인지 여부 조사 -> 가수의 위치 조정 -> 가수부 값끼리 더하거나 뺀다 -> 결과를 정규화한다
- 곱셈 : 0인지 여부 조사 -> 지수를 더한다 -> 가수를 곱한다 -> 결과를 정규화한다
- 나눗셈 : 0인지 여부 조사 -> 부호 결정 -> 피제수가 제수보다 작게 피제수의 위치를 조정한다 -> 지수의 뺼셈을한다

             -> 가수의 누눗셈을 한다

 

6) 자료의 외부적 표현

 

자료의 외부적 표현이란
: 처리된 결과를 사람이 확인할 수 있도록 출력할 때의 문자를 표현하는 방식이다

 

자료의 외부적 표현의 종류

 

- BCD(Binary Coded Decimal, 2진화 10진 코드)
- ASCII(American Standard Code for Information Interchange)
- EBCDIC(Extended BCD Interchange Code, 확장 2진화 10진 코드)

 

7) 기타 자료의 표현 방식

 

BCD 코드

 

- 10진수 1자리의 수를 2진수 4Bit로 표현한다
- 4Bit의 2진수 각 Bit가 8(2³), 4(2²), 2(2¹), 1의 자리값을 가지므로 8421 코드라고도 한다
- 대중적인 가중치 코드이다

 

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

 

- BCD +3 즉 BCD 코드에 3(0011₂)을 더하여 만든 코드이기 때문에 모든 비트가 동시에 0이 되는 경우는 없다
- 대표적인 자기 보수 코드이며 비가중치 코드이다

 

Gray 코드

 

- BCD 코드의 인접하는 비트를 XOR 연산하여 만든 코드이다
- A/D 변환기에 사용한다
- 1Bit만 변환시켜 다음 수치로 증가시키기 때문에 하드웨어적인 오류가 적다

 

패리티 검사 코드

 

- 1Bit의 오류만 검출할 수 있다
- 1의 개수에 따라 짝수패리티와 홀수패리티 방법이 있다

 

해밍코드

 

- 오류를 스스로 검출하여 교정이 가능한 코드이다
- 해밍코드 중 1, 2, 4, 8, 16,···, 2ⁿ번째는 오류 검출을 위한 패리티 비트이다

 

코드의 분류

- 가중치코드 : BCD, 2421, 84-2-1, 51111, Ring-Counter
- 비가중치코드 : 3초과(Excess-3), Gray, Jonson, 2-out-of-6, 3-out-of-5
- 자기 보수 코드 : 3초과(Excess-3), 2421, 51111, 84-2-1
- 오류 검출용 코드 : 해밍코드, 패리티 검사 코드, Binquinary, Ring-Counter, 2-out-of-6, 3-out-of-5

 

3. 프로세서

 

1) 중앙처리장치

 

중앙처리장치

:사람의 두되와 같이 컴퓨터 시스템에 부착된 모든 장치의 동작을 제어하고 명령을 실행하는 장치이다

- 중앙처리장치는 제어장치, 연산장치, 레지스터 그리고 이들을 연결하여 데이터를 전달하는 버스로 구성되어 있다

 

제어장치
: 모든 장치들의 동작을 지시하고 제어하는 장치이다


- 명령 레지스터
- 명령 해독기(Decoder)
- 제어신호 발생기, 부호기(Encoder)
- 제어 주소 레지스터(CAR)
- 제어 버퍼 레지스터(CBR)
- 제어 기억장치
- 순서 제어 모듈
- 순차 카운터(Sequence counter)

 

연산장치
: 산술 연산, 논리 연산, 관계 연산, 이동 등을 수행한다(가산기, 누산기, 보수기, 데이터 레지스터등)

 

레지스터
: CPU 내부에서 처리할 명령어나 연산의 중간 결과값 등을 일시적으로 기억하는 임시 기억장치이다

 

- 프로그램 카운터(PC) : 다음에 실행할 명령어의 번를 기억하는 레지스터
- 명령 레지스터(IR) : 현재 실행 중인 명령의 내용을 기억하는 레지스터
- 누산기(AC) : 연산된 결과를 일시적으로 저장하는 레지스터
- PSWR, 상태 레지스터, 플래그 레지스터 : 시스템 내부의 순간순간의 상태를 기록하고 저장하고 있는 레지스터
- 메모리 주소 레지스터(MAR) : 데이터의 번지를 기억하는 레지스터
- 메모리 버퍼 레지스터(MBR) : 데이터가 잠시 기억되는 레지스터
- 베이스 레지스터(Base Register) : 명령이 시작되는 시작 번지를 기억하고 있는 레지스터
- 인덱스 레지스터(Index Register) : 주소의 변경, 서브루틴 연결 및 프로그램에서의 반복 연산의 횟수를 세는 레지스터
- 데이터 레지스터(Data Register) : 연산에 사용될 데이터를 기억하는 레지스터
- 시프트 레지스터(Shift Register) : 저장된 값을 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 레지스터
- 메이저 스테이터스 레지스터(Major status Register): CPU의 메이저 상태를 저장하고 있는 레지스터

 

버스
: 버스를 통해 전달되는 제어 신호, 어드레스 신호 및 데이터 신호의 상호 시간적 관계가 잘 유지되어야 한다

 

- 번지 버스
- 자료 버스
- 제어 버스

 

2) 명령어(Instrution)

 

명령어의 구성

 

- 연산자부(Operation Code 부) : 수행해야 할 동작에 맞는 연산자를 표시한다
- 모드(Mode)부 : 주소부의 유효 주소가 결정되는 방법을 지정한다
- 자료(Operand)부 : 실제 데이터에 대한 정보를 표시하는 부분이다

 

명령어 설계시 고려사항

 

- 연산자의 종류
- 명령어 형식
- 주소지정방식
- 데이터 구조
- 인스트럭션 세트의 효율성을 높이기 위하여 고려할 사항 : 기억공간, 사용빈도, 주소지정방식

 

연산자(Operation Code)의 기능

 

- 함수 연산 기능
수치적인 산술 연산 : ADD, SUB, MUL, DIV, 산술 Shift 등
비수치적인 논리 연산 : NOT, AND, OR, XOR, 논리적 Shift, Rotate, Complement, Clear

 

- 자료 전달 기능
Load : 기억장치에 기억되어 있는 정보를 CPU로 꺼내오는 명령
Stor : CPU에 있는 정보를 기억장치에 기억시키는 명령
MOVE : 레지스터 간에 자료를 전달하는 명령
Push : 스택에 자료를 저장하는 명령
Pop : 스택에서 자료를 꺼내오는 명령

 

- 제어기능 : 무조건 분기명령, 조건 분기 명령, Call(서브루틴 호출), Return(복귀)

- 입출력기능 : INPUT, OUTPUT

 

3) 연산(Operation)

 

AND(Masking Operation)

 

- 특정 문자 또는 특정 비트를 삭제 시키는 연산으로 Masking 연산이라고도 한다
- 삭제할 부분의 비트를 0과 AND 시켜서 삭제하는데 대응시키는 0인 비트를 MASK Bit라 한다

 

OR(Selective-Set)

 

- Selective-Set 연산이라고도 한다
- 삽입하거나 세트시킬 비트에 삽입할 문자 코드 또는 1을 OR 시킨다

 

XOR(Compare, 비교)

 

- 두 개의 데이터를 비교하거나 특정 비트를 반전시킬 때 사용한다

 

NOT(Complement, 보수)

 

- 각 비트의 값을 반전시키는 연산으로 보수를 구할 때 사용한다

 

논리 Shift

 

- 왼쪽 또는 오른쪽으로 1Bit씩 자리를 이동시키는 연산으로 데이터의 직렬 전송에 사용한다

 

Rotate

 

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

 

산술 Shift

 

- 부호를 고려하여 자리를 이동시키는 연산으로 2ⁿ으로 곱하거나 나눌 때 사용한다
- 왼쪽으로 n Bit Shift하면 원래 자료에 2ⁿ을 곱한 것과 같다
- 오른쪽으로 n Bit Shift하면 원래 자료를 2ⁿ으로 나눈 것과 같다
- 홀수를 오른쪽으로 한 번 Shift하면 0.5의 오차가 발생한다

 

4) 명령어 형식

 

명령어
: 명령어는 크게 OP-Code부와 Operand(자료부)로 구성되는 Operand부의 개수에 따라 네 가지 명령어 형식이 있다

 

3 주소 명령어

 

- Operand부가 세 개로 구성된다
- 연산의 결과는 주로 Operand 1에 기록한다
- 연산 시 원래의 자료를 파괴하지 않는다

 

2 주소 명령어

 

- Operand부가 두 개로 구성된다
- 가장 일반적으로 사용되는 명령어 형식이다
- 실행 속도가 빠르고 기억 장소를 많이 차지하지 않는다
- 원래의 자료가 파괴된다

 

1 주소 명령어

 

- Operand부가 한 개로 구성된다
- 누산기를 이용한다

 

0 주소 명령어

 

- 스택머신이라고도 한다
- 인스트럭션 수행시간이 짧다
- 스택을 사용한 컴퓨터에서 수식을 계산하기 위해서는 수식을 Postfix 형태로 변경해야한다

 

Stack의 응용 분야

 

- 0 주소 명령어 형식의 자료 저장소
- 부 프로그램 호출 시 복귀주소
- 재귀(Recursion) 프로그램의 순서 제어
- 인터럽트가 발생시의 복귀주소
- 컴파일러를 이용한 언어 번역시
- 후위 표기법으로 표현된 산술식을 연산할때

 

5) 주소지정방식(Adressing Mode)

 

주소 설계 시 고려 사항

 

- 표현의 효율성 : 빠르게 접근하고 주소 지정에 적은 비트 수를 사용할 수 있도록 다양한 어드레스 모드를 사용할 수 있

                       어야 한다
- 사용의 편리성 : 다양하고 융통성 있는 프로그램 작업을 위해 포인터, 프로그램 리로케이션 등의 편의를 제공하여야 한

                       다
- 주소공간과 기억공간의 독립성 : 프로그램 상에서 사용한 주소를 변경 없이 실제 기억공간 내의 주소로 재배치할 수 있

                                            도록 서로 독립적이여야 한다

 

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

 

- 명령 실행에 필요한 데이터의 위치를 지정하지 않고 누산기나 스택의 데이터를 묵시적으로 지정하여 사용한다

 

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

 

- 명령어 자체에 실제 데이터를 가지고 있는 방식이다
- 별도의 기억장소를 액세스하지 않고 실행 속도가 빠르다

 

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

 

- Operand부에 실제 사용할 데이터의 주소를 표현
- 주소 길이에 제약을 받는다

 

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

 

- Operand부에 실제 데이터의 주소가 저장된 곳의 주소를 표현한다
- 최소한 주기억장치를 두 번 이상 접근한다
- 긴 주소에 접근 가능한 방식이다

 

계산에 의한 주소지정방식

 

- 상대 주소 : 명령어의 주소 부분 + PC
- 베이스 레지스터 : 명령어 주소 부분 + Base Register
- 인덱스 레지스터 : 명령어의 주소 부분 + Index Register

 

4. 명령 실행과 제어

 

1) 마이크로 오퍼레이션(Micro Operation)

 

마이크로 오퍼레이션의 정의
: 한 개의 Clock 펄스 동안 실행되는 기본 동작으로 모든 마이크로 오퍼레이션은 CPU의 Clock 펄스에 맞춰 실행된다

 

마이크로 사이클 타임(Micro Cycle Time)
: 한 개의 Micro Operation을 수행하는데 걸리는 시간

 

마이크로 사이클 타임 부여 방식

 

- 동기 고정식(Synchronous Fixed)
모든 마이크로 오퍼레이션 중에서 동작시간이 가장 긴 마이크로 오퍼레이션의 동작시간을 Micro Cycle Time이라 한다
모든 마이크로 오퍼레이션의 동작시간이 비슷할 때 유리한 방식이다

 

- 동기 가변식(Synchronous Variable)
각 그룹별로 서로 다른 Micro Cycle Time을 정의하는 방식이다
마이크로 오퍼레이션 수행시간이 현저한 차이를 나타낼 때 사용한다

 

- 비동기식(Asynchronous)
모든 마이크로 오퍼레이션에 대하여 서로 다른 Micro Cycle Time을 정의하는 방식이다

 

2) 메이저 스테이트(Major State)

 

메이저 스테이트의 정의
: 현재 CPU가 무엇을 하고 있는가를 나타내는 상태로서 CPU가 무엇을 위해 주기억장치에 접근하느냐에 따라 Fetch, Indirect, Execute, Interrupt 이렇게 네 개의 상태로 나뉜다

 

메이저 스테이트의 변천과정

 

인출 단계(Fetch Cycle)

 

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

  저 수행되는 동작이다

 

간접 단계(Indirect Cycle)

 

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

 

실행 단계(Execute Cycle)

 

- Fetch 단계에서 인출하여 해석한 명령을 실행하는 단계이다
- Execute 단계에서는 플래그 레지스터의 상태 변화를 검사하여 Interrupt 단계로 변천할 것인지를 판단한다

 

인터럽드 단계(Interrupt Cycle)

 

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

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

 

3) 주요 명령의 마이크로 오퍼레이션

 

AND ( AC <- AC ∧ M[AD )
: AND는 AC와 메모리의 내용을 AND하여 결과를 AC에 저장하는 연산명령이다

 

ADD ( AC <- AC + M[AD] )
: ADD는 AC와 메모리의 내용을 더하여 결과를 AC에 저장하는 연산 명령이다

 

LDA ( AC <- M[AD] )
: LDA는 메모리의 내용을 AC로 가져오는 명령이다

 

STA ( M[AD] <- AC )
: STA는 AC의 내용을 메모리에 저장하는 명령이다

 

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

 

BSA
: BSA는 복귀주소를 저장하고 부 프로그램을 호출하는 명령이다

 

ISZ
: ISZ는 메모리의 값을 읽어 그 값을 1 증가시킨 후 음수에서 시작한 그 값이 0이면 현재 명령을 건너 띄어 다음 명령으

  로 이동한다

 

4) 제어기의 구현

 

제어 데이터
: 제어장치가 제어 신호를 발생하기 위한 자료

 

제어 데이터 종류

 

- 메이저 스테이트 사이의 변천을 제어하는 데이터
- 중앙처리장치의 제어점을 제어하는 데이터
- 인스트럭션의 순서를 결정하는데 필요한 제어 데이터

 

제어기의 구현

 

- 고정배선 제어장치(Hard-wired Control Unit)
조합논리회로를 설계하는 해당 제어점에 연결하는 방식이다
Hardware적인 구성 방법이다 고속이며 회로 구성이 복잡하다

 

- 마이크로 프로그래밍 기법(Micro Programmed Control Unit)
내부 제어 신호를 여러 가지 마이크로 인스트럭션으로 작성하는 것이다
Software적인 구성방법이다 펌에워를 이용하는 방식이며 저속이다

마이크로 명령의 형식

- 수평 마이크로 명령(Horizontal Micro Instruction)
- 수직 마이크로 명령(Vertical Micro Instruction)
- 나노 명령(Nano Instruction)

 

5. 입력 및 출력

 

1) 입출력의 기본

 

입출력장치의 구성

 

- 입출력 제어장치
입출력장치와 컴퓨터 사이의 자료 전송을 제어한다
데이터 버퍼 레지스터를 이용하여 두 장치 간의 속도 차를 조절한다

 

- 입출력 인터페이스
내부장치(주기억장치, CPU)와 외부 입출력장치 사이에 정보를 원활하게 전송하기 위한 방법이다

 

- 입출력 버스
데이터버스, 주소버스, 제어버스

 

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

 

 

비동기 데이터 전송
: 두 개의 독릭적인 장치 사이의 비동기적인 데이터 전송을 이루기 위해서는 데이터 전송시각을 알기 위한 제어 신호를

 서로 교환하여 송수신 상태를 서로 맞추어야 한다

 

- 스토르브 펄스
- 핸드셰이킹

 

스풀링(Spooling)

 

- 디스크에 입출력할 데이터를 모았다가 나중에 한꺼번에 입출력한다
- 여러 작업을 병행 수행할 수 있도록 하여 다중 프로그래밍 시스템의 성능 향상을 가져온다
- 디스크 일부를 매우 큰 버퍼처럼 사용하며 큐 방식의 입출력을 수행한다

 

2) 입출력 제어 방식

 

- Programmed I/O
CPU가 계속 Flag를 검사

 

- Interrupt I/O
CPU가 계속 Flag를 검사하지 않고 입출력 장치의 요구가 있을 때 데이터를 전송하는 제어방식이다

 

- DMA(Direct Memory Access)에 의한 I/O
CPU를 거치지 않고 메모리와 입출력 장치가 직접 통신
Cycle Steal 방식을 이용하여 데이터를 전송한다


(Cycle Steal이란 채널과 CPU가 주 기억 장치를 동시에 Access할 때 우선 순위를 데이터 채널에게 주는 방식이다)

 

- Channel에 의한 I/O

CPU 관여 없이 주 기억 장치와 입출력장치 사이에서 입출력을 제어
DMA 방법으로 입출력을 수행한다


(Selector Channel : 고속 입출력, 장치 1개의 장치를 관리
(Multiplexer Channel : 저속 입출력 장치, 동시에 여러 개의 입출력 장치를 제어한다
(Block Multiplexer Channel : 고속 입출력장치를 제어하는 채널, 동시에 여러 개의 입출력 장치를 제어한다

 

3) 인터럽트의 개념

 

인터럽트의 정의

 

- 프로그램을 실행하는 도중에 예기치 않은 상황이 발생한 경우
- 현재 실행 중인 작업을 잠시 중단하고 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀하는 것을 말한다

인터럽트 종류 및 발생 원인

 

외부 인터럽트

 

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

 

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

 

- 외부 신호 인터럽트(External Interrupt)
: 타이머에 의해 규정된 시간을 알리는 경우, 키보드로 인터럽트 키를 누른 경우, 외부 장치로부터 인터럽트 요청이 있는 경우

 

- 입출력 인터럽트(Input-Output Interrupt)
: 입출력 Data의 오류나 이상 현상이 발생한 경우, 입출려 장치가 데이터의 전송을 요구하거나 전송이 끝났음을 알릴 경우

 

내부 인터럽트

 

- 프로그램 검사 인터럽트(Program Check Interrupt)
: 0으로 나누기가 발생한 경우, Overflow 또는 Underflow가 발생한 경우, 프로그램에서 명령어를 잘못 사용한 경우, 부당한 기억장소의 참조와 같은 프로그램 상의 오류

 

소프트웨어 인터럽트

 

- SVC 인터럽트(SuperVisor Call Interrupt)
: 사용자가 SVC 명령을 써서 의도적으로 호출한 경우, 복잡한 입출력 처리를 해야 하는 경우, 기억장치 할당 및 오퍼레이터와 대화를 해야 하는 경우

 

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

 

- 프로그램 카운터의 내용
- 사용한 모든 레지스터의 내용
- 상태 조건의 내용(PSW)

 

인터럽트의 동작 원리(수행순서)

 

- 인터럽트 요청 신호 발생
- 현재 수행중인 명령을 완료하고, 상태를 기억시킨다
- 인터럽트를 요청한 장치를 식별
- 인터럽트 서비스 루틴을 실행한다
- 보존한 프로그램 상태를 복귀
- 중단된 프로그램 실행 재개

 

4) 인터럽트 우선순위(Priority)체제

 

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

 

인터럽트 우선순위 체제의 목적과 기능

 

- 하나 이상의 인터럽트가 발생하였을 때 먼저 서비스할 장치를 결정
- 각 장치에 우선순위를 부과하는 기능
- 인터럽트를 요청한 장치의 우선 순위를 판별하는 기능
- 우선 순위가 높은 것을 먼저 처리할 수 있는 기능

 

소프트웨어적인 인터럽트 우선순위 판별 방법 (Polling)

 

- 인터럽트 요청 플래그를 차례로 검사
- 속도가 느리지만 경제적이고 회로가 간단하며 융통성이 있다

 

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

 

- 반응 속도가 빠르고 비싸고 회로가 복잡하며 융통성이 없다
- 직렬 우선순위 부여 방식 : 데이지 체인(Daisy-chain)방식
- 병렬 우선순위 부여 방식 : Mask Register를 사용한다

 

6. 기억장치

 

1)기억장치의 개요

 

기억장치의 분류

 

 

기억장치의 계층 구조

 

 

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

 

- 기억용량
- Access Time : 읽기 요청이 발생한 시간부터 정보를 꺼내서 사용 가능할 때까지의 시간이다
- Cycle Time : 기억장치에 읽기 신호를 보낸 후 다시 읽기 신호를 보낼 수 있을 때까지의 시간
- Bandwidth(대역폭, 전송률) : 메모리로부터 또는 메모리까지 1초 동안 전송되는 최대한의 정보량

 

2) 주기억장치

 

ROM(Read Only Memory)

 

- 읽기만 가능하고 쓰기는 불가능한 기억장치
- 전원이 꺼져도 기억된 내용이 지워지지 않는 비휘발성 메모리다

 

ROM의 종류와 특징

 

- Mask ROM
: 제조공장에서 프로그램화하여 생산한 ROM으로 사용자가 내용을 변경시킬 수 없다

 

- PROM
: PROM 프로그램 장치라는 특수 장비를 이용하여 비어 있는 ROM에 사용자가 한 번만 내용를 기입할 수 있다

 

- EPROM
: 자외선을 쏘여서 기입한 내용을 지울 수도 있고 PROM 프로그램 장치로 내용을 기록할 수도 있다 사용자가 여러번 반복해서 지우거나 기록할 수 있다

 

- EEPROM
: 전기적 특성을 이용하여 기록된 정보의 일부를 바꿀 수 있는 ROM

 

- EAROM
: 전기적인 방법을 이용하여 기록된 내용을 여러번 수정하거나 새로운 내용을 기록할 수 있는 ROM

 

RAM(Random Access Memory)

 

- 자유롭게 읽고 쓸 수 있는 기억장치로 RWM이라고도 한다
- 현재 사용중인 프로그램이나 데이터가 저장되어있다
- 전원이 꺼지면 기억된 내용이 모두 사라지는 휘발성 메모리다

 

DRAM과 SRAM의 특징

 

 

자기코어
: 전류 일치 기술에 의하여 기억장소를 선별한다

 

3) 보조기억장치

 

보조기억장치의 개념
: 주기억장치의 단점을 보완하기 위한 기억장치이며 주기억장치에 비해 속도는 느리지만 전원이 차단되어도 내용이 그대로 유지되고 저장 용량이 크다는 장점이 있다

보조기억장치의 일반적인 특징

 

- 중앙처리장치와 직접 자료 교환이 불가능하다
- 접근 시간(Acess Time)이 오래 걸린다

 

자기 테이프(Magnetic Tape)
: 주소의 개념이 없고 처음부터 차례대로 처리하는 순차 처리만 할 수 있는 대용량 저장 매체이다

- 순차 처리만 가능하다
- 블록 단위로 데이터를 전송하며 블록과 블록 사이에는 GAP이 있다

 

자기 디스크(Magnetic Disk)
: 자성 물질을 입힌 금속 원판을 여러 장 겹쳐서 만든 기억 매체로 용량이 크고 접근 속도가 빠르다

자기 디스크의 구조

 

- 트랙(Track) : 디스크 표면에서 회전축을 중심으로 데이터가 기록되는 동심원이다
- 섹터(Sector) : 트랙들을 일정한 크기로 구분한 부분이며 정보 기록의 기본 단위이다
- 실린더(Cylinder) : 서로 다른 면들에 있는 동일 위치의 트랙들의 모임이다

 

자기 드럼(Magnetic Drum)
: 원통 표면에 Track과 Sector를 구성하고 각 Track마다 고정된 R/W Head를 두고 있어 자기 디스크에 비해 속도가 빠르다

 

4) 연관기억장치, 복수 모듈 기억장치

 

연관기억장치(Associative Memory)
: 기억장치에서 자료를 찾을 때 주소에 의해 접근하지 않고 기억된 내용의 일부를 이용하여 Access할 수 있는 기억장치이다

 

복수 모듈 기억장치

 

- 주기억장치와 CPU의 속도 차이 문제점을 개선한다
- 기억장치의 버스를 시분할하여 사용한다
- 기억장소의 접근을 보다 빠르게 한다

 

메모리 인터리빙

 

- 기억장치를 각 모듈이 순차적으로 번갈아 가며 접근하는 방법이다
- 대역폭을 효율적으로 높일 수 있다
- 캐시 기억장치, 고속 DMA 전송 등에서 많이 사용된다

 

5) 캐시 메모리(Cache Memory)

 

캐시 메모리

 

- CPU의 처리 속도와 주기억장치의 접근 속도 차이를 줄이기 위해 사용한다
- 주기억장치를 접근하느 횟수가 줄어듦으로써 컴퓨터의 처리 속도가 향상된다

   캐시 설계시 고려할 사항

- 캐시의 크기
- 전송 Block Size
- 교체 알고리즘

 

매핑 프로세스(Mapping Process)

 

- 직접 매핑(Direct Mapping) : 간단하고 구현 비용이 적게들지만 적중률이 낮아질 수 있다
- 어소시에이티브 매핑(Associative Mapping, 연관매핑) : 직접 매핑 방식의 단점을 보완한 방식이다
- 세트-어소시에이티브 매핑(Set-Associative Mapping) : 직접 매핑과 연관 매핑의 장점만을 취한 방식이다

 

캐시의 적중률

 

- 적중률 = (적중횟수 / 총 접근 횟수)로 계산한다
- 미스율 = 1 - (적중률)

 

6) 가상기억장치(Virtual Memory)

 

가상기억장치
: 기억 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용할 수 있어 사용자는 프로그램의 크기에 제한 받지 않고 프로그램 실행이 가능하다

 

가상기억장치의 특징

 

- 소프트웨어적인 방법으로 보조기억장치를 주기억장치처럼 사용
- 보조기억장치 중 디스크와 같은 DASD 장치에서 가능

 

가상기억장치의 관리 기법

 

- 페이징 기법 : OS가 보조기억장치에 있는 프로그램을 동일 크기의 블록으로 나눈어서 관리하는 기법
- 세그먼트 기법 : 사용 자가 보조기억장치에 있는 프로그램을 가변적인 크기으 블록으로 나누어서 관리하는 기법

 

기억장치의 관리 전략

 

- 반입(Fetch)전략
: 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략으로 요구반입과 예상반입이 있다

 

- 배치(Placement) 전략
: 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략으로 최초접합(First Fit), 최적접합(Best Fit), 최악접합(Worst Fit)이 있다

 

- 교체(Replacement) 전략
: 새로운 프로그램을 주기억장치에 배치하려고 할때 이미 사용되고 있는 페이지 프레임 중에서 어느 하나를 선택하여 빈 페이지 프레임을 만들어 줄 것인지를 결정하느 전략이다

 

주소 매핑(주소 교환)

- 주소 매핑은 가상주소를 실기억주소로 변환하는 작업이다

 

'자격증 공부!' 카테고리의 다른 글

정보처리 산업기사 필기(데이터베이스)  (0) 2020.08.26
아래 내용은 2020 정보처리 산업기사 시나공 기본서를 공부해 요약한 내용이며
완벽하게 모든 내용을 정리한것이 아니고 제 편의껏 요약한것 입니다 보다 자세한 내용과 여러 동작에 대한 원리등이
궁금하시다면 책과 함께봐주세요
출처 : 정보처리 산업기사 필기 - 시나공 시리즈
출판사 : 길벗

1. 데이터베이스의 개념

 

1)정보 시스템

 

자료(Data) : 단순한  관찰, 측정을 통해 수집된 사실이나 값

정보(Information) : 자료를 가공처리한 결과

 

정보 시스템의 정의

: 한 조직체에 필요한 Data를 수집, 저장해 두었다가 필요 시에 처리해서 의사결정에 유용한 정보를 생성하고 분배하는 수단

 

자료 처리 시스템

: 일과처리 시스템, 온라인 실시간 처리 시스템, 분산 처리 시스템

 

데이터 웨어하우스(Data Warehouse)

: 조직이나 기업체의 중심이 되는 주요 업무 시스템에서 추출되어 새로이 생성된 데이터베이스로서 의사결정지원 시스템을 지원하는 주체적, 통합적, 시간적 데이터의 집합

 

2)데이터베이스의 개념

 

데이터베이스의 정의

 

- 통합된 데이터(Integrated Data)

- 저장된 데이터(Stored Data)

- 운영 데이터(Operational Data)

- 공용 데이터(Shared Data)

 

데이터베이스의 특징

 

- 실시간 접근성(Real-Time Accessbility)

- 계속적인 변화(Continuous Evolution) 

- 동시 공용(Concurrent Sharing)

- 내용에 의한 참조(Content Reference) 

 

3) DBMS의 기능

 

DBMS의 발전 배경

 

- 종속성으로 인한 문제점

- 중복성으로 인한 문제점

 

DBMS의 필수 기능

 

- 정의(Definition)

- 조작(Manipulation)

- 제어(Control)

 

DBMS의 장점

 

- 데이터의 중복을 피할 수 있어 기억공간이 절약된다

- 저장된 자료를 공동으로 이용할 수 있다

- 데이터의 일관성을 유지할 수 있다

- 데이터의 무결성을 유지할 수 있다

- 보안을 유지할 수 있다.

- 데이터를 표준화할 수 있다

 

4) 스키마(Schema)

 

스키마의 정의

: 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술

 

스키마의 3계층

 

- 내부 스키마(Internal Schema)       : 물리적 저장장치의 입장

- 개념 스키마(Conceptual Schema)  : 데이터베이스의 전체적인 논리적 구조

- 외부 스키마(External Schema)      : 사용자나 응용 프로그래머

 

5) 데이터베이스 언어

 

- 데이터 정의 언어(DDL) : 데이터 베이스를 구축(정의)하거나 수정할 목적으로 사용하는 언어

- 데이터 조작 언어(DML) : 사용자로 하여금 데이터를 처리할 수 있게 한다

- 데이터 제어 언어(DCL) : 무결성, 보안 및 권한 제어, 회복 등을 하기 위한 언어이다

 

6) 데이터베이스 사용자

(DBA, 응용 프로그래머, 일반 사용자 )

 

- DBA(DataBase Administrator) : 데이터베이스 시스템의 모든 관리와 운영에 대한 책임을 지고 있는 사람이나 그룹

- DBA의 역할

   ( 데이터베이스의 설계와 조작에 대한 책임

   ( 책임 행정시스템 감시 및 성능 분석

 

2. 데이터 모델링 및 설계

 

1) 데이터 모델의 개념

 

데이터 모델의 정의

: 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형이다

 

데이터 모델의 종류

 

- 개념적 데이터 모델

- 논리적 데이터 모델

 

데이터 모델에 표시할 요소

 

- 구조(Structure) : 논리적으로 표현된 개체 타입들 간의 관계

- 연산(Operation) : 데이터베이스를 조작하는 기본 도구

- 제약 조건(Constraint) : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

 

데이터 모델의 구성 요소

 

- 개체(Entity) : 데이터베이스에 표현하려고 하는 현실 세계의 대상체이다

- 속성(Attribute) : 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다

- 관계(Relationship) : 개체 간의 관계 또는 속성 간의 관계이다

                             ( 일 대 일(1:1), 일 대 다(1:n), 다 대 다(n:m) )

 

2) 개체 - 관계 모델

 

개체 - 관계(Entity-Relationship) 모델의 개요

: 데이터를 개체(Entity), 관계(Relationship), 속성(Attribute)으로 묘사한다

 

E-R(개체 - 관계) 다이어그램

 

- 개체(Entity) : 사각형

- 관계(Relationship) : 마름모

- 속성(Attribute) : 타원

- 다중값 속성(복합 속성) : 이중타원

- 기본키 속성 : 밑줄 타원

- 개체 타입과 속성을 연결 : 선, 링크

 

3) 데이터 모델(Data Model)

 

관계형 데이터 모델(Relation Data Model)의 개념

: 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 2차원적인 표를 사용한다

 

계층형 데이터 모델(Hierarchical Data Model)의 개념

: 트리 구조를 이용해서 데이터의 상호관계를 계층적으로 정의한 구조이다

 

망형 데이터 모델(Network Data Model)의 개념

: 그래프를 이용해서 데이터 논리 구조를 표현한 데이터 모델이다

 

4) 데이터베이스 설계

 

데이터베이스 설계 시 고려사항

 

- 무결성

- 일관성

- 회복

- 보안

- 효율성

- 데이터베이스 확장

 

데이터베이스의 설계 순서

 

1.   요구분석   : 요구 조건 명세서 작성

         ↓

2. 개념적 설계 : 개념 스키마, 트랜잭션 모델링, E-R 모델 

        

3. 논리적 설계 : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계

        

4. 물리적 설계 : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환

        

5.     구현      : 목표 DBMS의 DDL로 데이터베이스 생성, 트랜잭션 작성 

 

3. 관계 데이터베이스 모델과 언어

 

1) 관계형 데이터베이스의 구조

 

관계형 데이터베이스의 Relation의 구조

 

- 릴레이션(Relation) : 데이터들을 표의 형태로 표현한 것이다

- 튜플(Tuple) : 릴레이션을 구성하는 각각의 행을 말한다 (튜플에 수를 카디널리티(Cardinality)라고 부른다)

- 속성(Attribute) : 데이터베이스를 구성하는 가장 작은 논리적 단위이다 (속성의 수를 (Degree)라고 부른다)

- 도메인(Domain) : 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합이다

 

릴레이션의 특징

 

- 릴레이션에 포함된 튜플들은 모두 상이하다

- 한 릴레이션에 포함된 튜플 사이에는 순서가 없다

- 속성들 간의 순서는 중요하지 않다

- 각 속성은 릴레이션 내에서 유일한 이름을 가진다

 

2) 관계형 데이터베이스의 제약 조건

 

키(Key)의 종류

 

- 후보키(Candidate Key) : 유일성과 최소성을 만족시켜야 한다

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

- 대체키(Alternate Key) : 후보키중 기본키를 제외한 나머지 후보키

- 슈퍼키(Super Key) : 유일성은 만족시키지만 최소성은 만족시키지 못하는 키

- 외래키(Foreign Key) : 관계를 맺고 있는 릴레이션 R1, R2에서 R1이 참고하고 있는 릴레이션 R2의 기본키와 같은

                                R1의 릴레이션의 속성을 외래키라 한다

 

무결성

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

- 참조 무결성 : 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다

 

3) 관계대수 및 관계해석

 

관계대수

: 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다

- 순수 관계 연산자 : Select( б ), Project( π ), Join( ⋈ ), Division( ÷ )

- 일반 집합 연산자 : UNION( 합집합 ∪ ), INTERSECTION( 교집합 ∩ ), DIFFERENCR( 차집합 - ),

                          CARTESIAN PRODUCT( 교차곱 X )

 

관계해석

 

- 수학의 술어 해석에 기반을 두고있다

- 튜플 관계해석과 도메인 관계해석이있다

- 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하다

- 관계해석으로 표현한 식은 관계대수로 표현할 수 있다

- 관계해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다

 

4) 정규화(Normalization)

 

정규화의 개요

: 더 작은 테이블로 분해해 가면서 종속성을 제거하는 것이다

 

정규화의 목적

: 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다

 

Anomaly(이상)의 개념 및 종류

 

- 삽입 이상(Insertion Anomaly) : 불필요한 데이터가 함께 삽입되는 현상

- 삭제 이상(Delettion Anomaly) : 연쇄 삭제로 인해 정보의 손실

- 갱신 이상(Update Anomaly) : 일부 속성을 갱신함으로써 정보의 모순성이 발생

 

정규화 과정

 

비정규 릴레이션

        ↓  도메인이 원자값

제1정규형(1NF)

        ↓  부분적 함수 종속 제거

제2정규형(2NF)

        ↓  이행적 함수 종속 제거

제3정규형(3NF)

        ↓  결정자이면서 후보키가 아닌것 제거

      BCNF

        ↓  다치 종속

제4정규형(4NF)

        ↓  조인 종속성 이용

제5정규형(5NF)

 

5) SQL(Structured Query Language)의 개념

 

SQL의 개요

: 질의어지만 질의 기능만 있는 것이 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있다

 

데이어 정의어(DDL)

 

- CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의한다

- ALTER : TABLE에 대한 정의를 변경하는데 사용한다

- DROP : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제한다

 

데이터 조작어(DML)

 

- INSERT : 테이블에서 조건에 맞는 튜플을 검색한다

- DLLETE : 테이블에 새로운 튜플을 삽입한다

- UPDATE : 테이블에서 조건에 맞는 튜플을 삭제한다

- SELECT : 테이블에서 조건에 맞는 튜플의 내용을 변경한다 

 

데이터 제어어(DCL)

- COMMIT

- ROLLBACK

- GRANT

- REVOKE

 

6) 내장 SQL(Embedded SQL)

 

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

 

내장 SQL의 특징

 

- 호스트 언어에서 실행문이 나타날 수 있는 곳이면 프로그램의 어느 곳에서나 사용할 수 있다
- 내장 SQL 프로그램은 컴파일보다 우선하는 전처리기에 의해 처리된다
- 호스트 변수와 데이터베이스 필드의 이름은 같아도 된다
- 내장 SQL문에 사용된 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL 데이터 타입과 일치하여야한다

 

7) 뷰(VIEW)

 

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

 

뷰의 특징

 

- 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다
- 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다
- 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다
- 뷰를 삭제하면 그 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다

 

뷰의 장점

 

- 논리적 데이터 독립성을 제공한다
- 여러 사용자의 상이한 요구를 지원해 준다
- 사용자의 데이터 관리를 간단하게 해준다
- 접근 제어를 통한 자동 보안이 제공된다

 

뷰의 단점

 

- 독릭전인 인덱스를 가질 수 없다
- ALTER VIEW문을 사용할 수 없다 즉, 뷰의 정의를 변경할 수 없다
- 삽입, 갱신, 삭제 연산에는 제약이 따른다

 

뷰 삭제
: 뷰는 ALTER문을 사용하여 변경할 수 없으므로 필효한 경우는 삭제(DROP)한 후 재생성한다

 

8) 시스템 카탈로그(System Catalog)

 

시스템 카탈로그의 의미
: 시스템 자신이 필요로 하는 여러 가지 개체에 관한 정보를 포함한 시스템 데이터베이스이다 자료 사전이라고도 한다

 

시스템 카탈로그의 특징

 

- 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있다
- DBMS가 스스로 생성하고 유지하는 데이터베이스 내의 특별한 테이블의 집합체이다

 

4. 자료 구조의 기본서

 

1) 자료 구조의 개념

 

자료 구조의 분류

- 선형 구조 : 스택(Stack), 큐(Queue), 데크(Deque), 리스트(배열리스트,연결 리스트)
- 비선형 구조 : 트리(Tree), 그래프(Graph)

 

2) 스택(Stack)

 

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

 

스택의 응용 분야

 

- 부 프로그램 호줄 시 복귀주소를 저장할 때
- 함수 호출의 순서 제어
- 인터럽트가 발생하여 복귀주소를 저장할 때
- 후위 표기법으로 표현된 수식을 연산할때
- 0 주소지정방식 명령어의 자료 저장소
- 재귀 프로그램의 순서 제어
- 컴파일러를 이용한 언어 번역시

 

3) 큐(Queue)와 데크(Deque)

 

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

 

큐의 응용 분야

 

- 운영체제의 작업 스케줄링에 사용한다

 

데크의 개념

: 스택과 큐의 장점만 따서 구성한 것으로 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료 구조이다

 

4) 트리(Tree)

 

트리의 개념
: 트리는 정점(노드)와 선분(가지)을 이용하여 사이클을 이루지 않도록 구성한 Graph의 특수한 형태이다

 

트린 관련 용어

 

- 근 노드(Root Node) : 트리의 맨 위에 있는 노드
- 디그리(Degree, 차수) : 가지의 수
- 단말 노드(Terminal Node) : Degree가 0인 노드
- 부모 노드(Parent Node) : 이전 레벨의 노드
- 형제 노드(Brother Node) : 동일한 부모를 갖는 노드
- 트리의 Degree(디그리) : 노드들의 디그리 중에서 가장 많은수

 

5) 이진 트리

 

이진 트리
: 차수가 2이하인 노드들로 구성된 트리 즉, 자식이 둘 이하인 노드들로만 구성된 트리를 말한다

 

6) 이진 트리의 운행법(Traversal)

 

트리의 운행법

 

   ⓐ
  /  |
ⓑ  ⓒ

 

- Preorder 운행 : Root -> Left -> Right 순으로 운행한다(위 트리 예시 : a,b,c)
- Inorder 운행 : Left -> Root -> Right 순으로 운행한다(위 트리 예시 : b,a,c)
- Postorder 운행 : Left -> Right -> Root 순으로 운행한다(위 트리 예시 : b,c,a)

 

수식의 표기법

 

   +
  /  |
ⓐ  ⓑ

 

- 전위 표기법(PreFix) : 연산자 -> Left -> Right (위 트리 예시 : +ab)
- 중위 표기법(InFix) : Left -> 연산자 -> Right (위 트리 예시 : a+b)
- 후위 표기법(PostFix) : Left -> Right -> 연산자 (위 트리 예시 : ab+)

 

*(다른 표기법으로 변환하는법 이해하기)

 

7) 그래프(Graph)

 

그래프 정의

 

- G는 정점 V(Vertex)와 간선 E(Edge)의 두 집합으로 이루어진다
- 간선의 방향성 유뮤에 따라 방향 그래프와 무방향 그래프로 구분된다
- 통신망, 교통망, 유리화학 구조식, 무향선분 해법 등에 응용된다

 

*(인접행렬(Adjacency matrix)을 이용한 그래의 표현 방법)

 

8) 정렬(Sort)의 개요

 

정렬
: 정렬은 파일을 구성하는 각 레코드를 특정 키 항목을 기준으로 오름차순(Ascending) 또는 내림차순(Descending)으로 재배열하는 작업을 말한다

 

정렬 방식

 

- 내부 정렬 : 히프 정렬, 삽입 정령, 쉘 정렬, 버블 정렬, 선택 정렬, 퀵 정열, 2-Way Merge Sort, 기수정렬
- 외부 정렬 : 밸런스 병합 정렬, 캐스케이드 병합 정렬, 폴리파즈 병합 정렬, 오실레이팅 병합 정렬

 

*(내부 정렬의 종류와 정렬하는 법 익히기)

 

정렬 알고리즘 선택 시 고려 사항

 

- 데이터의 양
- 초기 데이터의 배열 상태
- 키 값들의 분포 상태
- 소요공간 및 작업시간
- 사용 컴퓨터 시스템 특성

 

9) 검색(Search)

 

검색

: 컴퓨터를 이용해서 기억공간에 보관중인 특정 레코드를 찾아내는 작업이다

 

제어 검색(Control Search)
:반드시 순서화된 파일이어야 검색할 수 있다

- 이분 검색(Binary Search)
- 피보나치 검색(Fibonacci Search)
- 보간 검색(Interpolation Search)
- 블록 검색(Block Search)
- 이진 트리 검색(Binary Tree Search)

 

10) 검색-해싱(Hashing)

 

해싱
: DAM(직접 접근) 파일을 구성할 때 사용된다

 

해시 테이블(Hash Table, 해시표)
: 레코드를 한 개 이상 보관할 수 있는 Bucket들로 구성된 기억공간으로 주기억 장치나 보조기억장치에 저장한다

 

- 버킷(Bucket) : 하나의 주소를 갖는 파일의 한 구역을 의미한다
- 슬롯(Slot) : 한 개의 레코드를 저장할 수 있는 공간으로 n개의 슬롯이 모여 하나의 버킷을 형성한다
- 충돌 현상(Collision) : 서로 다른 두 개 이상의 레코드가 같은 주소를 갖는 현상이다
- Synonym : 충돌로 인해 같은 Home Address를 갖는 레코드들의 집합이다
- Overflow : 계산된 Home Address의 Bucket 내에 저장할 기억공간이 없는 상태이다

 

해싱함수(Hashing Function)

 

- 제산법
- 제곱법
- 폴딩법
- 기수(Radix) 변환법
- 대수적 코딩법
- 계수 분석법(숫자 분석법)
- 무작위법

 

Overflow 해결방법

 

- 개방 주소법(Open Adressing)
- 폐쇄 주소법(Close Addressing)
- 재해싱(Rehashing)

 

11) 인덱스(Index)의 구조

 

인덱스의 개념
: 데이터 레코드를 빠르게 접근하기 위해서 구성하는 것이다

 

12) 파일 편성

 

순차 파일(Sequential File) = 순서 파일
: 입력되는 데이터들을 논리적인 순서에 따라 물리적 연속 공간에 순차적으로 기록하는 방식이다

 

순차 파일의 장점

 

- 기록밀도가 높아 기억공간을 효율적으로 사용할 수 있다
- 레코드가 키 순서대로 편성되어 취급이 용이하다
- 매체 변환이 쉬워 어떠한 매체에도 적용할 수 있다

 

순차 파일의 단점

 

- 파일에 레코드를 삽입하거나 삭제하는 경우 파일 재구성을 위해 전체를 복사해야 하므로 시간이 많이 소요된다
- 데이터 검색 시 처음부터 순차적으로 검색하기 때문에 검색 효율이 낮고, 시간 및 응답시간이 느리다

 

색인 순차 파일(Indexed Sequential File)
: 순차 처리와 랜덤 처리가 모두 가능하도록 레코드들을 키 값 순으로 정렬시켜 기록하고 레코드의 키 항목만을 모은 색인을 구성하여 편성하는 방식이다

 

색인 순차 파일의 구성

 

- 기본 구역(Prime Area)
- 색인 구역(Index Area) : 트랙 색인 구역, 실린더 색인 구역, 마스터 색인 구역으로 나눠져있다
- 오버플로 구역(Overflow Area)

 

색인 순차 파일의 장점

 

- 순차 처리와 랜덤 처리가 모두 가능하므로 목적에 따라 융통성 있게 처리할 수 있다
- 효율적인 검색이 가능하고 레코드의 삽입, 삭제, 갱신이 용이하다
- 레코드를 추가 및 삽입하는 경우, 파일 전체를 복사할 필요가 없다

 

색인 순차 파일의 단점

 

- 색인 구역과 오버플로 구역을 구성하기 위한 추가 기억공간이 필요하다
- 파일 사용중 오버플로 레코드가 많아지면 파일을 재편성해야한다
- 파일이 정렬되어 있어야 하므로 추가, 삭제가 많으면 효율이 떨어진다

 

직접 파일(Direct File)
: 해시 함수를 이용하여 이 키에 대한 보조기억장치의 물리적 상대 레코드 주소를 계산한 후 해당하는 주소에 레코드를 저장한다

 

'자격증 공부!' 카테고리의 다른 글

정보처리 산업기사(전자계산기 구조)  (0) 2020.08.29
FORM 다루기

 

 

1] <FORM>, </FORM>

<FORM>, </FORM> 태그는 폼의 시작과 끝을 나타냅니다 각종 폼 컨트롤은 폼 태크 안에 있을 때만 정상적으로 동작합니다 만약 폼 컨트롤이 폼 태그 외부에 존재한다면 해당 폼 컨트롤에 기록된 정보는 전달되지 않습니다 폼 태그에는 여러 가지 속성이 있어서 이 속성들을 잘 설정해야 사용자가 입력한 정보를 올바르게 전달할 수 있습니다 가장 일반적인 폼 태그의 사용방법은 다음과 같습니다

 

<FORM NAME="폼이름" ACTION="데이터를 보낼 주소" METHOD="전송방식">

HTML 및 기타 폼 요소들...

</FORM>

 

     FORM 태그의 속성과 이벤트 처리 함수

 

속성

1. name      

폼의 이름을 나타냅니다 보통은 굳이 이름을 부여하지 않아도 상관없지만 하나의 HTML 문서 안에 여러 개의 폼이 있을 때 구분 지으려고 폼의 이름을 사용합니다

 

2. action

사용자가 입력한 폼 정보를 전달할 주소를 지정하는 항목입니다 데이터를 전달받는 주소는 반드시 PHP와 같은 서버 스크립트 파일이어야 합니다

 

3. method

데이터를 전달하는 방식을 정의하는 부분입니다 전송 방식에는 POST와 GET 두 가지 방식이 있으며 GET 방식은 URL을 통해서 전달하는 방식이고 POST 방식은 HTTP 바디에 데이터를 실어서 보내는 방식입니다

 

4. enctype

폼 데이터를 어떻게 인코딩할 것인지를 지정하는 부분입니다 그러나 폼 데이터 전송 형식이 GET이라면 ENCTYPE을 지정하더라도 원하는 결과를 얻을 수 없습니다 ENCTYPE은 POST 전송일 경우에만 적용되며  application/x-www-form-urlebcoded과 multipart/form-data  두 가지 종류가 존재하며 ENCTYPE을 지정하지 않았을 때는 기본값으로 application/x-www-form-urlebcoded가 폼 정보를 전달합니다

 

5. target

폼 정보를 모두 전송하고 그 결과를 보여 줄 프레임이나 창의 이름을 지정하는 부분입니다

 

이벤트 처리 함수

1. onsumit

sumit 버튼을 클릭하거나 자바스크립드를 이용하여 sumit을 실행한 경우에 발생합니다 사용자가 쿼리 전송 버튼을 클릭하는 경우 sumit 이벤트가 발생하여 먼저 OnSumit 핸들러에 지정된 명령어나 함수가 처리됩니다 이 명령이 처리되고 Action에 지정된 주소로 폼 데이터를 전송합니다

 

2. onreset

reset 버튼을 클릭하거나 자바스크립트를 이용하여 reset을 실행한 경우에 발생합니다 사용자가 리셋 버튼을 클릭하면 OnRest 핸들러에 지정된 함수나 명령어가 실행됩니다

 

 

2] <INPUT>

<INPUT> 태그는 각종 텍스트 값의 입력과 버튼 그리고 체크 상자와 라디오 상자를 만들 수 있습니다

 

<INPUT> 태그의 타입

1. TEXT

짧은 텍스트를 입력할 수 있는 상자입니다 길지 않은 문자열 예를 들면 이름이나 이메일 주소와 같은 수십 자 이내의 값을 입력하고자 할 때 일반 텍스트 입력 상자를 사용합니다

 

2. PASSWORD

일반 텍스트 입력 상자와 대부분 같지만 입력한 값이 별표로 출력된다는 것이 다릅니다 그리고 알파벳이나 숫자 및 기호만 입력할 수 있습니다

 

3. FILE

파일을 업로드하거나 파일의 위치 정보를 기록하고자 할 때 사용할 수 있느 태그입니다 파일 선택 상자는 파일을 업로드할 때 주로 사용되며 POST 방식과 multipart/form-data  인코딩 형식을 지정해야 올바르게 동작합니다

 

4. CHECKBOX

각 항목에 대한 선택 여부를 확인하는데 사용하는 태그입니다

 

5. RADIO

체크 상자와는 달리 여러 개의 항목 중의 하나만을 선택해야 하는 경우 사용하는 태그입니다 보통 2,3개의 선택 항목 중에서 하나를 반드시 선택해야 하는 경우 사용합니다 또한 4개 정도의 값에서 하나만을 선택해야 할 때에는 라디오 상자를 사용하지 않고 선택 상자를 사용합니다

 

6. BUTTON

버튼 모양의 컨트롤을 만들어주는 태그입니다 단순히 버튼 모양만을 만들고 다른기능이 없는 기본적인 태그지만 이벤트 핸들러를 사용하여 아이디 중복 확인 같은데에 쓰입니다

 

7. SUMIT

폼의 입력한 정보를 폼의 Action에 지정된 주소로 전송하는 버튼을 생성합니다 폼의 정보를 전송하려면 반드시 sumit이 필요합니다

 

8. RESET

폼에 입력한 정보를 모두 원래의  초기값으로 되돌리는 버튼을 생성합니다 기본적으로 빈 폼에 새로운 값을 입력했다면 모두 빈 폼으로 되돌아가게 되고 폼 컨트롤에 VALUE 속성 등을 이용하여 초기값으로 설정되어 있다면 해당 초기값으로 되돌아갑니다

9. IMAGE

더욱 화려한 디자인을 추구하기 위해서 만들어진 사용자가 정의한 모양의 그림 이미지 버튼입니다 이 이미지 버튼은 웹에서 사용 가능한 모든 이미지를 통해서 만들 수 있으며 쿼리 전송 버튼과 마찬가지로 버튼을 클릭하면 SUMIT 이벤트가 발생합니다

 

10. HIDDEN

눈에 보이지 않는 숨겨진 상자를 만들어 줍니다 이 숨겨진 상자는 일반적으로 사용자가 수정해서는 안되는 값이나 눈에 보이지 않게 여러 가지 값을 전송할 때 사용합니다 하지만 보안이 제대로 되지 않아 악의적으로 충분히 수정할 수 있기 때문에 숨겨진 상자를 신뢰해서 공개되어서는 안 되거나 수정하면 큰 피해가 일어날 수 있는 중용한 정보를 전송하기 위해 사용해서는 안됩니다

 

 

3] <SELECT>...</SELECT>

이 태그는 일반적으로 3개 이상의 목록에서 하나 혹은그 이상의 항목을 선택하고자 할 때 사용하는 폼 컨트롤입니다 선택 상자에는 두 종류가 있는데 하나는 목록 중에서 하나만 선택하고자 하는 콤보 상자와 하나 혹은 그 이상을 선택할 수 있는 리스트 상자입니다

 

1. 콤보 상자

<SELECT> 태그에서 size를 지정하지 않으면 콤보 상자가 됩니다 콤보 상자는 목록 중에서 하나만 선택할 수 있습니다

 

2. 리스트 상자

<SELECT> 태그에서 size를 지정해 주면 리스트 상자가 됩니다 리스트 상자는 다중 선택을 할때 쓰며 다중 선택을 허용하는 경우에는 <SELECT> 태그에 multiple을 추가해주고 반드시 이름을 배열 형식으로 바꾸어야 합니다

 

 

4] <TEXTAREA>...</TEXTAREA>

여러 문단에 걸친 길 글을 입력하기 위한 <TEXTAREA> 태그는 일반적으로 게시판과 같은 곳에서 글의 내용을 입력하는데 사용하며 입력창의 크기를 다음과 같은 방법으로 지정할 수 있습니다

 

<TEXTAREA NAME="content" ROWS="5" COLS="40"></TEXTAREA>

 

여기서 ROWS는 세로의 크기를 나타내며 이 값이 5이면 다섯 줄을 보여 줄 수 있는 크기를 의합니다 또한 COLS는 가로의 길이를 나태내며 40이란 값은 영문을 기준으로 40자가 보이는 크기를 뜻합니다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'PHP' 카테고리의 다른 글

PHP 문법 익히기(2)  (0) 2017.04.05
PHP 문법 익히기(1)  (0) 2017.04.02
PHP 첫 소스 코드 작성  (0) 2017.04.01
PHP 개발환경 구축(텍스트 에디터)  (0) 2017.04.01
PHP 개발환경 구축(APM)  (0) 2017.03.31

PHP 문법 익히기(2)

 

 

1] 연산자

연산자는 숫자나 문자열과 같은 어떤 값과 변수 등을 사용하여 더하거나 곱하고 어느 값이 더 크고 작은지를 비교하는 등의 연산을 하는 기호를 말합니다 많은 연산자는 서로 복합적으로 섞어서 많이 사용하므로 연산자 간에 어느 연산자가 먼저 처리되어야 할지 결정하는 연산자 우선순위가 있습니다 하지만 연산자 우선순위를 전부 외우지 않고 괄호를 사용하여 처리 순서를 결정해 주는 것이 더 효과적입니다

 

 

2] 연산자의 종류

1. 대입 연산자

2. 산술 연산자

3. 증감 연산자

4. 비교 연산자

5. 논리 연산자

6. 문자열 연산자

7. 배열 연산자

8. 비트 연산자

9. 실행 연산자

10. 에러 제어 연산자

 

 

3] 제어 구조

제어 구조는 PHP의 흐름을 제어하는 구조입니다 위에서 아래로 차례로 실행되는 흐름에서 다시 위로 되돌아가게 한다거나 아니면 어느 부분을 건너뛴다거나 아니면 계속 반복되게 하는 것입니다

 

 

4] 제어문의 종류와 설명

1. if

- 어떤 조건을 판단하여 코드를 수행할 것인지 그렇지 않을 것인지를 결정하는데 사용합니다 if문의 구조는 아래와 같습니다

if (조건문) 명령문

 

2. else

- else 구문은 if 문에서 표현식의 결과가 거짓인 경우에 처리될 부분을 정의합니다 그러므로 if문 없이는 사용할 수 없습니다

 

3. elseif

- if문 작성시 조건문을 추가해 여러 조건에 맞는 결과를 원할때 elseif 를 사용합니다

 

4. while

- 반복되는 일을 수행하고자 할 때 사용할 수 있는 가장 기본적인 형태의 제어 구조입니다 while문은 조건문이 참이면 명령문을 반복적으로 계속 수행하고 조건문이 거짓으로 판단되면 반복하는 것을 멈추고 빠져나옵니다 while문의 기본 구조는 아래와 같습니다

while (조건문) 명령문;

 

5. do-while

- do-while 문은 조건문을 검사하고 명령문을 수행하는 while과 달리 일단 명령문을 수행하고 조건문을 검사하여서 계속 명령문을 수행할지를 결정하는 루프 제어 구조입니다 do-while문은 반드시 한번은 수행됩니다 do-while문의 기본구조는 아래와 같습니다

do 명령문 while (조건문);

 

6. for

- 특정 횟수만큼 해당 작업을 반복하고자 할 때 사용하느 제어 구조입니다 for문의 기본구조는 아래와 같습니다

for (초기값; 조건문; 증감식;)

 

7. break

- while, do-while, for 등의 루프 제어 구조와 switch문의 수행을 멈추고 빠져나올때 사용하는 제어문입니다

ex) <?

$i = 1;

while(1) {

if ($i > 10) break;

echo $1++;

}

?>

위와 같은 예제를 보면 while문으로 반복되면서 $i 값이 1씩 증가하고 $i 값이 11이 되었을때 break 명령을 수행해 while문을 빠져나오게 됩니다

     

8. continue

- 루프 구조에서 현재 루프의 남은 명령문을 생략하고 루프의 처음 즉 조건문을 평가하는 부분으로 이동시켜주는 제어문 입니다

 

9. switch

- switch문은 조건식을 해당하는 case값을 찾습니다 이 값은 서로 정확히 일치해야 하며 해당하는 case값이 있다면 해당 명령문을 수행합니다 하지만 일치하는 case값이 없으면 default값이 수행됩니다 switch문의 기본 구조는 아래와 같습니다

swith (조건식)

{

case 값1:

명령문;

break;

 

case 값2:

명령문;

break;

 

default:

명령문;

break;

}

 

 

5] include와 require

include와 require는 다른 파일을 가져와서 해당 위치에 파일의 내용을 적용하는 구조입니다 이두 고조는 동일하게 동작하며 차이점은 해당 파일이 존재하지 않는 경우 include는 경고를 출력하고 프로그램이 계속되는 반면 require는 에러가 발생하여 프로그램이 더는 실행되지 않습니다

 

 

6] 함수(function)

특정 역할을 하는 코드를 블록으로 만들어 이름을 붙여 언제든 필요할때 불러 사용할 수 있게 하는게 함수입니다 함수에는 PHP에서 기본적으로 제공하는 내장 함수와 사용자가 편의에 따라 만들어서 사용하는 사용자 정의 함수가 있습니다

 

 

6] 함수의 정의

함수를 정의하는 구조는 아래와 같습니다

 

function 함수이름 ($인자1, $인자2, ...)

{

명령문;

return 반환값;

}

 

1. 함수의 이름

함수 이름은 변수와 같은 식별자르 시용합니다 이 함수 이름을 통해서 함수가 호출되기 때문에 함수의 이름은 그 역할을 충분히 표시할 수 있도록 정하는 것이 좋습니다 

 

2. 함수의 인자

인자는 함수가 호출될 때 전달해 줄 값입니다 이처럼 함수의 처리 대상이 되거나 함수의 수행에 참조되는 값들을 함수 내부에서 사용할 수 있도록 전달하는 것이 바로 인자입니다 함수의 인자에 전달 방식에는 세 가지 방식이 있습니다

 

① 값에 의한 인자 전달

- 함수를 호출할 때 직접 값으로 전달하는 것을 말합니다

 

② 참조에 의한 인자 전달

- 함수를 정의할때 인자 앞에 & 기호를 붙여 인자를 전달 받을때 변수 자체를 전달 받아 함수 내에서 변수의 값이 변하면  함수 밖에 변수가 그대로 수정됩니다

 

③ 기본 인자값

- 함수를 정의할때 인자에 기본값을 설정하는 것을 말합니다 함수를 호출하고 인자를 넘겨줄 때 아무 인자도 넘기지 않으면 기본 인자값을 초기값으로 사용하고 인자를 넘기받으면 기본 인자값은 무시하고 넘겨 받은 인자값을 사용합니다

 

3. 함수의 반환값

함수가 역할을 수행하고 난 후 그 결과를 반환해야 한다면 return을 통해서 결과값을 반환할 수 있고 반환값을 되돌려 주는 방법은 두 가지가 있습니다

 

① 값에 의한 반환

- 기본적인 방법으로 함수의 수행결과를 값으로 되돌려 줍니다

 

② 참조에 의한 반환

- 참조를 통해서 값을 반환받고자 할 때에는 함수의 정의와 호출 모두에서 & 기호를 사용해야 합니다

 

4. 함수의 사용

유용한 함수를 만들어 따로 php 파일에  저장해두고 필요할 때 include하여 함수를 불러 쓰면 편합니다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'PHP' 카테고리의 다른 글

FORM 다루기  (0) 2017.04.12
PHP 문법 익히기(1)  (0) 2017.04.02
PHP 첫 소스 코드 작성  (0) 2017.04.01
PHP 개발환경 구축(텍스트 에디터)  (0) 2017.04.01
PHP 개발환경 구축(APM)  (0) 2017.03.31

PHP 문법 익히기

 

이번에는 PHP 문법에 대해서 배워 보도록 하겠습니다

 

 

1] 모드 구분하기

PHP는 2가지 모드로 동작합니다 HTML모드와 PHP모드가 있는데 PHP 문서는 기본적으로 HTML 모드로 동작하고 PHP 모드를

알려주는 시작 태그가 나오면 PHP 모드로 동작했다가 끝 태그가 나오면 다시 HTML 모드로 동작합니다

 

PHP 부분을 알려주는 시작 태그와 끝 태그

 

1. <?  ,  ?>          - 일반적인 방법

2. <?php  ,  ?>     - XMl과 구분하기 위한 방법

3. <script language="php">  ,  </script>  - 스크립트식 방법

4. <%  ,  %>        - ASP식 방법

 

1번 방법이 가장 쉽고 간단하기는 하나 XML을 쓸때 태그가 <?XML 이기 때문에 XML을 같이 사용하는 경우에는 컴퓨터가 태그를 보고 모드를 판단할때 PHP로 판단할 수 있기 때문에 2번 방법을 사용한다 하지만 XML을 함께 사용하지 않을 때에는 1번 방법을 사용하는게 좋다

3번과 4번은 자주 사용되지 않는다 하니 그냥 간단하게 알아두고 넘어가는게 좋을거 같다

 

 

2] 문장 구분하기

우리가 글을 쓸때 문장 마지막에 마침표(.)를 쓰듯이 PHP도 한 문장이 끝날 때 마다 마침표 역할을 하는 세미클론(;)을 반드시 써야합니다

 

 

 

3] 주석 달기

주석이라는 것은 코드에 덧붙여 놓은 해당 코드에 대한 설명입니다 주석에 아무리 코드를 쳐도 PHP는 주석이라 생각하여 그 코드를 무시합니다 그러므로 본인이 작성한 코드에 대한 설명을 달아주는 버릇을 들이는 것이 중요하다 생각합니다

 

주석을 다는 방법

 

//     -  한줄 주석 처리

#      -  한줄 주석 처리

/* */  - 여러 줄 주석 처리

 

 

 

주석을 사용해서 글을 써도 웹 브라우저에는 주석을 이용해서 쓴 글은 나오지 않는 것을 알 수 있습니다

 

 

4] 식별자

PHP에서 변수나 함수 같은 것들은 각자 구별이 가능한 이름을 가지고 있습니다 이것들의 이름은 규칙에 따라 짓는데 이렇게 만들어진 이름을 식별자라고 합니다 식별자의 이름을 정할 때 생각해야될 것은 '역할에 맞는 이름' 그리고 '중복되지 않는 이름' 그리고 '식별자 규칙을 따른 이름' 입니다

 

여기서 식별자 규칙은

 

1. 문자와 밑줄(-)로 시작한다

2. 두 번째 글자부터는 숫자, 문자, 밑줄이 가능하다

3. 밑줄 이외의 기호는 사용할 수 없다

4. 문자는 유니코드(한글포함)도 가능하다

5. 변수는 대소문자가 서로 구분된다

 

5가지가 있고 이 규칙에 맞게 이름을 정해야 됩니다

 

 

5] 변수

변수란 여라가지 값을 가질 수 있는 즉 여러 가지 값으로 변할 수 있는 수를 의미합니다

PHP에서 변수는 여러 가지 값을 기록해 둘 수 있는 메모리 공간에 이름을 붙여 둔 것을 의미합니다

변수에 담을 수 있는 것에는 진리값, 정수, 부동소수점수, 문자열, 배열, 객체, 리소스, 널과 같이 총 8가지의 종류가 있고 이러한 8가지 종류를 변수형이라고 합니다

변수를 쓸때에는 $ 이 기호를 앞에 무조건 쓰고 뒤에는 변수의 이름을 씁니다   ex) $name

 

 

6] 변수형의 종류와 설명

1. 진리값(boolean)

- 참(True)과 거짓(False) 두 가지 값만을 가지기 위한 변수형이며 PHP에서 거짓은 0을 뜻하고 0이 아닌 다른 모든 수가 참을 뜻합니다

 

2. 정수(integer)

- 수학전인 의미의 정수를 표시하는 변수형이다 십진수와 음수를 표시하는 것은 똑같으나 8진수에는 앞에 0을 붙여야 하고 16 진수에는 앞에 0x를 붙여 표현해야 합니다

           ex)

십진수  $a = 1234;

음수     $a = -1234;

8진수   $a = 0123;  (십진수로 83)

16진수 $a = 0x12;  (십진수로 18)

 

3. 부동소수점수(floating point numbers)

- 실수를 표현하면서 부동소수점 방식을 사용하는 수를 의미합니다 부동소수점 방식이란 소수점의 위치가 고정되있지 않다는 것을 뜻합니다 부동소수점 정밀도를 나타내는 유효값(가수)과 자릿수를 나타내는 지수로 표현됩니다 

ex)   (가수) X (밑수)^(지수)

 

4. 문자열(string)

- PHP에서 문자들을 표현하고자 할 때 문자열 형식을 사용합니다 문자열을 표시하는 방법에는 큰따옴표("), 작은따옴표('), 히어닥 문법과 나우닥 문법이 있습니다

 

5. 리소스

- 파일이나 데이터베이스 그리고 이미지 작업과 같은 외부적인 자원을 나타내는 데 사용하는 변수형이고 다른 값으로 변환하거나 하는 등 일체의 작업이 불가능합니다

 

6. NULL

- 아무 값도 갖지 않는 변수를 말합니다 변수에 아직 아무런 값도 할당하지 않았을 떄나 상수로 NULL을 직접 할당했을 때 그리고 unset 함수로 변수를 제거했을 때 해당 값을 NULL아러고 합니다

 

7. 배열

- 배열은 연관된 데이터를 모아서 관리하기 위해서 사용하는 데이터 타입이다 변수가 하나의 데이터를 임시로 저장하기 위한 것이라면 배열은 여러 개의 데이터를 저장하기 위한 것이라고 할 수 있다

 

8. 객체(객체 지향)

- 객체지향 프로그래밍은 데이터에 초점을 두고 객체라는 단위로 모든 처리를 표현해 가는 방법이다 여기서 객체는 기능과 속성으로 구성되어 있고 모든 사물을 기능과 속성을 가진 객체로 생각하자는 것이 바로 객체 지향 프로그래밍의 핵심입니다

 

 

7] 변수의 종류

1. 사용자 변수

-우리가 이름을 짓고 용도에 따라 만들어 사용할 수 있는 변수

 

2. 슈퍼 전역 변수

- 서버 종류, 버전 등이나 기타 환경에 따라 변하는 변수들로 이미 이름이 지어진 변수들입니다 이러한 변수들은 프로그램의 어디서든 해당 이름을 통해서 접근할 수 있습니다 슈퍼 전연 변수는 웹 서버의 설정값이나 서버 시스템의 환경 그리고 사용자의 입력과 관련한 변수들이 지정되어 있으며 이 변수들은 우리가 인위적으로 값을 수정하거나 일반 변수로 사용할 수 없습니다 슈퍼 전역 변수는 모두 벼열로 되어 있기 때문에 $_ENV[OS]와 같은 방법으로 변수에 접근할 수 있습니다

 

$_GET        -  HTTP GET 방식으로 넘어온 변수

$_POST      -  HTTP POST 방식으로 넘어온 변수

$_COOKIE   -  HTTP 쿠키 변수

$_FILES      -  업로드 시 파일 정보 변수

$_SESSION  -  세션 변수

$_SERVER   -   웹 서버와 PHP 환경에서의 환경 변수

 

3. 외부에서 넘어온 변수

- 사용자의 브라우저에서 작성된 값이 웹 서버에 전달된 변수입니다

 

 

8]변수의 범위

PHP에는 지역 변수와 전역 변수가 있습니다 지역 변수는 어떠한 일부분 영역에서만 적용되는 변수이고 전역 변수는 어느 영역이든 사용 가능한 변수입니다  함수 안에 전역 변수를 쓰려면 변수 앞에 global을 써야 전역 변수를 사용할 수 있습니다

 

함수는 함수만의 작업 영역을 갖고 있는데 이 작업 영역은 함수를 호출 할때 만들어 졌다가 함수의 처리가 완료되면 영역을 없애 버립니다 그러므로 함수 안에서 만든 변수의 값도 그대로 유지 되지 않습니다 이 때문에 정적(static)변수라는게 있는데 정적 변수는 함수 안에서 변수를 만들때 함수 처리가 완료 되어도 값이 유지 될 수 있게 해줍니다 함수 안에서 정적 변수를 만드려면 변수 앞에 static를 써줘야 합니다

 

 

9] 상수

항상 똑같은 값을 가지는 변하지 않는 수입니다 그래서 한번 설정하면 전역 변수처럼 사용할 수 있습니다 또한 변하지 않는 수이기 때문에 한번 설정된 값은 변경할 수 없습니다 상수는 변수처럼 $ 기호를 사용하지 않고 반드시 define() 함수를 이용하여 상수를 정의합니다

 

define("상수명","상수에 저장될 값");

'PHP' 카테고리의 다른 글

FORM 다루기  (0) 2017.04.12
PHP 문법 익히기(2)  (0) 2017.04.05
PHP 첫 소스 코드 작성  (0) 2017.04.01
PHP 개발환경 구축(텍스트 에디터)  (0) 2017.04.01
PHP 개발환경 구축(APM)  (0) 2017.03.31

+ Recent posts