백/back-end

[운영체제] 프로세스(Process)와 스레드(Thread)

연지양갱 2023. 11. 20. 12:24
728x90
반응형
SMALL

운영체제를 공부하면 꼭 배우는 내용입니다.

프로세스와 스레드에 대해 배우고 cpu 스케쥴링이든 동기화든 다양하게 배웁니다.

이번에 간단하게 정리하여 비교하도록 하겠습니다!

 

프로세스와 스레드는 운영체제에서 프로그램이 실행되는 두가지 주요 방법입니다.

비슷해 보일 수 있지만 각각의 특징과 사용 방식에는 차이점이 있습니다.

 

 

Process란?

프로세스(Process)실행 중인 프로그램의 인스턴스를 의미합니다.

각 프로세스에는 독립적인 메모리 공간(코드, 데이터, 스택 등)과 시스템 리소스(CPU 시간, I/O 디바이스 등)가 할당됩니다.

프로세스들은 서로 독립적으로 실행되며, 한 프로세서에서 다른 프로세서의 메모리 영역을 직접 접근할 수 없습니다. 대신 IPC(Inter Process Communication) 기법을 사용하여 서로 통신합니다.

하나의 프로그램 안에서 여러 개의 프로세서를 생성하면 멀티 프로세싱(Multiprocessing) 환경을 구현할 수 있습니다.

 

*인스턴스 : 일반적으로 어떤 집합에 대해서, 그 집한의 개별적 요소

*IPC(Inter Process Communication) : 프로세스들 사이에 서로 데이터를 주고 받는 행위 또는 그에 대한 방법이나 경로

 

 

 

Thread란?

스레드(Thread)어떤 한 작업 혹은 태스크(Task)를 의미하며, 어떠한 작업을 CPU가 처리하는 기본 단위 입니다.

스레드는 같은 프로세스 내부에서 생성되며, 해당 프로세서의 메모리 공간과 리소스를 공유합니다.

이 때문에 스레드들 사이의 통신은 비교적 쉽고 빠르지만, 동시성 제어가 필요하게 됩니다.(예 : 임계 영역(Critical Section), 락(Lock), 세마포어(Semaphore)).

하나의 애플리케이션 안에서 여러 개의 스레드를 생성하면 멀티쓰레딩(Multithreading) 환경을 구현할 수 있습니다.

* 임계 영역(Critical Section) : 공유되는 자원, 즉 동시 접근하려고 하는 그 자원에서 문제가 발생하지 않게 독점을 보장하는 영역

* 세마포어(Semaphore) : 운영체제 또는 커널의 한 지정된 저장장치 내 값

출처 :https://velog.io/@aeong98/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C

제가 대학생 때 배웠던 내용으로는 프로세스 안에 스레드가 있는 형식으로

프로세스가 기능, 스레드는 기능 내 작업량으로 생각했습니다!

 

 

 

Process와 Thread의 차이

1. 메모리와 리소스 공유

프로세서 : 각각 별도의 메모리 영역 및 시스템 리소스를 가집니다. 따라서 하나의 프로그램 실패가 다른 것에 영향을 미치지 않습니다.

스레드 : 같은 프로세스 내부의 스레드들을 메모리와 시스템 리소스를 공유합니다. 이는 통신을 쉽게 만들지만, 하나의 스레드가 실패하면 동일한 프로세서 내의 다른 스레드에 영향을 줄 수 있습니다.

 

 

2. 생성 및 컨텍스트 전환 비용

프로세서 : 프로세스 생성 및 컨텍스트 전환이 상대적으로 비용이 많이 듭니다.

스레드 : 스레드 생성 및 컨텍스트 전환 비용이 상대적으로 적습니다.

 

3. 커뮤니케이션

프로세서 : IPC 기법을 사용하여 복잡한 방식으로 통신합니다.

스레드 : 공유 메모리를 사용하여 더 간단하고 빠르게 통신할 수 있습니다.

 

4. 독립성 

프로세서 : 각 프로세서는 완전하게 독립적입니다.

스레드 : 동일한 프로세스 내의 스레드들은 서로에게 종속적입니다.

 

5.멀티태스크 환경에서의 유용성

멀티 태스크 환경에서는 일반적으로 멀티 쓰레딩이 성능 최적화에 더 유리합니다. 왜냐하면 여러 개의 프로그램(즉, 여러개의 프로세서)보다는 하나의 애플리케이션 내에서 여러 작업(즉, 여러 개의 스레드)를 병렬 처리하는 것이 리소스를 더 효율적으로 사용할 수 있기 때문입니다.

 

 

 

 

 

결국 선택한 것은 작업과 요구 사항에 따라 달라집니다.

한가지 작업만 수행해야하는 경우 단일 스레드가 충분할 수 있지만, 병렬 처리가 필요한 경우 멀티 쓰레딩 기법을 사용해야 할 수 있습니다.

 

 

 

반응형