[운영체제] 스레드, 프로세스, 테스크 용어 정리

[운영체제] 스레드, 프로세스, 테스크 용어 정리


process(프로세스)

  • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
  • 리눅스에서 실행되고 있는 바이너리,윈도는 실행되고 있는 프로그램으로 보면 될것입니다.
  • 비동기적 행위를 일으키는 주체
  • 운영체제가 관리하는 실행 단위
  • 프로시저가 활동 중인 상태
    • 프로시저 : 일 처리의 순서, 절차, 방법을 의미하며 특정 작업을 처리하기 위한 프로그램의 한 부분

thread(스레드)

  • 프로세스에서 실행 제어만 분리한 실행 단위
    • 경량 프로세스(LWP, Light Weight Process)라고도 부름
    • 중량 프로세스(HWP, Heavy Weight Process)는 스레드를 하나 가진 작업
  • 한마디로 하면 Process의 작업단위를 세분화한 것이 thread입니다.
  • 프로그램 내에서 실행되는 흐름의 단위
    • 흐름이란게 좀 의미가 아리송하게 다가올 수 있는데 플로우 차트를 생각하면 된다
      플로우 차트에서 프로그램은 하나의 흐름으로 그려진다.
      그런데 2개 프로그램이 동시에 슬러가야 하는 경우도 있을 것이다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.



task

  • 작업의 최소 단위로써 process, thread라고 할 수 있습니다.
  • 과거 single tasking에는 대표적인 OS는 MS-DOS가 있었고 특정 작업이 끝날 때 까지 대기해야만 다음 작업을 할 수 있었습니다.
  • 이후 일괄처리나 시분할 시스템의 구현으로 multi tasking이 가능하게 되었습니다.
    • multi tasking의 예 : 윈도우, 리눅스, 유닉스 등
  • 동시에 여러 가지 작업이 가능해지면서 동일한 서비스를 다수에게 제공하기 위해 process의 복제가 필요하게 되었습니다.(fork())
    • fork의 특징 : process를 완벽(Global Variables, code, stack)하게 복제하고 부모에게 상속된다는 점
  • 즉, 복제 비용이 증가하고 리눅스 환경에서 process로 보여지게 됩니다.




정리하자면, task는 작업의 최소단위로써 쓰레딩을 했을 경우 thread가 되고 아닐 경우 process가 됩니다.
thread는 fork()를 개선하여 stack만 복제함으로써 복제비용을 줄이고 단일 프로세스가 다수의 코어를 사용 할 수 있게 해서 고성능 처리가 가능해집니다.



출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?