공부/OS

락(Lock)과 스레드(Thread)의 차이점

셩잇님 2023. 6. 5. 18:55
반응형

 

 

1. 락과 스레드의 차이점

스레드는 프로그램 내 실행 단위이며. 락은 한 번에 하나의 스레드만 공유 리소스에 액세스할 수 있도록 하는 메커니즘입니다.

: 동시 프로그래밍에서 잠금(뮤텍스 또는 상호 제외라고도 함)은 공유 리소스에 대한 액세스를 제어하는 데 사용되는 동기화 메커니즘입니다. 한 번에 하나의 스레드 또는 프로세스만 공유 리소스에 액세스할 수 있도록 하여 데이터 경합을 방지하고 데이터 무결성을 유지합니다.

  • 락은 상호 배타적 액세스를 제공합니다: 한 스레드가 잠금을 획득하면 리소스에 대한 독점적 소유권을 얻고 잠금이 해제될 때까지 다른 스레드가 리소스에 액세스하지 못하도록 차단합니다.
  • 락은 경합 상태를 방지합니다: 잠금은 배타적 액세스를 강제함으로써 여러 스레드가 동시에 동일한 리소스에 액세스하고 수정하여 예측할 수 없는 잘못된 동작을 초래하는 경합 상태를 방지합니다.
  • 락은 애플리케이션의 특정 요구 사항에 따라 뮤텍스, 세마포어, 스핀 잠금 또는 읽기-쓰기 잠금과 같은 다양한 기술을 사용하여 구현할 수 있습니다.

 

스레드: 스레드는 프로그램 내에서 실행 단위를 나타냅니다. CPU에서 예약하고 실행할 수 있는 독립적인 명령어 시퀀스입니다. 스레드를 사용하면 프로그램이 여러 작업을 동시에 수행할 수 있으므로 병렬 처리가 가능하고 전반적인 시스템 효율성이 향상됩니다.

  • 스레드는 동일한 주소 공간을 공유합니다: 프로세스 내의 스레드는 동일한 메모리 공간을 공유하므로 동일한 데이터 구조에 액세스하고 수정할 수 있습니다. 이 공유 메모리는 제대로 동기화되지 않으면 동시 액세스와 잠재적인 데이터 불일치로 이어질 수 있습니다.
  • 스레드에는 별도의 실행 경로가 있습니다: 각 스레드에는 프로그램 카운터, 스택 및 레지스터를 포함한 고유한 실행 컨텍스트가 있습니다. 따라서 스레드는 프로그램의 여러 부분을 동시에 실행하여 독립적인 작업을 동시에 수행할 수 있습니다.
  • 스레드는 통신 및 동기화할 수 있습니다: 스레드는 잠금, 조건 변수, 배리어와 같은 동기화 기본 요소를 사용하여 통신하고 활동을 동기화할 수 있습니다. 이러한 메커니즘은 스레드 간의 적절한 조정과 실행 순서를 보장하여 공통의 목표를 향해 함께 작업할 수 있도록 합니다.

 

 

기능 스레드
정의 프로그램 내 실행 단위 한 번에 하나의 스레드만 공유 리소스에 액세스할 수 있도록 하는 메커니즘
목적 동시 프로그래밍을 가능하게 하기 위해 경쟁 조건 방지
구현 운영 체제에 의해 구현 프로그래밍 언어 또는 프레임워크에 의해 구현
사용법 여러 작업을 동시에 실행하는 데 사용 여러 스레드가 동시에 공유 리소스에 액세스하지
못하도록 보호하는 데 사용

 

 

2. 결론

요약하자면, 잠금은 공유 리소스에 대한 액세스를 제어하는 데 사용되는 동기화 메커니즘이며, 스레드는 프로그램 내에서 실행 단위를 나타냅니다. 잠금은 데이터 경합을 방지하고 공유 리소스에 대한 독점적 액세스를 보장하는 반면, 스레드는 동시 실행과 병렬 처리를 가능하게 합니다. 스레드는 잠금을 사용하여 활동을 동기화하고 공유 리소스에 대한 액세스를 조정할 수 있습니다.

 

 

 

반응형