[운영체제/OS] 컴퓨터 시스템
컴퓨터 시스템 구조
SISD(Single Instruction Single Data)
단일 처리기 컴퓨터로서 한 번에 한 명령어만 처리
- 1명의 사용자가 1개의 CPU를 사용한다
- 다수의 기계어 명령들이 동시에 서로 다른 단계에서 수행할 수 있게 하는 파이프라인 기법에 응용할 수 있다
SIMD(Single Instruction Multiple Data)
다중 처리기 컴퓨터로서 한 번에 한 명령어만을 처리
- 1명의 사용자가 여러 개의 CPU를 사용
- 슈퍼 컴퓨터, 과학 기술용 컴퓨터 급 수준
- 어레이 처리 기법에 응용할 수 있다
MISD(Multiple Instruction Single Data)
단일 처리기 컴퓨터로서 한 번에 여러 개의 명령어를 처리
- 여러 명의 사용자가 1개의 CPU를 사용
MIMD(Multiple Instruction Multiple Data)
다중 처리기 컴퓨터로서 한 번에 여러 개의 명령어를 처리
- 여러 명의 사용자가 여러 개의 CPU를 사용
- 일반적으로 다중 처리기 혹은 다중 컴퓨터라고도 한다
다중 처리기(Multi-Processor)
여러 개의 CPU가 하나의 메모리를 공유하는 형태로 CPU 끼리의 결합력이 강하며, 병렬 처리에 적합한 컴퓨터 시스템 구조
- 강 결합(Tightly-Coupled) 시스템
- 전송 지연이 짧고 데이터 처리율이 높다
- 프로세스간 통신은 공유 메모리를 통해 이루어진다
- 공유 메모리를 차지하려는 프로세스 간의 경쟁이 발생
- 기억 장소가 하나이므로 운영체제도 종속적으로 사용
- 모든 CPU는 하나의 운영체제에서 통제되는 대칭적인 구조
다중 컴퓨터(Multi-Computer)
여러 개의 CPU가 자신만의 독립적인 메모리를 사용하는 형태로 CPU 끼리 결합력이 약하며, 분산 처리에 적합한 컴퓨터 시스템 구조
- 약 결합(Loosely-Coupled) 시스템
- 전송 지연이 길고 데이터 처리율이 낮다
- 프로세스 간의 통신은 통신망에 메시지 전달로 통신 가능
- 구성 요소의 추가 또는 삭제가 용이
- 기억 장소가 CPU와 독립적으로 사용되므로 운영체제도 독립적으로 사용하는 분리 수행 구조
MIMD의 위상에 따른 분류
다중 처리기와 운영체제 구성
주/종 프로세서 구조
하나의 컴퓨터 시스템에 두 개의 프로세서가 있을 경우 입출력과 연산을 각각 독립적으로 수행하지 않고 주 프로세서는 입출력과 연산, 종 프로세서는 연산을 일부 담당하게 한다.
주 프로세서가 중단되면 시스템이 중지되지만 종 프로세서가 중단되면 컴퓨터 시스템은 계속 동작할 수 있다
- 주 프로세서만이 운영체제를 수행
- 종 프로세서는 사용자 프로그램만을 수행
분리 수행(개별적 관리자, Separate-Excution)
각 프로세서가 독립적인 운영체제를 가진다
- 각 프로세서에서 발생하는 인터럽트도 해당 프로세스에서 독립적으로 수행
- 각 프로세서는 자신만의 파일과 입출력 장치를 제어
- 프로세서가 독립적이므로 프로세서에 따라 유휴 상태이거나 매우 바쁠 수 있다
- 한 프로세서의 고장으로 전 시스템이 중지되지 않으므로 신뢰성이 우수
대칭적(Symmetric) 구조
여러 프로세서가 하나의 운영체제에서 동시에 운영
- 가장 강력한 시스템이나 매우 복잡한 구조
- 운영체제는 동등한 프로세서의 Pool(프로세서 정보 테이블)을 가진다
- 하나의 프로세서가 중단되면 능력이 다소 낮아지지만 중단 없이 계속 진행
- 프로세서의 수를 늘린다고 해도 시스템 효율은 향상되지 않는다
분산 운영체제
각 호스트에 고유한 운영체제가 있는 것이 아니라 전체 네트워크에 공통적으로 단일 운영체제가 실행되는 시스템으로 원격에 있는 자원을 마치 지역 자원인 것처럼 쉽게 접근하여 사용할 수 있는 방식
분산 운영체제의 목적
-
자원 공유의 증대성
각 시스템이 통신망을 통해 연결되어 있으므로 유용한 자원을 공유하여 사용할 수 있다 -
연산 속도의 향상
하나의 일을 여러 시스템에 분산하여 처리하기 때문에 연산 속도가 향상된다 -
신뢰성 향상
하나의 시스템에 오류가 발생하더라도 다른 시스템은 계속 작업을 수행할 수 있기 때문에 신뢰도가 향상된다 -
컴퓨터 통신
지리적으로 떨어진 시스템에 통신망을 두어 정보를 교환할 수 있다
분산 운영체제의 장점
- CPU의 처리 능력 한계를 극복할 수 있다
- CPU의 처리 능력을 한 단계 높이려면 현재 가격의 제곱만큼 비싸다. 따라서 처리 속도가 낮은 여러 개의 CPU를 연결하여 처리 속도를 향상시킬 수 있기 때문에 경제적
- 반응 시간이 빠르면 계산 능력, 처리량, 신뢰성, 가용성 모두 향상
- 특정한 시스템의 병목 현상을 제거하기 위해 필요한 자원을 추가할 수 있으므로 확장성이 우수
- 부하를 균등하게 배분할 수 있어 처리 효율이 향상
- 다수의 사용자가 데이터를 공유할 수 있으며 통신이 용이
분산 운영체제의 단점
- 여러 개의 컴퓨터 시스템이 연결되어 있으므로 보안이 매우 취약
- 여러 개의 컴퓨터를 하나의 컴퓨터처럼 운영해야 하므로 소프트웨어 개발이 매우 어렵다
- 적응성이 하나의 CPU를 사용할 때보다는 떨어진다
- 에러 발생 시 원인 파악이 힘들다
분산 운영체제의 결함
- 링크 결함 - 두 개의 사이트 간에 연결이 잘못되어 발생하는 결함
- 사이트 결함 - 사이트 자체에서 발생할 수 있는 결함
- 메시지의 분실 - 통신 회선을 통해 해당 사이트로 메시지가 전달되는 과정에서 시간 지연이나 다른 이유로 메시지를 잃어버리는 결함
분산 운영체제의 위상
성형 연결(Star Connected) 구조
각 노드가 점 대 점 형태로 중앙 컴퓨터에 연결되고 중앙 컴퓨터를 경유한다
- 제어가 집중되고 모든 동작이 중앙 컴퓨터에 의해 감시
- 중앙 컴퓨터에 과부하가 걸리면 성능이 현저히 감소
- 중앙 컴퓨터에 장애가 발생되면 전체 시스템 마비
- 한 노드의 고장은 다른 노드에 영향을 주지 않는다
- 터미널의 증가에 따라 통신 회선 수도 증가
- 최소 두 개의 노드만 사용할 수 있으므로 통신 비용이 저렴
환형 연결(Ring Connected) 구조
각 사이트는 정확히 다른 두 사이트와 물리적으로 연결되어 있는 구조
- 정보 전달 방향은 단방향 혹은 양방향일 수 있다
- 기본 비용은 사이트의 수에 비례
- 메시지가 링을 순환할 경우 통신 비용은 증가
- 근거리 네트워크 구조로 가장 많이 채택
다중 접근 버스 연결(Multi-access Bus Connected) 구조
공유되는 하나의 버스가 시스템 내의 모든 노드와 연결되어 있는 구조
- 한 사이트의 고장은 나머지 사이트들 간의 통신에 아무런 영향을 주지 않는다
- 버스에 이상이 생기면 전체 시스템이 마비
- 한 시점에 단지 하나의 전송만이 가능
- 처리기나 기타 장치의 증설 절차가 단순
- 버스의 사용을 위한 경쟁 상태가 발생하여 시스템 성능의 심각한 저해를 가져올 수 있다
- 시스템의 전체 통신량이 전송률에 의한 제한을 받는다
완전 연결(Fully Connected) 구조
네트워크의 각 사이트는 시스템 내의 다른 모든 사이트와 직접 연결된 구조
- 기본 비용이 매우 높다
- 사이트 간의 메시지는 매우 빠르게 전달 가능
- 하나의 링크가 고장나도 다른 링크를 이용할 수 있으므로 신뢰성이 우수
부분 연결(Partially Connected) 구조
시스템 내의 사이트 간에만 부분적으로 연결된 구조
- 기본 비용이 완전 연결보다는 낮다
- 메시지 전달이 중간 사이트를 경유할 수 있으므로 늦어질 수 있다
- 완전 연결에 비해 신뢰성이 낮다
계층 연결(Hierarchy Connected) 구조
사이트들이 트리 형태로 구성된 구조
- 루트 사이트와 서브 사이트가 존재
- 루트 사이트를 제외한 다른 사이트는 하나의 부모 사이트와 여러 개의 자식 사이트를 갖는다
- 마지막 사이트를 제외한 사이트의 고장은 자식 사이트의 중단을 초래
분산 운영체제의 투명성(Transparency)
네트워크 상에 분산된 컴퓨팅 자원을 여러 다른 컴퓨터에서 이용하는 기술로써 중앙집중형과 달리 네트워크 상에 여러 컴퓨팅 플랫폼에 프로세스를 분산시키고, 분산된 프로세스를 논리적으로 마치 하나의 프로세스처럼 수행하도록 하는 기술
-
위치 투명성
사용자가 원하는 파일이나 데이터베이스, 프린터 등의 자원들이 지역 컴퓨터 또는 네트워크 내의 다른 원격지 컴퓨터에 존재하더라도 위치에 관계없이 그의 사용을 보장 -
이주 투명성
자원들이 이동하여도 사용자는 자원의 이름이나 위치를 고려할 필요가 없다 -
복제 투명성
사용자에게 통보없이 파일들과 자원들의 부가적인 복사를 자유롭게 할 수 있다 -
병행(동시) 투명성
다중 사용자들이 자원을 자동으로 공유할 수 있다 -
병렬 투명성
몇 개의 처리기가 사용되는지 알 필요가 없다 -
접근 투명성
각 프로세서의 로그인처럼 지역이나 원격 자원에 접근할 수 있다 -
성능 투명성
여러 부하에 대해 성능을 증가시키기 위해 시스템을 재구성할 수 있다 -
규모 투명성
시스템이나 응용프로그램이 시스템 구조나 응용 알고리즘에 대한 변경없이 규모에 따라 확장이 가능하다 -
고장 투명성
분산 시스템 내의 구성요소(트랜잭션, DBMS, 네트워크, 컴퓨터)가 장애를 발생시켜도 영속성을 제공할 수 있다
스레드(Thread)
어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(Multithread)라고 한다.
스레드는 순차적 실행과 프로세스 상태 전이의 병렬성을 접속하기 위해 개발되었다. 다중 프로그래밍 기법에서 여러 개의 프로세스는 하나의 시스템을 공유한다.
- 단일 프로세스를 다수의 스레드로 생성하여 병행성을 증진시킬 수 있다
- 실행 환경을 공유시켜 기억 장소의 낭비가 줄어든다
- 프로세스의 생성이나 문맥 교환 등의 오버헤드를 줄여 운영체제의 성능을 향상
- 프로세스 내부에 포함되는 스레드는 공통적으로 접근 가능한 기억 장치를 통해 효율적으로 통신
- 스레드를 사용하면 하드웨어, 운영체제의 성능과 응용프로그램의 처리율을 향상시클 수 있다
- 하나의 프로세스에 여러 개의 스레드가 존재
- 스레드는 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다
- 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당한다
- 생성된 프로세스가 자신을 생성한 프로세스의 텍스트와 데이터 영역을 그대로 공유하고 스택만 따로 갖는 새로운 프로세스 모델이다
커널/사용자 수준의 스레드
사용자 수준 | 커널 수준 |
---|---|
- 커널 개입이 작다 - 런 타임 시스템이 필요하다 - 속도가 빠르다 - 문맥 교환이 적다 - 독자적 알고리즘이 필요 - 대형 시스템에 적당 - 구현이 어렵다 - 커널을 스스로 호출하지 못한다 - CPU 사용을 해제하지 못하면 시스템이 중단 |
- 커널 개입이 크다 - 런 타임 시스템이 필요없고 커널이 직접한다 - 속도가 느리다 - 문맥 교환이 많다 - 독자적 알고리즘이 필요 없다 - 대형 시스템에 부적합 - 구현이 쉽다 - 커널을 스스로 호출한다 - CPU 사용을 해제하지 못하면 운영체제가 지원한다 |
댓글남기기