Process와 Thread 간단 정리
Process와 Thread 간단 정리

Process와 Thread 간단 정리

설명
프로세스는 뭐고 스레드는 뭔가요?
Last Updated
Last updated July 22, 2023
태그
Process
Thread
 
프로세스를 여러게 돌리는 멀티태스킹 이전에는 파일 다운로드 시, 모든게 멈췄었다. 한번에 하나씩만 가능 했었다.

Process


컴퓨터가 어떤 일을 하고 있는 상태
ex) 윈도우 작업관리자의 백그라운드 프로세스
 

동시성

프로세스 하나가 여러가지를 돌아가면서, 일부분씩 진행 하는 것
싱글코어도 사람이 인식할 수 없는 속도로 여러가지를 돌아가면서 하기에, 멀티 프로세스 실행이 가능

병렬성

프로세스 하나에 코어가 여러개 달려서 각각 동시에 작업
멀티코어 프로세스가 달린 컴퓨터에서 가능
발열등 물리적 제약으로 CPU의 성능이 예전처럼 증가하기 어렵기 때문에 멀티코어로 작업을 분담 할 수 있도록

프로세스 상세

 
 

Thread


한 프로세스 안에서도 여러 작업이 동시에 필요할 경우 가 있다.
ex) 유튜브 영상을 다운받으면서 실행, 게임 받으면서 패치노트 확인
프로세스는 자원을 공유하지 않지만, 쓰레드는 프로세스마다 주어진 전체 자원을 공유한다
속도와 효율에서 자원공유는 장점이지만, 시간문제로 발생하는 Error 발생 확률이 높다.
 

스레드 상세

 

참고자료

💡
아래 영상을 정리하여 작성한 글입니다.

Process vs Thread

1. Process takes less time to create and terminate a process compared to a thread.
  • 참거짓: 가짜
  • 이유: 실제로 프로세스를 생성하고 종료하는 데는 쓰레드에 비해 더 많은 시간이 소요됩니다. 프로세스는 자체 메모리 공간과 시스템 자원을 가지므로, 생성 및 제거에 추가적인 오버헤드가 발생합니다. 반면에 쓰레드는 기존 프로세스의 컨텍스트 내에서 실행되므로, 생성 및 제거가 더 빠르고 효율적입니다.
2. Process cannot be further subdivided.
  • 참거짓: 가짜
  • 이유: 프로세스는 분할할 수 없다고 주장하는 것은 정확하지 않습니다. 프로세스는 쓰레드라는 더 작은 실행 단위로 분할할 수 있습니다. 쓰레드는 프로세스 내에서 독립적으로 실행되는 실행 경로로, 프로세스의 메모리와 리소스를 공유합니다. 이것은 효율적인 멀티태스킹을 가능하게 합니다.
3. Process consists of lightweight operators.
  • 참거짓: 가짜
  • 이유: 이 설명은 실제로 쓰레드를 더 잘 설명합니다. 쓰레드는 "경량 프로세스"로 종종 묘사되며, 프로세스에 비해 생성 및 제거에 덜 복잡합니다. 프로세스는 자체 메모리 공간과 고유한 시스템 자원을 가지는 독립적인 실행 엔티티입니다.
4. Process has its own memory space.
  • 참거짓: 참
  • 이유: 프로세스는 각자의 독립된 메모리 공간을 가집니다. 이것은 다른 프로세스로부터 프로세스를 격리하며, 이는 보안 및 데이터 무결성을 유지하는 데 중요합니다. 프로세스 간에 데이터를 공유하려면 명시적인 메커니즘(예: IPC, Inter-Process Communication)이 필요합니다.
5. Process requires fewer resources as compared to thread.
  • 참거짓: 가짜
  • 이유: 실제로 프로세스는 쓰레드에 비해 더 많은 리소스를 필요로 합니다. 프로세스는 각자의 메모리 공간과 시스템 자원을 가지므로, 생성 및 관리에 더 많은 리소스가 필요합니다. 반면에, 쓰레드는 기존 프로세스의 컨텍스트 내에서 실행되므로, 추가적인 메모리나 시스템 자원을 필요로 하지 않습니다.
 

멀티태스킹과 멀티프로세싱

 
안녕하세요, 운영 체제의 세계로 빠르게 여러분을 안내하고자 합니다. 이 포스트에서는 두 가지 주요 개념, 멀티태스킹(Multitasking)과 멀티프로세싱(Multiprocessing)에 초점을 맞추고 있습니다. 이 두 가지 개념은 우리의 컴퓨터 시스템이 효율적으로 작동하게 만드는 데 중요한 역할을 합니다.
 

멀티태스킹

먼저 멀티태스킹에 대해 이야기해 보겠습니다. 멀티태스킹은 일반적으로 단일 CPU에서 여러 작업이나 프로세스가 동시에 실행되는 것처럼 보이게 만드는 기술입니다. 실제로는 CPU가 매우 빠른 속도로 작업 사이를 전환하므로 사용자는 여러 작업이 동시에 진행되는 것처럼 느낄 수 있습니다.
예를 들어, 워드 프로세서를 사용하면서 음악을 듣거나 웹 브라우저를 사용할 수 있습니다. 이 모든 작업들이 동시에 진행되는 것처럼 보이지만, 실제로는 운영 체제가 각각의 프로세스를 빠르게 전환하며 각 작업을 수행합니다.
 

멀티프로세싱

다음으로 멀티프로세싱에 대해 알아보겠습니다. 멀티프로세싱은 여러 CPU 또는 CPU 코어를 가진 시스템에서 여러 프로세스가 동시에 실행될 수 있게 하는 기술입니다. 이것은 실제로 동시에 여러 작업을 수행할 수 있게 해주므로, 시스템의 전반적인 성능 향상을 가져옵니다.
이 기술은 특히 대용량 데이터 처리나 복잡한 계산이 필요한 고성능 컴퓨팅에서 중요합니다. 여러 프로세서가 동시에 작업을 수행함으로써 작업량을 분산시키고 전체 작업 시간을 줄일 수 있습니다.
 

결론

결국, 멀티태스킹과 멀티프로세싱은 우리의 컴퓨터 시스템이 효율적으로 작동하는 데 필수적인 요소입니다. 멀티태스킹은 단일 프로세서 시스템에서 여러 작업을 빠르게 전환하여 동시에 실행되는 것처럼 만드는 반면, 멀티프로세싱은 여러 프로세서가 동시에 작업을 수행하게 함으로써 전체 성능을 향상시킵니다.
이러한 개념을 이해함으로써 우리는 컴퓨터의 성능을 어떻게 최적화하고 이를 최대한 활용할 수 있는지 더 잘 이해할 수 있습니다. 다음번에 뵙겠습니다!
 

Multiprocessing vs multitasking

1. Multiprocessing is more efficient than multitasking.
  • 참거짓: 가짜
  • 이유: 이는 상황과 작업의 유형에 따라 다릅니다. 복잡하고 계산 집약적인 작업에 대해서는 multiprocessing가 더 효율적일 수 있습니다. 그러나 단일 코어에서 빠른 전환으로 여러 작업을 처리하는 것이 더 효율적인 경우도 있습니다. 예를 들어, 사용자가 여러 애플리케이션을 동시에 사용하면서 컴퓨터를 사용하는 경우, 멀티태스킹이 더 효유적일 수 있습니다.
2. Multitasking is more efficient than multiprocessing.
  • 참거짓: 가짜
  • 이유: 이 또한 상황에 따라 다릅니다. 멀티태스킹은 빠른 전환을 통해 여러 작업을 동시에 처리하는 것이 더 효율적인 경우도 있지만, 복잡한 계산을 수행해야 하는 경우에는 멀티프로세싱이 더 효율적일 수 있습니다.
3. Multitasking requires more time to execute tasks as compared to multiprocessing.
  • 참거짓: 참
  • 이유: 멀티태스킹은 CPU가 매우 빠르게 작업 사이를 전환하여 동시성을 제공하지만, 실제로는 한 번에 하나의 작업만 처리할 수 있습니다. 반면에 멀티프로세싱은 여러 프로세서를 사용하여 실제로 동시에 여러 작업을 수행할 수 있으므로, 동일한 작업 집합을 처리하는 데 멀티태스킹보다 더 적은 시간이 소요될 수 있습니다.
4. Multiprocessing performs more than one task at a time using a single processor.
  • 참거짓: 가짜
  • 이유: 이 문장은 멀티프로세싱의 정의를 잘못 설명하고 있습니다. 멀티프로세싱은 여러 프로세서를 사용하여 동시에 여러 작업을 수행하는 것을 의미합니다. 단일 프로세서를 사용하여 여러 작업을 수행하는 것은 멀티태스킹을 더 잘 설명하는 것입니다.
5. In multitasking, the number of CPUs is only one. In multiprocessing, the number of CPUs is more than one.
  • 참거짓: 참
  • 이유: 이것은 대체로 참입니다. 멀티태스킹은 일반적으로 단일 CPU에서 여러 작업을 빠르게 전환하여 동시성을 제공하는 데 사용되며, 멀티프로세싱은 여러 CPU 또는 CPU 코어를 사용하여 여러 작업을 실제로 동시에 실행하는 데 사용됩니다. 그러나 모던 시스템에서는 이 두 가지 기술이 종종 혼합되어 사용됩니다. 여러 프로세서 각각에서 여러 작업을 동시에 실행할 수 있는 시스템이 흔합니다.