네트워크
- 서로 독립된 시스템 몇 개가 적절한 영역 안에서 빠른 통신 채널을 이용하여 상호 통신할 수 있도록 지원하는 데이터 통신 시스템
- 컴퓨터 네트워크는 1960년대 사이트 간 효율적 통신 위해 학교 연구 프로젝트로 탄생
- 광범위한 사용자 모임 간에 하드웨어나 소프트웨어를 편리하게, 경제적 공유 지원
- 알파넷(ARPANET): 최초로 개발된 네트워크, 1968년 처음 작동
- 사용자가 원거리의 하드웨어나 소프트웨어 자원에 액세스 할 수 있는 기능 제공
- 네트워크 시스템 구성하는 방법: 강결합/약결합 시스템
네트워크의 구조
트리 구조 네트워크
- 회사의 컴퓨터 네트워크에 사용하는 방법
- 네트워크의 각 노드가 트리로 구성
- 루트 A를 제외한 각 노드는 단일 부모와 자식 몇 개를 가짐
- 기본 비용은 일반적으로 망 구조보다는 낮음
- 부모 고장이 나면 그 자식들은 서로 통신 불가, 다른 프로세스와도 통신 불가
성형 구조 네트워크
- 모든 노드 중앙 노드에 직접 연결
- 중앙 노드 외의 다른 노드 서로 연결하지 않음
- 중앙 노드가 메시지 교환 담당
- 중앙 노드에서 병목 현상이 발생하면 성능 현저히 떨어짐
- 중앙 노드에 장애가 발생하면 전체 시스템 마비
- 성형 구조 네트워크의 장점
- 기본 비용이 노드 수에 비례
- 간단한 구조 및 저렴한 통신 비용
- 집중 제어로 유지 보수 용이
링 구조 네트워크
- 각 노드를 정확히 다른 노드 2개와 연결하는 방법
- 메시지 전달 방향을 단방향 또는 양방향으로 구현
- 단방향 구조는 한 노드의 한쪽 이웃 노드에만 전달
- 양방향 구조는 한 노드가 양쪽 노드 모두에 전달
- 단방향 구조에서는 한 노드나 링크가 고장이 나면 네트워크 분할
- 양방향 구조에서는 연결이 2개 고장이 나면 네트워크 분할
- 기본 비용이 노드 수에 비례, 메시지가 링을 순환할 때 통신 비용 증가
버스 구조 네트워크
- 연결 버스(중앙의 통신 회선) 하나에 모든 노드 연결
- 네트워크의 기본 비용은 노드 수에 비례, 버스를 공유하여 경제적
- 링크가 고장이 나면 모든 노드 간의 통신 불가능
- 각 노드의 고장이 나머지 노드 간 통신에는 영향 주지 않아 신뢰성 높고, 노드의 추가·변경·제거 등이 비교적 쉬워 확장성 좋음
- 단점: 버스에 장애가 발생하면 네트워크 전체에 영향을 미침
네트워크의 구성
강결합 시스템
- tightly coupled system, 밀착된 결합 시스템
- 프로세서들이 메모리를 공유하는 다중 처리 시스템
- 모든 프로세서가 기억장치를 공유하는 공유기억장치 구조
- 프로세서들 간의 상호 작용 정도가 높은 구조
- 프로세서 간에 공유 메모리를 이용하여 통신하므로 공유 메모리를 차지하려는 프로세서 간의 경쟁 최소화해야 함
- 프로세서 간의 경쟁은 결합 교환(combining switch) 방법으로 해결
- 하나의 공유 메모리 차지하려는 여러 프로세서 중 오직 하나의 프로세서만 액세스 허용하는 것
약결합 시스템
- loosely coupled system, 느슨한 결합 시스템
- 둘 이상의 독립된 시스템을 통신선으로 연결
- 각 시스템은 자신만의 운영체제·메모리·프로세서·입출력장치 등이 있어 독립적으로 운영
- 각 프로세서가 자신의 지역 메모리를 가진 독립적인 컴퓨터들로 구성
- 프로세서들 간의 상호 작용 정도가 낮은 구조
- 다중 처리기에 의한 비동기적 병렬 처리가 가능
- 필요할 때 통신선을 이용하여 메시지 전달이나 원격 프로시저 호출로 통신
- 통신선으로 다른 시스템의 파일 참조, 각 시스템의 부하 조절 위해 부하가 적은 프로세서에 작업 보낼 수도 있음
- 하나의 시스템에서 장애가 발생해도 다른 시스템의 프로세서를 독립적으로 수행할 수 있어 치명적인 시스템 장애 발생하지 않음
네트워크 운영체제
- NOS, Network Operating System
- 통신 제어, 분산된 자원을 공유하면서 독립된 시스템들을 서로 연결하려고 개발
- 관리 기능을 제공 (주로 자원 공유 기능 서비스 제공)
- 서버에 저장된 대용량 파일이나 서버에 연결된 공유 프린터 등 자원을 요청한 클라이언트에 제공하려고 설계
- 제공하는 기능: 자원 공유, 파일 전송, 액세스 권한, 데이터 보호, 관리 제어
네트워크 운영체제의 종류
- 윈도우 NT 서버: 윈도우 기반의 1세대 네트워크 운영체제
- 윈도우 2000~2003 서버: 윈도우 NT가 발전된 네트워크 운영체제
- 노벨 넷웨어(Novell Netware): 노벨사가 클라이언트/서버 환경 위해 설계한 네트워크
- 유닉스
- 리눅스
네트워크 운영체제의 주요 기능
- 자원 공유: 네트워크에 연결된 서버와 클라이언트 간 하드디스크나 프린터 등 자원
- 파일 전송: 한 컴퓨터에서 다른 컴퓨터로 데이터 전송
- 액세스 권한 부여: 사용자는 원격 사이트의 자원 사용할 수 있도록 액세스 가능해야 함
- 자격 있는 사용자만 특정 자원을 사용하도록 제한 가능
- 데이터 보호: 사용자별 적합한 권한(읽기/쓰기 권한 등)을 설정하고 데이터 관리·보호하여 서버에 접근하는 클라이언트 사용자가 서버를 사용할 권한이 있는지 인증
- 관리 제어: 각 클라이언트의 네트워크 이용 정보와 네트워크에서 발생할 수 있는 여러 가지 문제 해결하고 조절하는 관리 기능 제공
네트워크 운영체제의 운용 방법
- 네트워크 운영체제는 자원 운영 방법에 따라 p2p 모델과 클라이언트/서버 모델로 구분
peer-to-peer
- 동등하게 작동하는 LAN에 연결된 각 컴퓨터가 상황에 따라 클라이언트 또는 서버로 동작하는 방법
- 파일 서버나 중앙집중식 관리 자원이 없으며, 모든 컴퓨터가 동일한 액세스 권한과 네트워크에 있는 사용 가능한 자원에 같은 권한을 가짐
- 클라이언트/서버 동시 운용 컴퓨터
- 장점
- 적은 초기 비용: 클라이언트/서버의 기능을 한 컴퓨터에서 구현함
- 자원: 자원의 활용 극대화와 자원을 각각 균일하게 공유함
- 단점
- 분산: 파일과 응용 프로그램에 중앙 저장소 없이 분산되므로 관리하기가 어려움
- 보안: 서버와 클라이언트에 보안을 제공하지 못함
클라이언트/서버
- 네트워크와 독립적이며, 네트워크에 접속하지 않은 컴퓨터 시스템은 자신의 환경에 맞게 변경·관리 가능
- 네트워크에 연결된 컴퓨터가 각각의 임무를 수행
- 클라이언트/서버 모델이 워크스테이션 모델이면, 클라이언트는 예외적으로 동시에 사용자 한 명이 사용 가능
- 중앙에서 관리하는 형태로 응용 프로그램에 전용 파일 서버를 허용
- 파일 서버는 보안과 자원 액세스를 제공하는 시스템의 핵심
- 개별 워크스테이션(클라이언트)은 파일 서버에 있는 사용 가능한 자원 액세스
분산 시스템
- 운영체제에서 분산 처리는 컴퓨터 사용자 간에 서로 데이터를 교환하여 처리할 수 있도록 네트워크로 상호 연결한 것
- 네트워크로 연결한 시스템은 사용자의 액세스를 제어하여 편리하게 자원 공유
- 네트워크로 연결한 시스템은 분산 시스템과 다중 처리 시스템으로 구분
구분 | 특징 |
분산 시스템 | 메모리와 클록을 공유하지 않고 지역 메모리를 유지하는 프로세서로 구성 |
서로 독자적으로 동작 | |
다중 처리 시스템 | 하나 이상의 프로세서, 프로세스들이 메모리와 출력을 공유 |
병렬 처리 시스템이라고도 함 |
분산 시스템의 특성
- 여러 개의 PE(Processing Element)들로 구성, 네트워크를 통해 상호 연결
- PE들 간의 통신: 메시지 전달(Message Passing) 기법
- 각 PE는 자신의 local memory 소유, 자신의 OS 탑재
- 클록이나 메모리를 공유하지 않음
- 분산 운영체제 존재
- 분산 시스템 전체 관리를 위한 특별한 소프트웨어
- 분산 시스템 전체를 가상의 단일 컴퓨터 시스템 환경으로 인식시키는 기능
분산 시스템 환경의 탄생 배경
- microprocessors 기술의 발전
- 통신 기술 진보
- 더 편리한 사용자 인터페이스의 요구
분산 시스템 환경의 장점
- 가격 대비 성능
- 자원 공유
- 시스템 확장성
- 가용성의 개선
- 신뢰성의 개선
분산 운영체제의 특성
- 분산 시스템 환경을 위한 자원 관리와 사용자 인터페이스 기능 제공
- 은폐성/투명성 제공
- 분산 시스템 전체를 가상의 단일 호스트 환경으로 인식하도록 하는 기능
- 각 호스트의 local OS들을 확장
- 분산 시스템 내의 각 호스트들의 OS는 다른 호스트의 OS들과 협동으로 작업 처리, 자원 관리
- 사용자에게 가상의 단일 호스트 환경을 제공하기 위해 확장됨
Monolithic 커널
- 서비스 기능을 포함하는 기존의 대규모 OS를 분산 시스템 내의 모든 호스트들에게 탑재하는 개념
- OS의 많은 서비스 기능들이 여러 호스트에 중복 배치
- 대규모 OS의 탑재로 memory 등 각종 자원의 낭비 초래
마이크로 커널
- 기본적인 기능들만 갖는 OS
- 모든 서비스 기능들은 서비스 프로세스의 형태로 구성
- OS의 규모 극소화
- 마이크로 커널이 갖는 기능
- 프로세스 관리, 메모리 관리, 인터럽트 처리, 지역 프로세스들 간의 메시지 전달 기능 등
- 마이크로 커널의 특성
- 시스템 기능들의 모듈화 용이
- 시스템 개방성 보장
- 시스템 유지 보수 비용 축소
- 각종 서비스 프로세스간 통신으로 인한 오버헤드 초래 → 시스템의 효율성 저하
분산 시스템 구조
중형 컴퓨터 모델
- 몇 대의 중형급 컴퓨터들로 구성
- 각 컴퓨터는 다중 사용자 지원, 원격 자원에 대한 접근 제공
- 특성
- 시분할 시스템을 네트워크 환경으로 확장한 형태
- 사용자 수에 비해 호스트의 수가 아주 적음
워크스테이션 모델
- 사용자들이 소유하고 있는 호스트들을 네트워크로 연결하고 필요한 서버급 시스템들을 추가하여 구성하는 구조
- 대부분의 작업은 자신의 호스트에서 수행
- 대형 DB 접근 등의 특정 서비스 요구 시 서버에 접속하여 작업
- 특성
- 분산 시스템 구조
- 사용자 수와 호스트 수가 거의 같음
- 시스템의 예: Andrew 시스템 환경, Athena 시스템 환경
프로세서-풀 모델
- processor-pool model
- 프로세서-메모리-네트워크 인터페이스 정도의 간단한 하드웨어 장비를 갖춘 저가 호스트들을 몇몇 서버들과 함께 연결하는 구조
- 사용자 요구에 따라 하나 이상의 프로세서들을 할당
- 사용자들은 프로세서들의 풀에 접근
- 빠른 속도를 필요로 하는 응용 실행
- 특성
- 사용자 수에 비해 프로세서의 수가 더 많음
- 시스템의 예: Amoeba 시스템 (암스테르담의 Vrije 대학)
이 아래로는 강의 내용이 너무 뒤죽박죽이고 용어 정리도 제대로 안 해놔서 어떻게 정리해야 될지 전혀 모르겠음
그냥 시험 대비용으로 냅두고 나중에 정리
분산 시스템의 구조
- 저렴한 노드 여러 개를 운영체제 하나가 제어할 수 있도록 구현 → 강력한 시스템 구성
- 네트워크로 연결된 여러 노드에 프로그램 하나를 분산하여 실행하면서 마치 하나의 프로그램처럼 동작
- 여러 사용자가 자원 공유하여 대규모 작업 지원하므로 다양한 사용자에게 서비스 가능
- 각 프로세서는 초소형 프로세서부터 워크스테이션, 소형 컴퓨터, 대형 컴퓨터까지 다양한 구조
분산 시스템의 구축 목적
- 자원 공유 용이
- 연산 속도 향상
- 신뢰성 향상
- 통신 가능
분산 운영체제의 설계 사항
- communication primitives
- transparency 투명성/은폐성
- 상호 연결된 컴퓨터를 사용자가 하나의 컴퓨터 시스템으로 인식할 수 있도록 분산을 감추어 사용자가 이 정보를 몰라도 작업을 수행할 수 있도록 지원하는 것
- 사용자들이 구체적인 시스템 환경을 알 필요 없이 작업 수행 가능하도록 지원하는 특성
- 분산 시스템 환경을 가상의 단일 호스트 환경으로 보이게 하는 성질
- global knowledge 전역 상태 유지
- 매 순간 시스템의 전체의 전역 상태 파악 불가능
- 공유 메모리 없음
- 각 시스템들로부터 상태 정보 수집 과정 중에 통신 지연 등 발생
- naming 네이밍
- 특정 자원/객체에 접근하기 위해서 자원/객체의 이름을 명시해야 함
- 상징적 이름(symbolic name): 일반적으로 응용 수준에서 사용되는 문자 형태의 이름
- 시스템 ID: 자원/객체에 접근 시 사용되는 물리적 주소
- 고려사항: 여러 호스트 간 일관성 있는 형태의 이름 제공, 객체에 대한 위치 은폐성 등
- name service: name service를 전담하는 호스트 또는 프로세스, 심볼릭 네임을 시스템 ID로 변환
- scalability 확장 적응성
- 분산 시스템의 규모가 확장되는 경우에도 시스템 성능이 갑자기 저하되지 않게 하는 기능
- compatibility 호환성
- 시스템을 구성하는 요소들 간의 상호연동성이 보장되는 정도
- 호환성의 수준: 이진 레벨 호환성, 실행 레벨 호환성, 프로토콜 레벨 호환성
- process management 프로세스 관리
- process migration
- thread management
- process synchronization
- mutual exclusion
- deadlock resolution
- 문제 해결의 어려움: 공유 메모리 없음, 시스템의 전역 상태 유지 불가능
- resource management 자원 관리
- task assignment
- load sharing
- load balancing
- distributed scheduling
- distributed file system
투명성
- 액세스 투명성 (access): SQL 쿼리, 웹 내비게이션
- 위치 투명성 (location): 웹페이지, NFS
- 고장 투명성 (failure): DBMS
- 중복 투명성 (replication): 분산 DBMS, 웹페이지 미러링, 이동
- 영속 투명성 (permanence), 자원 투명성 (resource)
- 트랜잭션 투명성 (transaction)
- 재배치 투명성 (reassignment)
- 규모 투명성 (scale)
- 병행 투명성 (concurrency)
클라이언트/서버 시스템
- 비대칭적 분산 시스템 구조
- 대칭적 분산 시스템에 비해 구축 용이
- 클라이언트들과 서버들로 구성
- 경향: downsizing, upsizing, rightsizing
2단계 클라이언트/서버 시스템
- 클라이언트 ↔ 서버
- 소규모·비정형 업무에 적합
- sotred procedure의 사용 가능
3단계 클라이언트/서버 시스템
- 클라이언트 ↔ 미들웨어 ↔ 서버
- 다른 기종의 서버들에 접속 가능
- 미들웨어: 클라이언트가 다른 기종의 서버들에게 일관된 방법으로 접근하여 각종 서비스를 이용할 수 있도록 지원하는 소프트웨어
- 통신 미들웨어
- 데이터베이스 미들웨어 (ODBC)
- OLTP(On-Line Transaction Processing) 미들웨어
- 객체지향 미들웨어 (CORBA, COM+ 등)
이동 컴퓨팅
배경
- Distributed computing environments
- Information super-highway
- Portable computers
- Wireless networks
- Location-independent information access
특성
- 이동 호스트들을 지원하는 새로운 컴퓨팅 패러다임
- 이동 호스트: 네트워크와의 연결을 유지하면서 이동할 수 있는 호스트
- 컴퓨팅 자원들에 대한 위치·독립적 접근 기능 제공
다중 처리 시스템
- 단일 시스템 내에 적은 비용과 다수의 마이크로프로세서 장착이 가능
- 여러 개의 마이크로프로세서를 연결시켜 다중 프로세서 시스템을 구축
다중 처리 시스템의 목적
- 시스템의 능력을 증가시키는 것
- 신뢰성(reliability)과 가용성(availability) 향상
- 많은 추가 비용이 없이 기존 시스템의 계산 능력 향상
다중 처리 시스템의 운영체제
- 어떤 프로세서가 고장을 일으켰는지를 탐지해야 함
- 고장으로 인하여 시스템의 기능이 저하되는 것을 방지하기 위하여 자원 할당 스케줄링
Flynn의 다중 처리기 분류
- 컴퓨터 구조를 명령어 스트림과 데이터 스트림이 컴퓨터 내에서 각각 하나인가 혹은 여러 개인가를 기준으로 다중 처리기를 분류
SISD
- Single Instruction stream Single Data stream
- 한 번에 한 개씩의 명령어와 데이터를 처리하는 단일 프로세서 시스템
- 명령어가 순서대로 실행되지만 실행 과정은 여러 개의 단계들로 나누어 중첩시켜 실행 속도를 높이도록 파이프라이닝으로 구성
- 파이프라이닝: 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법
MISD
- Multiple Instruction stream Single Data stream
- 여러 개의 제어 장치와 프로세서를 갖는 구조
- 각 프로세서들은 서로 다른 명령어들을 실행하지만 처리하는 데이터는 하나의 스트림
- 이론적일 뿐 사용되지 않음
- 파이프라인에 의한 비동기적 병렬 처리가 가능
MIMD
- Multiple Instruction stream Multiple Data stream
- 여러 개의 프로세서들이 서로 다른 명령어와 데이터를 처리
- 대부분의 다중 프로세서 시스템과 다중 컴퓨터 시스템이 이 분류에 속함