woowacourse-study / 2022-cs-plant

cs 씨앗을 심기 위한 repository 입니다.
7 stars 1 forks source link

프로세스와 스레드 그리고 톰캣 #8

Open gudonghee2000 opened 2 years ago

gudonghee2000 commented 2 years ago

프로세스

프로세스는 CPU가 작업을 처리하기 위해 2차메모리에 저장된 프로그램(실행을 위한 코드들)을 RAM에 적재하여 실행시킨 상태를 의미한다.

쓰레드

실제 작업의 주체를 의미한다. 프로세스는 기본적으로 하나의 쓰레드를 가지고 다수의 쓰레드를 가지면 멀티 쓰레드환경이라고 한다.

멀티 쓰레드

하나의 프로세스 내부에서 여러개의 쓰레드들이 메모리영역의 일부를 공유하면서 작업을 처리하는 환경을 의미한다. 멀티 쓰레드는 몇가지 장점과 단점을 가진다. 장점

단점

멀티 프로세스

여러개의 프로세스들이 각각 작업을 처리하는 환경을 의미한다. 멀티 프로세스는 멀티 쓰레드와 반대되는 장단점을 가진다. 장점

단점

컨텍스트 스위칭이란?

컨텍스트 스위칭은 CPU가 연산 작업을 수행할 프로세스 혹은 쓰레드를 변경하는 과정이다. 컴퓨터는 멀티 태스크 환경을 제공하는데 실제로는 CPU를 시분할 방식으로 특정시간마다 프로세스를 변경하며 작업을 수행하기 때문에 컨텍스트 스위칭이 필요하다.

그렇기 때문에 컨텍스트 스위칭을 최소화 하는 것은 성능향상에 중요하다.

컨텍스트 스위칭 과정

  1. 인터럽트가 발생한다.
  2. CPU는 현재 작업중인 프로세스를 중지하고 다음 연산을 위한 정보를 PCB(PROCESS CONTROL BLOCK)에 저장한다.
  3. 다음 프로세스의 PCB를 읽어와 프로세스를 가져온다.
  4. 새로운 프로세스의 작업을 수행한다.

컨텍스트 스위칭을 최소화 하면 성능이 향상되는 이유

컨텍스트 스위칭 과정 동안 CPU는 연산을하지 못하고 대기상태에 들어간다. 이렇게 붕 뜨는 시간을 오버헤드라고 하는 CPU를 낭비하는 시간이다. 그렇기 때문에 컨텍스트 스위칭을 최소화 할수록 CPU는 더 많은 일을 할수 있고 성능의 향상을 가져올수 있다.

컨텍스트 스위칭을 최소화하는 방법

I/O 인터럽트 발생을 줄이는 방법이 있다. 실행중인 프로세스가 많을 수록 I/O 인터럽트가 빈번하게 발생할 확률이 높아진다. 그렇기 때문에 프로세스 개수를 줄이는 방법으로 컨텍스트 스위칭을 최소화할 수 있다.

톰캣은 멀티 스레드

톰캣은 성능향상을 위해 멀티 스레드 환경을 제공한다. 여담으로 초기 아파치는 멀티 프로세스 환경만을 제공햇다. 이는 UNIX 운영체제 작동 방식을 기반으로 만들어졌기 때문이라고 한다. 현재의 아파치는 멀티 스레드 환경과 이벤트 드라이브 환경도 제공한다.


인터뷰 예상 질문

  1. 프로세스와 스레드의 차이는 무엇일까?

  2. 멀티 쓰레드 환경의 장단점은 무엇일까?

  3. 멀티 프로세스 환경의 장단점은 무엇일까?

  4. 톰캣은 왜 멀티 쓰레드 환경을 제공할까?

  5. PCB란 무엇일까?

  6. 컨텍스트 스위칭을 최소화 해야하는 이유는 무엇일까?