본문 바로가기

study/정보처리기사

[정보처리기사] 프로그래밍 언어 활용 > 응용 SW 기초 기술 활용

프로그래밍 언어 활용 > 응용 SW 기초 기술 활용

 

1. 운영체제 기초 활용

(1) 운영체제의 종류

(2) 메모리 관리

(3) 프로세스 스케줄링

(4) 환경 변수

(5) 쉘 스크립트

 

2. 네트워크 기초 활용

(1) 인터넷 구성의 개념

(2) 네트워크 7계층

(3) IP

(4) TCP/UDP

 

3. 기본 개발환경 구축

(1) 웹 서버

(2) DB 서버

(3) 패키지


1. 운영체제 기초 활용

(1) 운영체제의 종류

 

  • 개념

- 운영체제는 인터페이스를 제공해주는 소프트웨어이다.

- 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 한다.

 

 

  • 특징

- 운영체제는 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로서 사용자에게 편리성을 제공한다.

- 운영체제는 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당한다. 

 

 

  • 종류

- 윈도우즈 계열 : 윈도우즈는 MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 응용 프로그램, 마이크로소프트사 개발

 

- 윈도우즈 계열 운영체제 특징

-- 그래픽 사용자 인터페이스(GUI) 제공 : 마우스로 아이콘이나 메뉴 선택 가능

-- 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영 체제가 각 작업의 CPU 이용시간을 제어

-- 자동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능 제공

-- OLE(Object Linking and Embedding) 사용 : 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공

 

 

- 리눅스/유닉스 계열 : 초기 운영체제는 Multics이고, C 언어로 재이식되어 대중화 기반을 마련

 

- 유닉스 계열 운영체제 특징

-- 대화식 운영체제 기능 제공 : 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공

-- 다중 작업 기능 제공 : 다수의 프로세스가 CPU와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공

-- 다중 사용자 기능 제공 : 키보드와 마우스같은 여러 대의 단말이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공

-- 이식성 제공 : 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능

-- 계층적 트리 구조 파일 시스템 제공 : 유닉스는 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이

 

- 리눅스가 유닉스와 다른 점

-- 유래 : 리눅스는 유닉스의 호환 커널이다. 

-- 배포 : 자유롭고 재배포가 가능하게 만든 것이 리눅스

-- 비용 : 리눅스는 대부분 무료, 유닉스는 유료

-- 사용자 : 리눅스는 일반 사용자 대상, 유닉스는 대형 시스템 관리자 대상

-- 사용자 편의성 : 리눅스는 GUI 제공 + 파일 시스템 지원 + BASH 셀 사용 , 유닉스는 커맨드기반(GUI제공하는 추세)+ 파일 시스템 제공

-- 활용 : 리눅스는 스마트폰이나 태블릿 등 다양하게, 유닉스는 인터넷 서버나 워크스테이션 등 다양한 대형 시스템에 사용

 

- 맥 운영체제

-- 애플이 매킨토시용으로 개발한 그래픽 사용자 인터페이스 운영체제

 

- 안드로이드 운영체제

-- 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트 등)을 포한하고 있는 운영체제

-- 리눅스 커널 위에서 동작

-- 자바와 코틀린 언어로 응용프로그램 작성

-- 안드로이드 소프트웨어 개발 키트(SDK)를 통해 응용 프로그램을 개발하는 데 필요한 각종 도구와 API 제공

 


1. 운영체제 기초 활용

(2) 메모리 관리

 

  • 운영체제에서 메모리 관리 개념

- 운영체제는 중앙 처리 장치, 메모리, 스토리지, 주변 기기 등을 적절히 관리한다.

- CPU가 프로그램을 읽어서 연속적으로 동작해야 하므로 메모리 관리의 역할이 중요하다.

 

 

  • 메모리 관리 기본 사항

- 가상메모리 : 각 프로그램에 실제 메모리 주소가 아니라 가상의 메모리 주소를 부여한다. 가상메모리가 필요한 이유는 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기에 한계가 있기 때문이다. 실제 사용하게 되는 메모리가 할당 된 메모리보다 작다는 점을 이용한 공간 분리 개념이다.  CPU는 가상 메모리를 사용하고 데이터를 읽고 쓸때 실제 물리 주소로 바꿔주면 된다. 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라 한다. 가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다.

 

- 메모리 관리 장치(MMU) : CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품이다. 가상 메모리 주소를 실제 메모리 주소로 변환한다. 메모리 보호, 캐시 관리, 버스 중재 등의 역할을 담당한다.

 

- 메모리 관리자 : 기억 장치의 어느 부분이 사용 중인지 또는 아닌지를 조사하여 프로세스에게 필요할 때마다 기억 장치를 할당 후 회수하는 작업 수행. 실행 파일 심볼의 재배치 주소를 프로세스의 논리 주소로 연결시키는 작업 수행

 

 

  • 메모리 관리 기법

- 메모리는 고가의 자원이기 때문에 이를 관리하는 것이 중요함

 

- 메모리 기법의 종류

-- 반입 기법 : 메모리로 적재 시기 결정(When) , 주기억 장치에 적재할 다음 프로세스의 반입시기를 결정하는 기법 (ex. 요구 반입 기법, 호출 반입 기법) 

-- 배치 기법 : 메모리로 적재 위치 결정(Where) , 디스크에 있는 프로세스를 주기억 장치의 어느 위치에 저장할 것인지 결정하는 기법 (ex. 최초 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit))

-- 할당 기법 : 메모리로 적재 방법 결정(How) , 실행해야 할 프로세스를 주기억 장치에 어떤 방법으로 할당할 것인지 결정하는 기법 (ex. 연속 할당 기법, 분산 할당 기법)

-- 교체 기법 : 메모리로 적재 대상 결정(Who) , 재배치 기법으로 주기억 장치에 있는 프로세스 중 어떤 프로세스를 제거할 것 인지를 결정하는 기법 (ex. 프로세스의 Swap In/Out, FIFO, LRU, LFU)

 

 

  • 메모리 반입 기법

- 요구 반입 기법 : 다음에 실행될 프로세스가 참조 요구가 있을 경우에 적재하는 기법이다.

- 호출 반입 기법 : 시스템의 요구를 예측하여 미리 메모리에 적재하는 방법으로 요구되는 페이지 이외 다른 페이지도 함께 적재한다. 

 

 

  • 배치 기법

- 최초 적합(First Fit) : 프로세스가 적재될 수 있는 가용 공간 중에서 첫 번째 분할에 할당하는 방식

- 최적 적합(Best Fit) : 가용 공간 중에서 가장 크기가 비슷한 공간을 선택하여 프로세스에 적재하는 방식(공백 최소화 장점)

- 최악 적합(Worst Fit) : 프로세스의 가용 공간들 중에서 가장 큰 공간에 할당 하는 방식

 

 

  • 메모리 할당 기법

- 메모리 연속 할당 기법 : 실행을 위한 각 프로세스를 주기억 장치에 연속으로 할당하는 기법으로 단일 분할 할당 기법과 다중 분할 할당 기법이 있다.

 

- 메모리 분산 할당 기법 : 하나의 프로세스를 여러 개의 조각으로 나누어 주기억 장치 공간 내 분산하여 배치하는 기법, 주로 가상기억 장치에서 사용한다. 페이징, 세그멘테이션, 페이징/세그멘테이션 혼용 기법이있다.

-- 페이징 기법 : 가상 메모리를 일정한 크기로 나눈 블록인 페이지로 분할하여 주기억 장치의 분산된 공간에 적재. 페이지 테이블에서 실제 메모리 기준 주소를 찾고 변위를 더해 물리 메모리 주소 결정

(장점) 공유 페이지 사용, 메모리 활용을 통한 다중 처리 프로그래밍 가능

(단점) 페이지 사상 하드웨어 비용 소요, 속도 저하, 내부 단편화 현상

 

-- 세그멘테이션 기법 : 가상 메모리를 서로 크기가 다른 논리적 블록 단위인 세그멘트로 분할. 분할 형태가 배열이나 함수와 같은 논리적인 다양한 크기의 가변적인 크기로 관리. 세그멘트 테이블은 기준(base)와 한계(limit)로 메모리의 시작 주소와 길이 확인

(장점) 가변적인 데이터 구조와 모듈 처리, 자원 효율적 이용

(단점) 외부 단편화 현상

 

-- 페이징/세그멘테이션 혼용 기법 : 외부 및 내부 단편화 최소화를 위해서 혼용 기법 개발, 하나의 세그멘트를 정수 배의 부분 페이지로 다시 분할 하는 방식이다. 세그멘트가 너무 가변적인 길이이고 때로는 그 길이가 너무 커서 주기억 장치에 적재할 수 없는 문제점을 해결하였다.

 

 

  • 교체 기법

- 교체 기법 유형

-- FIFO(Fisrt In First Out) : 가장 오래 된 페이지부터 우선 교체, 큐에 의해 메모리의 모든 페이지 관리

-- LRU(Least Recently Used) : 오랫동안 사용하지 않은 페이지 선택하여 교체

-- LFU(Least Frequently Used) : 각 페이지마다 참조 횟수에 대한 계수기가 있으며 가장 적은 수를 가진 페이지 교체  

 

 

  • 메모리 단편화

- 메모리 단편화는 분할된 주기억 장치에 프로세스를 할당, 반납 과정에서 사용되지 못하고 낭비되는 기억장치가 발생하는 현상

- 내부 단편화와 외부 단편화가 있다.

- 내부 단편화 : 분할된 공간에 프로세스를 적재한 후 남는 공간, 고정 분할 할당 방식 또는 페이징 기법 사용 시 발생하는 메모리 단편화, 해결방안으로는 Slab Allocator*와 통합*,압축* 이 있다.

- 외부 단편화 : 할당된 크기가 프로세스 크기보다 작아서 사용하지 못하는 공간, 가변 분할 할당 방식 또는 세그멘테이션 기법 사용 시 발생하는 메모리 단편화, 해결 방안으로는 버디 메모리 할당과 통합, 압축이 있다.

 

 

  • 페이징 기법의 문제 및 해결방안

- 페이징 기법의 문제점, 스레싱(Thrasing) : 어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 실제 처리 시간보다 페이지 교체시간이 더 많은 현상이다. 페이지 부재가 계속 증가하여 기억 장치 접근 시간이 증가한다. 오류율이 클수록 스레싱이 많이 발생한 것. 스레싱으로 전체 시스템의 성능과 처리율이 저하된다. 

 

- 페이징 기법의 문제점 해결방안

-- 워킹세트 : 각 프로세스가 많이 참조하는 페이지들의 집합을 주기억 장치 공간에 계속 상주하게 하여 빈번한 페이지 교체 현상을 줄이는 것.

(장점) 멀티프로그래밍 정도를 높일 수 있고(Page Hit 증가), CPU 활용률을 최적화할 수 있음

(단점) 워킹 세트 추적관리가 복잡. 워킹 세트 크기 설정의 모호함

 

-- 페이지 부재 빈도(PFF, Page Fault Frequency) : 페이지 부재율의 상한,하한을 정해서 직접적으로 페이지 부재율을 예측하고 조절하는 기법. 페이지 부재비율에 따라 페이지 프레임 개수를 조절. 즉 프레임 개수가 증가할 수록 부재비율이 줄어들 때, 부재 비율의 상한과 하한에 걸리는 적정영역에 해당하는 프레임 개수로 설정한다.

(장점) 페이지 부재 발생 시 실행하기 때문에 부하가 적고, 직접적으로 페이지 부재율을 조절할 수 있다.

(단점) 프로세스를 중지시키는 과정이 발생하고, 페이지 참조가 새로운 지역성으로 이동할 수 있음.

 

*Slab Allocator, 통합, 압축, 버디 메모리 할당

더보기

Slab Allocator, 통합, 압축, 버디 메모리 할당

Slab Allocator : 페이지 프레임을 할당받아 공간을 작은 크기로 분할하고 메모리 요청 시 작은 크기로 메모리 할당/해제

통합 : 인접한 단편화 영역을 찾아 하나로 통합

압축 : 메모리의 모든 단편화 영역을 하나로 압축

버디 메모리 할당 : 요청한 프로세스의 크기에 가장 알맞는 크기를 할당하기 위해 메모리를 2n의 크기로 분할하여 메모리를 할당


1. 운영체제 기초 활용

(3) 프로세스 스케줄링

 

  • 프로세스

- 프로세스 개념 : 프로세스란 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행 중인 프로그램을 의미하며, 작업 또는 태스크라고도 한다. 

 

- 프로세스 상태 : 생성, 준비, 실행, 대기, 완료의 구분되는 상태 변화를 겪는다.

-- 생성 상태 : 사용자에 의해 프로세스가 생성된 상태

-- 준비 상태 : CPU를 할당받을 수 있는 상태, 준비리스트(각각 우선순위를 부여하여 가장 높은 우선순위를 갖는 프로세스가 다음 순서에 CPU를 할당 받음)

-- 실행 상태 : 프로세스가 CPU를 할당받아 동작 중인 상태

-- 대기 상태 : 프로세스 실행 중 입출력 처리 등으로 인해 CPU를 양도하고 처리 완료까지 대기 리스트에서 기다리는 상태, 대기리스트(우선순위 없음)

-- 완료 상태 : 프로세스가 주어진 시간 내에 완전히 수행을 종료한 상태

 

- 프로세스 구성 : 사용자 작성 코드, 사용자 사용 데이터, 스택, 프로세스 제어 블록으로 구성된다.

-- 스택 : 함수 호출 및 인자 값 전송에 사용

-- 프로세스 제어 블록(PCB) : 운영체제가 프로세스 관리를 위해 필요한 자료를 담고 있는 자료 구조, PCB는 프로세스 생성 시 만들어지고, 메인 메모리에 유지되며, 운영체제에서 한 프로세스의 전체를 정의한다. 

 

 

  • 프로세스 상태 전이

-프로세스 상태 전이 : 디스패치, 타이머 런 아웃, 블록, 웨이크 업, 스왑 인, 스왑 아웃으로 구성되어있다.

-- 디스패치 : 프로세스가 [준비 → 실행] 전이, 준비 상태의 여러 프로세스 중 실행 될 프로세스를 선정 후 CPU 할당

-- 타이머 런아웃 : 프로세스가 [실행 → 준비] 전이, CPU를 할당 받은 프로세스는 지정 시간 초과되면 PCB 저장, CPU 반납 후 다시 준비 상태로 

-- 블록 : 프로세스가 [실행 → 대기] 전이, 지정된 할당 시간 초과하기 전에 입출력과 같은 기타 사건이 발생하면 CPU 스스로 반납 후 대기 상태로 

-- 웨이크 업 : 프로세스가 [대기 → 준비] 전이, 입출력이 종료되면 대기 상태에 있던 프로세스가 준비 상태로

-- 스왑 인 : 프로세스가 [지연 준비 → 준비] 전이 or [지연 대기 → 대기] 전이, 프로세스에게 기억장치가 다시 할당될 경우

-- 스왑 아웃 : 프로세스가 [준비 → 지연 준비] 전이 or [대기 → 지연 대기] 전이, 프로세스가 기억장치를 잃은 경우

 

 

  • 프로세스 스케줄링

- CPU를 사용하려고 하는 프로세스들의 우선순위를 정하는 작업

- 오버헤드, 응답시간, 반환시간, 대기시간 최소화 목적

 

- 선점형 스케줄링 알고리즘 : 우선순위가 높은 프로세스가 현재 프로세스를 중단하고 선점하는 방식

-- 라운드 로빈(Round Robin): 모든 프로세스에 균등하게 CPU 점유시간을 주는 것. 프로세스가 주어진 시간내에 처리 완료를 못하면 준비 큐 리스트 맨 뒤로 보내짐.

-- SRT(Shortest Remaining Time First) : 짧은 수행 시간 프로세스 우선 수행, 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 프로세스가 선점됨

-- 다단계 큐(Multi level Queue) : 작업들을 여러 종류 그룹으로 분할, 여러개 큐를 이용해서 상위단계 작업에 의해 하위 단계 작업들이 선점당함. 각 큐는 독자적으로 스케줄링 가짐

-- 다단계 피드백 큐(MFQ, Multi-level Feedback Queue): 큐마다 다른 시간 할당량, FIFO + 라운드 로빈 개념, 새로운 프로세스는 높은 우선순위, 실행시간이 길어질 수록 낮은 우선순위, 마지막 단계는 라운드 로빈 방식 적용

 

- 비선점형 스케줄링 알고리즘 : 한 프로세스가 CPU를 할당 받으면 끝날 때까지 다른 프로세스는 점유 불가

-- 우선순위 : 프로세스 우선순위 별로 CPU 할당

-- 기한부 : 요청에 명시된 시간내 처리 보장

-- FCFS(Fisrt Come First Service) : FIFO랑 같음, 도착 순서대로 처리

-- SJF(Shortest Job First) : 가장 작은 서비스 시간을 갖는 프로세스가 종료까지 자원 선점

-- HRN(Highest Response Ratio Next) : 대기 중인 프로세스 중 응답률((대기시간+서비스시간)/서비스시간)이 높은 것을 선택, SJF의 문제점인 기아현상(시스템 부하로 준비 큐의 프로세스가 무한정 기다리는 현상)을 최소화하는 기법. 쉽게 말해 오래 기다린 프로세스가 먼저 처리되도록 하는 것

 

 

  • 환경 변수

- 환경 변수 개념 : 프로세스가 컴퓨터에서 동작하는 방식에 많은 영향을 미치는 동적 값들의 모임

 

- 환경 변수 보기 : 변수들은 명령 줄 위에서 .BAT 확장자를 가지는 일괄 처리 파일 또는 스크림트 안에서 쓰일 수 있는데, 변수 이름 앞에 특별한 기호를 놓아서 참조한다.

-- echo %path% : 도스 또는 윈도우즈 에서 프로그램을 찾는 기본 경로를 볼 때

-- echo $path : 다른 스크립트와 쉘 환경에서 사용. 많은 유닉스 쉘에선 ($)를 사용한다.

 

- 환경 변수 설정 : 생략

 

 

  • 쉘 스크립트

- 쉘 스크립트는 쉘이나 명령 줄 인터프리터에서 돌아가도록 작성되었거나 운영체제를 위해 사용되는 스크립트

- - 운영체제를 제어하기 위한 방법은 CLI(Command Line Interface)와 GUI(Graphic User Interface)가 있다.

 


2. 네트워크 기초 활용

(1) 인터넷 구성의 개념

 

- 인터넷은 컴퓨터로 연결하여 TCP/IP라는 통신 프로토콜을 이용해서 정보를 주고 받는 컴퓨터 네트워크

- '네트워크의 네트워크', International Network → Internet

 

- 구성 : 종단 시스템, 통신망, 주소, 프로토콜, ISP

-- 종단 시스템 : 사용자 Host, 서버, 통신 링크, 처리량 등

-- 통신망 : LAN; local Area Network , WAN; Wide Area Network

 

-- 프로토콜 : 두 개체 간의 데이터 교환을 원할히 하기위한 일종의 통신규약, 기본요소로는 구문, 의미, 타이밍이 있다.

-- 인터넷 프로토콜(IP; Internet Protocol) : 송신 호스트-수신 호스트 간 패킷 교환 네트워크에 있어서 사용하는 정보 위주의 규약(프로토콜)이며, OSI 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다. 현재 인터넷에서 사용하는 표준 프로토콜을 4번째 버전인 IPv4이지만, 주소 공간 고갈 문제를 겪고 있어 6번째 버전인 IPv6가 대중화되고 있다.

-- 전송 제어 프로토콜(TCP; Transmission Control Protocol) : TCP는 IP의 핵심 프로토콜 중 하나. TCP는 근거리통신망이나 인트라넷, 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간의 일련의 옥텟(컴퓨팅에서 8개의 비트가 한데 모인 것)을 안정적으로 순서대로, 에러 없이 교환할 수 있게한다. 

 

- 인터넷 주소체계

-- IP 주소 방식 : 인터넷상에 존재하는 호스트이 서버의 위치를 지정해주는 방식, 점으로 구분되는 십진수 값은 1Byte로, 총 4Byte(32bit 주소체계, IPv4기준)로 구성됨

-- 도메인 주소 방식(DNS 방식) : 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나, 그 반대 변환을 수행할 수 있도록 개발됨. 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호인 IP로 변환


2. 네트워크 기초 활용

(2) 네트워크 7계층

 

- OSI(Open System Interconnection) 7계층

-- ISO에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델

-- 각 계층은 독립적 구성. 각 계층은 하위 계층의 기능을 사용하여 상위 계층에 기능을 제공한다.

-- 1 계층인 물리 계층부터 7계층인 애플리케션 계층에 이르는 구성

-- 계층을 지날 때마다 헤더가 붙는데, 해당 계층의 기능과 관련된 제어 정보 포함

 

- 1 계층 (물리 계층) : OSI 계층을 타고 전달된 (비트열의)데이터를 전기적인 신호(bit)로 변환시켜 통신, 혹은 전기적 신호를 비트열의 데이터로 복원시켜 통신.

- 2 계층 (데이터 링크 계층) : 물리계층에서 발생할 수 있는 오류를 검출. 시스템 간에 오류 없는 데이터 전송을 위해 상위 계층에서 받은 패킷을 프레임으로 변환하여 물리 계층으로 전송.

- 3 계층 (네트워크 계층) : 패킷을 네트워크를 통해 발신지에서 목적지까지 전달하기 위해, 라우팅 프로토콜을 사용하여 최적의 경로 선택. IP가 호스트의 주소 지정과 패킷 분할 및 조립기능 담당.

- 4 계층 (전송 계층) : TCP(연결 지향),UDP(비연결 지향)로 구성되어 오류 제어, 흐름 제어, 혼잡 제어 등을 담당하며, 두 시스템 간에 신뢰성 있는 데이터를 전송.

- 5 계층 (세션 계층) : 통신을 위한 세션 확립, 유지, 중단. 통신 중 연결이 끊어지지 않도록 유지시켜주는 역할 수행

- 6 계층 (표현 계층) : 데이터의 효율과 보안을 위해 압축과 암호화를 수행하고, 전송을 위한 포맷으로 변경 수행

- 7 계층 (응용 계층) : 응용 프로세스 간의 정보 교환, 파일 전송 등의 서비스 제공

 


2. 네트워크 기초 활용

(3) IP

 

- IP(Internet Protocol)의 개념 : 송신 및 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주 규약, OSI 3계층인 네트워크 계층에서 호스트의 주소 지정과 패킷 분할 및 조립기능을 담당한다. 신뢰성이 없는 비연결형 데이터그램 프로토콜

 

- IP의 특징

-- 비신뢰성, 비연결성 : 비신뢰성은 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다는 뜻. 비연결성은 데이터 전송 전에는 연결을 설정하지 않는다는 것을 의미

-- 에러제어와 흐름제어가 없음 : 정보의 전송이 가장 중요하고, 보낸 정보의 내용을 보장해 주지는 않음. 패킷은 에러 검출만 하고 만일 발견되면 폐기

-- 대표적인 IP 주소 체계 : IPv4

-- IP 크기 제한 : IP의 크기는 20~40 바이트, IP의 패킷은 네트워크가 수용할 수 있는 크기로 분할되어야 하는데, 이를 단편화라고한다. 인터넷으로 데이터를 전송 시에는 IP 패킷을 잘라서 보내고, 이런 단편화는 MTU 때문에 필요하다.

-- MTU(Maximum Transfer Unit) : 인터넷에서 최대로 보낼 수 있는 메세지 단위

 


2. 네트워크 기초 활용

(4) TCP/UDP

 

- TCP의 개념 : IP의 핵심 프로토콜 중 하나. 

 

- TCP의 특징

-- 신뢰성 보장 : 패킷 손실, 중복, 순서 바뀜이 없도록 보장. TCP의 하위계층인 IP 계층의 신뢰성 없는 서비스(정보위주의 프로토콜이며 보낸 정보의 내용을 보장해주지 않음)를 보완하여 신뢰성 제공

-- 연결 지향적 특징 : 양단 간 애플리케이션/프로세스는 TCP가 제공하는 연결성 회신을 통하여 서로 통신

-- 흐름 제어 : 흐름 제어 기능을 활용하여 송신(송신 전송률) 및 수신(수신 처리율) 속도를 일치시킴. 전송 계층(4계층)에서 수신 한도를 넘는 과잉 패킷의 입력으로 패킷 분실이 일어나지 않도록 하는 것. 수신자가 에러 체크 후 에러가 있으면 에러난 데이터부터 하나씩 다시 받는 정지-대기 기법과 수신 측에서 설정한 윈도우의 크기만큼 송신 측에서 확인 응답 없이 전송할 수있게 하여 흐름을 동적으로 제어하는 슬라이딩 윈도우 기법이 있음

-- 혼잡 제어 : 네트워크가 혼잡하다고 판단될 때에는 혼잡 제어 기법을 사용하여 송신율을 감속함. 전송 계층(4계층)에서 네트워크로 유입되는 사용자 트래픽의 양이 네트워크의 용량을 초과하지 않도록 송신 측에서 ACK 수신 여부로 네트워크 상황을 판단, 송신 데이터 크기를 조절하여 혼잡 상황을 제어하는 기법, 기법은 네가지 종류(Slow Start, Congestion Avoidace, Fast Retransmit, Fast Recovery)

 

- UDP의 개념 : 비연결성, 신뢰성 x , 순서화되지 않은 데이터그램 서비스를 제공하는 전송계층(4계층)의 통신 프로토콜

 

- UDP의 특징

-- 비연결성 및 비신뢰성 : 메세지가 제대로 도착했는지 확인하지 않음. 검사 합을 제외한 특별한 오류 검출 및 제어 없음

-- 순서화되지 않은 데이터그램 서비스 제공 : 수신된 메시지의 순서를 맞추지 않음. 흐름 제어를 위한 피드백 제공 없음

-- 실시간 응용 및 멀티캐스팅 가능 : 빠른 요청과 응답이 필요한 실시간 응용에 적합

-- 단순 헤더 : 고정 크기의 8바이트(TCP는 20바이트)만을 사용. 헤더 처리에 시간소요 적음

 


3. 기본 개발환경 구축

(1) 웹 서버

 

- 웹 서버의 개념 : 웹 서버는 웹 브러우저부터 HTTP 요청을 받아들이고 HTML 문서와 같은 웹페이지를 반환하는 컴퓨터 프로그램이다. 

- 웹 서버의 정적 콘텐츠 : 미리 생성된 페이지를 반환하는 것. image, html, css, javascript 파일 등을 DB에서 읽어옴.

- 웹 서버의 동적 콘텐츠 : 서버사이드 스크립트 언어를 이용하여 사용자 요청에 의해 생성되는 콘텐츠. 인자에 따라 바뀌는 page. 웹 서버에 의해 실행되는 프로그램을 통해서 만들어진 결과물.

 

- 웹 서버의 기능

-- HTTP : HTTP의 요청과 응답에 대한 처리 수행

-- 통신 기록 : 처리 기능을 로그화시켜서 추적성 보장

-- 인증 : 허용된 사용자나 관리자만 접근할 수 있도록 인증기능 제공

-- HTTPS 지원 : 데이터의 적절한 보호를 보장하는 HTTPS 지원

-- 가상 호스팅 : 기본적인 호스팅인 메인 호스트를 제외한 나머지 호스트

-- 대역폭 제한 : 네트워크의 과부하를 막기 위해서 품질 보장(QoS)을 보장하는 대역폭 제한 가능

 

- 웹 서버 주요 제품 : 아파치(유닉스 계열, 마이크로소프트 윈도우, 노벨 넷웨어), 마이크로소프트의 IIS(마이크로소프트 윈도우), 구글 웹서버 GWS (구글 자사 웹 서비스) 

 


3. 기본 개발환경 구축

(2) DB 서버

 

- DBMS : 다수의 사용자들이 데이터베이스 내의 데이터를 접근하여 편리하게 이용할 수 있도록 해주는 소프트웨어 도구 집합

- DBMS 서버의 구성 : 인스턴스 및 데이터 베이스로 구성. 인스턴스는 메모리 부분과 프로세스 부분으로 구성.

- DBMS 서버의 기동 및 종료 : 데이터베이스를 사용하려면 DBMS 관리자가 우선적으로 DBMS 인스턴스를 시작해야한다.

 

- 데이터베이스 서버의 구성요소

-- 데이터 딕셔너리 : 연관된 데이터베이스 정보를 제공하는 읽기 전용 테이블 or 뷰의 집합. DB의 모든 스키마 객체 정보, 현재 사용 중인 영역의 사이즈, 열의 기본 값, 무결성 제약 조건, 사용자 이름 및 권한, 일반적인 DB 정보가 기록

-- 테이블 스페이스, 데이터 파일 : 데이터는 논리적으로 테이블 스페이스와 물리적으로 해당 테이블스페이스와 연결되어 있는 데이터 파일에 저장

-- 데이터베이스 영역 할당 : DBMS는 데이터베이스의 모든 데이터에 대한 논리적 데이터베이스 영역을 할당. 데이터베이스 영역의 할당 범위는 데이터 블록, 확장 영역, 세그먼트.

-- 데이터베이스 관리 시스템 메모리 : 프로그램 코드, 세션 정보, 교환 정보, 캐시 데이터 정보를 저장하기 위해 메모리 사용

-- 데이터베이스 버퍼 : 데이터 파일로부터 읽어 들인 데이터 블록의 복사본을 가지고 있음

-- 로그 버퍼 : 데이터베이스의 변경 사항 정보를 저장

-- 공유 풀과 정렬 영역 : 메모리 영역에 있음

-- DBMS 프로세스 : 사용자 프로세스, 서버 프로세스, 백그라운드 프로세스로 구성

 

- 오라클 DB 서버 구조

-- 크게 프로세스, 공유 메모리 영역, 디스크 영역(물리적 영역)으로 나뉜다. 

 


3. 기본 개발환경 구축

(3) 패키지

 

- 패키지의 개념 : 컴퓨터에서 사용자에게특정 기능을 수행하도록 설계된 프로그램 or 프로그램 집합

- 패키지 소프트웨어란 이용도가 높은 프로그램들을 묶어서 제공하는 SW

 

 

 

 

ref :  수제비 2020 정보처리기사 필기