본문 바로가기
IT 지식/운영체제

[운영체제] 멀티 프로세스와 멀티 쓰레드

by 이민우 2021. 4. 2.
728x90
반응형

멀티 프로세스와 멀티 쓰레드 모두 두 개 이상의 일을 동시에 처리하는 병렬 동작을 지원한다.

 

프로세스메모리에 올라와 실행되고 있는 프로그램이다. 그리고 쓰레드는 한 프로세스 내에서 동작되는 여러 실행의 흐름이다. 즉, 쓰레드는 프로세스 내에 포함되어 있다.

 

흔히 프로세스와 쓰레드를 은행에 비유하곤 한다. 컴퓨터가 은행이라면, 전국에서 영업중인 은행의 지점들은 프로세스이고, 각 은행 내에서 고객들을 받는 창구들이 쓰레드인 것이다.

 

프로세스는 각자의 고유한 메모리를 갖는다. 즉, 독립적으로 동작한다.

그에 반해 쓰레드는 동일 프로세스 내의 쓰레드들이 메모리를 공유한다. 이로 인해 시간 자원의 손실이 줄지만, 하나의 쓰레드가 메모리를 망가뜨린다면 해당 메모리를 공유하는 다른 쓰레드들도 동시에 망가질 수 있다.

 

프로세스는 이러한 면에서 안정성이 좋다. 애초에 메모리를 공유하지 않고, 메모리를 잘못 사용하여 망가뜨렸다면 그냥 해당 프로세스만 재실행해주면 된다.

하지만 아무래도 서버의 입장에서 한 명의 유저에게 1개의 프로세스를 사용하는 방식은 부담이 크다. 그래서 부하를 나누기 위한 간단한 방법으로 멀티 쓰레드를 사용한다.

 

 

 

JAVA에서 쓰레드를 사용하는 방법은 Thread 함수와 Runnable 인터페이스를 상속받는 방법이 있다.

둘 다 상속을 받아 run() 함수로 구동을 한다.

 

하지만 작동 방식을 보면, 개발자의 입장에서는 아무래도 Thread를 상속받아 쓰레드를 구현하는 것이 코드를 아주 조금이나마 덜 짤 수 있어 편한 길일 수 있다.

 

그러나 Java는 다중 상속을 허용하지 않기에 쓰레드 클래스를 확장하는 클래스는 다른 클래스를 상속받을 수 없게 된다. 그렇기에 확장성이 중요한 상황이라면 Runnable 인터페이스를 상속받아 구현하는 것이 더 바람직하다.

728x90
반응형

'IT 지식 > 운영체제' 카테고리의 다른 글

내부망에서 apt 사용  (1) 2023.06.04
자동 재실행 스크립트 만들기  (0) 2023.05.28
내부망에서 yum 사용  (0) 2022.12.10
[운영체제] Linux와 Unix  (0) 2021.05.16