정보처리기사/프로그래밍 언어 활용
운영체제 9
RangA
2023. 5. 31. 17:04
05. 분산 운영체제
01. MIMD(Multiple Instruction Multiple Data)
1) 다중 처리기(Multi-Processor)
- 여러 개의 CPU가 하나의 메모리를 공유함
- CPU들이 하나의 메모리에 연결되어 있으므로 강결합 구조
- 병렬 처리 시스템에 적합함
- 전송 지연이 짧고 데이터 처리율이 높음
- 프로세스 간 통신은 공유 메모리를 통해 이루어짐
- 공유 메모리를 차지하려는 프로세스 간의 경쟁이 발생함
- 기억 장소가 하나이므로 운영체제도 하나
- 모든 CPU가 동등한 입장이므로 대칭적 구조
2) 다중 컴퓨터(Multi-Computer)
- 여러 개의 CPU가 독립적인 메모리를 사용함
- CPU가 독립적인 메모리에 연결되어 있으므로 약결합 구조
- 분산 처리 시스템에 적합함
- 전송 지연이 길고 데이터 처리율이 낮음
- 프로세스 간의 통신은 통신망에 메시지(소켓) 전달로 통신할 수 있음
- 구성 요소(컴퓨터, 주변 장치들, ...)의 추가/삭제가 용이함
- 기억 장소가 여러 개이므로 운영체제도 여러 개가 사용됨
- CPU가 독립적으로 작업하므로 분리 수행 구조
3) Master/Slave 구조
- 주 프로세서(Master CPU)는 입출력과 연산을 담당함
- 종 프로세서(Slave CPU)는 연산만을 담당함
- 주 프로세서만이 운영체제를 수행함
- 종 프로세서는 사용자 프로그램만을 수행함
- 주 프로세서에 문제가 발생하면 전 시스템이 멈춤
- 종 프로세서에서 입출력 발생 시에 주 프로세서에게 서비스를 요청함
- 두 개의 CPU의 역할이 다르므로 비대칭 구조
02. 분산 운영체제
1) 분산 운영체제 시스템
- 분산 운영체제의 목적
- 각 컴퓨터의 자원을 최대한 공유함
- 여러 개의 컴퓨터가 협력하여 연산 속도를 향상 시킴
- 하나의 컴퓨터가 고장이 나도 전체 시스템에 영향을 받지 않게 하여 신뢰성을 향상 시킴
- 많은 작업을 짧은 시간에 처리하여 처리량을 극대화함
- 분산 운영체제의 장점
- CPU의 처리 능력 한계를 극복할 수 있음
- CPU를 여러 개 사용하여 작업 능력, 경제성을 향상 시킬 수 있음
- 값비싼 자원의 공유 및 확장성이 좋음
- 부하를 균등하게 배분할 수 있음
- 분산 운영체제의 단점
- 여러 개의 컴퓨터로 연결된 구조이므로 보안이 취약함
- 여러 개의 컴퓨터를 하나의 컴퓨터처럼 운영되도록 하는 소프트웨어 개발 자체가 어려움
- 투명성
- 사용자가 분산된 여러 자원의 위치 정보를 알지 못하고 마치 하나의 커다란 컴퓨터 시스템을 사용하는 것처럼 느끼도록 하는 성질
- 투명성의 종류
- 위치 투명성 : 사용자가 자원들의 위치를 알 필요가 없음
- 이주 투명성 : 자원들을 이동하여도 사용자는 자원의 이름이나 위치를 고려할 필요가 없음
- 복제 투명성 : 사용자에게 통보 없이 파일들과 자원들의 부가적인 복사를 자유롭게 할 수 있음
- 병행 투명성 : 사용자들이 자원들을 공동으로 공유할 수 있음
- 병렬 투명성 : 몇 개의 처리기가 사용되는지 알 필요가 없음
2) 분산 운영 시스템의 연결 위상
- 성형(Star) 구조
- 모든 사이트(단말기)는 하나의 중앙 컴퓨터에 직접 연결되어 있음
- 중앙 컴퓨터와 직접 연결되어 응답이 빠르고 통신 비용이 적게 소요됨
- 중앙 컴퓨터에 장애가 발생하면 전체 시스템이 마비됨
- 한 단말기의 고장이 다른 단말기에 영향을 주지 않음
- 중앙 컴퓨터에 과부하가 되면 성능이 현저히 감소함
- 자체가 단순하고 제어가 집중되어 모든 작동이 중앙 컴퓨터에 의해 감시 되므로 하나의 제어기로 조절이 가능함
- 집중 제어로 보수와 관리가 용이함
- 다중 접근 버스 연결(Multi Access Bus Connection)
- 모든 사이트(단말기)는 하나의 고속 회선에 연결되어 있음
- 고속 회선은 공유되므로 한 시점에서 하나의 전송만이 가능함
- 네트워크에서 한 사이트의 고장은 나머지 사이트 간의 통신에 아무런 영향을 주지 않음
- 작업량이 많아지면 시스템의 효율이 떨어짐
- 환형(Ring) 구조
- 네트워크에서 각 사이트는 루프 형태로 구성됨
- 하나의 사이트가 고장이 나면 우회해서 다른 사이트와 정보 교환이 가능함
- 계층 연결(Hierarchy Connection)
- 네트워크에서 각 사이트는 트리 형태로 구성됨
- 마지막 사이트를 제외한 사이트들의 고장은 자식 사이트의 중단을 의미함
- 완전 연결(Fully Connection)
- 네트워크의 각 사이트는 시스템 내의 모든 다른 사이트들과 직접 연결되어 있음
- 기본 비용이 매우 많이 듦
- 사이트 간에 정보 전달은 매우 빠름
- 하나의 링크가 고장이 나도 다른 링크를 이용할 수 있음
03. 스레드(Thread)
1) 스레드
1. 스레드의 이해
- 스레드의 사전적인 의미는 "실을 꿰다"
- 운영체제에서는 스레드를 실행될 명령어들의 약속이라 정의함
- 스레드를 경량 프로세스(Light Weight)라고 함
- 하나의 프로세스를 수행하는 과정에서 여러 개의 인터럽트 루틴이나 함수를 순서에 따라 수행하는 프로세스를 단일 스레드라고 함
- 하나의 프로세스는 여러 개의 스레드를 가질 수 있음
- 하나의 프로세스에 여러 개의 스레드가 존재한다면 이를 다중 스레드라고 함
- 스레드는 순차적 실행과 프로세스 상태 전이의 병렬성을 접속하기 위해 개발
- 다중 프로그래밍 기법에서 여러 개의 프로세스는 하나의 시스템을 공유함
- 하나의 컴퓨터 시스템에서 여러 개의 프로세스가 상태 전이를 통해 실행되듯이 하나의 프로세스에서 여러 개의 스레드가 실행될 수 있도록 하는 기술
- 프로세스 내 스레드 간 통신은 커널 개입을 필요로 하지 않기 때문에 프로세스 간 통신보다 더 효율적으로 이루어짐
- 다중 프로세서(CPU 가 여러 개)는 탑재 프로세서(CPU)마다 스레드를 실행시킬 수 있기 때문에 프로세스의 처리율을 향상 시킬 수 있음
- 스레드를 사용함으로써 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
2. 스레드의 장점
- 하드웨어의 성능을 향상 시킬 수 있음
- 응용 프로그램의 처리율을 향상 시킬 수 있음
- 응용 프로그램의 응답 시간을 감소 시킬 수 있음
- 프로세스 간의 통신 속도가 향상됨
- 단일 프로세스를 다수의 스레드로 생성하여 병행성을 증진 시킬 수 있음
- 실행 환경을 공유 시켜 기억 장소의 낭비가 줄어듦
- 프로세스의 생성이나 문맥 교환 등의 오버헤드를 줄려 운영체제의 성능이 개선됨
- 프로세스 내부에 포함되는 스레드는 공통적으로 접근 가능한 기억 장치를 통해 효율적으로 통신함
- 스레드를 사용하면 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상 시킬 수 있음
- 하나의 프로세스에 여러 개의 스레드가 존재할 수 있음
- 스레드는 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능함
- 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로써 프로세스의 역할을 담당함
- 생성된 프로세스가 자신을 생성한 프로세스의 텍스트와 데이터 영역을 그대로 공유하고 스택만 따로 갖는 새로운 프로세스 모델
2) 다중 스레드의 공유 메모리
- 다중 프로세스의 독립적인 메모리
- 다중 프로세스에서 각 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당 받음
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근할 수 없음
- 각 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신을 사용해야 함
- 다중 스레드의 공유하는 메모리
- 다중 스레드는 하나의 스레드 내에서 각각 Stack만 따로 할당 받고, Code, Data, Heap 영역은 공유함
- 스택은 함수 호출 시 되돌아갈 위치 값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간
- 스택 메모리 공간이 독립적으로 사용하는 것은 독립적은 함수 호출이 가능하다는 것이기 때문에 스레드는 독립적인 실행 흐름이 가능함
- 따라서 스레드는 각종 레지스터 및 스택 공간들을 모든 스레드가 독립적으로 사용함
- 스레드들은 하나의 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내의 스레드끼리 공유하면서 실행됨
- 프로세스들은 같은 힙(Heap) 공간을 공유하거나 접근할 수 없지만 하나의 프로세스 안에 있는 여러 스레드는 같은 힙 공간을 공유할 수 있음
3) 스레드 운영 방식
- 커널 수준의 스레드
- 커널 개입이 큼
- 런타임 시스템이 필요 없고 커널이 직접 함
- 속도가 느림
- 문맥 교환이 많음
- 독자적 알고리즘이 필요 없음
- 대형 시스템에 적당하지 않음
- 구현이 쉬움
- 커널을 스스로 호출함
- 사용을 해제하지 못하면 운영체제가 지원함
- 사용자 수준의 스레드
- 커널 개입이 적음
- 런타임 시스템이 필요함
- 속도가 빠름
- 문맥 교환이 적음
- 독자적 알고리즘이 필요함
- 대형 시스템에 적당함
- 구현이 어려움
- 커널을 스스로 호출하지 못함
- CPU 사용을 해제하지 못하면 시스템이 중단됨