Process VS Thread
Process 컴퓨터에서 실행 중인 프로그램을 뜻 한다. 각각의 프로세스는 독립된 메모리 공간을 할당 받고, 명령어들과 데이터를 가진다. Process는 메인 메모리에서 CPU(명령어를 실행하는 연산 장치)에서 실행되기 위해 대기하고 있다. Process 시스템은 가장 초창기에는 단일 프로세스 시스템으로 한 번에 하나의 프로그램만 실행되었다. ...
Process 컴퓨터에서 실행 중인 프로그램을 뜻 한다. 각각의 프로세스는 독립된 메모리 공간을 할당 받고, 명령어들과 데이터를 가진다. Process는 메인 메모리에서 CPU(명령어를 실행하는 연산 장치)에서 실행되기 위해 대기하고 있다. Process 시스템은 가장 초창기에는 단일 프로세스 시스템으로 한 번에 하나의 프로그램만 실행되었다. ...
Context Switching 컨텍스트 스위칭(Context Switching)이란 CPU나 코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것이다. 여기서 컨텍스트는 프로세스/스레드의 상태를 의미한다.(CPU/메모리 안에서의) 컨텍스트 스위칭은 여러 프로세스/스레드를 동시에 실행 시키기 위해 필요하다. 이러한 컨텍스트 ...
CPU bound, IO bound에 대해 이야기하기 전에 CPU, IO가 무엇인지 짧게 살펴보자. CPU(central processing unit) : 프로세스의 명령어를 해석하고 실행하는 장치 IO(input/output) : 파일을 읽고 쓰기, 네트워크의 어딘가와 데이터를 주고 받는 것, 입출력 장치와 데이터를 주고 받는 것 …. 등...
Http의 특징 중 Stateful과 Stateless에 대해 알아보자. Stateful(상태 유지) Stateful(상태 유지)란, 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하는 것을 뜻 합니다. 클라이언트가 연결을 끊을 때 까지 서버와 클라이언트는 계속 연결되어있다. 예를 들어 살펴보자. 자전거 판매를 하는 서버 X ...
Thread란 프로세스가 실행될 때 요청들을 처리하는 것, 코드의 실행 흐름을 의미한다. 우리가 Thread Pool을 사용해야하는 이유에 대해 알아보자. 만약 어떠한 요청이 들어올 때마다 새로운 Thread를 만들어야 된다면 어떤 문제가 발생할까? Thread 생성에 소요되는 시간 때문에 요청 처리가 더 오래 걸릴 것이다. Thread의 경우 ...
이번에는 배열 대신 LinkedList를 사용해 Queue를 구현해보겠습니다. Node class Node<E> { E value; Node<E> next; public Node<E> (E value) { this.value = value; this.next = null; } } ...
Queue는 기본적으로 ‘선입선출’인 자료구조이다. 예를 들어 대기열, 놀이공원에서 기구를 기다릴 때 서 있는 대기 줄을 생각하면 된다. 큐는 대표적으로 시간 순으로 어떤 작업 또는 데이터를 처리할 필요가 있을 때 사용된다. 또 알고리즘인 BFS(너비 우선 탐색)에 이용된다고 한다. Queue는 먼저 들어온 것이 먼저 나간다고 했다. 그럼 배열을 ...
Factory 패턴은 객체 생성 역할을 별도의 클래스(Factory)에게 위임하는 것이 궁극적인 목표이다. 디자인 패턴 중 Factory는 팩토리 메소드 패턴과 추상 팩토리 패턴 두 가지로 크게 나뉜다. 이 두 가지 패턴의 베이스가 되는 가장 단순한 형태의 Factory 패턴이 존재한다. 보통 Simply Factory라는 이름으로 많이 불린다....
Stack & StackInterface 구현 st-lab 님의 블로그를 참고해서 구현한 StackInterface & Stack이다. StackInterface package Interface_form; /** * * 자바 stack Interface입니다. <br> * StackInterface는 Stack...
Doubly LinkedList 구현 st-lab 님의 블로그를 참고해서 구현한 Doubly LinkedList이다. Node< E > public class Node<E> { E data; Node<E> next; Node<E> prev; Node<E> (E data) { ...