[CS] 프로세스와 스레드

jae·2024년 12월 12일

CS

목록 보기
6/6

프로세스와 스레드의 차이점이 뭘까요?

타임쉐어링을 공부한 것에 대해 이야기하다가 내가 멀티프로그래밍을 이용해서 프로세스는 하나씩 진행되지만 동시 진행되는것처럼 보여지는것이고 스레드는 실제로 병렬로 진행하는 것이다 라는 말에 멘토님의 질문...

프로세스는 프로그램 그 자체가 실행되는 것이고... 그 프로세스를 구성하는 하나하나의 동작들이 스레드인것 아닐까요..?

틀린 말은 아니지만 정확한 답도 아니라고 하시며 이 부분에 대해서 좀 더 정리를 해보길 추천 받아서 하는 공부... 시작!

프로세스 Process

프로세스란 지금 실행 중인 프로그램을 말하며 운영 체제에서 메모리 공간과 자원을 할당받아서 독립적으로 실행이 된다.

  • 주소 공간 : 프로세스는 독립적인 메모리 주소 공간을 가짐

  • 자원 : 프로세스는 CPU 시간, 메모리, 파일 등 자원을 할당

  • 프로세스 제어 블록 PCB : OS는 프로세스에 대한 정보를 담고 있는 구조체를 유지해서 프로세스를 관리

  • 독립적: 프로세스는 독립적으로 별개의 프로그램이기에 하나가 종료되거나 오류가 생겨도 다른 프로세스에는 영향이 없으며 다른 프로세스의 메모리에 접근할 수 없음

  • 가볍지 않은 생성 : 프로세스 생성은 비용이 크고 시간이 오래 걸린다

스레드 Thread

프로세스의 내부에 있는 실행의 작은 단위로 한 프로세스에는 한개이상의 스레드가 있으며 프로세스에 할당된 자원들과 공간을 같이 활용해 스레드가 동작한다

  • 스택 : 스레드는 독립적인 스택을 가지고 함수 호출, 지역 변수 등의 정보를 저장한다

  • 레지스터 : 스레드는 독립적인 레지스터 값을 가지고 CPU에서 실행될 때 상태를 저장한다

  • 자원 공유 : 한 프로세스에서 실행되는 스레드들은 메모리 공간과 자원을 공유해서 스레드 간에 상호작용이 쉽지만 동기화 문제가 발생할수 있다

  • 가벼운 생성: 스레드는 프로세스 내에 가벼운 실행 단위이기에 생성과 컨텍스트 스위칭이 더 빠르고 효율적이다


정리

프로세스는 독립적으로 자원과 메모리 공간을 부여 받은 프로그램으로 외부에 영향을 받지않지만 생성되기 어려우며
스레드는 독립적이지 않고 속한 프로세스의 자원들을 같은 프로세스에 있는 스레드들과 나눠 사용해야하고 영향을 주고 받을 수 있지만 가벼운 생성이 가능하다

0개의 댓글