본문 바로가기
Computer Science

[CS] 프로세스와 쓰레드

by cheery7272 2023. 1. 14.

프로세스란?

- 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다.

- 수행 중인 프로그램

- 수행 중인 프로그램의 인스턴스

- 수행되어야 할 명령들의 활성화 단위

- 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 및 쓰레드로 구성되어 있다.

 

쓰레드란?

- 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것

프로세스가 가질 수 있는 쓰레드의 개수는?

- 하나의 프로세스는 가질 수 있는 쓰레드의 개수는 제한되어 있지 않지만

쓰레드가 작업을 수행하는 메모리공간이 필요하기 때문에

프로세스의 메모리 한계에 따라서 생성할 수 있는 쓰레드의 수가 정해진다.

싱글 쓰레드와 멀티 쓰레드의 차이

ex) 채팅 서비스

싱글 쓰레드

- 싱글 쓰레드의 경우 하나의 쓰레드로만 작업하기 때문에 프로세스의 자원을 가지고 작업이 문제가 없다.

- 채팅을 하면서 파일을 다운로드 받을 수 없음

멀티 쓰레드

- 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 준다.

- 채팅, 파일 다운로드, 음성대화 모두 가능

 

싱글 쓰레드로는 서비스를 구현할 수 없는가?

- 사용자의 요청마다 새로운 프로세스를 생성해주어야 함

하지만 프로세스를 생성하는것은 많은 시간과 메모리공간이 필요하기 때문에

많은 수의 사용자 요청을 서비스하기 어렵다.

 

멀티 쓰레드에서 발생할 수 있는 문제

- 동기화

- 교착상태

 

멀티 쓰레드 동기화

- 쓰레드 A가 작업 중에 쓰레드 B에게 제어권이 넘어갔을 경우 쓰레드 A가 작업하던 데이터를 쓰레드가 B가 변경한다면

다시 쓰레드 A에게 제어권이 돌아왔을때 쓰레드 A는 의도했던 데이터와는 다른 결과를 얻게 된다.

'Computer Science' 카테고리의 다른 글

[CS] 트랜잭션이란?  (0) 2023.01.06
[CS] 알고리즘  (0) 2022.12.30

댓글