CS
-
[JAVA] 자바 가상 머신 (Java Virtual Machine)CS/개발 언어 (JAVA) 2021. 5. 12. 09:54
JVM이란? JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행하는 것 JAVA와 OS 사이의 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용 가능하게 해준다. 메모리 관리, Garbage Collection, 스택 기반의 가상 머신 자바 프로그램 실행과정 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로하는 메모리를 할당받는다. 자바 컴파일러가(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다. Class Loader를 통해 class 파일들을 JVM으로 로딩한다. 로딩된 class 파일들은 execution engine을 통해 해석된다. 해석된 바이트코드는 Runtime Data Area에 배치..
-
[네트워크] Synchronous/Asynchronous와 Blocking/NonBlockingCS/네트워크 2021. 4. 26. 23:39
Synchronous(동기) vs Asynchronous(비동기) 두 가지 이상의 대상(함수, 애플리케이션 등)과 이를 처리하는 시간으로 구분 Synchronous : 호출된 함수의 리턴하는 시간과 결과를 반환하는 시간이 일치하는 경우 Asynchronous : 호출된 함수의 리턴하는 시간과 결과를 반환하는 시간이 일치하지 않는 경우 Blocking vs NonBlocking 호출되는 대상을 직접 제어할 수 없는 경우 이를 구분할 수 있다. Blocking : 직접 제어할 수 없는 대상의 작업이 끝날 때까지 기다려야 하는 경우 Non-Blocking : 직접 제어할 수 없는 대상의 작업이 완료되기 전에 제어권을 넘겨주는 경우
-
[네트워크] TCP 동작 원리CS/네트워크 2021. 4. 26. 21:38
TCP (Transmission Control Protocol) ? IP 프로토콜의 한계를 극복하기 위한 프로토콜 TCP 패킷 정보 출발지 PORT 목적지 PORT 전송 제어, 순서, 검증 정보 ... TCP 특징 전송 제어 프로토콜 (Transmission Control Protocol) 연결 지향 - TCP 3 way handshake (가상 연결) 데이터 전달 보증 데이터 수신에 대한 응답 전달 순서 보장 데이터 순서 검증 후 응답 전달 신뢰할 수 있는 프로토콜 현재는 대부분 TCP 사용
-
[JAVA] JVM MemoryCS/개발 언어 (JAVA) 2021. 4. 22. 19:08
Runtime Data Area Java 프로그램이 실행 될 때 JVM이 실행되면서 OS로부터 할당받은 메모리영역 메모리 용도에 따라 크게 5개로 구분 1. Method Area (Static Area) 클래스 정보를 처음 메모리 공간에 올릴 때 초기화되는 대상을 저장하기 위한 메모리 공간 클래스의 구성요소인 Field, Method, Type 정보들이 이 위치에 올라간다. (클래스 데이터를 위한 공간) 2. Heap Area 자바 프로그램이 실행되면서 동적으로 생성된 객체가 저장되는 공간이다. (객체 데이터를 위한 공간) 3. Stack Area 메소드가 호출되면 할당되었다가 메소드를 빠져나가면 바로 소멸되는 특성의 데이터를 저장하기 위한 영역 호출된 메소드의 매개변수, 지역변수, 리턴 값 등을 임시로..
-
[운영체제] Multi Process vs Multi ThreadCS/운영체제 2021. 4. 22. 19:08
Multi Process vs Multi Thread Multi Process * 하나 이상의 프로세스들을 동시에 처리 (병렬) * 장점 : 독립된 구조이기 때문에 안정성이 높다 * 단점 : 시스템의 자원 소모가 심하고 Context Switching으로 인한 성능 저하 Multi Thread * 장점 * 시스템의 처리율이 향상된다. * 시스템의 자원 소모가 감소된다. * 프로세스 간 통신 방법보다 스레드 간 통신 방법이 간단하다. * 단점 * 잘못된 변수를 공유함으로써 오류 발생 가능성이 있다. * 프로그램 디버깅이 어렵다.