본문 바로가기
Computer Science/운영체제

10.Thread

by _S0_H2_ 2021. 12. 14.
728x90
반응형

프로세스 간에는 각 프로세스의 데이터 접근이 불가한데

스레드는 하나의 프로세스에 여러개를 생성하여 프로세스의 데이터에 모두 접근할 수 있다.

 

  • Multi Tasking VS Multi Processing VS Multi Thread
    • 멀티 태스킹 : 하나의 cpu, 여러개 process
    • 멀티 프로세싱 : 여러 cpu, 여러개 process : 하나의 process를 여러 cpu에서 실행하는 방법 ? Thread를 여러개 만들어서 해결 가능- 최근 cpu가 멀티 코어를 가지고 있음
    • 멀티스레드
  • Thread 장점
    • 사용자에 대한 응답성 향상
    • 자원 공유 효율
    • 코드 간결성
  • Thread 단점
    • 스레드 중 한 스레드만 문제가 생겨도 전체 프로세스가 영향을 받음
    • 2번 Thread에 문제가 발생하면 전체 Process에 문제가 발생함
    • 스레드를 많이 생성하면 context switching이 많이 일어나서 성능 저하 발생
  • Thread VS Process
      • 프로세스는 독립적, 프로세스간 IPC기법 통신
      • 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
      • 프로세스는 자신만의 주소 영역을 가짐, 스레드는 주소영역을 공유 
  • Thread 동기화 이슈 : 스레드가 여러개 있을 때 실행 순서가 정해져 있지 않아서(스케쥴러가 정하므로) 동시에 읽고 쓰는 과정에 비정상적으로 동작하는 경우
    • Mutual Exclusion ( 상호배제 ) : 임계 구역에 대한 접근을 막기 위해 LOCKING mechanism 필요
    • Semaphore : 임계 구역에 여러 스레드가 접근할 수 있다. counter를 두어 동시에 점근 가능한 스레드 수를 제어
  • 교착상태(Deadlock)
    • 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어서 다음 단계로 진행하지 못하는 상태
    • 발생 조건
      • 상호 배제 : 프로세스들이 필요로하는 자원에 대한 배타적 통제권 요구
      • 점유 대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다림
      • 비선점 : 프로세스가 어떤 자원의 사용을 끝낼때까지 그 자원을 뺏을 수 없음
      • 순환 대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
    • 해결방법
      • 예방
        • 상호 배제 : 여러 개의 프로세스가 공유 자원을 사용할 수 있도록한다(동기화 문제 발생 가능)
        • 점유 대기 : 프로세스가 실행되기 전 필요한 모든 자원을 할당한다
        • 비선점 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다린다
        • 순환 대기 : 자원에 고유한 번호를 할당하고, 번호 순서대로 자원을 요구하도록 한다
      • 회피
        • 은행원 알고리즘 : 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 사전에 검사하여 교착 상태를 회피
      • 발견
      • 회복
        • 교착 상태의 프로세스를 모두 중지하거나 교착 상태가 제거될 때까지 한 프로세스씩 중지한다
  • 기아상태 ( Starvation )
    • 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우
    • 해결방안
      • 우선순위 변경
        • FIFO 기반 요청큐 사용
        • 오래 기다린 프로세스의 우선순위 높여줌

 

 

 

728x90
반응형

'Computer Science > 운영체제' 카테고리의 다른 글

12. 파일시스템  (0) 2022.08.22
11. 가상메모리  (0) 2022.03.04
09. 프로세스와 IPC  (0) 2021.08.01
08. 프로세스와 Context Switching  (0) 2021.08.01
07. 프로세스 구조  (0) 2021.07.31