CS

[CS] Process, Thread

JM_Code 2022. 11. 26. 15:40

Process

운영체제(OS)로부터 자원을 할당 받는 작업의 단위(Task와 같은 의미)

코드의 집합으로 이뤄진 정적인 상태인 프로그램이 실행되어 동적인 상태가 되는 것이 프로세스. 여러 개의 프로세스를 사용하는 것 = 멀티 프로세스

Thread

할당 받은 자원을 이용해 실행되는 흐름의 단위, 프로세스 내에 여러 개 생성 가능 기본적으로 한 프로그램은 한 개 이상의 쓰레드를 실행.

예를 들어, 엑셀을 사용하는 경우. 글자를 입력 받는 쓰레드, 파일을 디스크에 저장하는 쓰레드, 출력할 내용을 프린터에 보내는 쓰레드, 입력하는 동안 맞춤법 검사를 수행하는 쓰레드 등이 생성됨.

즉, 엑셀이라는 프로세스에 여러 개의 쓰레드가 있는 것. (여러 개의 쓰레드 = 멀티 쓰레드)


실제로 프로세스는 하나의 어드레스를 갖고 있고, 모든 응용 프로그램은 메인 응용 프로그램을 위한 하나의 쓰레드를 갖는다.

물론 여기에 다른 쓰레드들이 함께 수행될 수 있고, 각가의 쓰레드들은 자신을 관리하는 프로세스의 어드레스를 갖고 있음.

즉, 프로세스는 쓰레드에 대한 일종의 컨테이너 역할.


프로세스와 쓰레드의 차이점

프로세스의 경우, 하나의 일을 하다가 다른 일들을 할 때 컨텍스트 체인지(Context Change)가 일어남.
같은 프로그램이라면 쓰레드를 사용하면 컨텍스트 체인지 비용이 줄어듦.(공유자원 활용)

  • 프로세스
    • 개별 메모리를 차지하므로 자원 소모가 큼
    • 컨텍스트 체인지 비용이 큼
    • 각각 독립적이므로 동기화 작업이 불필요
  • 쓰레드
    • 공유된 자원으로 효율적 메모리 사용
    • 공유된 자원 관리 필요
    • 긴밀한 연결성으로 한 쓰레드에 문제가 생기면 전체 프로세스에 영향

ex)익스플로러를 사용할 때 [Internet Explorer의 작동이 중지되었습니다.]
라는 오류가 뜨면 모든 창들이 꺼져버리는 것을 경험해보았을 것이다.
이처럼 하나의 스레드 문제가 전체 프로세스에 영향을 끼치게 되는 것이 멀티스레드의 단점이다.
반면, 크롬은 멀티프로세스 사용으로 인해 개별 창 하나가 문제가 되더라도 모든 창들이 꺼지지 않는 것이다.

'CS' 카테고리의 다른 글

[CS] Transaction  (0) 2022.11.24
[CS] Protocol 이란?  (0) 2022.11.19
[CS] URI, URL & URN  (0) 2022.11.15
[CS] REST API  (0) 2022.11.09
[CS] API 란?  (0) 2022.11.08