전공 기초 복습 - NW, OS, SWE 등..
전공 기초 복습을 위한 정리
OSI 7계층
7계층 – 응용 계층(Application)
- 사용자가 컴퓨터와 응용프로그램을 통해 직접 작업하고 상호작용하는 계층.
- 웹 브라우저, HTTP, FTP, WWW, Telnet, SMTP, POP.
6계층 – 표현 계층(Presentation)
- 데이터의 형식을 정의.
- 응용프로그램 형식 <=> 네트워크 형식 변환.
- JPEG, TIFF, GIF(그래픽 포맷), MPEG, QUICKTIME(동영상 포맷), MIDI(음악 포맷), RTF, ASCII, EBCDIC(텍스트 포맷) 등을 지정.
- 데이터 압축(compression), 암호화(Encryption).
5계층 – 세션 계층(Session)
- 서로 다른 단말기 간 통신을 위해 세션을 맺음.
- 네트워크 연결 간 성립(Establishment), 제어와 운영(Manage and Control), 연결의 종료(Terminate)를 담당.
- 운영 체제(OS).
4계층 – 전송 계층(Transport)
- 보낼 데이터의 용량과 속도, 목적지 등을 처리.
TCP (Transmission Control Protocol)
- 연결 지향 프로토콜(Connection oriented Protocol).
- 인터넷 프로토콜(IP) 위에 구축되어 TCP/IP로 불림.
- 데이터가 잘 전송되고 있는지 확인하고, 에러가 발생하면 그 부분을 재전송.
- 기기의 IP 주소 사용.
UDP (User Datagram Protocol)
- 비연결 지향 프로토콜(Connectionless Protocol).
- 데이터를 보낸 후 검증하지 않음.
- 음성 전화 등에 사용.
3계층 – 네트워크 계층(Network)
- 패킷을 목적지까지 도달하기 위한 가장 빠른 루트를 찾고 전송.
- 3계층에서 에러가 발생하면 2계층에서 검출하고 4계층에서 에러 수정.
- IP, IPX, ICMP(ping 체크), ARP(IP => MAC).
- 라우터(router).
2계층 – 데이터 링크 계층(Data Link)
- 직접 연결된 노드 간 물리적인 전송을 담당.
- 에러 검출(Error Notification), 흐름 제어(Flow Control).
- SubLayer_1 = MAC: 데이터를 MAC 주소에 대응하는 장비로 보냄.
- SubLayer_2 = LLC: 각 장비를 논리적으로 연결하고 유지.
- 장비: Bridge, Switch.
- 프로토콜: HDLC, PPP, Frame-Relay, FDDI, ATM.
1계층 – 물리 계층(Physical)
- 데이터 <=> 전기신호 변환.
- 장비: Hub, Repeater, Cable.
- 실제 사용자(기술자)가 점검해 볼 수 있는 영역.
Framework
- 특정 형태의 소프트웨어 문제를 해결하기 위해 상호 협력하는 클래스 프레임과 인터페이스 프레임의 집합.
- 프레임워크는 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성된다.
- 프레임워크 컴포넌트는 재사용이 가능하다.
프레임워크 도입
- 객체지향 개발 간 개발자의 선호도에 따라 다양한 언어와 환경을 사용.
- 신규 개발자 투입 또는 유지보수 시 전체 시스템의 통합성 및 일관성 부족 문제를 해소하고자 프레임워크 도입.
프레임워크가 가져야 할 특징
- 개발자들이 따라야 할 가이드라인 제공.
- 개발할 수 있는 범위가 정해져 있음.
- 개발자를 위한 다양한 도구들 지원.
Garbage Collection(가비지 컬렉션)
- 시스템에서 더 이상 사용하지 않는 동적 할당된 메모리 블럭을 찾아 자동으로 다시 사용 가능한 자원으로 회수.
- 시스템에서 가비지 컬렉션을 수행하는 부분을 가비지 컬렉터라 부른다.
Thread와 Process
Thread
- 프로세스가 할당받은 자원을 이용하는 독립적인 실행 단위.
- 프로세스 하나가 생성되면 하나의 메인 스레드가 생성됨. 추가하지 않는 한 모든 코드는 메인 스레드에서 실행됨.
Thread 장점
- 빠른 프로세스 생성.
- 적은 메모리 사용.
- Thread 간 쉬운 정보 공유.
Process
- 컴퓨터적인 해석: “실행 중인 프로그램”.
- 운영체제로부터 자원을 할당받는 작업의 단위.
- 이 프로세스 내에서 실행되는 일의 단위 = 쓰레드.
- 1 프로세스 = N 쓰레드.
Process 교착상태(Deadlock)
- 두 개 이상의 작업이 서로의 작업이 종료되지 않아 무한정 기다리는 상태.
- 다음 4가지 조건을 충족해야 발생.
발생 조건
| 발생 조건 | 설명 |
|---|---|
| 상호배제(Mutual exclusion) | 공유 자원을 동시에 쓸 수 없음 |
| 점유상태로 대기(Hold and wait) | 자원을 점유하였으나 인지하지 못하고 다른 자원을 기다림. 그래서 다른 프로세스가 이 자원을 사용 못함 |
| 선점불가(No preemption) | 어떤 프로세스가 점유 중일 때 다른 프로세스가 자원을 뺏을 수 없음. 그래서 2번 상태를 해결할 수 없음 |
| 순환성 대기(Circular wait) | 프로세스 간 대기하며 꼬리를 물고 있음 |
교착상태 해결방안
| 방법 | 설명 |
|---|---|
| 예방 | 4가지 조건 중 하나라도 발생하지 않도록 시스템 차원에서 막는다. 그러나 자원 낭비, 성능 저하 등의 이슈가 있다. |
| 회피 | 발생 조건은 건드리지 않고, 발생을 막는 알고리즘을 적용 |
| 탐지 + 회복 | 데드락이 조건문 등으로 탐지되면 탈출하도록 코딩 |
| 무시 | 데드락 발생 확률이 매우 낮다고 판단되면 긁어 부스럼 만들지 않고 무시함 |
소켓 통신(TCP/UDP)
TCP(Transmission Control Protocol)
- 연결형 서비스 제공.
- 높은 신뢰성 보장.
- 연결의 설정(3-way handshaking).
- 연결의 해제(4-way handshaking).
- 데이터 흐름 제어, 혼잡 제어.
- 전이중, 점대점 서비스(양방향 송수신 서비스).
UDP(User Datagram Protocol)
- 비연결형 서비스 제공.
- 신뢰성이 낮음.
- 데이터의 전송 순서가 바뀔 수 있음.
- 데이터 수신 여부 확인 안함(3-way handshaking과 같은 과정 X).
- TCP보다 전송 속도가 빠름.
- 1:1, 1:다, 다:다 통신.
- 스트리밍, 전화 서비스 등.
Stack과 Queue
Stack
- LIFO(Last In First Out)의 후입선출 구조.
push();를 이용한 데이터 입력,pop();을 이용한 데이터 출력.- 예: 시스템 스택 - 함수의 호출과 복귀 순서는 스택의 구조를 응용하여 관리.
- 역순 문자열 만들기, 수식의 괄호 검사, 수식의 후위 표기법 변환.
Queue
- FIFO(First In First Out)의 선입선출 구조.
enQueue();를 이용한 데이터 입력,deQueue();를 이용한 데이터 출력.- 예: 우선순위가 같은 작업 예약(인쇄 대기열), 선입선출이 필요한 대기열(티켓 카운터).
- Linear Queue(선형큐)는 메모리 재사용이 불가능하여 Circular Queue(원형 큐)가 등장함.
소프트웨어 개발 방법론
- 폭포수 모델(Waterfall Model): 순차적인 소프트웨어 개발 프로세스. 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수.
- 애자일(Agile): 프로젝트의 방향을 지속적으로 검토하고, 버그를 고치며 필요한 것을 바꾸며 다시 개발을 진행할 수 있도록 변화에 대처하면서 위험 요소를 최소화.
- V 모델(V-Model): 폭포수 모델의 확장된 형태, 테스트 단계를 추가. 각 개발 단계 검증에 초점하여 오류 줄임.
- 프로토타입 모델(Prototype Model): 요구사항 분석 -> 프로토타입 설계 -> 프로토타입 개발 -> 사용자 평가 -> 구현.
- 나선형 모델(Spiral Model): 계획 및 초기 요구 분석 -> 1차 위험 분석 -> 1차 프로토타입 개발 -> 1차 사용자 평가 -> 반복.
임베디드 시스템과 임베디드 소프트웨어
- 제어가 필요한 시스템 내에 존재하는 시스템과 소프트웨어.
- 특정 목적의 컴퓨터 시스템이며, 전체 장치의 일부분으로 구성.
VPN과 NAT
- VPN (Virtual Private Network): 인터넷 네트워크를 이용해 특정 집단만 사용할 수 있는 작은 네트워크 구축. 인터넷 회선을 암호화된 규격을 통해 개인 전용선처럼 사용.
- NAT (Network Address Translation): 네트워크 주소 변환. 사설 IP 주소를 공인 IP 주소로 변환.
빅오, 오메가, 세타
- 빅오(Big O): 최악의 경우의 시간 복잡도.
- 오메가(Omega): 최선의 경우의 시간 복잡도.
- 세타(Theta): 최소와 최악의 중간인 평균 복잡도.
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
