[Today I Learn]- 프로세스, 쓰레드

치맨·2023년 1월 9일
0

[Today I Learn] - CS

목록 보기
3/13
post-thumbnail

목차

프로세스란

  • 프로세스란 운영체제에서 실행 중인 하나의 애플리케이션을 말합니다.

  • 사용자가 프로그램(파일)을 실행 시켰을 때(정적인 프로그램이 동적으로 변할 때) 프로그램이 돌아가고 있는 상태를 " 프로세스 "라고 부릅니다.
    즉 실행 되고 있는 프로그램을 프로세스라고 합니다.

  • 프로그램은 다중 프로세스로 만들기도 합니다. 예를 들어 메모장, 크롬, 캘린더 등 여러 프로그램을 실행시키면 다중 프로세스

쓰레드란

  • 쓰레드는 이러한 프로세스 안에서 한 가지 작업을 실행하기 위해 순차적으로 실행되는 하나의 흐름입니다

  • 프로세스는 크롬을 실행시킨 것이라면, 쓰레드는 크롬이란 프로세스 안에서 유투브로 노래도 듣고, LoL 다운도 받고, 인스타도 보고 다 하는 것입니다.
    느그 쓰레드 남천동 살제? 죄송합니다...

  • 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 유래된 이름입니다.

  • 하나의 쓰레드는 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미입니다.

싱글쓰레드

  • 싱글 쓰레드란 하나의 프로그램에서 동시에 하나의 코드만 실행할 수 있다는 뜻입니다.

  • 싱글 스레드란 코드가 실행되서 끝난 지점과 다음 코드의 시작 지점이 연결된 형태이며 각 쓰레드는 한 번에 하나의 작업만 수행할 수 있습니다.
    A실행 => A종료 => B실행 => B종료 => C실행 => C종료 ....

  • 각 작업은 순차적으로 실행됩니다.(다음 작업을 시작하기 전에 이전 작업을 완료해야한다.)

  • 싱글 스레드는 프로그램 일부분이 중단되거나, 에러가 발생하면 프로그램이 멈춥니다.

  • 자바스크립트는 싱글 쓰레드 프로그래밍 언어입니다.

멀티쓰레드

  • 멀티 쓰레드 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시키는 것입니다.

  • 이러한 작업은 컨텍스트 스위칭( Context Switching )을 통해서 이뤄지며, 스위칭이 일어나면서 부분적으로 조금씩 조금씩 각각의 스레드에 대한 작업을 끝내게 됩니다. 이과정이 너무 빨라서, 사용자들의 눈에는 마치 모든 작업들이 동시에 진행되는 것처럼 보입니다.

  • 컨텍스트 스위칭( Context Switching )이란 프로세스 하나가 A라는 작업 조금하고, B라는 작업 조금하고... 이렇게 여러 작업을 돌아가면서, 일부분씩 진행할 때 A -> B -> C 로 바꾸는 것을 "Context Switching" 이라고 부릅니다.

  • CPU만을 사용하면 싱글쓰레드 사용

  • CPU외에 것들을 사용하면 멀티쓰레드를 사용

Ref

profile
기본기가 탄탄한 개발자가 되자!

0개의 댓글