OS - 다중 작업

최정환·2023년 1월 29일
0

OS

목록 보기
2/2

MultiTasking

멀티태스킹은 여러 작업이나 프로그램을 동시에 실행할 수 있는 컴퓨터 운영 체제의 기능

멀티태스킹 시스템에서 운영 체제는 스케줄러를 사용하여 각 작업 또는 프로그램에 CPU 시간을 할당하므로 모두 동시에 실행될 수 있다.

멀티 태스킹에는 두 가지 주요 유형이 있다.

1. 프로세스 기반

OS는 실행 중인 각 작업 또는 프로그램에 대해 별도의 프로세스를 생성하고 필요에 따라 각 프로세스에 CPU 시간을 할당한다.

이러한 유형의 멀티태스킹은 OS가 한 프로세스를 중단하고 필요한 경우 다른 프로세스로 전환할 수 있기 때문에 선점형 멀티 태스킹이라고도 한다.

단점

  1. 하나의 프로세스가 동시에 여러 작업을 수행하지 못함

  2. 프로세스의 컨텍스트 스위칭의 비용이 비싸다.

  3. 프로세스끼리 데이터 공유 까다로움
    => pipe, socket, 공유 메모리 같은 IPC 매커니즘 사용해야함


2. 스레드 기반

OS는 단일 프로세스 내에서 여러 스레드를 생성하고 필요에 따라 각 스레드에 CPU 시간을 할당한다.

이러한 유형의 멀티태스킹은 각 스레드가 자발적으로 다른 스레드에 CPU 제어권을 양보해야하기 때문에 협력적 멀티 태스킹이라고도 한다.

단점

보안, 독립성, 안정성 저하

모든 스레드가 동일한 메모리 공간 공유하기 때문에 한 스레드의 버그, 충돌, 보안 취약점이 모든 스레드에 영향 미칠 수 있음



MultiThreading

멀티스레딩은 단일 프로세스 또는 프로그램이 여러 실행 스레드를 만들고 관리할 수 있도록 하는 프로그래밍 기술

각 스레드는 프로세스 내에서 별도의 실행 경로이며 각 스레드는 고유한 명령 및 데이터 집합을 가질 수 있다.

여러 스레드를 생성함으로써 프로그램은 단일 코어 CPU에서도 여러 작업을 동시에 수행할 수 있다.

멀티스레딩에는 커널 수준 스레딩과 사용자 수준 스레딩의 두 가지 주요 유형이 있다.

커널 수준 스레딩

커널 수준 스레딩은 커널 수준에서 스레드를 만들고 관리하는 운영 체제에 의해 구현된다.

사용자 수준 스레딩

사용자 수준 스레딩은 사용자 수준에서 스레드를 만들고 관리하는 프로그램에 의해 구현된다.

커널, 사용자 수준 스레딩이란

장점

프로그램이 여러 작업을 동시에 수행할 수 있도록해준다.

  1. 성능, 리소스 활용도 향상
    특히 멀티 코어 CPU에서 프로그램의 전반적인 성능 향상이 가능하다. => 시스템의 리소스를 최대한 사용한다.

  2. 응답성 향상
    프로그램이 UI를 정지, 차단하지 않고 백그라운드에서 작업을 수행할 수 있도록해 응답성과 UX 향상이 가능하다.

  3. 확장성 향상
    여러 코어와 프로세서를 활용할 수 있도록해 프로그램의 확장성을 향상시킬 수 있다.

  4. 대기 시간 감소
    네트워크나 디스크 I/O와 같은 작업의 대기 시간을 감소시킬 수 있다.

단점

  1. 복잡성 증가
    여러 스레드를 사용하는 만큼 프로그램의 복잡성을 증가시켜 설계, 구현, 테스트, 유지 보수를 어렵게 만든다.

  2. 오버헤드 증가
    스레드 관리 및 동기화 필요성으로 프로그램의 오버헤드가 증가될 수 있다.

  3. 버그 위험 증가
    멀티 스레딩은 race conditions 이나 deadlocks같은 고치기 어려운 버그의 위험을 증가시킬 수 있다.

  4. 하드웨어 제한
    프로그램을 실행하는 하드웨어에 제한적이다. => 코어 및 프로세서 수가 일정 수치 이상 필요



MultiProcessing

단일 컴퓨터 시스템 내에서 둘 이상의 중앙 처리 장치(CPU)를 사용하는 것.

CPU는 서로 다른 작업 또는 작업 집합을 처리하는 각 CPU와 함께 작업을 수행하기 위해 함께 작동할 수 있다.

이를 통해 작업량이 여러 CPU로 나누어지기 때문에 성능이 향상되고 작업 완료 속도가 빨라지게된다.

멀티 프로세싱에는 SMP(대칭 다중 처리), ASMP(비대칭 다중 처리) 두가지 주요 유형이 있다.

SMP

모든 CPU는 시스템 메모리 및 기타 리소스에 동등하게 접근할 수 있으며 모든 작업을 수행할 수 있다.

ASMP

하나의 CPU가 주인으로 지정되고 다른 CPU는 노예로 지정된다.

주인 CPU는 시스템 리소스를 제어하고 노예 CPU에 작업을 할당한다.


장점

  1. 성능 향상
    작업량을 여러 CPU로 나누어 처리하기 때문에 큰 성능 향상이 가능하다.

  2. 안정성 향상
    여러 CPU 중 하나가 고장나더라도 컴퓨처 시스템이 계속 작동 가능하다.

  3. 확장성 향상
    더 많은 CPU를 시스템에 추가할 수 있어 확장성에 좋다.

  4. 리소스 사용의 효율성 증가
    작업량을 여러 CPU에 나누어 메모리 및 I/O 장치와 같은 시스템 리소스를 더 잘 활용할 수 있다.

단점

  1. 복잡성 증가
    처리에 대한 복잡성이 증가해 구현, 설계, 유지 보수가 어렵다.

  2. 비용 증가
    여러 CPU를 사용해 전력을 더 소비하고 하드웨어에 대한 비용이 증가할 수 있다.

  3. 동기화 비용
    상당한 오버헤드와 성능 손실을 유발할 수 있는 여러 프로세서간의 동기화가 필요하다.

0개의 댓글