프로세스와 쓰레드

이시우·2021년 3월 24일
0

컴퓨터 지식

목록 보기
12/17
post-thumbnail

옛날엔 컴퓨터가 한가지 일 밖에 하지 못했다.
지금처럼 스트리밍 프로그램으로 노래를 켜두고 글을 쓰면서 게임을 다운로드할 수 없었다는 것이다. 컴퓨터가 프로세스 여러개를 함께 돌리는 멀티태스킹이 가능하기 전까지 !

프로세스

프로그램이 실행되어서 컴퓨터에서 돌아가고 있는 상태, 즉 컴퓨터가 어떠한 일을 하는 상태를 프로세스 라고 한다.
운영체제가 여러 개의 프로세스를 함께 돌리고 있기 때문에 지금처럼 편하게 컴퓨터를 사용할 수 있는 것이다.

동시적


하나의 프로세서가 여러가지 일을 돌아가면서 조금씩 하는 것이다.
이 과정이 매우 빠르게 진행되어서 유저가 느끼기에는 동시에 작동하는 것 처럼 보인다.

병렬적


프로세서 하나에 다양한 코어가 있는 경우이다.
듀얼,쿼드,옥타 코어 등 하드웨어에 붙는 이름이 이를 뜻한다.
여러 개의 코어가 각각의 일을 병렬적으로 진행하는 것이다.

특징

  • 컴퓨터의 자원(메모리의 영역 등)을 분할해서 사용한다.
  • 기본적으로 최소 1개의 스레드를 가지고 있다.
  • 다른 프로세스에 접근하려면 프로세스 간의 통신을 해야한다.

쓰레드

한 프로세스 안에서 동시에 여러가지 작업이 가능해야 하기도 한다.
브라우저가 파일을 다운받으면서 웹서핑도 가능해야하고, 유튜브에서 영상을 출력하면서 댓글도 읽어와야 하듯이 말이다.
이렇게 한 프로세스에서 여러 일을 진행하는 갈래를 쓰레드 라고 부른다.

특징

  • 프로세스마다 주어진 전체 자원을 공유해서 사용한다.
  • 프로세스 내에서 각각 stack만 따로 할당받고 Code, Data, Heap의 영역은 공유한다.
  • 자원을 공유하기 때문에 두가지 이상의 쓰레드에서 한 개의 자원을 동시에 사용하면 원하는 값이 나오지 않거나 오류가 발생한다.
  • 에러가 나지 않도록 쓰레드가 동시에 자원을 사용하지 않도록 코드를 짜고 디버깅을 해줘야한다.

0개의 댓글