호비시의 끄적끄적

Process 와 Thread 본문

취준

Process 와 Thread

호비시 2022. 6. 27. 09:00

Process

실행중인 프로그램을 프로세스라고 한다. 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행중인 것을 말한다. 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다.

Thread

프로세스 내에서 실제로 작업을 수행하는 주체를 말한다. 모든 프로세서에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한 두 개 이상의 스레드를 가지는 프로세서를 멀티스레드 프로세스라고 한다.

스레드의 생성과 실행

자바에서 스레드를 실행하는 방법은 두 가지 이다.

  1. Runnable 인터페이스를 구현
  2. Thread 클래스를 상속

두 방법 모두 작업하고 싶은 내용을 run()메소드에 작성하면 된다.


  // 인터페이스를 구현
  class ThreadWithRunnable implements Runnable{
      public void run(){
          System.out.println(getName());
          ...    
      }
  }

  // 스레드를 상속
  class ThreadWitdhClass extends Thread{
      public void run(){
          System.out.println(getName());
          ...
      }
  }

  public class Thread1 {
      public static void main(String[] args){
        Thread thread1 = new Thread(new ThreadWithRunnable());
        ThreadWithClass thread 2 = new ThreadWithClass();

        thread1.start();
        thread2.start();
    }
  }

멀티 프로세스

  • 두 개 이상의 다수의 프로세서가 협력적으로 하나 이상의 작업을 동시에 처리하는 것
  • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.장점
  • 독립된 구조로 안정성이 높다.
  • 프로세스 중 하나가 문제가 생겨도 다른 프로세스에 영향을 주지 않는다.
  • 여러개의 프로세스가 처리되어야 할 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서가 이를 공유한다면 비용적으로 저렴하다.단점
  • 작업량이 많을수록 Context Switching이 자주 일어나서 오버해드가 발생, 성능 저하가 일어난다.

멀티 스레드

출처 : https://wooody92.github.io/os/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C/

  • 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것장점
  • 프로세스를 생성하여 자원을 할당할 필요가 없기 때문에 자원을 효율적으로 관리할 수 있다.
  • Context Swiching이 빠르다.단점
  • 자원을 공유하기에 동기화 문제가 발생할 수 있다. ex) 병목현상, 데드락
  • 설계와 디버깅이 어렵다
  • 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다.

참고

https://wooody92.github.io/os/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C/

 

멀티 프로세스(Multi Process)와 멀티 스레드(Multi Thread)

멀티 프로세스와 멀티 스레드의 차이

wooody92.github.io

https://www.tcpschool.com/java/java_thread_concept

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://woong0926.tistory.com/76

 

[CS] Thread 와 Process

Process 란? - 단순 실행중인 프로그램이라 할 수 있음 - 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중 인 것 - 동적인 개념으로 실행된 프로그램을 의미 - 프로

woong0926.tistory.com

 

'취준' 카테고리의 다른 글

Dead Lock ?  (0) 2022.07.06
SOLID ?  (0) 2022.06.30
TCP / UDP  (1) 2022.06.24
REST API란?  (0) 2022.06.19
브라우저에서 서버까지  (0) 2022.06.18
Comments