운영체제

싱글프로세서 시스템(Single-Processor Systems) , 멀티프로세스 시스템(Multiprocessor systems)

매일_공부 2024. 9. 11. 13:08
반응형

프로세서

    프로세서란 처리기라는 뜻이며, 제어장치, 연산 장치, 레지스터 그리고 데이터 버스로 구성된 디지털 시스템의 핵심 부        분으로, 프로그램을 기억 장치로부터 읽어 연산 처리, 비교 처리, 데이터 전송, 편집, 변환, 테스트와 분기 등의 데이터를      처리하고, 각종 장치를 구동하는 역할을 담당한다.

 

    단순히 말하면, CPU의 코어를 올려 둘 수 있는 판이라고 생각하면 된다. 

 

    참고로 하나의 프로세서에는 하나의 CPU를 올릴 수 있으며, 두개 이상의 CPU도 올릴 수 있다.

 

    하나의 프로세서에 여러 CPU를 올리는 것을 멀티코어라고 하며, 싱글코어보다 효율적이다.

    (하나의 프로세서 에서 소통함으로, 발열과 소음이 덜하며, 더 빠르다.)

 

 

싱글 프로세서 시스템

    싱글프로세서 시스템은 말 그대로 하나의 프로세서를 사용하는 시스템을 의미한다.

    

     따라서 하나의 범용 CPU를 가진다.

 

     여기에서 키보드나 프린터, 모니터 등을 동작하는 CPU는 포함시키지 않는다.

 

 

멀티 프로세서 시스템

    멀티 프로세서 시스템은 현대의 컴퓨터에서 주로 사용되는 방식이다.

   

    두개 이상의 프로세서가 기능을 수행한다.

   

 

    하지만 CPU가 2배 4배 늘어난다고 해서, CPU의 처리량이 2배 4배 증가하는 것은 아니다.

 

    컨텍스트 스위칭의 오버헤드의 문제와 CPU가 메모리를 공유한다는 점에서 선형적으로 증가하지는 않는다.

 

 

    따라서 다양한 종류의 멀티 프로세스 시스템이 존재한다.

 

 

 


 

 

    Symmetric Multiprocessing(SMP) 

       가장 흔한 방식이며, 각각의 CPU 프로세서가 동등한 일을 나눠서 하는 것을 의미한다.

 

       각각의 CPU는 모두 운영체제를 다루는 프로세서와 유저 프로그램의 프로세서를 모두 다룬다.

 

       즉, 각각의 CPU가 모두 커널모드와 유저모드를 모두 다룬다고 생각하면 된다.

 

       각각의 프로세서는 각자 레지스터와 로컬 캐시를 가지지만, 서로 메인 메모리를 공유한다.

 

       프로세서가 서로 동등한 역할을 가지기 때문에, 많은 프로세스가 동시에 진행 가능하다는 장점을 가진다.

 

       하지만, 서로가 각각의 일을 나눠서 처리하기 때문에, 프로세스를 적절히 분배하여 리소스를 효율적으로 사용하기 어렵다는 점이 있다.

 

 

 

    Multicore System

       하나의 프로세서에 두개 이상의 코어가 존재하는 것을 의미한다.

 

       하나의 프로세서 위에서 코어들이 소통함으로 더 빠르다는 장점이 있다.

 

       윈도우, 맥 OS, 리눅스, 안드로이드, IOS 들은 멀티코어 SMP 를 지원한다.

 

       즉, SMP 는 멀티코어든, 싱클코어든 모두 포함되는 부분이다.

 

 

     Non-Uniform Memory Access (NUMA)

        앞서 설명했듯이, 코어의 개수가 2배 4배 증가한다고 해서, 처리량이 2배 4배 늘어나지 않는다.

  

        그 단점을 최소화 하기 위해서 CPU마다 메모리를 독립적으로 가지게 한다.

 

        각각의 CPU마다 자신만의 로컬 메모리를 가지고 있으므로, 메모리의 접근이 빠르다는 장점이 있다.

 

        경쟁 상대도, 없고 단독으로 사용하기 때문이다.

 

        따라서 스케일 면에서 CPU가 2배 4배 증가할 때마다. 앞선 구조들보다. 더욱 효과적으로 처리량이 증가한다.

 

        하지만, 코어마다 자신만의 로컬 메모리를 가지고 있기 때문에, 이 로컬 메모리들을 연결해주는 시스템이 존재하며,

        다른 코어가 담당하는 메모리에 접근하기 위해서는 시간이 걸린다는 단점이 존재한다.

   

 

    Clustered System

 

       각각의 개인적인 멀티프로세서를 가진 컴퓨터를 모아놓고, 그것들이 데이터 베이스를 공유한다.

 

       데이터 베이스를 공유할 때 SAN(Storage Area Network)를 통해 공유한다.

 

       SAN

       하드 디스크의 용량이 증가하고 소형화가 진행되면서, 효율적으로 데이터 서버를 구성할 수 있었지만 서버관의 요량의 효율이 문제가 되었다.

       서버에 용량을 추가해야 할 때, 새 디스크를 추가하거나, 용량에 영유가 있는 서버에서 디스크를 물리적으로 빼서 추가해야 한다. 이러한 불편함을 해소하기 위 스토리지 영역 네트워크(Storage Area Network)가 고안되었다.

 

      여러 데이터베이스를 하나의 네트워크에 연결시키고, 여러 서버들이 이 네트워크에 연결하여, 데이터베이스에 접근하는 방식이다.

       SAN 스위치라는 기기가 서버와 데이터베이스를 중계하는 역할을 수행하면서, 위의 개념을 구현한다.

      이때 SAN 스위치는 각 서버와 데이터베이스를 광케이블로 연결하며, iSCSI, 파이버 채널, iSER의 프로토콜을 통해 통신한다.

 

 

       하나의 컴퓨터가 고장나도, 다른 컴퓨터가 서비스를 제공하므로, 높은 안정성을 지닌다.

 

 

        Asymmeteric clustering : 하나의 컴퓨터는 작업을 수행하지 않고, 대기하다가, 다른 컴퓨터가 문제가 생기면, 대신 수행한다.

        Symmeteric clustering : 모든 컴퓨터가 작업을 수행하다, 문제가 발생하면, 문제가 생긴 작업을 나눠서 수행한다.

 

         AI학습과 같이 높은 계산 능력(high-performance computing (HPC))을 요구하는 문제에서 사용되기도 한다.

 

         데이터를 공유하면, 동시성 문제가 발생할 수도 있는데, 이를 위해 DLM과 같은 기술을 사용하기도 한다.

 

     

반응형