프로세스 & 스레드 관리엔 뭐가 있을까?

박승우·2024년 11월 13일

자 92번째 키워드인 '프로세스 & 스레드 관리'에 대해서 알아 볼 것이다.

여태 키워드에서 프로세스와 스레드는 다뤘고 관리 측면은 작성한 것이 없어서 알아보았다.

1. 병행성 (Concurrency)

병행성은 여러 작업을 동시에 처리할 수 있는 능력을 의미한다. 그러나 병행성은 꼭 여러 작업이 실제로 동시에 수행되는 것은 아니다.
병행성은 여러 작업을 순차적으로 또는 중첩하여 처리하면서 마치 동시에 진행되는 것처럼 보이게 만든다.

사용 예

  1. 비동기 프로그래밍: 웹 서버가 여러 사용자의 요청을 병행하여 처리할 때, 각 요청을 독립적으로 수행하고 결과를 반환한다.

  2. 멀티스레딩: 한 프로그램에서 여러 스레드가 각기 다른 작업을 수행하면서도 하나의 CPU가 빠르게 스레드를 전환하여 병행성을 구현할 수 있다.

장점

자원 사용 최적화: 하나의 자원을 여러 작업이 공유할 수 있다.
빠른 응답성: 시스템이 많은 작업을 동시에 처리하는 것처럼 보여 사용자 경험을 개선할 수 있다.

단점

복잡한 구현: 병행성 관리가 어려우며, 교착 상태나 경쟁 상태가 발생할 수 있다.
디버깅 어려움: 여러 작업이 병행으로 실행되므로 에러 추적이 복잡할 수 있다.

2. 병렬성 (Parallelism)

병렬성은 실제로 여러 작업이 동시에 실행되는 것을 의미한다.
병렬성은 주로 멀티코어 프로세서 환경에서 구현된다. 여러 코어를 가진 CPU는 병렬 처리를 통해 성능을 극대화할 수 있다.

사용 예

  1. 멀티코어 CPU: 각 코어가 서로 다른 작업을 동시에 처리할 수 있다.
  2. 분산 컴퓨팅: 여러 컴퓨터에서 하나의 큰 작업을 나누어 처리해 성능을 높인다.

장점

높은 성능: 병렬 처리를 통해 작업 속도가 크게 향상된다.
확장성: 컴퓨터 자원이 늘어나면 더 많은 작업을 동시에 처리할 수 있다.

단점

자원 낭비 가능성: 작업이 병렬화되지 않으면 비효율적으로 작동할 수 있다.
복잡한 동기화 필요: 여러 작업이 동시에 동일 자원에 접근할 때 동기화가 필요하다.

3. 직렬화 (Serialization)

직렬화는 데이터를 저장하거나 전송하기 위해 특정 포맷으로 변환하는 과정이다.
직렬화는 데이터의 구조를 연속된 바이트 형태로 만들어 전송 및 저장을 쉽게 한다.
반대로 역직렬화(Deserialization)는 직렬화된 데이터를 원래의 객체 형태로 되돌리는 과정이다.

사용 예

  1. 네트워크 통신: 데이터 전송을 위해 객체를 직렬화하여 보낸다. JSON, XML 등이 직렬화 포맷으로 사용된다.
  2. 데이터 저장: 프로그램이 종료된 후에도 데이터를 유지하기 위해 파일에 직렬화하여 저장한다.

장점

데이터 전송 용이성: 직렬화된 데이터는 네트워크를 통해 쉽게 전송될 수 있다.
호환성: 데이터 포맷이 표준화되어 다양한 시스템에서 사용할 수 있다.

단점

성능 문제: 직렬화와 역직렬화 과정에서 성능 저하가 발생할 수 있다.
포맷 종속성: 특정 포맷에 종속될 경우 다른 포맷으로 전환하기 어려울 수 있다.

profile
게임을 좋아하는 사람 입니다!

0개의 댓글