■ 운영체제의 역할
- 운영체제는 컴퓨터와 사용자 간의 중간 단계를 담당하는 중요한 부분
- 프로세서, 기억장치, 입출력 장치, 파일 및 정보등의 자원관리
- 효율적인 자원 관리를 위한 스케쥴링 제공
- 인터페이스 제공으로 사용자 편의성 증대
- 네트워크 및 하드웨어 등 관련 인프라 관리 제공
- 데이터 관리 및 자원의 공유 기능 제공
- 시스템 오류 검출 및 복구
- 자원 보호 기능 제공
■ 운영체제 종류
- Windows (윈도우) : 가장많은 사용자에게 익숙한 운영체제
- Linux (리눅스) : 멀티태크스 기능에 탁월, 운영체제의 수정 및 배포가 자유로움, 프로그램 개발자들이 선호, 대부분 무료이며 부분적으로 유료제품도 있음 - ex) Ubuntu (가장광범위하게 사용되는 리눅스 운영체제) / Fedora / CentOS (프로그래밍에 최적화된 환경 제공)
- Unix (유닉스) : 대부분 유료, 대형 시스템 관리자들이 사용
- Mac OS (맥 OS) : 유닉스 기반의 Apple 사의 운영체제
- Android (안드로이드) : 모바일 OS
- IOS : apple사의 모바일 OS
■ OS (Operating System - 운영체제) 성능 지표 [ 처 반 사 신 ]
처리능력도 향상 / 반환시간 단축 / 사용가능도 향상 / 신뢰도 향상
■ 운영체제의 사용
- Shell 쉘: 컴퓨터 내부를 관리하는 Kernel 과 사용자간을 연결하는 Command 창을말한다. (사용자와 운영체제의 내부(커널)사이의 인터페이스)(쉘은 Kernel과 사용자 간의 인터페이스를 담당)
+ 사용자의 명령어를 인식하여 프로그램을 호출하고, 명령을 수행하는 명령어 해석기이다.
+ 운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
종류) Bourne Shell, C Shell, Korn Shell 등
- Kernel 커널 : 컴퓨터 내부를 관리 (프로세스, 기억장치, 파일 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행)
■ 운영 체제 유형별 특징
- 다중 프로그래밍 시스템 (멀티 프로그래밍) : 2개 이상의 프로그램을 주기억 장치에 기억시키고 CPU를 번갈아 사용하면서 처리 하여 컴퓨터 시스템 자원 활용률을 극대화하기 위한 프로그래밍 기법
(멀티프로그래밍은 2개 이상의 프로그램을 하나 또는 여러 개의 CPU를 이용하여 마치 동시에 실행되는 것처럼 처리)
- 시분할 시스템(Time Sharing System): 프로세서 스케쥴링과 다중 프로그래밍을 사용해 각 사용자에게 컴퓨터를 시간적으로 반할 사용
- 분산처리 시스템 : 시스템마다 운영 체제와 메모리를 가지고 독립적으로 운영되며 필요할 때 통신하는 시스템
* 분산운영 체제의 특징
Resource Sharing(자원공유) / Reliability(신뢰성 : 여러 시스템 중 일부 시스템에 고장이 발생하는 경우에도 시스템이 정상적으로 운영됨) / Transparency(명백함) / Expandability(수평으로 확장) / Autonomy(자율성)
* 분산처리 시스템 컴퓨팅 모델 분류는 클라이언트/서버 모델 , 프로세서 풀 모델, 혼합 모델로 구분한다.
- 다중처리 시스템 : 마이크로 프로세서 여러 개를 연결해 다중 프로세서를 생성 (CPU를 두 개 이상두고 각각 그 업무를 분담하여 처리)
- 일괄처리 시스템
- 실시간처리 시스템 (RealTime Processing System)
■ Unix/ Linux CLI(Command Line Interface) 명령어
- cat : cat [파일명]을 이용하여 파일의 내용을 화면에 표시한다.
- Is : 현재 디렉토리와 파일 목록을 출력하는 명령어
- a/ - all : 상세정보 표시 옵션
- chmod : 파일이나 디렉토리의 읽기, 쓰기, 접근 권한을 변경하는 명령어 (아래 접근 권한의 유형 참조)
- du : 현재 디렉토리 아래의 디스크 사용현황을 출력하는 명령어
- cd, mkdir : 디렉터리 이동/생성 ex) c. :현재 디렉토리로 이동 / c.. :상위 디렉토리로 이동
- fork : fork()함수는 현재 프로세스에 대해 자식 프로세스를 생성하는 함수
- uname : 시스템의 정보확인 / 시스템 모든 정보를 확인하고 싶을땐 -a 옵션을 사용 ex) uname -a
- pwd : 현재 작업중인 디렉토리 절대경로
- kill : 특정 pid 프로세스를 종료
- ifconfig : 인터페이스를 설정하거나 확인
- find : 파일찾기
* 접근 권한의 유형
read (r) : 4 / write (w) : 2 / excute (x) : 1
ex) chomod 777 text.txt : text.txt 파일을 owner, group, other 모두에게 읽기, 쓰기, 실행권한을 모두 부여
chmod 700 text.txt : text.txt파일을 owner에게만 읽기, 쓰기, 실행권한을 부여
chmod 750 text.txt : text.txt파일을 owner는 읽기,쓰기,실행권한을 group에게는 읽기,실행권한을 부여하고 다른 그룹에는 권한을 부여하지 않음
■ i-node (identification node)
UNIX의 파일시스템에서 각 파일에 대한 정보를 기억하는 약 120byte 고정된 크기의 자료구조 이름
UNIX에서 i-node는 파일/디렉토리의 정보를 통해 할당, 적용, 생성, 링크, 삭제의 역할
UNIX 파일시스템 구조에서 데이터가 저장된 블록의 시작주소를 확인할 수 있는 블록
[ 구성 ]
I-node (구성 정보) / I-node table (하위 노드 정보) / i-number (등록정보) / addressing (실제 데이터 정보/ 데이터 시작주소)
■ 운영체제 핵심기능
- 메모리 :
- 프로세스 : 현재 실행 중인 프로그램
[ 개념 ] 프로그램은 파일 형태로 저장하여 관리되다가 실행을 시키면 동작을 합니다. 이 때 실행 중인 프로그램을 프로세스라고 한다.
■ 레지스터 (Register)
처리 중인 데이터 처리 결과를 임시보관하는 기능을 하는 CPU 내부의 초고속 기억장치
[ 종류 ]
PC (Program Counter) | 다음에 인출할 명령어의 주소를 가지고 있는 레지스터 |
MAR (Memory Address Register) | 메모리 주소를 일시적으로 저장하는데 사용되는 레지스터 |
MBR (Memory Buffer Register) MDR (Memory Data Register) |
기억장치에 쓰여질 데이터 혹은 기억장치로부터 읽혀진 데이터를 일시적으로 저장하는 버퍼 레지스터 (메모리 버퍼 레지스터) / (메모리 데이터 레지스터) |
IR (Instruction Register) | 가장 최근에 인출된 명령어(오퍼레이션코드 OP-code) 코드가 저장되어 있는 레지스터 |
AC (Accumulator) | 데이터나 연산결과를 일시적으로 저장하는 레지스터 |
[ 동작 ]
명령어 인출 과정에서 MAR이 지시하는 주기억장치의 주소 번지에서 데이터를 읽어와서 MBR에 저장
■ 명령어 인출 단계
명령어 인출 (IF) →명령어해독(ID) →명령어실행(EX)→데이터저장(WB)
■ 프로세스의 주 상태(Major State)종류
- 인출 (Fetch Cycle) : 주기억장치로부터 수행할 명령어를 CPU로 가져오는 단계
- 간접(Indirect Cycle) : 명령어의 operand가 간접주소 지정이 된 경우 유효주소를 계산하기위해 주기억장치에 접근하는 단계
- 실행 (Execute Cycle) : 명령의 코드를 해독결과에 따라 필요한 연산들을 수행
- 인터럽트 (Interrupt Cycle) : 인터럽트 발생 시 인터럽트 처리를 하고 완료되면 Fetch로 진행
■ 플랫폼 (Platform)
응용 소프트웨어를 구동하기 위해 사용되는 하드웨어와 소프트웨어의 결합
플랫폼은 하나의 운영 체제 또는 컴퓨터 아키텍쳐라고 단순히 말할 수 있으며 그 두가지를 통칭해 부르기도 한다.
■ DMA (Direct Memory Access)
CPU에 의한 프로그램의 실행 없이 자료의 이동을 하는 방식 / 입출력 속도 향상, CPU와 주변 장ㅇ치간 속도 차 줄일 수 있음
■ 교착상태란? = 데드락 (DeadLock)
둘 이상의 프로세스가 서로 가진 한정된 자원을 요청하는 경우 발생하는 것으로, 프로세스가 진전되지 못하고 모든 프로세스가 대기 상태로 되는 현상
(각자 자신이 소유한 자원을 포기하지 않고, 상대 프로세스의 자원을 무한 대기하고 있는 상태)
■ 교착상태 발생 원인 [ 상 점 비 환 ]
상호 배제 / 점유와 대기 / 비선점 / 환형 대기
- 상호 배제 : 자원은 한 번에 한 프로세스만이 사용할 수 있어야한다.
- 점유 대기 : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야한다.
- 비선점 : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
- 순환 대기(환형 대기 Circular Wait): 공유자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야함.
■ 교착상태(=DeadLock) 해결방안 [ 예 발 회 회 ]
예방(Prevention) / 발견(Detection) / 회복(Recovery) / 회피(Avoidance)
* 예방 : 교착상태 발생원인 (상/점/비/환) 조건의 부정
* 회피방안 : 은행가 알고리즘(Banker's Algorithm)
프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는 지를 사전에 검사하여 교착상태의 발생을 회피하는 기법
■ 임계영역 (Critical Section) → 상호배제와 관련 (오직 한 개 프로세스만 임계영역에 존재 할 수 있다.)
여러 개의 프로세스가 공유하는 데이터 및 자원에 대해 어느 한 시점에는 하나의 프로세스만 사용하도록 지정된 공유 영역
■ 문맥 교환 (Context Switching)
CPU가 현재 실행하고 있는 프로세스의 문맥 상태를 프로세스 제어블록(PCB)에 저장하고 다음 프로세스의 PCB로부터 문맥을 복원하는 작업
■ 스레드 (Thread)
다중 프로그래밍 시스템에서 프로세스(Process)나 태스크(Task)보다 더 작은 단위이며, 실행환경을 공유시켜 문맥교환의 부하를 줄이고, 기억장소의 낭비를 줄이는 프로그램 단위의 이름
■ 스레싱 (Thrasing) 현상
하나의 프로세스가 작업 수행 과정에서 수행하는 기억장치 접근을 지나치게 많이하고 페이지 폴트가 발생, 프로세스 수행에 소요되는 시간보다 페이지 이동에 소요되는 시간이 더 커지는 현상이다.
■ 스레싱 방지 기법
- 프리페이지 (Prepaging) : 과도한 페이지 부재를 줄이기위해 모든 페이지를 한 번에 페이지 프레임에 적재
- 워킹셋/워킹세트(Working Set)
프로세스가 일정 시간 동안 자주 참조하는 페이지 집합을 메모리 공간에 계속 상주시켜 빈번한 페이지 교체 현상을 줄이는 기법
하나의 프로세스에 자주 참조되는 페이지를 모아놓은 기법
- 페이지 프레임 조정(Page Fault Frequency) : PFF가 높으면 메모리의 페이지 적재영역의 크기를 증가, 낮으면 줄임
■ 인터럽트 (Interrupt)
[ 개념 ] 프로그램 실행 중 CPU의 현재 처리 순서를 중단 시키고 다른 동작을 수행하도록 요구하는 시스템 동작
[ 원인 ]
- 기계적인 문제(정전, 데이터 전달 과정에서 하드웨어 오류 발생)
- 프로그램 상의 문제
- 컴퓨터 조작자의 의도적인 조작에 의한 중단
- 입출력 장치들의 동작에 CPU의 기능이 요청되는 경우
- 산술 연산 Overflow, Underflow 발생
[ 동작 ]
인터럽트 인식 → 현재 상태 보존 → 요청 인터럽트 서비스로 분기 및 서비스 → 사용자 상태 복구 및 재개
* 인터럽트의 소프트웨어 우선순위 처리 방식 = 폴링(Poling)방식
■PFF (Page Fault Frequency)
페이지 부재율의 상한과 하한을 정해 직접적으로 페이지 부재율을 예측하고 조절해서 페이지 교체 현상을 줄이는 기법
■ 구역성/지역성/국부성/국소성 (Locality)
[ 개념 ] 프로세스가 실행되면서 특정 메모리(하나의) 페이지를 일정 기간동안 집중적으로 액세스 하는 현상
프로그램의 어느 특정 부분만 한동안 집중적으로 참조하는 현상
[ 종류 ]
- 시간 구역성 : 최근에 액세스된 프로그램이나 데이터가 가까운 미래에 다시 엑세스 될 가능성이 높다.
ex) Loop, Subroutine
- 공간 구역성 : 기억장치 내 인접하여 저장된 데이터들이 연속적으로 액세스 될 가능성이 높다.
ex) Array, Table, 순차코드 실행
- 순차 구역성 : 분기하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 인출 되어 실행된다. (약 20%)
ex) 구조적 프로그래밍
■ 파이프라인(pipeline) 기법
[ 개념 ] 파이프라인은 단위 시간 내에 하나 이상의 명령어를 병렬 처리함으로써 Performance를 향상시키는 멀티프로세스 환경에서의 명령어 처리 매커니즘이다.
- 명령어 처리 과정을 여러 단계로 세분화
- 단계마다 다른 작업을 중첩/수행하여 병렬성을 높인다.
[ 분류 ]
단일 파이프라인(한 라인만 중첩) / 수퍼 파이프라인 / 수퍼 스칼라 / 수퍼 파이프라인드 수퍼 스칼라 / VLIW(very long instruction word)
■ Flynn의 컴퓨터 시스템 분류 제안
컴퓨터 명령어와 데이터의 흐름 개수에 따라
- 단일명령어/단일 데이터흐름(SISD)
- 단일명령어/다중 데이터흐름(SIMD)
- 다중 명령어/단일 데이터흐름(MISD)
- 다중 명령어/다중 데이터 흐름(MIMD)
■ 가상 메모리 / 가상기억장치 (Virtual Memory, VM)
물리적인 메모리 용량보다 더 큰 용량의 프로그램을 실행할 수 있도록 보조 기억장치를 메모리처럼 가상화하는 기술
[ 가상 메모리 배치 정책 ]
프로그램의 한 블록을 주기억장치의 어디에 배치할 것인가 관리
Fisrt Fit(가장 처음 남는공간에 할당) / Best Fit (스캔 후 최적의 장소에 할당) / Worst Fit (가장 큰 남는 공간에 할당)
■ 메모리 인터리빙 (Memory Interleaving) 기법
기억장치 모듈에 순차적인 접근을 함으로서 접근시간을 최소화하고 성능을 향상
중앙처리장치의 기억 모듈에 중복적인 데이터 접근을 방지하기 위해서 연속된 데이터 또는 명령어들을 기억 장치 모듈에 순차적으로 번갈아 가면서 처리하는 방식
[ 종류 ]
상위 인터리빙 / 하위 인터리빙 / 혼합 인터리빙
■ 페이지 교체 알고리즘
- OPR (Optimal replacement, 최적교체): 앞으로 가장 오래 사용안할 페이지를 교체
- FIFO (First In First Out) : 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
- LRU (Least Recently Used) : 최근에 가장 오랫동안 사용하지 않은 페이지 교체
- LFU (Least Frequently Used) : 사용빈도가 가장 적은 페이지를 교체
- NUR (Not Used Recently) : 최근에 사용하지 않은 페이지를 교체, 참조비트와 변형 비트가 사용됨
- SCR (Second Chance Replacement, 2차 기회 교체) : 가장 오래 주기억장치에 있던 페이지중, 자주 사용되는 페이지 교체를 방지하기 위한 것으로 FIFO기법의 단점을 보완하는 기법
- 무작위 페이지 교체 (Random Page Replacement) : 특별한 사용자에게 차이를 두지 않고 교체하는 기법
ex) FIFO
■ 프로세스 스케줄링 알고리즘 (기법)
- 프로세스 스케줄링의 목적 : 공정성, 처리율 증가, CPU이용률 증가, 우선순위제도, 오버헤드 최소화, 응답시간 최소화, 반환시간 최소화, 균형있는 자원의 사용, 무한연기회피
비선점 - 이미 할당된CPU를 다른 프로세스가 못뺏음 - 프로세스 응답시간 예측 용이 - 일괄처리 방식 적합 - 중요도가 낮은 프로세스 떄문에 중요도가 높은 프로세스가 기다리는 경우가 있음 - FCFS / SJF / HRN |
선점 - 우선순위가 높은 다른 프로세스가 CPU를 강제로 뺏음 - 우선순위 높은 프로세스가 빠른처리, 빠른 응답을 요하는 시분할 시스템에서 사용 - 많은 오버헤드를 발생 - 선점가능하도록 인터럽트용 타이머 클록이 필요 - RR / SRT / MLQ / MLFQ |
FCFS (FIFO)= First Come First Service (First In First Out) → 준비상태 큐에 도착한 순서에 따라 차례로 CPU를 할당 → 공평성은 유지되지만 중요한 작업이 중요하지 않은 작업을 기다리게되는 경우가 발생 |
RR (Round Robin) → FCFS를 선점형태로 변형한 기법 → 시분할 시스템을 위해 고안 → 준비상태 큐에 먼저들어온 프로세스가 먼저 CPU를 할당 받는 것은 FCFS와 동일 → 각 프로세스틑 할당된 시간동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에 CPU를 넘겨주고 규의 가장 뒤로 배치 → 할당시간이 클 경우 FCFS와 같아지고 작을경우 문맥 교환 및 오버헤드가 자주 발생되게 됨 |
SJF (Shortest Job First) → 실행시간이 짧은 프로세스에 먼저 CPU할당 → 가장적은 평균대기시간을 제공함 (최소평균대기시간) |
SRT (Shortest Remaining Time) → SJF 알고리즘을 선점 형태로 변형 → 현재 실행중인 프로셋의 남은 시간과 준비상태큐에 새로 도착한 프로세스의 실행시간을 비교 → 가장 짧은 실행시간을 요구하는 프로세스에 CPU할당 |
HRN (Highest Response-ratio Next) →실행 시간이 긴 프로세스에 불리한 SJF 기법을 보안하기 위한 기법 → 대기시간과 실행시간을 이용함 → 우선순위 계산 결과값이 높은 것부터 우선순위를 부여, 대기시간이 긴 프로세스일 경우 계산결과 값이 높게나옴 공식: 우선순위 = (대기시간 + 서비스시간)/ 서비스시간 |
MLQ (Multi Level Queue, 다단계 큐) →프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 적용 MLFQ (Multi Level Feedback Queue, 다단계 피드백 큐) →특정 그룹의 준비상태의 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계큐 기법을 이동할 수 있도록 개선한 기법 → FCFS와 RR스케쥴링을 혼합한 기법 → 새로운 프로세스는 높은 우선순위를 가지고 프로세스의 실행시간이 길어질 수록 점점 낮은 우선순위큐로 이동하고 마지막단계는 RR방식을 적용하는 프로세스 알고리즘 |
+ 비선점
- 기한부 (Deadline) : 프로세스에게 일정한 시간을 주어 그 시간안에 프로세스를 완료하도록 하는 기법
- 우선순위(Priority) : 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법
■ 기아현상 (Starvation)
시스템 부하가 많아서 낮은 등급에 있는 준비 큐에 있는 프로세스가 무한정 기다리는 현상
+ 교착상태가 자원을 자유롭게 할당한 결과라면, 반대로 기아상태(기아현상)은 작업이 결코 사용할 수 없는 자원을 계속 기다리는 결과를 예방하려고(하다가) 자원을 할당할 때 발생하는 결과
■ 에이징 기법(Aging)
기아현상을 해결하기 위한 기법으로 오랫동안 기다린 프로세스에게 우선순위를 높여줌으로서 처리하는 기법
+ 스케줄링 기법에 관한 내용 중 시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우, 한 번 양보하거나 기다린 시간에 비례하여 일정 시간이 지나면 우선순위를 한 단계씩 높여 가까운 시간 안에 자원을 할당받도록 하는 기법
■ 시스템 소프트웨어
응용 소프트 웨어를 실행하기 위한 플랫폼 제공 / 컴퓨터 하드웨어를 동작, 접근할 수 있또록 설계된 컴퓨터 소프트웨어
운영체제, DBMS, 데이터 통합, 프로그래밍 언어, 스토리지 소프트웨어, 소프트웨어공학 도구, 가상화 소프트웨어, 시스템 보안 소프트웨어 등
[ 종류 ]
운영 체제 (Operating System) | 하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램을 위한 공통의 서비스를 제공하는 프로그램 |
어셈블러 (Assembler) | 어셈블리어를 기계어로 변환해주는 프로그램 |
컴파일러(Compiler)또는 언어번역기 | 고급언어로 작성한 원시 프로그램을 기꼐어인 목적프로그램(object program)으로 바꾸어주는 프로그램 |
인터프리터(Interpreter) | 고급언어나 코드화된 중간언어를 입력받아 목적 프로그램 생성없이 직접 기계어를 생성하여 실행해주느 프로그램 |
전처리기 (Preprocessor) | 원시 프로그램을 번역하기 전에 미리 언어의 기능을 확장한 원시 프로그램을 생성하는 시스템 프로그램 ex)C언어 #include문 |
링커 (Linker) | 서로 독립적으로 작성되고 번역된 목적 프로그램을 호출 및 연계시키는 프로그램 |
로더 (Loader) | 실행 가능한 프로그램(code)를 주기억장치에 적재하여 실행 가능하도록 해주는 시스템 프로그램 |
* 로더의 단계별 동작
Allocation (할당) / Lingking (링크) / Relocation (재배치) / Loading ((주기억장치에)적재)
* 로더의 종류
컴파일 즉시로더(Compile and go Loader) : 가장 간단한 방법 / 절대로더 / 재배치로더 / 링킹로더 / 동적로더
■ 응용 소프트웨어
운영체제에서 실행되는 모든 소프트웨어를 뜻함.
영상 인식/분석, 영상 코덱/스트리밍, 영상 제작/편집/합성, 3D스캐닝/프린팅, 가상시물레이션, 콘텐츠 보호/관리/유통, 정보검색, 음성처리, 오피스웨어 소프트웨어 등
■ 서비스 제공 소프트웨어
- 신규 개발 소프트웨어 : 새로운 서비스 제공을 목적으로 개발, 일반적으로 초기 개발단계 / 확장 단계 / 기능 고도화 단계로 진행
- 기능 개선 소프트웨어 : 기존 서비스 기능에서 사용자 편의성 개선, 화면 UI개선, 응답 속도개선, 업무 프로세스 개선 등의 목적
- 추가 개발 소프트웨어 : 기존 서비스 제공 시스템에 업무환경 변화, 산업 환경의 변화, 법 제도의 개정 등으로 인해 새로운 기능을 추가로 개발하는 소프트웨어
- 시스템 통합 소프트웨어 : 각각 별도로 서비스 되는 시스템을 원스톱(one-stop) 서비스 제공을 위해 업무 기능 및 데이터 등을 통합하여 개발하는 소프트웨어
■ 미들웨어 (Middleware)
분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어
+ 응용 소프트웨어가 운영 체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어다.
웹 애플리케이션 서버(WAS), 실시간 데이터처리, 통합 연계솔루션, 분산 병렬처리, 네트워크관리, 시스템 관리, 클라우드 서비스, 접근 제어 소프트웨어 등
■ 가상화 기술
물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러 개로 보이게 하는기술
- 서버 가상화 : 전가상화, 반가상화, 호스트 기반
- 클라이언트 가상화 : SBC, 데스크탑 가상화
- 네트워크 가상화 : VPN, MPLS, Virtual Routing
- 스토리지 가상화 : 호스트 기반, Array 기반, 네트워크 기반
- 데스크탑 가상화 : VDI, DaaS
- 모바일 가상화 : 모바일 디바이스 칩셋상 또는 OS 위에서 하이퍼바이저 구동
* VPN (Virtual private Network) : 공중 네트워크를 통해 한 회사나 몇몇 단체가 내용을 바깥 사람에게 드러내지 않고 통신할 목적으로 쓰이는 사설 통신망
* VPN은 터널링(Tunneling)기법을 사용해 인터넷과 같은 공중망에서 전용회선을 구성한 것과 같은 효과를 내는 가상 네트워크이다.
+ 3계층에서 VPN을 위해 터널링을 구현할 수 있는 프로토콜은 IPSec (IP Security Protocol) 이고, HTTPS, 443 Port를 이용하여 터널링을 구현할 수 있는 프로토콜은 SSL (Secure Socket Layer)이다.
■ 페이징 기법
가상기억장치 구현에서 고정되게 분할한 용량(페이지)를 주기억장치에 사상시키는 기법
외부 단편화 해결 가능, 내부 단편화 발생
할당단위 : 고정
Thrashing 문제 심각, 내부 단편화코드나 데이터 공유 논란
<->
■ 세그먼테이션 기법
가상 기억장치 내의 프로그램과 데이터를 각 세그먼트가 주기억장치에 적재될 때마다 필요한 서로 다른 크기의 세그먼트(Segment)로 분할
할당단위 : 가변
외부단편화 발생, 주기억장치가 커야하며 교체시간이 길어짐
■ 클라우드 컴퓨팅
- IaaS (Infra as a Service) : 서버, 스토리지, 네트워크를 가상화환경으로 만들어 필요시 인프라 자원을 사용할 수 있는 서비스 제공
- PaaS (Platform as a Service): 고객이 애플리케이션을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공
- SaaS (Software as a Service) : 공급자는 하나의 플랫폼을 이용해 다수의 고객에게 SW 서비스를 제공 / on-demand software라고도 불림, 소프트웨어 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하는 형태의 소프트웨어
■ 개발환경 인프라 구축 구성
- On-Premise 방식 : 외부 인터넷 망이 차단된 상태에서 인트라넷 망만을 활용하여 개발환경을 구축하는 방식
- 클라우드 방식 : 아마존, 구글, 마이크로소프트 등 클라우드 공급 서비스를 하는 회사들의 서비스를 임대하여 개발환경을 구축하는 방식
- Hybrid 방식 : On-premise + 클라우드 방식혼용
■ 데이터 베이스 종류 (세대별 DBMS)
1세대) 파일시스템 - ISAM / VSAM
2세대) 계층형 시스템(HDBMS) - IMS / System2000
▷ 데이터가 계층적, 상하종속적이다. 데이터 액세스 빠름
3)세대) 네트워크형 시스템(NDBMS) - IDS / TOTAL / IDMS
▷ 각각의 노드가 대등한 관계로 구성 (구성과 설계가 복잡)
4세대) 관계형 데이터베이스(RDBMS) - Oracle / MySQL, DB2, SQL Server, Sybase <---> NoSQL
▷ 테이브르 상관관계를 정리, 유지보수 편리, 다른 DBMS보다 자원활용이 높아 시스템 부하가 높다.
5세대) 객체지향 데이터베이스(ODBMS : Object Oriented DataBase Management System) - object store, Uni SQL
▷ 멀티미디어 데이터의 원활한 처리와 RDBMS의 비지니스형 데이터 타입만 처리되는
기본적인 제한점을 극복하기위해 만들어졌음.
■ NoSQL
[ 개념 ] 수평적 확장이 가능하며 다수 서버들에 데이터 복제 및 분산저장이 가능한 DB이다.
[ 특징 ] Schema-less / 탄력성 / 효율적 질의기능 / 캐싱
[ 저장 구조 ] Key/Value Store , Ordered Key/Value Store , Document Key/Value Store
■ 3단계 데이터 스키마 구조
- 내부단계 (Internal View) : 물리적인 기억장소와 가장 가까운 단계로서, 데이터가 물리적으로 저장되는 방법과 관련이 있다.
- 외부단계 (External View) : 사용자와 가장 가까운 단계로 사용자 개개인이 보는 자료에 대한 관점과 관련이 있다.
- 개념단계 (Conceptual View) : 내부와 외부단계의 사이에 위치하는 간적(Indrection) 또는 중간연결 (Interconnection) 단계이며, 데이터베이스 전체에 대한 추상적 설명으로 볼 수 있다.
■ 데이터 베이스 키 (Key)
릴레이션의 유일한 식별자 (유일성, 최소성 모두 만족) → 기본키 (Primary Key)
릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 하나 또는 몇 개의 속성(attribute)의 집합(유일성과 최소성 모두 만족) → 후보키 (Candidate Key)
후보키가 둘 이상 되는 경우에 기본키로 선택되지 못한 후보키들 → 대체키 (Alternate Key)
* 후보키 = 기본키 + 대체키
유일성만 있고 / 최소성이 없는 속성의 집합 → 슈퍼키 (Super Key)
한 테이블의 키 중 다른 테이블의 튜플을 식별할 수 있는 키 → 외래키 (Foreign Key)
■ 데이터 독립성
- 논리적 독립성 : 데이터베이스는 논리적 구조를 변경시키더라도 기존 응용 프로그램에 영향을 주지 않는 독립성
- 물리적 독립성 : 응용 프로그램과 논리적 구조에 영향을 주지 않고, 데이터베이스의 물리적 구조를 변경 가능한 독립성
[ 스키마의 유형 ] (외개내/사통물)
- 외부(External) 스키마 : 사용자 관점
- 개념(Conceptual) 스키마 : 통합 관점
- 내부(Internal) 스키마 : 물리저장장치 관점
■ 관계형 데이터베이스 RDBMS 주요 용어
- 릴레이션 (relation): 2차원의 테이블 (스프레드 시트와 유사)
- 레코드(record) : 릴레이션의 각 행(row)
- 튜플 (tuple) : 레코드를 좀 더 공식적으로 부르는 용어
- 애트리뷰트(attribute-속성) : 릴레이션에서 이름을 가진 하나의 열
- 도메인(domain) : 한 애트리뷰트에 나타날 수 있는 값들의 집합 (같은 타입의 원자-automic 값들의 집합)
프로그래밍 언어의 데이터 타입과 유사하며, 같은 도메인이 여러 애트리뷰에서 사용될 수 있음
- 차수 (degree) : 한 릴레이션에 들어있는 애트리뷰트의 수, 유효한 릴레이션의 최소 차수는 1
- 카디널리티(cardinality) : 릴레이션 튜플의 수 , 유효한 릴레이션은 카디널리티 0을 가질 수 있고 시간에 따라 계속 변함
* - 튜플 (Tuple) 의 수 = 카디널리티(Cardinality) = 기수 = 대응수 = 행
* - 속성(Attribute) = 디그리 (degree) = 차수 = 열
- 릴레이션 인스턴스 (Relation Instance) : 구체적인 데이터 값을 갖고 있는 것
- 릴레이션 스키마
■ 데이터 무결성
데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.
[ 종류 ]
- 개체 무결성 (Entity Integrity)
- 참조 무결성 : 외래키 값은 외래키가 기본키로 사용된 릴레이션과 참조 무결성 제약을 가진다.
- 도메인 무결성(영역 무결성) : 특정 속성 값이 미리 정의된 규칙 내에서 데이터로 존재해야 한다. / 테이블 내에 속성(칼럼)에 대한 무결성 규칙이다. / 동일한 속성의 값을 비교하기 위해서는 도메인 무결성이 필히 지켜져야한다.
- 사용자 정의 무결성 (User Defied Integrity)
■ 데이터 베이스 관리 시스템 ( 정의 기능 / 조작 기능 / 제어 기능)
데이터 무결성 / 일관성 / 회복성 / 보안성 / 효율성
* 무결성 제약조건 : 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미
갱신, 삽입, 삭제 등의 연산 수행 후에도 데이터가 중복되거나 누락되지 않도록 정확성 / 일관성이 보장되는 특성이다.
* 데이터 무결성을 보장할 수 있는 SQL 명령어 → COMMIT, ROLLBACK, SAVEPOINT
■ ERD (E-R Diagram)
현실세계 사물들과 그들의 관계를 구조적으로 형상화하기위해 핵심 엔티티와 관계를 식별하는 데이터 베이스 설계작업 단계(ERD)이다.
+ 현실세계에 존재하는 데이터와 그들간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기위한 모델이다.
+ 요구사항으로부터 얻어낸 정보들을 개체, 속성, 관계로 기술한 모델이다.
- ERD 최적화 : 테이블정의 / 정규화 수행
■ 데이터 베이스 기본연산 : CRUD (CREATE (insert) - READ (select) - UPDATE - DELETE)
■ 고급 데이터베이스
- 데이터 웨어 하우스 (Data Warehouse): 급증하는 다량의 데이터를 효과적으로 분석하여 정보화하고 이를 여러 계층의 사용자들이 효율적으로사용할 수 있도록 한 데이터 베이스
- 데이터 마트 (Data Mart) : 전사적으로 구축된 데이터 웨어하우스로 특정 주제나 부서 중심으로 구축된 소규모 단일 주제의 데이터 웨어 하우스를 말함
- 데이터 마이닝 (Data Mining): 데이터 웨어하우스에 저장된 데이터 집합에서 사용자의 요구에 따라 유용하고 가능성 있는 정보를 발견하기 위한 기법
- OLAP (OnLine Analytical Processing) : 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사결정에 활용하는 방식
- OLTP (Online Transaction Processing) : 온라인 업무 처리 형태의 하나로 네트워크상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 검색하는 등의 단위 작업을 처리하는 방식
■ 관계대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
[ 순수관계 연산자 ]
[ 일반집합 연산자 ]
■ 관계해석 : 수학의 술어해석(Predicate Calculus)에 기반을 두고 있으며 원하는 정보가 무엇이라는 것만 정의하는 비절차적인 언어
■ 트랜잭션 (Transaction)
[ 개념 ] 데이터베이스의 상태를 변화시키기 위해서 수행하는 최소 작업의 단위
[ 특징 ] [ 원 일 독 지 - ACID ] - 원자성 / 일관성 / 독립성 / 지속성
[ 트랜잭션 상태 전이도 ]
활동상태(Active) - 부분 완료상태 (Partially Committed) - 완료상태 (Committed) - 실패상태 (Failed) - 철회상태 (Aborted)
■ 데이터베이스 장애 유형 ( 트랜잭션의 ACID를 지키지 못하는 상황 )
트랜잭션 장애 / 시스템 장애 / 디스크 장애 / 사용자 장애
■ 데이터베이스의 회복 구성요소
- REDO : 데이터베이스 내용 자체가 손상된 경우 가장 최근의 복제본을 적재 후 이후 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스 회복 기법의 구성요소
- UNDO : 데이터베이스 내용 자체는 손상되지 않았지만 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우 모든 변경 내용을 취소하는 데이터베이스 회복 기법의 구성요소
■ 데이터베이스의 병행제어 (동시성 제어)
다중 사용자 환경을 지원하는 데이터베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
- 직렬성(Serializability) : 다중의 트랜잭션이 동시에 병행수행 되더라도 개별 트랜잭션이 차례대로 수행되는 것과 결과가 같은 데이터베이스의 일관성을 보장하는 특성이다.
[ 기법 ]
로킹(데이터베이스 관리에서 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 제어하는 동시성 제어기법) / 검증기법 / 타임스탬프기법 (시스템 계수기, 논리적 계수기)
■ 네크워크 구분
- LAN (Local Area Network) : 근거리 네트워크
- CAN : 캠퍼스 단위 통신망
- WAN (Wide Area Network) : 광역 통신망
- Intranet (인트라넷-내부망)
■ Ad-hoc Network (애드훅 네트워크)
이동 호스트로 이루어진 통신망으로 이동 노드들은 하나의 라우터로 동작하며 동적으로 경로를 설정할 수 있다.
즉, 자율적으로 구성되는 기반구조가 없는 네트워크
■ QoS (Quality of Service)
네트워크에서 데이터의 종류에 따른 우선 순위에 따라 데이터를 전송하거나 특정 통신을 위한 네트워크 대역폭을 예약하고 일정한 속도로 통신할 수 있는 기술
■ OSI 7계층 모델 [ 물 데 네 전 세 표 응 ]
7계층 - 응용 - 서비스 제공 - FTP / POP / SMTP / Telnet / HTTP / TFTP / SNMP / DNS / DHCP
6계층 - 표현 - 포맷 변환 - JPEG / MPEG / SMB - 코드변환, 데이터 암호화 / 구문검색/ 문맥관리
5계층 - 세션 - 응용제어 - SSH / TLS
4계층 - 전송 - 데이터 전송 - TCP / UDP - 주소설정 / 다중화 / 오류제어 / 흐름제어
3계층 - 네트워크 - 경로선택 - IP / ICMP / IGMP / ARP / RARP - 경로설정(Routing) / 트래픽제어, 패킷 정보 전송
2계층 - 데이터 링크 - 에러 관리 - MAC / LLC / PPP - 흐름제어/ 프레임동기화 / 오류제어 / 순서제어
1계층 - 물리 - 물리적 접속제어 - RS232C (어렵고 복잡해보이는거는 물리계층이 많다.)
* IP (Internet Protocol) : 전송할 데이터에 주소 지정 및 경로 설정을 하는 프로토콜, 비연결형 데이터 주소 지정 및 경로 설정 (IP 주소는 전 세계 컴퓨터에 부여되는 유일한 식별자이다.)
* ICMP (Internet Control Message Protocol) : IP와 조합하여 통신 중 발생하는 오류의 처리와 전송 경로 변경등을 위한 제어 메시지 관리 역할, 헤더는 8Byte로 구성
* IGMP (Internet Group Management Protocol) : 멀티 캐스트를 지원하는 호스트나 라우터 사이에서 멀티 캐스트 그룹 유지를 위해 사용
* ARP (Address Resolution Protocol) : 호스트 IP 주소를 -> 네트워크 접속장치의 물리적 주소로 (MAC Address) 변환시켜준
* RARP (Reverse Address Resolution Protocol) : 네트워크 접속장치의 물리적 주소 -> 호스트 IP 주소로 변환
* DHCP (Dynamic Host Configuration Protocol) : 네트워크 상에서 동적으로 IP주소 및 기타 구성정보등을 부여/관리하는 프로토콜로서, PC수가 많거나 PC 자체 변동사항이 많은경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용가능하고, IP를 자동으로 할당해주기 때문에 IP 충돌을 막는데 사용하는 프로토콜
* SNMP (Simple Network Management Protocol) : TCP/IP 네트워크 관리 프로토콜 : TCP/IP 기반의 네트워크에서 네크워트 상의 각 호스트에서 정기적으로 여러 가지 정보를 자동적으로 수집하여 네트워크 관리를 하기 위한 프로토콜
*TCP / UDP
- 헤더 구조 : 송/수신자 포트번호, 응답번호, 예약 필드, Checksum(헤더와 데이터의 오류검출), 제어비트, 순서번호, 데이터 오프셋, 윈도우 크기, 긴급위치
TCP | UDP |
- 신뢰성 있는 전송 (CRC 체크와 재전송 기능) - 대표 서비스 FTP, Telnet, Http, SMTP, POP, IMAP |
- 신뢰성 있는 전송 X - 대표서비스 SNMP, DNS, TFTP, NFS, NETBIOS, 인터넷 게임/방송/증권 등 |
* UDP (User Datagram Protocol) 추가설명
1980년 데이빗 리드가 설계, 현재 IETF의 RFC 768로 표준으로 정의되어 있으며, TCP와 함께 데이터그램으로 알려진 단문 메시지를 교환하기 위해 사용되는 것
■ OSI 전송 계층 별 전송단위
5계층 이후 - 데이터 (메시지)
4계층 - 세그먼트
3계층 - 패킷
2계층 - 프레임
1계층 - 비트
■ TCP/IP 프로토콜 [ 응 전 인 네 ] ~~> 이건 반대로
응용 계층 (OSI - 5, 6, 7) - 개발자 구현계층
전송 계층 (OSI - 4) - 송신할 패킷 분할, 수신시 조합 수행 , 데이터 재전송 요청 및 흐름제어
인터넷 계층 (OSI - 3) - 데이터 전송 경로 설정, 라이팅 작업 수행 , 여기서 사용하는 주소를 IP라고함.
네트워크 액세스 계층 (OSI - 1, 2 ) - 물리적 통신장비를 식별하기의해 MAC Address 사용
*TCP/IP 프로토콜이란 TCP와 IP 프로토콜을 지칭하는 것이 아니라 UDP, ICMP, ARP, RARP 등과 관련된 프로토콜을 통칭한다.
■ 네트워크 주요 장비
- 허브 : 허브는 하나의 네트워크로 수신된 정보를 여러대의 컴퓨터로 송신처리하기 위한 장비 (더미허브 / 스위칭 허브)
- 리피터 (Repeater) : 물리계층(1계층)장비 / 디지털 신호를 증폭시켜주는 역할을 하여 신호가 약해지지 않고 컴퓨터로 수신되도록 하는 장비
- 브리지, 스위치 : 데이터링크(2계층)장비로, 두 시스템을 연결하는 네트워킹 장비, 두개의 LAN을 연결하여 훨씬 더 큰 LAN을 만들어준다.
* 스위치 : 2계층 장비로서 동일 네트워크 내에서 출발지로 들어온 데이터 프레임을 목적지 MAC주소 기반으로 빠르게 전달하는 네트워크 장비
- 라우터 (Router) : 네트워크 계층의 장비(3계층) 망 연동 장비, PC 등의 로컬 호스트가 LAN에 접근할 수 있도록 한다, 라우팅 프로토콜은 경로 설정을 하여 원하는 목적지 까지 지정된 데이터가 안전하게 전달되도록 한다.
+ 3계층 데이터 패킷을 발신지에서 목적지까지 전달하기 위해 최적의 경로를 지정하고 이 경로를 따라 데이터 패킷을 다음 장치로 전달하는 네트워크 장비
- 게이트웨이 (Gateway) : 전 계층(1~7층) 의 프로토콜 구조가 전혀 다른 네트워크의 연결을 수행함
■ 라우팅 알고리즘
- 거리 벡터 알고리즘 (Distance vector algorithm) : 라우터와 라우터간에 최단경로 스패닝트리를 찾고 안되면 다음경로를 다시 찾는다. (계산이 단순한편)
- 링크 상태 알고리즘 (Link State algorithm) : 라우터와 라우터 간에 모든 경로를 파악하고 대체 경로를 사전에 찾아두는 방식
■ 라우팅 프로토콜
- RIP (Routing Information Protocol) : 가장 널리 사용, 소규모, 최대홉수 15제한, 최초의 라우팅 프로토콜, 거리벡터 알고리즘 사용, 30초 주기 전체 라우팅 정보 갱신, 변화업데이트 시 많은 시간 소요, 라우팅 루프 발생 가능
- IGRP (Interior Gateway Routing Protocol) : RIP의 단점을 보안하기 위해 시스코에서 개발, 네트워크 상태고려 라우팅, 중규모 네트워크에 적합
- OSPF (Open Shortest path First Protocol) : 대규모 네트워크 사용, 변화가 생길경우 변화된 정보만 네트워크 내 모든 라우터에 알리며, RIP에 비해 홉수 제한이 없음 , 링크상태 알고리즘 사용, 토폴로지에 대한 정보가 전체 라우터에서 동일하게 유지
(2020.3회 실기 출제)
- BGP (Border Gateway Protocol) : 자율 시스템간 (AS) 라우팅 프로토콜, EGP 단점 보안하기위해 개발됨, 규모가 큰 네트워크 상호연결, 대형사업자 (ISP) 간의 상호 라우팅
■ 네트워크 프로토콜의 기능
단편화 / 재조립 / 캡슐화 / 연결제어 / 오류 제어 / 동기화 / 다중화 / 주소 지정
■ NAT (Network Address Translator) : IPv4와 IPv6가 공존하고 두 개의 주소 체계를 변환하여 사용하고 있음. 이를 담당하는 것
■ IPv4
- 유멀브 (유니캐스트 / 멀티캐스트 / 브로드캐스트)
■ IPv6
- 유멀애 (유니캐스트 / 멀티캐스트 / 애니캐스트)
- IPv4 주소부족 문제를 해결하기 위해 개발
- 16비트씩 8부분, 총 128비트
- 각 부분 16진수로 표현, 콜른(:)으로 구분
- 인증성, 기밀성, 데이터 무결성의 지원으로 보안문제를 해결
■ 네트워크 알고리즘
- 패킷 스위칭
- x.25 : 통신을 원하는 두 단말장치가 패킷 교환망을 통해 패킷을 원할히 전달하기위한 프로토콜/ 1~3계층을 담당
+ 데이터 송수신의 신뢰성을 확보하기 위해 양자 간 통신 연결을 확립해 나가는 프로세스
- 서킷 스위칭 : 패킷 스위칭과 달리 네트워크 리소스를 특정 사용층에 독점하도록 하는 것을 서킷 스위칭이라 부름.
네트워크를 독점적으로 사용해서 전송이 보장(Guranteed) 된다.
■ 위상에 따른 분산 컴퓨팅 구조 분류 (위상 = topology)
- 완전 연결 구조 (Fully Connected)
각 노드가 시스템 내 모든 다른 노드와 직접 연결 = 메시 네트워크
- 부분 연결 구조 (Partially Connected)
- 계층 구조 (Hierarchy)
트리 형태로 구성
- 성형 구조 (Star)
중앙 컴퓨터와 직접 연결되어 응답 빠르고, 통신비용 적음/ 중앙 컴퓨터 장애 발생시 전체 시스템 마비되는 위상구조
중심 노드에서 병목현상 발생
- 환형 구조 (Ring)
단방향, 양방향 통신 방법 있음 / 단일연결, 이중연결 방식이 존재
- 다중 접근 버스 구조 (Multi-access Bus)
공유되는 하나의 버스가 존재함 / 버스회선이 고장나면 네트워크가 분할됨
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 책 리뷰] - 이기적 & NCS1000 (0) | 2020.11.22 |
---|---|
[정보처리기사_실기] Chapter 12. 제품 소프트웨어 (0) | 2020.10.12 |
[정보처리기사_실기] Chapter 10. 프로그래밍 언어 활용 (0) | 2020.10.11 |
[정보처리기사_실기] Chapter 9. 소프트웨어 개발 보안 구축 (0) | 2020.10.11 |
[정보처리기사_실기] Chapter 8. SQL 응용 (0) | 2020.10.11 |