티스토리 뷰

프로세스(Process)란?

프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램으로 운영체제에의해 디스크에서 메모리로 적재되어 CPU의 자원을 할당받을 수 있는 것을 말한다. 프로세스 정보는 PCB로 관리한다.

프로세스의 구조

프로세스는 크게 네가지의 영역으로 나뉜다.

  • 프로그램 코드: 프로그래밍 코드 텍스트 영역
  • 데이터(data): 전역 변수들을 저장
  • 스택(stack): 지역 변수 및 함수의 매개변수를 저장
  • 힙(heap): 동적 메모리 할당 영역

스레드(Thread)란?

스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다.

스레드의 구조

  • 프로세스가 여러개의 스레드를 가진다면 동시에 하나 이상의 작업들을 수행할 수 있으며 같은 프로세스에 속한 스레드들은 프로세스의 코드, 데이터, 파일 등을 공휴할수 있다.
  • 각 스레드는 각자 레지스터 집합(PC 레지스터 포함)과 스택을 가진다.

멀티 프로세스 vs 멀티 스레드

멀티 프로세스는 각 프로세스가 독립적인 공간을 사용하기 때문에 하나의 프로세스가 오류로 인해 종료되더라도 다른 프로세스에 영향을 주지 않는다. 하지만 멀티 프로세스를 구현하기 위해서는 IPC를 이용해야 하므로 추가적인 자원을 사용한다는 단점이 있다. 반면에, 멀티 스레드는 같은 프로세스 내의 스레드와 자원을 공유하기 때문에 별도의 추가 자원이 필요하지 않고 문맥전환이 빠르다는 장점이있다. 그러나 멀티 스레드는 하나의 스레드에 오류가 생겨 종료되었을 경우 다른 스레드에 영향을 줄수 있으며 같은 공간을 사용하기 때문에 동기화의 문제가 발생할 수 있다. 따라서, 시스템의 특징과 상황을 고려하여 두가지 방법중 하나를 선택해야 한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함