자 92번째 키워드인 '프로세스 & 스레드 관리'에 대해서 알아 볼 것이다.
여태 키워드에서 프로세스와 스레드는 다뤘고 관리 측면은 작성한 것이 없어서 알아보았다.

병행성은 여러 작업을 동시에 처리할 수 있는 능력을 의미한다. 그러나 병행성은 꼭 여러 작업이 실제로 동시에 수행되는 것은 아니다.
병행성은 여러 작업을 순차적으로 또는 중첩하여 처리하면서 마치 동시에 진행되는 것처럼 보이게 만든다.
비동기 프로그래밍: 웹 서버가 여러 사용자의 요청을 병행하여 처리할 때, 각 요청을 독립적으로 수행하고 결과를 반환한다.
멀티스레딩: 한 프로그램에서 여러 스레드가 각기 다른 작업을 수행하면서도 하나의 CPU가 빠르게 스레드를 전환하여 병행성을 구현할 수 있다.
자원 사용 최적화: 하나의 자원을 여러 작업이 공유할 수 있다.
빠른 응답성: 시스템이 많은 작업을 동시에 처리하는 것처럼 보여 사용자 경험을 개선할 수 있다.
복잡한 구현: 병행성 관리가 어려우며, 교착 상태나 경쟁 상태가 발생할 수 있다.
디버깅 어려움: 여러 작업이 병행으로 실행되므로 에러 추적이 복잡할 수 있다.
병렬성은 실제로 여러 작업이 동시에 실행되는 것을 의미한다.
병렬성은 주로 멀티코어 프로세서 환경에서 구현된다. 여러 코어를 가진 CPU는 병렬 처리를 통해 성능을 극대화할 수 있다.
높은 성능: 병렬 처리를 통해 작업 속도가 크게 향상된다.
확장성: 컴퓨터 자원이 늘어나면 더 많은 작업을 동시에 처리할 수 있다.
자원 낭비 가능성: 작업이 병렬화되지 않으면 비효율적으로 작동할 수 있다.
복잡한 동기화 필요: 여러 작업이 동시에 동일 자원에 접근할 때 동기화가 필요하다.
직렬화는 데이터를 저장하거나 전송하기 위해 특정 포맷으로 변환하는 과정이다.
직렬화는 데이터의 구조를 연속된 바이트 형태로 만들어 전송 및 저장을 쉽게 한다.
반대로 역직렬화(Deserialization)는 직렬화된 데이터를 원래의 객체 형태로 되돌리는 과정이다.
데이터 전송 용이성: 직렬화된 데이터는 네트워크를 통해 쉽게 전송될 수 있다.
호환성: 데이터 포맷이 표준화되어 다양한 시스템에서 사용할 수 있다.
성능 문제: 직렬화와 역직렬화 과정에서 성능 저하가 발생할 수 있다.
포맷 종속성: 특정 포맷에 종속될 경우 다른 포맷으로 전환하기 어려울 수 있다.