on
면접준비
면접준비
PROCESS vs THREAD
1. 프로그램: 코드, 명령어, 정적인 데이터의 집합/묶음 (실행전 코드 ie) 컴파일된 Binary 코드)
2. 프로세스: 현재 실행중인 프로그램 메모리 영역을 공유 하지 않음 (독립된 메모리) --> OS부터 시스템 자원을 할당받는 작업의 단위
i. CODE: 실행 명령
ii. DATA: Static / Global 변수
iii. HEAP: 동적 Memory (new, instance)
iv. STACK: 지역변수, 매개변수, 일시적인 데이터
3. THREAD: 프로세스 내에서 실행되는 흐름의 단위 (프로세스를 쪼갠 단위)
- 쓰레드는 Stack만 따로 할당받고, Code, Data, Heap영역은 공유 (메모리를 공유함)
MULTI-PROCESSING vs MULTI-THREADING
1. MULTI-PROCESSING
- 여러 개의 CPU가 여러 개의 프로세스를 병렬적/동시다발적으로 실행
- 각 프로세스는 독립적인 메모리를 가지고 별도로 수행
2. MULTI-THREADING
- 하나의 프로세스를 여러 개의 쓰레드로 자원/메모리를 공유하며, 작업을 수행
CONTEXT SWITCHING
- CPU는 한번에 하나의 프로세스만 수행가능
- CPU에서 여러 프로세스를 번갈아가면서 작업을 처리 (대기,수행 --> Ready, Run, Wait)
- 언제 일어나는가? 1. 높은 우선순위의 프로세스 2. 인터럽트
JAVA GARBAGE COLLECTOR
- 동적으로 할당된 메모리 (RAM) 중 더 이상 사용하지 않는 메모리 영역을 자동으로 찾아서 해제해줌
객체지향 vs 절차지향 프로그래밍
1. 객체지향 프로그래밍 (Java, Python) ==> 객체기반 프로그래밍
- 실제세계를 모델링하여 데이터를 기능별 단위로 묶어 모듈화하여 코드재사용, 다형성, 추상화, 캡슐화, 상속성을 보장
- 프로그램을 다수의 객체로 만들어 객체끼리의 상호작용
i. 캡슐화: 관련된 데이터와 함수를 하나의 묶음으로 정의 --> 내부구현을 외부로부터 감춤
ii. 상속성: 새로운 (자식) 클래스가 기존의 (부모) 클래스의 자료와 연산을 사용할 수 있게 해줌 --> 코드 재사용
iii. 다형성: 하나의 객체가 상황에 따라 다양한 자료형 (data type)에 속하게 되는 성질
- Overloading: 두 메서드가 같은 이름을 갖고 있으나, 1. 인자의 수 (parameter) 2. 인자의 자료형이 다른 경우
- Overriding: 자식 클래스가 부모 클래스에 정의된 메서드를 재정의 할 수 있는 경우
iv. 추상화: 객체를 핵심적인 특징들로 기반으로 모델링
2. 절차지향 프로그래밍 (C, Fortran, Basic) ==> 함수 기반 프로그래밍
- 프로그램을 순차적으로 명령수행하는 것 이 아니라 함수 호출 [프로시져 콜] (루틴, 서브루틴, 메소드, 함수) 등을 사용하여 수행하는 명령형 프로그래밍 패러다임 ==> 함수를 활용, 코드 재사용
* 절차지향의 반댓말은 객체지향이 아니다!
1. Binary Code --> 2. Machine Code --> 3. Assembly --> 4. Unmanaged Language --> 5. Managed Language
OSI-7 계층 ==> 네트워크 표준 모델
- 각각의 통신 계층을 분리하여 독립적인 역할 수행 --> 각 계층은 하위계층 사용 & 현계층은 상위계층에게 기능제공
- "Please Do Not Throw Sausage Pizza Away"
1. PHYSICAL LAYER (Cable, Network Interface Card, Hub)
- 연결된 두 대의 컴퓨터가 0과1의 나열을 전기/기계 신호로 주고 받을 수 있게 (통신가능하게) 해주는 하드웨어 계층
2. DATA LINK LAYER (Mac Address, Switches)
- 두 노드간 신뢰성 있는 데이터 전송을 보장
- 전송단위인 프레임에 고유 물리 주소인 MAC주소를 부여하여 통신
* 에러검출, 재전송, 흐름제어
3. NETWORK LAYER (IP Address, Route)
- 경로를 탐색하여 데이터를 목적지까지 라우팅해줌 (IP 주소를 부여하고, 경로를 선택하여, 패킷을 전송)
* IP 주소 부여, Route(경로) 설정, 패킷단위로 전송
4. TRANSPORT LAYER (TCP, UDP, Port Numbers)
- 두 네트워크간 데이터 전송 담당
- 상위 계층의 데이터를 받아, 세그멘트라는 단위로 나눔
- TCP: 오류제어, 흐름제어를 통해 신뢰성 있는 통신 보장
* 세그면테이션, 오류제어, 흐름제어 (전송량제어 [Sliding Window)제공
5. SESSION LAYER
- 네트워크상 양쪽 연결을 논리적으로 관리 ==> 세션을 열고 닫고 관리
* 세션 설정, 유지, 종료, 전송,복구(Checkpoint)
6. PRESENTATION LAYER (데이터 변환, 압축, 암호화)
- 응용계층으로부터 전달 받거나 전송하는 데이터를 인코딩이나 디코딩하는 계층 --> 데이터 변환 (Text, GIF, JPG)
7. APPLICATION LAYER (FTP, HTTP, SMTP, Telnet)
- 사용자를 위해 인터페이스 제공 --> 사용자 또는 어플이 네트워크에 접근 할 수 있게 해줌
공유하기 글 요소 저작자표시
from http://logntime.tistory.com/12 by ccl(A) rewrite - 2021-12-18 00:00:47