[운영체제] 프로세스와 스레드

변지현·2021년 1월 19일
0

프로세스(Process)

 실행중인 프로그램이다.
 디스크로부터 메모리에 적재되어 CPU를 할당을 받을 수 있는 것을 말한다.

프로세스의 구조

 프로세스는 Text, Data, Stack & Heap 영역으로 나뉜다.

  • Text : 프로세스의 컴파일된 코드 텍스트가 들어가는 영역
  • Data : 전역변수, 초기화된 변수들이 저장되는 영역
  • Stack & Heap : 동적할당 변수, Aativation Record(foraml + parameter, return address, 지역변수)가 저장되는 영역
프로세스의 구조

PCB(Process Control Block, 프로세스 제어 블록)

  PCB는 특정 프로세스에 대한 정보를 저장하는 자료구조이다. 운영체제는 프로세스를 관리하기 위해 프로세스 생성과 동시에 프로세스 당 고유한 PCB를 생성한다. 프로세스는 CPU의 할당을 받아 작업을 처리하다가 Context Switching이 발생하면 진행하던 작업의 상태를 PCB에 저장하고 CPU를 반환한다. 그 후 다시 CPU를 할당받으면 PCB에서부터 정보를 받아와 Context Switching이 발생한 시점부터 다시 작업을 시작한다.

PCB에 저장되는 정보

  • PID : 프로세스 식별 번호
  • PC : Program Counter
  • Registers : CPU Register 정보
  • CPU-Scheduling Information : 스케줄링큐에 대한 포인터, 프로세스 우선순위 등
  • Memory-Management Information : 페이지 테이블 혹은 세그먼트 테이블과 같은 정보 포함
  • I/O status Information : 프로세스에 할당된 입출력 장치들 정보
  • File Descriptor Table : 프로세스에 할당된 열린 파일 목록
  • Accounting Information : 사용된 CPU 시간, 시간 제한, 계정정보 등
  • Signal Handling Information

스레드(Thread)

 프로세스의 실행 단위라고 할수 있다. 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내에 Code(Text), Data, Heap 영역,열린 파일 등은 공유하지만 고유의 PC, register, Stack 영역을 갖는다.

멀티스레딩

 하나의 프로세스 내에서 여러개의 스레드를 다루는 것을 멀티스레딩이라고 한다. 프로세스의 자원을 공유함으로써 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상 시킬 수 있다.

멀티 스레딩의 장점

 여러 프로세스를 사용해 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 컴퓨터 자원의 소모가 줄어들게 된다.
 스레드간 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역변수의 공간 또는 Heap영역의 동적할당 자료구조를 이용하여 데이터를 주고받을 수 있다. 그렇기 때문에 프로세스간 통신(IPC, Inter Processs Communication)에 비해 스레드간의 통신이 훨씬 간단하다.
 또한 스레드의 Context Switching은 프로세스의 Context Switching과 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다. 따라서 시스템의 throughput이 향상되고 자원 소모가 줄어들며 자연스럽게 프로그램의 응답 시간이 단축된다.

멀티 스레딩의 단점

 멀티 프로세스 프로그래밍에서는 프로세스간 공유하는 자원이 없기 때문에 자원의 동기화 문제가 발생하지 않지만, 멀티 스레딩을 사용하는 경우 스레드간 공유하는 영역이 있기 때문에 동기화 문제가 발생할 수 있다.
 따라서 멀티 스레딩에서는 동기화 작업이 필요하다. 이 경우 과도한 locking이 걸리는 경우 병목현상이 일어날 수 있으니 주의해야한다.

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

 멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 가지고 Context Swtiching이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있다는 점과 동기화 문제를 안고 있다.
 반면 멀티 프로세스 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간(Context Switching이 오래 걸리기 때문)을 차지한다는 단점이 존재한다.

profile
23살 개발자 변지점프의 더 나은 사람 되기 프로젝트

0개의 댓글