cs

병렬성과 동시성

25G 2023. 2. 6. 20:20

병렬성과 동시성

최초의 컴퓨터는 한번에 한 작업만 실행하도록 설계됐고 주로 계산 수학 분야의 작업을 처리했습니다. 시간이 지나며 컴퓨터는 다양한 종류의 입력을 처리하고 네트워크 계념이 생기며 한번에 한 작업만 하는 일은 아무리 연산이 빠른 기계라고해도 프로그램에서 락이 걸리면 기다리기만 해야하는 상황이 생기던 시절이 있었다고 합니다. 이로 인해 생긴 혁신이 멀티태스킹 운영 체제로 이동한 것입니다.
멀티 태스킹은 현대의 다중 코어 CPU가 등장하기 이전에도 필요했기 때문에 운영 체제들은 이전부터 여러 프로세스끼리 시스템 자원을 공유하는 방법을 제공해왔습니다.
모든 운영 체제의 핵심 기능은 실행중인 프로세스를 관리하는 것입니다. 모든 프로세스는 주인을 가지고 있고 메모리와 CPU같은 자원을 요청할 수 있습니다.
CPU의 경우 프로세스는 작업으로 실행되기 위해 CPU시간을 요청한다. 운영 체제는 CPU시간을 프로세스에 할당해 주고 우선순위에 따라 스케줄링하며 어떤 프로세스가 CPU를 사용할지 제어합니다.
여기서 동시성 모델과 병령성 모델로 나뉘게 됩니다.

동시성 모델

  • CPU가 context switching을 하며 여러일을 동시에 하는것입니다. 이렇게 하여도 워낙 빠르기때문에 인간이 느끼기엔 컴퓨터가 한번에 여러가지의 일을 동시에 하고있는것 처럼 느껴지는 것 입니다.

병렬성 모델

  • 동시성은 멀티태스킹 구현에 알맞은 해결책입니다. 하지만 CPU를 나눠 쓰기에도 한계가 있기 때문에 일부 고성능 컴퓨터는 여러 코어 또는 여러 CPU로 작업을 분산합니다. 이를 위해 운영체제가 프로세스를 여러 CPU에 스케줄링하는 방법을 제공합니다.

위 두가지 방법으로 컴퓨터는 멀티태스킹을 처리합니다.

  • 병렬성을 사용하려면 CPU와 같은 연산 유닛이 다수 필요하다.
  • 동시성을 사용하려면 유휴 상태의 리소스가 자원을 점유하고 있지않도록 작업을 스케줄링 할 수 있어야 한다.