2장 프로그래밍 언어 활용
연산자
연산자 우선순위
증감 연산자(++,--) -> 산술 연산자(* / %) -> 산술 연산자 (+, -)
산술 -> 시프트 -> 관계 -> 논리
a = 5
++a : 6
--a : 4
a++ : 5 (이후 6)
a-- : 5 (이후 4)
비트 연산자
연산자 | 의미 | 비고 |
& | and | 모든 비트가 1일 때만 1 |
^ | xor | 모든 비트가 같으면 0, 하나라도 다르면 1 |
| | or | 모든 비트 중 한 비트라도 1이면 1 |
~ | not | 0이면1, 1이면 0 |
<< | 왼쪽 시프트 | 비트를 왼쪽으로 이동 |
>> | 오른쪽 시프트 | 비트를 오른족으로 이동 |
포인터
라이브러리
C언어
- stdio.h : 데이터 입출력
- math.h : 수학 함수 제공
- string.h : 문자열 처리 (strlen, strcpy, strcmp, strcat 등)
- stdlib.h : 자료형 변환, 난수발생, 메모리 할당 등 (atoi, atof, srand, rand, malloc, free 등)
- time.h : 시간 처리 (time, clock 등)
Java
- java.lang : 기본적인인터페이스, 자로형, 예외 처리 등, import 없이 사용 가능 (String, System, Math 등)
- java.util : 날자처리, 난수 발생, 복잡한 문자열 (Date, Calender, RAndom, StringTokenizer 등)
- java.io : 파일입출력 (InputStream, OutputStream 등)
- java.net : 네트워크 관련 기능 (Socket, URL, InetAddress 등)
- java.awt : 사용자 UI 관련 (Frame, Panel, Dialog, Button, Checkbox 등)
3장 응용 SW 기초 기술 활용
운영체제의 목적
- 처리능력(Throughput) : 일정 시간 내에 시스템이 처리하는 일의양
- 반환 시간 (Turn Around Time) : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때 까지 걸린 시간
- 사용 가능도 (Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한정도
- 신뢰도 (Reliability) : 시스템이 주어진 문제를 정확하게 해결하는 정도
운영체제 구성
- 제어 프로그램
- 감시 프로그램
- 작업 관리 프로그램
- 데이터 관리 프로그램
- 처리 프로그램
- 언어 번역 프로그램
- 서비스 프로그램
운영체제 기능
- 프로세서, 기억장치, 입출력장치, 파일 및 정보 등의 자원 관리
- 자원을 효율적으로 관리하기 위해 스케줄링 기능 제공
- 사용자와 시스템간 인터페이스 제공
- 자원 보호 기능
UNIX / LINUX / MacOS
UNIX 특징
- 대부분 C언어로 작성되어 이식성이 높으며 장치, 프로세스 간 호환성 높음
- 멀티유저, 멀티테스킹 지원
- 트리구조의 파일 시스템
- 프로그램 개발 용이
시스템 구성
커널
- unix의 핵심 부분
- 하드웨어를 보호(캡슐화), 프로그램들과 하드웨어 간의 인터페이스 역할
- 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리, 데이터 전송 및 변환 등
쉘
- 사용자의 명령어를 인식하여 프로그램을 호출하고, 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간의 인터페이스
- 주기억장치에 상주하지 않고, 명령어가 포함된 파일형태로 존재
파일 디스크립터
- 파일 제어 블록 (FCB; File Control Block) 이라 함
- 파일마다 독립적으로 존재, 시스템에 따라 다른 구조를 가질 수 잇음
- 보조기억장치에 저장되어 있다가 해당 파일이 open 될 때 주기억장치로 옮겨짐
- 파일 시스템이 관리하여 사용자가 직접 참조 불가능
기억 장치 관리의 개요
기억 장치 관리 전략
반입(Fetch)전략, 배치(Placement)전략, 교체(Replacement) 전략
반입 전략
- 요구 반입 : 실행중인 프로그램이 특정 프로그램이나 데이터 등의참조를 요구할 때 적재
- 예상 반입: 미리 예상하여 적재
배치 전략
- 최초 적합(First Fit) : 빈 영역중에서 첫 번째 분할 영역에 배치
- 최적 적합(Best Fit) : 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치
- 최악 적합(Worst Fit) : 단편화를 가장 많이 남기는 영역에 배치
교체 전략
- FIFO, OPT, LRU, LFU, NUR, SCR 등
페이지 교체 알고리즘
세그멘테이션(Segmentation) 기법
- 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
- 기억장치의 사용자 관점을 보존
- 기억공간을 절약하기 위해 사용
- 내부단편화는 발생하지 않으나 외부 단편화 발생
OPT(OPTimal replacement, 최적 교체)
- OPT는 앞으로 가장오랫동안 사용하지 않을 페이지를 교체
- 벨레이디(Belady)제안, 페이지 부재 횟수가 가장 적게 발생하는 효율적인 알고리즘
FIFO (First In First Out)
- 가장 오래 있었던 페이지 교체
Page Fault = 6회
LRU (Least Recently Used) 알고리즘
- LRU 알고리즘은 가장 오랫동안 사용하지 않은 페이지를 교체
- 결함 : 주기억장치의 페이지가 변동되는것.
예)
4개의 페이지를 수용할 수 있는 주기억장치, 초기에는 모두 비어 있음.
페이지 참조 순서 : 1, 2, 3, 1, 2, 4, 1, 2, 5
결함 총 5회 발생.
- 참조 1: 캐시에 없으므로, 페이지 결함 발생. 캐시 상태: [1]
- 참조 2: 캐시에 없으므로, 페이지 결함 발생. 캐시 상태: [1, 2]
- 참조 3: 캐시에 없으므로, 페이지 결함 발생. 캐시 상태: [1, 2, 3]
- 참조 1: 이미 캐시에 있음.
- 참조 2: 이미 캐시에 있음.
- 참조 4: 캐시에 없으므로, 페이지 결함 발생. 캐시가 아직 가득 차지 않았으므로, 4를 추가. 캐시 상태: [1, 2, 3, 4]
- 참조 1: 이미 캐시에 있음.
- 참조 2: 이미 캐시에 있음.
- 참조 5: 캐시에 없으므로, 페이지 결함 발생. 가장 오래 전에 사용된 3을 제거하고 5를 추가. 캐시 상태: [1, 2, 4, 5]
LFU (Least Frequently Used)
- 사용 빈도가 가장 적은 페이지 교체
- 화발하게 사용되는 페이지는 사용회수가 많아 교체되지 않고 사용된다.
NUR (Not Used Recently)
- LRU와 비슷한 알고리즘, 최근에 사용하지 않은 페이지를 교체
- 최근 사용 여부를 알기 위해 참조비트와 변형비트가 사용됨
SCR(Second Chance Replacement, 2차 기회 교체)
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지
- FIFO 기법의 단점 보완
가상기억장치 기타 관리 사항
페이지 크기가 작을 경우
- 페이지 단편화감소, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듦
- 불필요한 내용이 주기억장치에 적재될 확률이 적어 효율적인 워킹 셋을 유지
- Locality에 더 일치할수 있기 때문에 기억장치 효율 높아짐
- 페이지 정보를 갖는 맵 테이블의 크기가 커지고, 매핑 속도 늦어짐
- 디스크 접근 횟수가 많아져 입출력 시간 늘어남
페이지 크기가 클 경우
- 맵 테이블 크기 작아짐, 매핑 빨라짐
- 입출력 효율성 증가
- 단편화 증가, 주기억 장치로 이동하는 시간 늘어남
- 불필요한 내용 적재 가능성
Locality
- 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있음
- 시간 구역성이 이루어지는 기억장소
- Loop, Stack, 부 프로그램(Sub Routine), Couning(1씩 증감)에 사용되는 변수(기억장소)
- 공간 구역성이 이루어지는 기억장소
- 배열 순회(Array Traversal, 배열 순례), 순차적 코드 실행, 변수 선언
워킹 셋(Working Set)
- 프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합
스래싱(Thrashing)
- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
프로세스의 개요
프로세스
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체, 디스패치가 가능한 단위
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 지정된 결과를얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
PCB (Process Control Block, 프로세스 제어 블록)
- Task Control Block, Job Control Block 이라고도 함
PCB에 저장되어 있는 정보
- 프로세스의 현재 상태
- 포인터
- 프로세스 고유 식별자
- 스케줄링 및 프로세스의 우선순위
- CPU 레지스터 정보
- 주기억장치 관리 정보
- 입출력 상태 정보
- 계정 정보
프로세스 상태 전이
- 제출 : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
- 접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
- 준비 : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
- 실행 : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
- 대기, 보류, 블록 : 프로세스에 입출력처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는상태
- 종료 : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
- *Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
스레드
- 프로세스 내에서의 작업 단위
- 하나의 프로세스에 하나의 스레드 - 단일 스레드
- 하나의 프로세스에 하나 이상의 스레드 - 다중 스레드
- 경량 (Light Weight) 프로세스라고도 함
- 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
- 기억장소 및 자원의 낭비 줄어듬
- 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성 증진
사용자 수준의 스레드
- 사용자가 만든 라이브러리를 사용하여 스레드를 운용
- 커널 모드로의 전환이 없어 오버헤드가 줄어듬
- 속도는 빠르지만 구현이 어려움
커널수준 스레드
- OS의 커널에 의해 스레드 운용
- 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기하지 않으므로 시스템 성능 향상
- 여러 스레드가 동시에 커널 접근 가능
- 스레드의 독립적인 스케줄링 가능
- 구현이 쉽지만 속도가 느림
스케줄링
스케줄링 종류
- 장기 스케줄링: 어떤 프로세스가 시스템의 자원을 차지하는가, 작업스케줄링, 상위 스케줄링, 작업 스케줄러
- 중기 스케줄링 : 어던 프로세스들이 CPU를 할당받는가
- 단기 스케줄링 : 프로세스가실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업, 프로세스 스케줄링, 하위 스케줄링
문맥 교환 (Context Switching)
- 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생
- 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업
프로세서 스케줄링 (단기 스케줄링) 기법
비선점(Non-Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링
- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료 될 때 까지 CPU 사용
- 모든 프로세스에 대한 요구를 공정하게 처리
- 프로세스 응답 시간의 예측 용이, 일괄 처리 방식에 적합
- 중요한 작업이 중요하지 않은 작업을 기다리는 경우가 발생
- FCFS(FIFO), SJF, 우선순위, HRN, 기한부 알고리즘
선점(Preemptive) 스케줄링
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링
- 우선순위가 높은 프로세스를 빠르게 처리
- 많은 오버헤드 발생
- 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용
- Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등 알고리즘
스케줄링 알고리즘
FCFS (Fisrt Come First Service, = FIFO)
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 4 | 6 |
평균 실행 시간 : (20 + 4 + 6) / 3
평균 대기 시간 : (0 + 20 + 24) / 3
평균 반환 시간 : (20 + 24 + 30) / 3
SJF (Shortest Job First, 단기 작업 우선)
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 4 | 6 |
평균 실행 시간 : (4 + 6 + 20) / 3
평균 대기 시간 : (0 + 4 + 10) / 3
평균 반환 시간 : (4 + 10 + 30) / 3
HRN (Hightest Response-ratio Next)
- 비선점 스케줄링
- 실행시간이 긴 프로세스에 불리한 SJF를 보완하기 위해 대기시간 및 서비스 시간을 이용
- 긴 작업과 짧은 작업간의 지나친 불평등을 해소할 수 있다.
- 우선순위를 계산 숫자가 높은것부터 낮은순으로 순위 부여
- 우선순위 = (대기시간 + 서비스시간) / 서비스시간
- 우선순위 값이 클수록 우선순위가 높다.
프로세스 번호 | P1 | P2 | P3 |
실행 시간 | 20 | 4 | 6 |
대기 시간 | 10 | 20 | 10 |
우선순위 계산 | (20+10) / 20 / 1.5 | (4+20)/4 = 6 | (6+10)/6 = 2.6 |
우선순위 | P2 -> P3 -> P1 |
운영체제 기본 명령어
Windows
- DIR : 파일 목록 표시
- COPY : 파일 복사
- TYPE : 파일의 내용 표시
- REN : 파일 리네임
- DEL : 파일 삭제
- MD : 디렉터리 생성
- CD : 디렉터리 위치 변경
- CLS : 화면 지우기
- ATTRIB : 파일 속성 변경
- FIND : 찾기
- CHKDSK : 디스크 상태 점검
- FORMAT : 디스크 표면을 트랙과 섹터로 나누어 초기화
- MOVE : 파일 이동
UNIX/LINUX
- cat : 파일 내용 표시
- chdir : 현재 사용할 디렉터리의 위치 변경
- chmod : 파일의 권한 변경
- chown : 소유자 변경
- cp : 복사
- exec : 프로세스 수행
- find : 찾기
- fork : 프로세스 생성
- fsck : 파일 시스템 검사, 보수
- getpid : 자신의 프로세스 아이디
- getppdid : 부모 프로세스 아이디
- ls : 현재 디렉터리 파일 목록
- mount/unmount : 파일 시스템 마운트/마운트해제
- rm : 삭제
- uname : 시스템의 이름과 버전, 네트워크 호스트 명 등 시스템 정보 표시
- wait : fork 후 exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event 기다림
인터넷
IP주소
- 숫자로 8비트씩 4부분, 총 32비트
- A Class : 국가나 대형 통신망에 사용 (0~127) $ 2^{24} $
- B Class : 중대형 통신망 (128~191) $ 2^{16} $
- C Class : 소규모 통신망 (192~223) $ 2^{8} $
- D Class : 멀티캐스트용 (224~239)
- E Class : 실험적 주소로 공용되지 않음
서브네팅 (Subnetting)
- 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크라고하며, 이를 변경하여 네트워크 주소를 여러 개로 분할하여 사용
예) 192.168.1.0/24 네트워크를 FLSM 방식을 이용하여 3개의 Subnet으로 나누시오 (IP Subnet-Zero 적용)
192.168.1.0/24 의 서브넷마스크는 1의 개수가 24개, C 클래스에 속하는 네트워크
11111111 | 11111111 | 11111111 | 00000000 |
255 | 255 | 255 | 0 |
서브넷 마스크를 Subnet으로 나눌 때는 버스넷 마스크가 0인부분, 마지막 8비트를 사용
Subnet으로 나눌때 3개의 Subent으로 나누는 것은 크게 3가지를 따로 나누는것.
즉 3을 표현하기위한 이진수 11을 할당하기 위한 앞 2자리를 제외한 000000 6자리를 호스트로 구성하면 됨
네트워크(ID) | 호스트 수 | IP주소 범위 |
1(00) | 64 | 192.168.1.0(00000000) ~ 63(00111111) |
2(01) | 64 | 192.168.1.64(01000000) ~ 127(01111111) |
3(11) | 64 | 192.168.1.128(11000000) ~ 191(11111111) |
IPv6
- IPv4의 주소 부족 문제를 해결하기 위해 개발
- 16비트씩 8부분, 총 128비트, 각 부분을 16진수로 표현, 콜론(:)으로 구분
- 주소의 확장성, 융통성, 연동성 뛰어남
- 인증성, 기밀성, 무결성
- 패킷 크기에 제한 없음
IPv4를 IPv6로 전환하는 방법
- 듀얼 스택(Dual Stack) : 호스트에서 IPv4와 IPv6을 모두 처리할 수 있도록 두개의 스택을 구성
- 터널링(Tunneling) : IPv6망에서 인접한 IPv4망을 거쳐 다른 IPv6망으로 통신할 때 IPv4망에 터널을 만들어 패킷이 통과할 수 있도록 하는 것
- IPv4/IPv6 변환 : 헤더 변환, 전송 계층 릴레이 방식, 응용 계층 게이트웨이 방식
IPv6 구성
- 유니캐스트(Unicast) : 단일 송신자와 단일 수신자 간의 통신 (1:1 통신)
- 멀티캐스트(Multicast) : 단일 송신자와 다중 수신자 (1:다 통신)
- 애니캐스트(Anycast) : 단일 송신자와 가장 가까이 있는 단일 수신자 (1:1 통신)
OSI 참조 모델
하위 1~3계층
상위 4~7계층
물 - 데 - 네 - 전 - 세 - 표 - 응
물리 계층
- 전송에 필요한 두 장치간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의
- 프로토콜 : RS-232C, X.21 등
데이터 링크 계층
- 2개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할수 있도록 한다.
- 흐름제어, 프레임 동기화, 오류 제어, 순서 제어 등을 수행
- 프로토콜 : HDLC, LAPB, PPP, LLC 등
네트워크 계층
- 개방 시스템들 간의 네트워크 연결을 관리(네트워크 연결을 설정, 유지, 해제)하고 데이터를 교환 및 중계
- 경로 설정, 트래픽 제어, 패킷 정보전송 등 수행
전송 계층
- 종단 시스템(End-to-End) 간에 투명한 데이터 전송을가능하게 한다.
- 전송 연결 설정, 데이터 전송, 연결 해제 기능, 주소 설정, 다중화(데이터의 분할과 재조립), 오류 제어, 흐름 제어 등
- TCP, UDP 등 표준이 있음
세션 계층
- 송수신 측 간의 관련성을 유지하고 대화 제어를 담당
- 대화 구성 및 동기 제어, 데이터 교환 관리 기능
- 송수신측 간의 데이터 전송, 연결 해제, 동기 처리 등의 대화를 관리하기 위해 토큰 사용
표현 계층
- 서로 다른 데이터 표현 형태를 갖는 시스템 간의 상호 접속을 위해 필요한 계층
- 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식 변환, 문맥 관리 등
응용 계층
- 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 서비스 제공
- 사용자(응용 프로그램)가 OSI 환경에 접근 할 수 있도록 서비스 제공
네트워크 관련 장비
네트워크 인터페이스 카드(NIC; Network Interface Card)
- 컴퓨터와 컴퓨터, 컴퓨터와 네트워크를 연결하는 장치
- 이더넷 카드(LAN 카드), 네트워크 어댑터 라고 함
허브(Hub)
- 사무실이나가까운 거리의 컴퓨터들을 연결하는 장치
- 신호 증폭기능을 하는 리피터 역할도 포함
- 더미허브, 스위칭 허브
리피터(Repeater)
- 전송되는 신호가 전송 선로의 특성 및 외부 충격등의 요인으로 인해 왜곡되거나 약해질 경우 원래의신호 형태로 재생하여 다시 전송하는 역할
- OSI의 물리계층
- 전송 거리 연장, 배선의 자유도를 높이기 위해 사용
브리지(Bridge)
- LAN과 LAN을 연결하거나 LAN 안에서의 컴퓨터 그룹(세그먼트)을 연결하는 기능
- 데이터 링크 계층 중 MAC 계층에서 사용되므로 MAC 브리지라고도 함
- 트래픽 병목 현상 줄임
- 네트워크를 분산적으로 구성하여 보안성 높임
- 브리지를 이용한 서브넷 구성시 전공 가능한 회선 수는 브리지가 n개일 때, n(n-1)/2 개
스위치(Switch)
- 브리지와 같이 LAN과 LAN을 연결하여 훨씬 더 큰 LAN을 만드는 장치
- HW기반으로 전송 속도가 빠름
- 포트마다 각기 다른 전송 속도 제어 가능
- OSI - 데이터 링크 계층
라우터(Router)
- 브리지와 같이 LAN과 LAN의 연결 기능에 데이터 전송의 최적 경로를 선택하는 기능이 추가됨
- 서로 다른LAN이나 WAN의 연결도 가능
- OSI - 네트워크 계층
브라우터
- 브리지와 라우터의 기능 모두 수행
- 브리지는 내부 네트워크를 분리
- 라우터는 외부 네트워크에 연결
게이트웨이(Gateway)
- 전 계층(1~7 계층)의 프로토콜 구조가 다른 네트워크의 연결을 수행
전처리기(FEP; Front End Processor)
- 통신 회선 및 단말장치 제어, 메시지의 조립과 분해, 전송 메시지 검사 등을 미리 수행하여, 컴퓨터의 부담을 줄임
- 호스트 컴퓨터와 단말장치 사이에 고속 통신 회선
TCP/IP
TCP(Transmission Control Protocol)
- OSI - 전송 계층
- 신뢰성 있는 연결형 서비스 제공
- 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능 제공
- 스트림 전송 기능 제공
- TCP 헤더에는 Source/Destination Port Number, Sequence Number, Acknowledgment Number, CheckSum 등 포함
IP(Internet Protocol)
- OSI - 네트워크 계층
- 데이터그램을 기반으로 하는 비연결형 서비스 제공
- Best Effort 원칙에 따른 전송 기능
- 패킷의 분해/조립, 주소 지정, 경로 선택
- 헤더의 길이는 20Byte ~ 60Btye
- IP 헤더에는 Version, Header Length, Total Packet Length, Header Checksum, Source IP Address, Destination IP Address 등 포함
TCP/IP 구조
OSI | TCP/IP | 기능 |
응용 계층 표현 계층 세션 계층 |
응용 계층 | 응용 프로그램 간의 데이터 송수신 제공 TELNET, FTP, SMTP, SNMP, DNS, HTTP 등 |
전송 계층 | 전송 계층 | 호스트들 간의 신뢰성 있는 통신 TCP, UDP |
네트워크 계층 | 인터넷 계층 | 데이ㅓ터 전송을 위한 주소 지정, 경로 설정 IP, ICMP, IGMP, ARP, RARP |
데이터 링크 계층 물리 계층 |
네트워크 액세스 계층 | 실제 데이터(프레임)를 송수신 하는 역할 Ethernet, IEEE 802, HDLC, X.25, RS-232C, ARQ 등 |
응용 계층 프로토콜
- FTP (File Transfer Protocol)
- 원격 파일 전송 프로토콜
- SMTP (Simple Mail Transfer Protocol)
- 전자 우편 전송 프로토콜
- TELNET
- 컴퓨터 원격 연결
- 가상 터미널 (Virtual Termanal) 기능
- SNMP (Simple Network Management Protocol)
- TCP/IP 네트워크 관리 프로토콜
- DNS (Domain Name System)
- 도메인 네임을 IP주소로 매핑하는 시스템
- HTTP
- MQTT (Message Queuing Telemetry Transport)
- 발행-구독 기반의 메시징 프로토콜, IoT에서 사용
전송 계층 프로토콜
- TCP (Transmission Control Protocol)
- 양방향 연결
- 가상 회선 연결
- 스트림 위주 전달(패킷 단위)
- 신뢰성 있는경로 확립, 메시지 전송 감독
- 패킷의 분실, 손상, 지연이나 순서가 틀린 것 등이 발생할 때 투명성이 보장되는 통신
- TCP 프로토콜의 헤더는 기본적으로 20Byte ~ 60Byte
- 선택적으로 40Byte를 추가하여 최대 100Byte 확장 가능
- UDP (User Datagram Protocol)
- 데이터 전송 전에 연결을 설정하지 않는 비연결형 서비스
- TCP에 비해 단순한 헤더, 오버헤드가 적고, 전송 송속도가 빠름
- 빠른 속도를 필요할 경우, 정기적으로 반복해서 전송할 경우 사용
- 실시간 전송에 유리하며, 신뢰성보다는 속도가 중요할 때
- UDP 헤더는 Source Port Number, Destination Port Number, Length, Checksum 등
- RTCP (Real-Time Control Protocol)
- RTP(Real-Time tranport Protocol) 패킷의 전송 품질을 제어하기 위한 제어 프로토콜
- 세션에 참여한 각 참여다즐에게 주깆거으로 제어 정보 전송
- 하위 프로토콜은 데이터 패킷과 제어패킷의 다중화(Multiplexing)를 제공
- 데이터 전송을 모니터링하고 최소한의 제어와 인증 기능만 제공
- RTCP 패킷은 항상 32비트의 경계로 끝남
인터넷 계층 주요 프로토콜
- IP (Internet Protocol)
- 전송할 데이터에 주소를 지정하고, 경로를 설정
- 비연결형인 데이터그램 방식을 사용, 신뢰성 보장되지 않음(UDP같음)
- ICMP (Internet Control Message Protocol), 인터넷 제어 메시지 프로토콜
- IP와 조합하여 통신중에 발생하는 오류의 처리와 전송 경로 변경 등을 위한 제어 메시지를 관리
- 헤더는 8Byte
- IGMP (Internet Group Management Protocol, 인터넷 그룹 관리 프로토콜)
- 멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용
- ARP (Address Resolution Protocol, 주소 분석 프로토콜)
- 호스트의 IP 주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소 (MAC주소)로 바꾼다
- RARP (Reverse ARP)
- ARP 반대
네트워크 액세스 계층 주요 프로토콜
- Ethernet (IEEE 802.3)
- CSMA/CD 방식의 LAN
- IEEE 802
- LAN을 위한 표준 프로토콜
IP 프로토콜
- Header Length : IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시
- Packet Length : 16 bits, IP헤더를 제외한 패킷 전체의 길이, $ 2^{16} - 1 $(65,535)
- Time To Live : 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것
- Version Number : IP 프로토콜의 버전 번호를 나타냄
- 주로 주소를 지정하고, 경로를 설정하는 기능을 함
- 헤더 체크섬 제공
- 패킷을 분할, 병합하는 기능을 수행
- 비연결형 서비스 제공
- Best Effort 원칙에 따른 전송 기능을 제공
UDP 프로토콜
- 비연결형및 비신뢰성 전송 서비스 제공
- 흐름 제어나 순서 제어가 없어 전송속도가 빠름
- 수신된 데이터의 순서 재조정 기능을 지원하지 않음
- 복구기능 없음
- 단순한 헤더 구조로 오버헤드가 적음
- TCP와같이 트랜스포트 계층에 존재
RIP (Routing Information Protocol) 라우팅 프로토콜
- 최단 경로 탐색에는 Bellman-Ford 알고리즘을 사용하는거리 벡터 라우팅 프로토콜
- 라우팅 프로토콜을 IGP와 EGP로 분류했을 때 IGP에 해당
- 최적의 경로를 산출하기 위한 정보로서 홉(거리 값)만을 고려하므로, RIP를 선택한경로가 최적의 경로가 아닌 경우가 많이 발생할 수 있다.
- 소규모 네트워크 환경에 적합
- 최대 홉 카운트를 15홉 이하로 한정
Myers 구분 응집도
강함
- 기능적 응집도 (Functional Cohesion)
- 순차적 응집도 (Sequential Cohesion)
- 교환적 응집도
- 절차적 응집도
- 시간적 응집도 (Temporal Cohesion)
- 논리전 응집도
- 우연적 응집도 (Coincidental Cohesion)
약함
결합도 (Coupling)
- 스탬프 결합도 - 두 모듈이 매개변수로 자료를 전달할 때, 자료구조 형태로 전달되어 이용될 때 데이터가 결합되어 있다고 한다.
- 내용 결합도 - 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조할 때 두 모듈은 내용적으로 결합되어있다고 한다.
- 공통 결합도 - 두 모듈이 동일한 전역 데이터를 접근한다면 공통결합 되어있다고 한다.
- 결합도: 두 모듈간의 상호작용, 의존도 정도를 나타낸 것
- Tip: 문제의 단어를 잘 파악하여 결합도를 유추 가능.
- 내용 참조~ 자료참조~ 단어가 있으면 내용 결합도
- 전역변수 단어가 있으면 공통 결합도 등
모듈화 (Modularity)
- 독립적인 모듈이 되기 위해서는 응집도가 강해야하고, 결합도는 약해야 한다.
- 응집도 : 모듈이 독립적인 기능으로 정의되어 있는 정도
- 결합도: 모듈과 모듈 사이의 상호의존 또는 연관 정도
#include <stdio.h>
int main(int argc, char *argv[]) {
int a = 4;
int b = 7;
int c = a | b;
print("%d", c);
return 0;
}
& , | 와 같은 and, or 연산자는 2진법으로 푼다.
a = 4 = 0100
b = 7 = 0111
or 은 둘중 하나만 1이어도 1이기 때문에 a | b = 0111
즉, c = 0111 = 7
'정보처리기사 > 필기' 카테고리의 다른 글
자주 틀리는 항목 (3) | 2024.02.29 |
---|---|
정보처리기사 필기 공부 5과목 (정보시스템 구축관리) (0) | 2024.02.02 |
정보처리기사 필기 공부 3과목 (데이터베이스 구축) (0) | 2024.01.29 |
정보처리기사 필기 공부 2과목 (소프트웨어 개발) (2) | 2024.01.24 |
정보처리기사 필기 공부 1과목 (소프트웨어 설계) (0) | 2024.01.17 |
댓글