OS/All

[OS] 프로세스(Process)/스레드(Thread)

0so0 2023. 6. 25. 15:25
728x90
반응형
SMALL

Process와 Thread에 대한 정리(+멀티프로세스, 멀티스레드)


Process

운영체제로 부터 시스템 자원을 할당받는 작업의 단위
* 시스템 자원 : 독립된 메모리 영역(Code, Data, Stack, Heap)
  • 기본적으로 1개의 스레드 보유
  • 각 프로세스는 별도의 주소공간에서 실행되고 프로세스간 변수, 자료구조에 접근할 수 없음
  • 다른 프로세스의 자원에 접근하려면 프로세스간 통신필요


Thread

프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 스레드는 프로세스내에서 각각 Stack만 따로 할당 받고, 나머지 자원 공유
  • 각각의 스레드는 레지스터, 힙을 별도로 보유하고 힙 메모리를 서로 읽고 쓸 수 있음

컨텍스트 스위칭(Context Switching)

CPU에서 여러 프로세스를 돌아가며 작업을 처리하는 과정
  • CPU가 하나인 시스템에서 둘 이상의 프로세스를 실행할때, 프로세스들은 CPU의 할당 시간을 매우 작은 단위로 쪼개  씀
  • 메인 메모리에 하나의 프로세스를 올리고 다른 프로세스를 올리고 내리는 과정에서 컨텍스트 스위칭이 이루어짐

멀티 프로세스(Multi Process)

하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)을 처리하게 하는것
  • 하나의 프로세스가 잘못되어도 프로그램이 동작함
  • Context Switching 비용 발생

멀티 스레드(Multi Thread)

프로그램을 여러개의 스레드로 구성하고 각 스레드가 작업을 처리하는것
  • 시스템 자원 소모 감소(프로세스를 생성하고 자원을 할당하는 시스템 콜 줄어듬)
  • 처리 비용 감소(실행 속도 향상)
  • Stack 제외 모든 메모리를 공유하므로 통신부담 줄어듬
  • 디버깅이 어렵고, 동기화 이슈 발생
  • 하나의 스레드 오류로 전체 프로세스 오류 발생
728x90
반응형
LIST

'OS > All' 카테고리의 다른 글

[OS] 뮤텍스(Mutex) & 세마포어(Semaphore)  (0) 2023.09.16
[OS] 메모리 구조(stack, heap)  (0) 2023.09.08
[OS] 빅 엔디안 & 리틀 엔디안  (0) 2023.09.05
[ETC] CRLF / LF /CR  (0) 2023.07.21