운영체제_운영체제 개요_멀티프로세서와 멀티코어를 위한 운영체제 설계 사항

미뇽·2024년 4월 8일
0

운영체제(강의)

목록 보기
6/43
post-thumbnail

대칭적 멀티프로세싱(SMP)를 위한 운영체제 고려사항

SMP 시스템에서 커널은 어느 처리기 상에서도 실행될 수 있고, 각 처러기는 스스로 스케줄링이 가능하기 때문에 프로세스/쓰레드들 중 원하는 것을 골라 실행시킨다.

커널 또한 여러 개의 프로세스/쓰레드로 구성될 수 있기 떄문에 커널의 일부분이 병렬로 실행되기도 하는데, 이러한 병렬 수행이 일어날 때 동시에 같은 공유 자원을 참조하거나 장치에 접근하는 등의 행위를 조율해야 한다. 이를 위해서는 공유자원에 대한 요청의 해결/동기화 하는 기법들의 도입이 필요하다.

SMP 운영체제는 사용자가 사용 가능한 프로세스가 하나인지 여러개인지를 상관할 필요 없이 여러 개의 프로세스 or 한 프로세스 내 여러 개의 쓰레드 등 이러한 구성의 응용들의 사용을 가능하게 만들어야만 한다. 따라서 멀티프로그래밍 시스템 기능 뿐만 아니라 멀티프로세서를 활용할 수 있는 추가적 기능들도 같이 제공해야 하는 것이다.
이를 위해서 필요한 것들은 다음과 같다.

  • 동시 병행 프로세스 or 쓰레드
    - 커널에 요청했을 때(권한을 흭득하려고 할 때) 여러 개의 처리기들이 같은 커널 코드를 동시에 실행시키면서 경쟁적 흭득이 일어난다. 이 과정에서 경쟁에서 밀려난 코드들이 후에 재진입(reentrant)할 수 있어야 한다.
  • 스케줄링
  • 동기화
    - 상호배제와 사건 직렬화(일렬로 줄세우기)를 강제적으로 시행하는 기능
    - 공유 자원을 참조할 가능성이 있는 여러 개의 프로세스들이 동시에 실행되고 있는 상황이라면 동기화가 절실해진다.
  • 메모리 관리
    - 하드웨어 병렬성을 활용하는 메모리 관리 기법 제공
    - 페이지나 세그먼트를 여러 처리기가 공유할 때 발생하는 일관성 문제를 담보하기 위한 여러 처리기 상의 페이징 과정 조율
  • 신뢰성과 결함 허용
    - 결함이 발생한 처리기 개수만큼의 성능 하락만 허용하고 시스템 전체가 결함이 발생하지 않도록 조율

멀티코어를 위한 운영체제 고려사항

멀티코어를 위한 운영체제 고려사항은 SMP시스템에서 제시된 고려사항 + a가 있다.
요즘에는 점점 CPU에 코어가 많이 늘어나고 있는 매니코어 시스템 시대에 진입한 만큼 이러한 멀티코어의 처리 용량을 어떻게 하면 최대로 활용할 것인가와 멀티코어를 담고 있는 단일 CPU 칩 내에 존재하는 상당 용량의 자원들을 어떻게 지능적으로 관리할 것이냐가 관건이다.
여기서 중요한 점은 매니코어 시스템에 내재되어 있는 근원적 병렬성 지원 원리와 응용이 요구하는 성능 수준의 합치인데, 현재의 멀티코어 시스템에서 지원하는 병렬성은 세 단계에 걸쳐 존재한다.

병렬성의 3단계

연산자 수준 병렬성

  • 각 코어 처리기 내에서의 하드웨어 병렬성
  • 컴파일러나 응용 프로그래머가 활용하기 어려움

여기서부터는 운영체제의 효과적이고도 확실한 지원이 없다면 멀티코어 시스템에서 사실상 효과를 발휘하기 어렵다

멀티프로그래밍, 멀티쓰레드 실행에서의 병렬성

응용 내에서의 병렬성

대부분의 응용들은 여러 개의 태스크로 나누어져 병렬로 실행될 수 있다. 이 태스크들은 여러 개의 프로세스, 그리고 프로세스 안의 쓰레드들로 구성되기도 한다. 하지만 이러한 작업들을 어떻게 독립적으로 실행되는 태스크들로 나누어야 할까? 이를 위해서는 병렬 태스크들에게 자원을 효과적으로 할당해주는 운영체제의 도구가 필요하다. 그 중에 대표적 도구 중 하나가 GCD(Grand Central Dispatch)와 가상 기계(Virtual Machine) 방식이다.

GCD(Grand Central Dispatch)

  • 멀티코어용 병렬 프로그래밍 개발자를 효율적으로 지원하는 대표적 도구 중 하나.
  • 멀티코어용 응용 프로그래밍을 지원
  • 분할된 태스크들이 서로 충돌을 일으키지 않고 최대한 독립적으로 돌아갈 수 있도록 도와줌
  • 적정 수준의 병렬성을 지원하기 위해 각 태스크들을 쓰레드들에 매핑하는 쓰레드 풀(pool)기법(쓰레드를 미리 만들어놓고 할당하는 방식), 쓰레드가 입출력을 하면 블록시키는 기법 등을 사용
  • 유닉스 기반 Mac OS X & Iphone에 사용

가상 기계(Virtual Machine) 방식

  • 동일한 하드웨어를 공유하는 다수의 실행환경
  • 한 컴퓨터의 하드웨어가 다수의 다른 실행 환경을 제공하도록 추상화 하는 것
  • 가상기계도 커널 모드와 사용자모드를 가지며, 가상 기계 자체는 커널모드에서 수행된다.
  • 다수의 기계가 CPU를 공유하므로, 느려질 수 있다.· 각 기계는 완전히 격리되므로 시스템 자원이 완전히 보호된다· 각 기계의 자원을 직접 공유할 수 없으나, 가상 통신 네트워크를 통해 공유할 수 있다.
profile
문이과 통합형 인재(人災)

0개의 댓글