티스토리 뷰

멀티 프로세스와 멀티 스레딩에 대해 알아보고 그 밖에 헷갈리는 개념에 대해서도 정리하였습니다.

 

멀티 프로세스

  • 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것입니다.

장점

  • 서로의 메모리에 침범할 수 없습니다.
  • 여러 자식 프로세스 중 하나에 문제가 발생하여도 다른 프로세스에는 영향이 가지 않아 안정성이 높습니다.

단점

  • 독립된 메모리를 갖고 있기 때문에 작업량이 많아지면(Context Switching이 자주 발생하면) 오버헤드가 발생합니다.
  • IPC가 필요합니다.

 

멀티 스레드

  • 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것입니다.

장점

  • 스레드 간 데이터를 주고받는 것이 간단해져 스레드 간 통신이 간단합니다.
  • 교환해야 할게 적어서 Context Switching이 빠릅니다.
  • 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적습니다.

단점

  • 서로 다른 스레드가 Stack을 제외한 메모리 공간을 공유하기 때문에 동기화 문제가 발생할 수 있습니다.
  • 하나의 스레드에서 문제가 발생하면 전체 프로세스에 영향이 갑니다.
  • 주의 깊은 설계가 필요하고 디버깅이 어렵습니다.

 

멀티 프로세싱 (Multi processing)

  • 다수의 프로세서(CPU)가 서로 협력적으로 일을 처리하는 것을 말합니다.

 

멀티프로그래밍  (Multi programming)

  • 메모리 내에 여러 작업이 들어갈 수 있는 방식입니다.
  • CPU의 활용도을 높이기 위해서 사용됩니다.
  • 사용자는 실행중인 작업에 대해서 관여할 수 없는 단점이 있습니다.

 

멀티 태스킹 (Multi tasking)

  • 여러 개의 Task들이 CPU와 같은 자원을 공유하도록 하는 방법입니다.
  • 사용자가 보기에 여러 작업을 동시에 하는 것처럼 보이게 문맥 교환을 해주는 방식입니다.

'CS' 카테고리의 다른 글

[OS] IPC (프로세스 간 통신)  (0) 2022.02.28
[OS] CPU 스케줄링  (0) 2022.02.24
[OS] PCB(Process Control Block)와 문맥 교환(Context Switching)  (0) 2022.02.17
[OS] 병렬처리  (0) 2022.02.14
[OS] 컴퓨터 성능 향상 기술  (0) 2022.02.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함