본문 바로가기
CS/운영체제

[Operating System] 프로세스와 스레드

by 채채씨 2022. 3. 25.
728x90
반응형

 

운영체제는 사용자가 컴퓨터를 편리하게 사용할 수 있도록, 응용 프로그램과 하드웨어 사이의 인터페이스 역할을 하는 시스템 소프트웨어이다. 

 

프로세스

프로세스는 메모리 상에서 응용 프로그램을 실행하고 있는 작업을 말한다. 참고로 프로세서(CPU)는 한 번에 하나의 프로세스만 실행가능하다. 프로세스는 최소 1개의 스레드를 가지고 있다.

 

 

  • 메모리 구조 : Code, Data, Heap, Stack이 있으며, 스레드는 Stack만 따로 할당받고 나머지 메모리 영역은 공유한다. 
    • Code : 코드 저장하는 메모리 영역
    • Data : 전역변수, 정적변수, 배열 등 저장하는 메모리 영역
    • Heap : malloc() 등의 동적 메모리 할당 시 사용하는 메모리 영역
    • Stack : 지역변수, 매개변수, 리턴값 등 저장하는 임시 메모리 영역

 

프로세스는 고유 공간과 자원을 받아 사용하지만, 스레드는 다른 스레드와 공간과 자원을 공유하며 사용

 

멀티프로세스

컴퓨터 한 대에 CPU를 여러개 장착함으로써 여러 프로세스를 동시에 처리(병렬처리)하는 작업을 말한다. 프로세스 간 독립된 메모리 또는 주소 공간이 필요한 경우 사용한다.

 

  • 장점
    • 독립적인 구조로 하나의 프로세스에 오류가 생겨도 작업속도 외에는 다른 프로세스에 큰 영향을 주지 않기 때문에 안정성이 높다.
  • 단점
    • 메모리 영역이 독립적으로 있기 때문에 캐시 메모리 초기화와 같은 무거운 작업이 수행될 때, Context Switching이 자주 일어나서 주소 공간의 공유가 잦아 오버헤드가 발생할 수 있다. 따라서 성능 저하가 생길 수 있다.

 

Context Switching이란 ?
한 번에 한 프로세스만 실행할 수 있는 CPU에서 여러 프로세스를 동시에(매우 빠른 속도로 돌아가면서) 처리하기 위해 프로세스 상태를 저장하고 복원하는 과정

 

Q. Context Switching은 단일 프로세스 경우에도 존재하는 개념인가? 멀티프로세스는 프로세스가 여러개인 것이 중심이 아니라 프로세서가 여러개인 것이 중심인가?

 

스레드

프로세스 내에서 자원을 이용하는 실행 단위를 말한다. 

 

멀티스레드

하나의 프로세스 내에서 여러 스레드로 (자원을 공유하며) 작업을 나누어 수행하는 것이다.

 

 

  • 장점
    • 프로세스를 생성하고 자원을 할당하는 시스템콜이 줄어 자원을 효율적으로 사용할 수 있다.
    • 스레드 간 작업량이 적어 Context Switching이 빠르다. 캐시 메모리를 비울 필요가 없다.
    • Stack을 제외한 모든 메모리 영역을 공유하기 때문에 통신 비용이 적다.
  • 단점
    • 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다. (병목현상, 데드락 등)
    • 설계와 디버깅이 어렵다. 불필요한 부분까지 동기화를 할 경우, 대기 시간이 길어질 수 있다.
    • 하나의 스레드에 문제가 생기면 다른 스레드에 영향을 미치므로 전체 프로세스가 중단될 수 있다.
      • Critical Section기법을 통해 대비 : 어떤 스레드가 공유하는 데이터를 변경할 때, 다른 스레드에 문제가 없도록 동기화한다

 


[reference]

728x90
반응형

댓글