컴퓨터 네트워크

TIL 20241102(멀티 쓰레딩)

j-coder 2024. 11. 2. 20:15

멀티 쓰레딩

하나의 프로세스 내에서 여러 개의 스레드를 동시에 실행하고 관리하는 기술

 

1. 프로세스와 스레드란?

  • 프로세스 : 현재 실행중인 프로그램의 객체이다.
                      독립적은 메모리 공간을 가지고 운영 체제에 의해 관리된다.
  • 스레드 : 프로세스 내에서 실행되는 작은 실행 단위이다.
                  같은 프로세스 내에서 메모리 공간을 공유하고 스레드 간의 통신이 빠르고 효율적이다.

 

a. 메모리 영역

  • 힙 영역 : 동적으로 할당된 메모리가 저장되는 공간이다.
                   프로그램 실행중에 크기가 변할 수 있다.
  • 스택 영역 : 함수 호출 시 지역 변수와 매개변수가 저장되는 공간이다.
                       스택은 LIFO(Last  in first out) 구조로 동작한다.
  • 코드 영역 : 실행 할 프로그램의 코드가 저장되는 공간이다.
  • 데이터 영역 : 전역 변수와 정적 변수가 저장되는 공간이다.

 

b. 차이점

프로세스와 스레드는 메모리 관리 방식에서 차이가 있다.
프로세스는 독립적인 메모리 공간을 가지지만 스레드는 같은 프로세스 내에서 메모리를 공유한다.

 

2. 컨택스트 스위칭이란?

CPU가 현재 실행 중인 프로세스 또는  스레드의 상태를 저장하고 다른 프로세스 또는 스레드의 상태를 복원하는 과정

 

a. 프로세스 / 스레드 간의 컨택스트 스위칭 작업 과정

1. 현재 실행 중인 프로세스의 상태를 PCB(Process Control Block)에 저장
2. 스케줄러가 다음에 실행할 프로세스를 선택
3. 선택된 프로세스의 상태를 PCB에서 복원
4. CPU가 새로운 프로세스를 실행

메모리와 CPU의 상태를 관리하는 작업이다.
컨텍스트 스위칭으로 인해 성능 저하가 발생할 수 있다.

 

3. 레이스 컨디션이란?

두 개 이상의 스레드가 공유 자원에 동시에 접근해 예상하지 못한 일을 만들어낸 상황

데이터의 일관성을 해칠수 있다.

 

a. 세마포어와 뮤택스

  • 세마포어 : 여러 스레드가 공유 자원에 접근할 수 있게 제어해주는 동기화 도구
                      카운터를 사용해 자원에 접근할 수 있는 스레드의 수를 제한한다.
  • 뮤택스 : 여러 프로세스의 접근을 막기 위해 공유 자원을 Lock()하는 방식 (한번에 하나)

 

카운터 : 현재 자원에 접근할 수 있는 스레드의 수

 

b. 데드락의 개념과 해결방법

개념

두 개 이상의 스레드가 서로의 자원을 기다리면서 무한 대기 상태에 빠지는 상황

 

 

해결방법

방지
4가지 조건중에 하나 이상을 불만족시키면 된다.

상호 배제 : 여러 프로세스가 자원을 공유하게 되면서 의도치 않은 결과를 얻을 수 있다.
점유와 대기 : 자원이 오랫동안 할당되고 사용되지 않으면서 낭비될 수 있다.
비선점 : 공유 자원에 대한 동기화(상호 배제) 의미가 없어진다.
순환 대기 : 가장 가능성 있다. 순환말고 선형대기(예 : Queue)로 만들어서
                   공유 자원 사이에 순서를 정해주는 방법이다.

 

회피
데드락 상태를 피해가는 기법 (자원을 동적으로 관리)

EX)
은행원 알고리즘(Banker's Algorithm)
프로세스가 자원을 요구할 때 이 요구가 시스템의 안정성을 해치지 않는지 검사하는 알고리즘

 

 

탐지 및 회복

시스템이 주기적으로 데드락 상태를 검사하고 해결하는 방식
EX) 특정 프로세스를 종료하거나 자원을 강제로 회수해 데드락 해소

 

 

 

 

 

 

 

 

출처

 

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4#%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_process

 

👩‍💻 ‍완전히 정복하는 프로세스 vs 스레드 개념

한눈에 이해하는 프로세스 & 스레드 개념 전공 지식 없이 컴퓨터의 프로그램을 이용하는데는 문제 없어 왔지만 소프트웨어를 개발하는 사람으로서 컴퓨터 실행 내부 요소를 따져보게 될때, 아

inpa.tistory.com

 

 

https://velog.io/@tjdtn0219/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9CRace-Condition%EA%B3%BC-DeadLock-feat.%EB%AE%A4%ED%85%8D%EC%8A%A4-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4

 

[운영체제]Race Condition과 DeadLock (feat.뮤텍스, 세마포어)

Race Condition(경쟁 상태)이란 공유 자원에 대해 여러 프로세스 혹은 스레드가 동시에 접근할 때, 접근의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 의미한다.(동시 접속 시 결과의

velog.io

 

 

'컴퓨터 네트워크' 카테고리의 다른 글

TIL 20241113 (레이스 컨디션과 동기화)  (0) 2024.11.13
컴퓨터의 메모리  (0) 2024.10.14
컴퓨터 CPU  (0) 2024.10.14
TIL 240930 (흐름제어와 혼잡제어)  (0) 2024.09.30
OSI 응용계층  (0) 2024.09.25