(2023.2.9) Today_I_Learned_day-117

imRound·2023년 2월 8일
post-thumbnail

스레드(Thread)

  • CPU 이용의 기본 단위이다.
  • 스레드는 ID, PC(Program Counter), 레지스터 집합, 스택으로 구성
    스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유한다.
  • 전통적인 프로세스는 하나의 제어 스레드를 가지고 있지만, 현대 프로세스는 다수의 제어 스레드를 가지고 있기 때문에 해당 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다.
  • 스레드는 ID, PC, stack, 레지스터 집합으로 구성되어 있다.
  • 멀티스레드 프로세스에서 스레드간에 코드, 데이터, 파일, 신호등의 리소스를 공유한다.

프로세스(process)

  • 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다.

동기 (Motivation)

  • 현대의 컴퓨터와 모바일 기기에서 작동하는 거의 모든 소프트웨어 응용들은 다중 스레드를 이용.
  • 하나의 어플리케이션은 여러 실행 흐름(스레드)을 가진 독립적인 프로세스로 구현.

멀티 스레드가 나오게 되는 배경(단일 스레드 프로세스의 defect(결핍)의 예)

하나의 분주한 웹 서버는 수천, 수만 개의 클라이언트들이 병행하게 접근할 수 있음.
만약 웹 서버가 전통적인 단일 스레드 프로세스로 작동한다면, 서비스되기까지 매우 긴 시간을 기다려야 함.
단점을 개선하기 위해서 여러 요청을 수행할 별도의 프로세스들을 만들 수도 있지만 이는 많은 리소스가 필요함으로 많은 오버헤드가 발생
프로세스를 새로 만드는 것 보다 프로세스의 개념을 확장하여 한 프로세스가 다수의 실행 스레드를 가질 수 있도록 허용.
프로세스가 한 번에 하나 이상의 일을 수행할 수 있도록 허용함으로써 문제를 해결.
대부분 운영체제 커널도 일반적으로 다중 스레드, Linux 시스템에서 시스템을 부트하는 동안 여러 커널 스레드가 생성 됨, 각 스레드는 장치 관리, 메모리 관리 또는 인터럽트 처리와 같은 특정 작업을 수행

장점 (Benefits)

  1. 응답성(responsiveness): 대화형 어플리케이션을 다중 스레드화하면 어플리케이션의 일부분이 봉쇄되거나, 긴 작업을 수행하더라도 프로그램의 수행이 계속되는 것을 허용함으로써, 사용자에 대한 응답성을 증가.
  2. 자원 공유(resource sharing): 스레드는 자동으로 그들이 속한 프로세스의 자원들과 메모리를 공유하기 때문에 스레드간의 통신 기법 없이 협업이 가능. (프로세스는 공유메모리 or IPC 기법등이 필요)
  3. 경제성(economy): 프로세스 생성보다 스레드를 활용 하는 것이 훨씬 경제적.
  4. 규모 적응성(scalability): 멀티 프로세서 구조에서 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있기 때문에 규모 적응성이 뛰어남
profile
Django 개발자

0개의 댓글