CH1. 운영체제 특징 

 

운영체제(OS;Operating System) 

사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해주는 소프투웨어

크게 인터페이스(쉘) + 커널의 구조 이다. 

쉘은 운영체제의 가장 바깥 부분에 의치해서 사용자 명령에 대한 처리를 담당하는 역할, 

커널은 하드웨어와 관련된 내부적인 역할을 담당함 

 

운영체제 종류 

윈도즈 Windows 

유닉스 Unix - 리눅스 Linux / 맥 Mac / 안드로이드 Android 

 

윈도즈(Windows) 운영체제 : MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 마이크로소프트사가 개발한 운영체제

윈도즈(Windows) 운영체제 특징 [지선자오]

그래픽 사용자 인터페이스(GUI) 제공 키보드 없이 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식
선점형 멀티태스킹 방식 제공 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU이용시간을 제어 
자동감지 기능 제공 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능 제공 : Plug and Play
OLE (Object Linking and Embedding) 사용 개체를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공

 

유닉스(Unix) 계열 운영체제 : 데니스 리치와 켐 톰슨 등이 함께 벨 연구소를 통해 만든 운영체제, 90%이상 C언어로 구현되어 있는 운영체제로 범용 다중 사용자 방식의 시분할 운영체제 

유닉스(Unix) 계열 운영체제 특징 [대다사이계]

대화식 운영체제 기능 제공 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공
다중 작업 기능 제공 다수의 작업(프로세스)이 중앙처리장치(CPU)와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공
다중 사용자 기능 제공 여러 대의 단말(키보드와 모니터)이 하나의 컴퓨터와 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공
이식성 제공 90% 이상 c언어로 구현되어 있고, 시스템 프로그램이 모듈화되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
계층적 트리 구조 파일 시스템 제공 유닉스는 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이 

 

리눅스(Linux) 운영체제 : 유닉스를 기반으로 개발되고, 오픈 소스 기반의 운영체제 

 

맥(Mac) 운영체제 : 애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반의 운영체제 

 

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

안드로이드(Android) 운영체제 특징 

리눅스 기반 안드로이드는 리눅스 커널 위에서 동작
자바와 코틀린 언어 고수준 언어를 사용해 응용 프로그램을 작성
생산성이 높으며 전문 지식이 없어도 개발 가능
런타임 라이브러리 컴파일된 바이트 코드 구동 가능
안드로이드 소프트웨어 개발 키트(SDK)  응용 프로그램을 개발하는 데 필요한 각종 도구와 API를 제공

 

운영체제 제어 방법

- CLI : Command Line Interface. 사용자가 직접 명령어를 입력, 컴퓨터에 명령을 내리는 방식 

- GUI : Graphic User Interface. 마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어하는 방식 

 

윈도즈 운영체제의 기본 명령어

- CD : 현재 딜게터리 이름을 보여주거나 바꿈

- CLS : 화면을 지움

- CMD : Windows 명령 프롬프트 창을 열어줌

 

리눅스/유닉스 운영체제의 기본 명령어 

파일처리

- ls : 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시

- pwd : print working directory. 현재 작업 중인 디렉토리의 절대 경로를 출력 

- rm : 파일 삭제 

- cp : 파일 복사 

- mv : 파일 이동 

 

리눅스/유닉스 운영체제의 파일 접근 권한 관리 

각 파일의 정보가 저장된 i-node값을 읽음

i-node : 유닉스 계통 파일 시스템에서 사용하는 자료구조 

 

- chmod : 특정 파일 또는 디렉토리의 퍼미션 수정 명령어 

- chown : 파일이나 디렉토리의 소유자, 소유 그룹 수정 명령어 

r(reald) : 4 , w(write) : 2, eXcute : 1 

 

운영체제 핵심 기능 

메모리 관리 프로그램이 실행이 종료될 때 까지 메모리를 가용한 상태로 유지 및 관리하는 기능
메모리에 있는 프로그램은 CPU로 이동하여 처리 (CPU는 가상 주소를, 메모리는 물리주소를 사용하는데 MMU가 주소를 매핑하는 역할 수행) 
- MMU(Memory Management Unit) : CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품으로 가상 메모리 주소로 변환하는 장치
프로세스 관리 프로세스 관리 기법에는 '일시 중지 및 재실행', '동기화', '통신', '교착상태 처리', '프로세스 생성 삭제' 가 있음
- 프로세스(Process) : 일반적으로 CPU에 의해 처리되는 프로그램으로 현재 실행중인 프로그램

 

메모리 관리 기법 [반배할교]

반입 기법 메모리로 적재 시기 결정 (When)  
배치 기법 메모리 적재 위치 결정 (Where) 최초 적합 (First-fit)
최적 적합 (Besg-fit)
최악 적합(Worst-fit)
할당 기법 메모리 적재 방법 결정 (How)  
교체 기법 메모리 교체 대상 결정 (Who)  

 

메모리 배치 기법 

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

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

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

 

프로세스 관리

(사진) 

 

프로세스 상태 [생준실대완]

생성(Create) 상태

준비(Ready) 상태 

실행(Running) 상태 

대기 (Wating) 상태 

완료(Complete) 상태 

 

프로세스 상태 전이 

디스패치(Dispatch) : 문맥교환 발생 

타이머 런 아웃(Timer run out) = 할당 시간 초과 

블록(Block) = 입출력 발생

웨이크 업 (Wake-up) = 깨움 

* 문맥교환(Context switching ) : CPU가 현재 실행하고 이쓴 프로세스의 문맥 상태를 프로세스 제어블록(PCB)에 저장하고 다음 프로세스의  PCB로 부터 문백을 복원하는 작업을 문맥교환 이라고 함

 

프로세스 스케즐링 

프로세스 스케줄링 주요 용어 

서비스 시간 프로세스가 결과를 산출하기까지 소요되는 시간 
응답시간(Response Time) 프로세스들이 입력되어 서비스를 요청하고, 반응하기 시작할 때까지 소요되는 시간
반환시간(Turnaround Time) 프로세스 들이 입력되어 수행하고 결과를 산출하기까지 소요되는 시간
반환시간 = 대기시간 + 수행시간
대기시간 프로세스가 프로세서에 할당 대기까지 큐에 대기하는 시간
평균 대기시간  
종료시간  
시간 할당량(Time Quantum 또는 Time Slice)  
응답률 (대기시간+서비스 시간) / 서비스 시간 
HRN(Highest Response ratio Naxt) 스케줄링에서 사용
HRN 스케줄에서 응답률이 높으면 우선순위가 높다고 판단

 

프로세스 스케줄링 유형 

  선점형 스케줄링 
Preemptive Scheduliung
비선점형 스케줄링
Non Preemptive Scheduling
개념 하나의 프로세스가 CPU를 차지하고 있을때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 CPU 점유가 불가능한 스케즐링 방식
알고리즘 -라운드로 로빈 (Round Robin)
-SRT(Shortest Remainig Time First) 
-다단계 큐 (MLQ; Multi-Level Queue) 
-다단계 피드백 큐 (MLFQ; Multi-Level Feedback Queue) 
-우선순위 (Priority)
-기한부 (Deadline)
- FCFS 
- HRN (High Response Ratio Next)
- SJF (Shortest Job First)

 

프로세스 스케줄링 알고릐즘 유형 [SMMR]

라운드 로빈 (Round Robin) 균등한 CPU 점유시간
시분할 시스템을 사용
SRT(Shortest Remainig Time First)  짧은 수행시간 프로세스 우선 수행
다단계 큐 (MLQ; Multi-Level Queue)  독립된 스케줄링 큐 
다단계 피드백 큐 (MLFQ; Multi-Level Feedback Queue)  큐마다 다른 시간 할당량
마지막단계는 라운드 로빈 방식 처리 

 

비선점형 스케줄링 알고리즘 유형 [우기HFS]

우선순위 (Priority) 주요/긴급 프로세스에 대한 우선 처리
기한부 (Deadline) 요청에 명시된 시간 내 처리를 보장
FCFS (First Come First Service) 도착한 순서대로 처리
SJF (Shortest Job First) 도착하는 시점에 따라 그 당시 가장 작은 서비스 시간을 갖는 프로세스가 종료시까지 자원 점유
기아 현생 발생 가능성
HRN (High Response Ratio Next) 대기 중인 프로세스 중 현재 응답률 (Response Ratio)이 가장 높은것을 선택 
기아 현상 (stavation) 최소화 기법
HRN 우선순위 = (대기시간 + 서비스 시간 ) / 서비스 시간

*기하(Starvation) 현상 : 시스템 부하가 많아서 준비 큐에 있는 낮은 등급의 프로세스가 무한정 기다리는 현상. > 해결하기 위해 오랫동안 기다린 프로세스에게 우선순위를 높여주도록 처리하는 기법인 *에이징(Aging) 을 활용한다. 

 

반환시간 및 대기시간 계산 방법 [반종도 대반서]

반환 시간 = 종료 시간 - 도착 시간

대기 시간 = 반환 시간 - 서비스 시간 

 

교착 상태 (DeadLock) 

다중프로세싱 환경에서 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태 

교착상태 발생 조건 [상점비환]

- 상호 배제 (Mutual Exclusive)

- 점유와 대기 (Hold & Wait) 

- 비선점(Non Preemption) 

- 환형 대기 (Circular Wait) 

 

 

교착상태 해결 방법 [예회발복]

- 예방 (Prevention)

- 회피 (Avoidance) 

- 발견 (Detection)

- 복구 (Recovery) 

 

가상화 (Virtualization) 

물리적인 리소스들을 사용자에게 하나로 보이게 하거나, 하나의 물리적인 리소스를 여러개로 보이게 하는 기술 

 

가상화의 종류

플랫폼의 가상화 하드웨어 플랫폼 위에서 실행되는 호스트 프로그램이 게스트 프로그램을 만들어 마치 독립된 환경을 만들어 낸 것 처럼 보여주는 기법
리소스 가상화 게스트 소프트웨어 위에서 사용자는 독립된 하드웨어에서 소프트웨어가 실행되는 것처럼 활용하는 기법

가상화 기술 요소 

컴퓨팅 가상화 컴퓨터 리소스를 가상화하여 논리적 단위로 리소스를 활용할 수 있도록 하는 기술
ex ) 하이퍼바이저 (Hypervisor)
스토리지 가상화 스토리지와 서버 사이에 소프트웨어/하드웨어 계층을 추가하여 스토리지를 논리적으로 제어 및 활용할 수 있도록 하는 기술 
ex ) 분산 파일 시스템
I/O 가상화 서버와 I/O 디바이스 사이에 위치하는 미들웨어 계층으로, 서버의 I/O 자원을 물리적으로 분리하고 케이블과 스위치 구성을 단순화하여 효율적인 연결을 지원하느 기술 
ex ) 가상 네트워크 인터페이스 카드
컨테이너 컨테이너화된 애플리케이션들이 단일 운영체제사에서 실행되도록 해주는 기술
하이퍼바이저 없이 운영체제가 격리된 프로세스로 동작하기 때문에 오버헤드가 낮음
ex ) 도커 (Docker)
 분산처리 기술(Distributed Computing) 여러 대의 컴퓨터 계산 및 저장능력을 이용하여 커다락 계산문제나 대용량의 데이터를 처리하고 저장하는 기술
네트워크 가상화 기술 물리적으로 떨어져있는 다양한 장비들을 연결하기 위한 수단으로 중계장치 (라우터, 스위치 등 )의 가상화를 통한 가상 네트워크 (Virtual Network) 를 지원하는 기술 
ex ) SDN, NFV

 

클라우드 컴퓨틴 (Cloud Computing)

인터넷을 통해 가상화된 컴퓨터 시스템 리소스 (IT 리소스)를 제공하고, 정보를 자신이 컴퓨터가 아닌 클라우드(인터넷)에 연결된 다른 컴퓨터로 처리하는 기술

클라우드 컴퓨팅 분류 [사공하]

사설 클라우드
(Private Cloud)
기업 또는 조직 내부에서 보유하고 있는 컴퓨팅 자원 (IDC, 서버 등)을 사용하여 내부에 구축되어 운영되는 클라우드
공용 클라우드
(Public Cloud) 
클라우드 서비스 제공 업체에서 다중 사용자를 위한 컴퓨팅 자원 서비스를 제공하는 클라우드 
하이브리드 클라우드
(Hybrid Cloud) 
기업 또는 조직 내부 자원을 이용한 사설 클라우드와 공용 클라우드를 모두 사용하는 클라우드

 

클라우드 컴퓨팅 유형 [인플소]

인프라형 서비스 (Iaas ; 
Omftastructure as a Service) 
서버, 스토리지 같은 시스템 자원을 클라우드로 제공하는 서비스
플랫폼형 서비스 (Pass ; 
Platform as a Service)
인프라를 생성, 관리하는 복잡함 없이 애플리케잇녀을 개발, 실행, 관리할 수 있게 하는 플랫폼을 제공하는 서비스
소프트웨어형 서비스 (Saas ; 
Software as a Service)
소프트웨어 및 관련 데이터는 중앙에 호스팅되고 사용자는 웹 브라우저 등의 클라이언트를 통해 접속하여 소프트웨어를 서비스 형태로 이용하는 서비스

 

CH2. 네트워크 기초 활용하기

네트워크(Network)

원하는 정보를 원하는 수신자 또는 기긱에 정확하게 전송하기 위한 기반 인프라

WAN.LAN 

 

OSI(Open System Intercommection) 7계층 

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

    프로토콜  전송단위 장비
응용 계층 
Application Layer
사용자와 네트워크 간 응용 서비스 연결, 데이터 생성 HTTP
FTP
데이터
Data
호스트
(PC 등)
표현 계층
Presentation Layer
데이터 형식 설정, 부호교환, 암'복호화 JPEG
MPEG
세션 계층
Session Layer
송수신 간의 논리적인 연결
연결 접속, 동기제어
RPC
NetBios
전송 계층
Transporty Layer
송수신 프로세스 가니의 연결
신뢰성 있는 통신 보장
데이터 분할, 재조립,흐름제어, 오류제어, 혼잡제어
TCP
UDP
세그먼트
Segment
P4
스위치
네트워크 계층
Network Layer
ㄷ나말기 간 데이터 전송을 위한 최적화된 경로 제공 IP
ICMP
패킷
Packet
라우터 
데이터링크 계층
Data Link Layer
인접 시스템 간 데이터 전송, 전송 오류 제어
동기화, 오류 제어, 흐름 제어, 회선 제어
HDLC
PPP
프레임
Frame
브리지,
스위치
물리 계층
Physical Layer
0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환  RS-232C 비트
Bit
허브,
리피터

 

네트워크 장비

1계층 장비

허브 여러 대의 컴퓨터를 연결하여 네트워크로 보내거나, 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비
리피터 디지털 신호를 증폭시켜 주는 역할을 하여 신호가 약해지지 않고 컴퓨터로 수신되도록 하는 장비

2계층 장비 

브리지 두 개의 근거리통신망(LAN)을 서로 연결해주는 통신망 연결 장치
L2 스위치 L2 스위치는 종류에 따라 3가지 방식 중 하나르 ㄹ사용 
- Store and Forwading
- Cut Through
- Fragment Free
NIC (Network Interface Card)
스위칭 허브
 

3계층 장비

라우터 LAN+LAN, LAN+WAN을 연결하기 위한 인터넷 네트워킹 장비
게이트 웨이
L3 스위치
유무선 인터넷 공유기
망(백본) 스위칭 허브
 

4계층 장비 

L4 스위치   

 

프로토콜(Protocol)

서로 다른 시스템이나 기기들 간의 데이터 교환을 원활히 하기 위한 표준화된 통신 규약, '기술적 은어' 

 

프로토콜의 기본 3요소 [구의타]

- 구문 (Syntax)

- 의미 (Semantic) 

- 타이밍 (Timing) 

 

네트워크 프로토콜(Networkd Protocol) 

컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계 

 

프로토콜 특징 

- 단편화 

- 재조립 

- 캡슐화 : 상위 계층의 데이터에 각종 정보를 추가하여 하위 계층으로 보내는 기법

- 연결 제어

- 오류 제어 

- 동기화 : 송신과 수신 측의 시점을 맞추는 기법 

- 다중화 

- 주소 지정 

 

데이터 링크 계층 (Data Link Layer)

링크의 설정과 유지 및 종료를 담당하며 노드 간의 회선 제어, 흐름 제어, 오류 제어 기능을 수행하는 계층 

데이터 링크 계층 프로토콜 

HDLC 
(High0level Data Link Control)
점대점 방식이나 다중방식의 통신에 사용되는 ISO에서 표준화한 동기식 비트 중심의 데이터 링크 프로토콜
PPP
(Point-to-Point Protocol)
네트워크 분야에서 두 통신 노드 간의 직접적인 연결을 위해 일반적으로 사용되는 데이터 링크 프로토콜
프레임 릴레이
(Frame Relay)
프로토콜 처리를 간략화하여 단순히 데이터 프레임들의 중계(Relay) 기능과 다중화 기능만 수행함으로써 데이터 처리속도의 향상 및 ㅈ전송지연을 감소시킨 고속의 데이터 전송 기술
ATM
(Asynchronous Transport Mode)
정보전달의 기본단위를 53바이트 셀 단위로 전달하는 비동기실 시분할 다중화 방식의 패킷형 전송 기술

 

네트워크 계층 (Networkd Layer) 

네트워크 계층 프로토콜 

IP
(Internet Protocol)
송수신 간의 패킷 단위로 데이터를 교환하는 네트워크에서 정보를 주고받는데 사용한는 통신 프로토콜
ARP
(Address Resoulution Protocol)
IP 네트워크상에서 IP 주소를 MAC주소(물리주소)로 변환하는 프로토콜
RARP
(Reverse Address Resoulution Protocol)
물리 네트워크(MAC) 주소에 해당하는 IP 주소를 알려주는 역순 주소 결정 프로토콜
ICMP 
(Internet Control Message Protocol)
IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜. 
ICMP 프로토콜을 사용해서 ping 유틸리티의 구현을 통해 오류가 발생했음을 알리는 기능을 수행
IGMP
(Internet Group Managerment Protocol)
인터넷 그룹 관리 프로토콜. 호스트 컴퓨터와 인접 라우터가 멀티캐스트 그룹 멤버십을 구성하는데 사용하는 통신 프로토콜
라우팅 프로토콜
(Routing Protocol)
데이터 전송을 위해 목적지 까지 갈 수 이쓴 여러 경로 중 최적의 경로를 설저해주는 라우터 간의 상호 통신 프로토콜

 

IPv4 (Internet Protocol version 4) 

인터넷에서 사용되는 패킷 교환 네트워크상에서 데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜

(A Class:0~128, B Class:129~191, C Class:192~223, D Class: 244~239 멀티캐스트, E Class: 240~255 연구)

 

IPv6 (Internet Protocol version 6) 

현재 IPv4 가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128bit 주소체계를 갖는 차세대 인터넷 프로토콜 

 

IPv4와 IPv6 특징 

IPv4  IPv6 
32 bit = 8 bit *4 = 10.진수  128 bit = 16 bit * 8 , 16 진수
전송방식 [유멀브]
유니캐스트, 멀티캐스트,브로드 캐스트
전송방식 [유멀애]
유니캐스트, 멀티캐스트, 애니캐스트

 

IPv4 --> IPv6 전환 방법 

- 듀얼 스택 (Dual Stack) : IP 계층에 두 가지 (IPv4, IPv6) 의 프로토콜의 모두 탑재되어 있고 통신 상대방에 따라 해당 IP 스택을 선택하는 방법 

- 터널링 (Tunneling) : IPv6 망에서 인접한 IPv4 망을 거쳐 다른 IPv6 망으로 통신할 때 IPv4 망에 터널을 만들고 IPv4에서 사용하는 프로토콜로 캡슐화하여 전송하는 방법 

- 주소 변환(Address Translation) : IPv4 망과 IPv6 망 사이에 주소 변환기 (IPv4-IPv6 게이트웨이) 를 사용하여 서로 다른 네트워크상의 패킷을 변환시키는 방법 

 

멀티캐스트,유니캐스트,브로드캐스트,애니캐스트

- 멀티캐스트 (Mlticast Protocol): 인터넷에서 같은 내용의 데이터를 여러 명의특정한 그룹의 수신자들에게 동시에 전송할 수있는 프로토콜

- 유니캐스트 (Unicast Protocol) : 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 (One-to-One) 트래픽 또는 메시지를 전송하는 프로토콜

- 브로드캐스트(Broadcasting Protocol) : 하나의 송신자가 가튼 서브 네트워크상의 모든 수신자에게 데이터를 전송하는 프로토콜

- 애니캐스트(Anycast Protocol) : 하나의 호스트에서 그룹 내의 가장 가까운 곳에 있는 수신자에게 데이터를 전달하는 전송 기술 

 

라우팅 프로토콜 (3계층) 

- RIP (Routing Information Protocol) : As(Autonomous System : 자치 시스템 ; 자율 시스템 ) 내에서 사용하는 거리 벡터 (Distance-Vector) 알고리즘에 기초하여 개발된 내부 라우팅 프로토콜. 벨만-포드 알고리즘 사용 

- OSPF (Open Shortest Path First) : 규모가 크고 복잡한 TCP/IP 네트워크에서 RIP의 단덤을 개선하기 위해 자신을 기준으로 링크 상태 (Link-Stage) 알고리즘을 적용하여 최단 경로를 찾는 라우팅 프로토콜. 다익스트라 알고리즘 사용 

- BGP(Border Gateway Protocol) : AS 상호 간 (Inter-AS 또는 Inter-Domain)에 경로 정보를 교환하기 위한 라우팅 프로토콜. 가장 짧은 경로를 경로 벡터 (Path Ventor) 알고리즘을 통해 선정 

- 라우팅 알고리즘 유형 

거리 벡터 알고리즘 (Distance Vector Algorithm) : 인접 라우터와 정보를 공유하여 목적지까지의 거리와 방향을 결정하는 라우팅 프로토콜 알고리즘. 벨만-포드 알고리즘 사용

링크 상태 알고리즘 (Link State Algorithm)  : 링크 상태 정보를 모든 라우터에 전달하여 최단 경로 트리를 구성하년 

 

 

 

 

CH3. 기본 개발환경 구축하기 

ㅇㅇ

'Univ. > 정보처리기사' 카테고리의 다른 글

디자인 패턴  (0) 2023.07.27
1. 요구사항 확인 (문제)  (0) 2022.11.25
1. 요구사항 확인  (0) 2022.11.15
디자인 패턴 유형 
[생구행] : 생성/구조/행위
목적 생성 - 객체 인스턴스 생성에 관여 , 클래스 정의와 객체 생성 방식을 구조화, 캡슐화 수행하는 패턴
구조 - 더 큰 구조나 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
행위 - 클래스나 객체들 상호 작용하는 방법과 역할 분담을 다루는 패턴
범위 클래스 - 클래스 간 관련성(상속 관계를 다루는 패턴) 
- 컴파일 타임에 정적으로 결정
객체 - 객체 간 관련성을 다루는 패턴
- 런타임에 동적으로 결정
* 컴파일 타임 : 소스 코드를 작성하고 컴파일이라는 과정을 통해 기계어 코드로 변환되어, 실행 가능한 프로그램이 되는 과정 (정적 메모리 할당 수행) 
* 런타임 : 파일 컴파일 과정을 마친 프로그램은 사용자에 의해 실행되며, 이러한 응용 프로그램이 동작되는 과정 (동적 메모리 할당)

 

 

디자인 패턴 종류
생성 패턴 [생빌 프로 팩앱싱] : 생성(빌더/프로토타입/팩토리 메서드/앱스트랙 팩토리/싱글톤)
구조 패턴 [구 브데 퍼플 프록 컴 어] : 구조(브리지/데코레이터/퍼사이드/플라이웨이트/프록시/컴포지트/어댑터)
행위 패턴 [행 미인이 템옵 스테 비커 스트 매체] : 행위(미디에이터/인터프리터/이터레이터/템플릿 메서드/옵저버/스테이트/비지터/커맨드/스트레티지/메멘토/체인 오브 리스판서빌리티)
생성 패턴
[생빌 프로 팩앱싱] : 생성(빌더/프로토타입/팩토리 메서드/앱스트랙 팩토리/싱글톤)
Builder - 복잡한 인스턴스를 조립하여 만드는 구조로, 복합 객체를 생성할 때 객체를 생성하는 방법(과정)과 객체를 구현(표현)하는 방법을 분리함으로써 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있는 디자인 패턴
- 생성과 표기를 분리해서 복잡한 객체를 생성
Prototype - 처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴으로, 생성할 객체의 원형을 제공하는 인스턴스에서 생성할 객체들의 타입이 결정되도록 설정하여 객체를 생성할 때 갖추어야 할 기본 형태가 있을 때 사용되는 디자인 패턴
- 기존 객체를 복제함으로써 객체를 생성
Factory 
Method
- 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식으로, 상위 클래스에서는 인스턴스를 만드는 방법만 결정하고, 하위 클래스에서 그 데이터의 생성을 책임지고 조작하는 함수들을 오버라이딩 하여 인터페이스와 실제 객체를 생성하는 클래스를 분리할 수 있는 특성을 갖는 디자인 패턴
- 생성할 객체의 클래스를 국한하지 않고 객체를 생성
Abstract 
Factory
- 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴으로 이 패턴을 통해 생성된 클래스에서는 사용자에게 인터페이스(API)를 제공하고, 구체적인 구현은 Con-create Product 클래스에서 이루어지는 특징을 갖는 디자인 패턴
- 동일한 주제의 다른 팩토리를 묶음
Singleton - 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴
- 한 클래스에 한 객체만 존재하도록 제한

 

구조 패턴
[구 브데 퍼플 프록 컴 어] : 구조(브리지/데코레이터/퍼사이드/플라이웨이트/프록시/컴포지트/어댑터)
Bridge - 기능의 클래스 계층과 구현의 클래스 계층을 ?? 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴
- 구현뿐만 아니라, 추상화된 부분까지 변경해야 하는 경우 활용
Decorator - 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴으로 기능 확장이 필요할 때 객체 간의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주어 상속의 대안으로 사용하는 디자인 패턴
- 객체의 결합을 통해 기능을 동적으로 유연하게 확장
Facade - 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구로에 대한 파악을 쉽게 하는 패턴으로 오류에 대해서 단위별로 확인할 수 있게 하며, 사용자의 측면에서 단순한 인터페이스 제공을 통해 접근성을 높일 수 있는 디자인 패턴 
- 통합된 인터페이스 제공
Flyweight - 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고, '클래스의 경량화'를 목적으로 하는 디자인 패턴
- 여러 개의 '가상 인스턴스'를 제공하여 메모리 절감
Proxy - '실제 객체에 대한 대리 객체'로 실체 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용령을 아낄 수 있으며, 실체 객체를 드러나지 않게 하여 정보은닉의 역할도 수행하는 디자인 패턴
- 특정 객체로의 접근을 제어하기 위한 용도로 사용
Composite - 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 하는 패턴
- 복합 객체와 단일 객체를 동일하게 취급
Adapter - 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴으로, 상속을 이용하는 클래스 패턴과 위임을 이용하는 인스턴스 패턴의 두 가지 형태로 사용되는 디자인 패턴
- 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록 타클래스의 인터페이스를 기존 인터페이스에 덧씌움

 

행위 패턴
[행 미인이 템옵 스테 비커 스트 매체] : 행위(미디에이터/인터프리터/이터레이터/템플릿 메서드/옵저버/스테이트/비지터/커맨드/스트레티지/메멘토/체인 오브 리스판서빌리티)
Mediator - 객체 지향 설계에서 객체의 수가 너무 많아지면 서로 간 통신을 위해 복잡해져서 객체 지향에서 가장 중요한 느슨한 결합의 특성을 해칠 수 있기 때문에 이를 해결하는 방법으로 중간이 에를 통제하고 지시할 수 있는 역할을 하는 중재자를 두고, 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 디자인 패턴
- 상호 작용의 유연한 변경을 지원
Interpreter - 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 디자인 패턴
- 문법 자체를 캡슐화하여 사용
Iterator - 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴
- 내부구조를 노출하지 않고, 복잡 객체의 원소를 순차적으로 접근 가능하게 해주는 행위 패턴
Template Method - 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴으로 일반적으로 상위 클래스(추상클래스)에는 추상 메서드를 통해 기능의 골격을 제공하고, 하위 클래스(구체 클래스)의 메서드에는 세부 처리를 구체화하는 방식으로 사용하며 코드 양을 줄이고 유지보수를 용이하게 만드는 특징을 갖는 디자인 패턴
- 상위 작업의 구조를 바꾸지 않으면서 서브 클래스로 작업의 일부분을 수행
Observer - 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 방법으로 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 디자인 패턴
- 객체의 상태 변화에 따라 다른 객체의 상태도 연동, 일대다 의존
State - 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여, 변경 시 원시코드의 수정을 최소화할 수 있고, 유지보수의 편의성도 갖는 디자인 패턴
- 객체의 상태에 따라 행위 내용을 변경
Visitor - 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴으로, 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할때 사용하는 디자인 패턴
- 특정 구조를 이루는 복합 객체의 원소 특정에 따라 동작을 수행할 수 있도록 지원하는 행위
Command - 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 디자인 패턴
- 요구사항을 객체로 캡슐화
Strategy - 알고리즘 군을 정의하고(추상 클래스) 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음, 필요할때 서로 교환해서 사용할 수 있게 하는 패턴으로, 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 디자인 패턴
- 행위 객체를 클래스로 캡슐화해 동적으로 행위를 자유롭게 변환
Memento - 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 디자인 패턴으로 Undo  기능을 개발할 때 사용하는 디자인 패턴
- 객체를 이전 상태로 복구시켜야 하는 경우, '작업취소(Undo)' 요청 가능
Chain of Responsibility - 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 디자인 패턴
- 한 요청을 2개 이상의 객체에서 처리

 

 

'Univ. > 정보처리기사' 카테고리의 다른 글

11. 응용 SW 기초 기술 활용  (0) 2023.08.28
1. 요구사항 확인 (문제)  (0) 2022.11.25
1. 요구사항 확인  (0) 2022.11.15

웹 환경 정보검색시스템

 인터넷에 존재하는 수 많은 웹 페이지들을 수집하여 수집된 내용을 적절한 가공 과정을 거쳐 특별한 형태의 파일로 문서화하고, 검색 엔진과 같은 인터넷 정보 검색 시스템을 통해 이용자의 질의에 적합한 페이지 정보를 탐색하여 찾아내 이용자에게 제공하는 것을 의미한다. 따라서 정보 중 이용자의 질의에 맞는 검색을 해주는 것이다.

 

Indexer(색인모듈)은 단어 목록 (단어 발생 리스트) 기능을 하며

Retriever(검색모듈)은 색인을 사용하여 페이지의 순위를 매기는 기능을 하는 것으로 구분된다.

웹 환경 정보검색시스템 (Indexer :  색인 모듈 , Retriever :  검색모듈 )

 

자료

기상청 기상자료개방포털

data.kma.go.kr/stcs/grnd/grndTaList.do?pgmNo=70

 

기상자료개방포털[기후통계분석:통계분석:기온분석]

자료설명 지점별로 기온의 시계열 분석을 확인합니다. 일, 월, 연의 평균기온, 최저기온, 최고기온을 각각 조회할 수 있습니다. * '지역/지점'의 '지역'은 전국 및 광역 단위의 평균 제공(1973년~)

data.kma.go.kr

공공데이터포털

https://www.data.go.kr/

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

 

실습

python

https://www.python.org/

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

Anaconda

패키지 관리와 디플로이를 단순케 할 목적으로 과학 계산을 위해 파이썬과 R 프로그래밍 언어의 자유-오픈 소스 배포판

jupyter notebook : 에디터

www.anaconda.com/products/individual

 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

 

공공데이터 csv import 후 통계
L : 공공데이터 import R : 숫자데이터 numpy 라이브러리

 

 

소프트웨어 공학

StarUML

UML 도구

 

http://staruml.io/

 

StarUML

UML 2 Compatible with UML 2.x standard metamodel and diagrams: Class, Object, Use Case, Component, Deployment, Composite Structure, Sequence, Communication, Statechart, Activity and Profile Diagram. Additional Diagrams Support to create Entity-Relationship

staruml.io

출처 http://staruml.io/
온라인 쇼핑몰 Class Diagram 작성 실습

 

 

 

 

sub : 정보검색

🙋

JRE(Java Runtime Enviroment ) : 컴파일된 자바 프로그램을 실행시킬 수 있는 자바 환경 
JDK(Java Development Kit)      : 자바 프로그래밍시 필요한 개발 도구 포함 (JRE+@)
(참고 https://stackoverflow.com/questions/1906445/what-is-the-difference-between-jdk-and-jre
Apache Tomcat : 웹 애플리케이션 서버(AWS).
웹 서버와 연동하여 실행할 수 있는 자바 환경 제공. HTTP 서버 자체 내장. 
Apache Lucene : 검색엔진. 자바로 개발된 정보검색 라이브러리
elastic : Lucene 기반의 Java 오픈소스 분산 검색 엔진

 

1. oracle - java 설치(JDK/JRE)

- JDK 다운  Windows x64 Installer

https://www.oracle.com/kr/java/technologies/javase/javase-downloads.html

 

- JRE 다운 

https://www.oracle.com/java/technologies/

https://www.oracle.com/downloads/#category-java

https://www.java.com/ko/download/win10.jsp

 

- 경로 확인

C:\Program Files\Java  

 

- 환경변수 

해당 내용 참고 

java 경로 확인

2.tomcat 설치
- 64-bit Windows zip 다운 tomcat 9
tomcat.apache.org/download-90.cgi
재부팅 후 startup.bat 배치프로그램 실행
 localhost:8080 . 인터넷 창 고양이 나오면 연결 완료 


- 환경변수 
(해당내용 참고 . 재부팅)

 

 

0. 환경 변수 

- CLASSPATH - LuceneTest 경로 설정

시스템 변수 - CLASSPATH - (.; lucene 위치)


- JAVA HOME - java의 jdk 파일 경로 설정 (JAVA JRE 경로도 추가. 안해도 되긴함) 

시스템 변수 - JAVA_HOME - (java jdk 위치)


- Path- JAVA HOME 경로 설정 //마지막 줄 

 

시스템 변수 - Path - .;%JAVA_HOME%bin;


- 사용자 변수 Path - java jdk 경로 추가 (이 방법이 필요 없을 수 있지만 javac 명령이 되지 않았을때 이 방법을 이용하였음) (참고 https://programmers.co.kr/learn/questions/188)

 

사용자변수 - Path - (java jdk 위치)

 

 

3.lucene 설치
- 다운 
https://lucene.apache.org/core/downloads.html
https://www.apache.org/dyn/closer.lua/lucene/java/8.6.0/lucene-8.6.0.zip
- 압축 풀어서 LuceneTest 폴더 생성 후 압축 해제한 파일을 넣고 java 파일 4개 꺼내두기 
- 환경변수 
해당 내용 참고 

- 현재 LucenTest 폴더 상태

 

- cmd

 javac	//java 확인 

 

//압축 풀기 
jar xvf lucene-analyzers-common-8.6.0.jar

jar xvf lucene-core-8.6.0.jar

jar xvf lucene-demo-8.6.0.jar

jar xvf lucene-queryparser-8.6.0.jar

압축 풀기 완료

 

- 색인 생성 

java org.apach.lucene.demo. IndexFiles -docs lucene-8.6.0 //색인 생성

lucene-8.6.0 버전. 색인할 대상이 파일들이 있는 폴더 경로 

- 검색 테스트 

java org.apache.lucene.demo.SearchFiles
String //Enter Query 

 

- 검색결과

 

4. Download Elasticsearch, Download Kibana

-다운 
https://www.elastic.co/kr/downloads/

https://www.elastic.co/kr/downloads/kibana

압축 푼 후 C드라이브로 옮기기

-elasticsearch 실행
elasticsearch.bat 배치프로그램 실행
-kibana 실행 
kibana.bat 배치프로그램 실행 . localhost : 5601 실행 완료 확인

elasticsearch.bat 배치프로그램 실행

 

kibana.bat 배치프로그램 실행 . localhost : 5601 실행 완료 

 

'Univ. > Project' 카테고리의 다른 글

정보검색 & 소프트웨어공학  (0) 2020.07.29

+ Recent posts