'분류 전체보기'에 해당되는 글 304건

  1. 2008.08.21 시스템의 특성
  2. 2008.08.21 분산시스템아키텍처
  3. 2008.08.21 소프트웨어 공학 개요 및 사회, 기술적 시스템
  4. 2008.08.21 S/W System 개발
  5. 2008.08.20 EUC-kr, Unicode, UTF-8 1
  6. 2008.08.20 Optimize PC
  7. 2008.08.19 스케쥴링
  8. 2008.08.19 선점,비선점 스케쥴링 1
  9. 2008.08.19 병행프로세스와 상호배제
  10. 2008.08.19 주소지정방식
시스템의 특성
- 시스템의 정의
- 시스템의 분류
- 정보 시스템의 특성
- 정보 시스템의 기본요소
 
시스템의 정의
1) Webster 사전에서의 시스템의 정의
    ① 규칙적으로 상호 작용하거나 상호 의존적이면서 단일 집합을 형성하는 항목들의 집합
    ② 주의, 사상, 법칙 등의 조직화된 집합 ; Gauss 법칙
    ③ a. 조직화되거나 확립된 절차
       b. 분류 또는 기호화하여 도식화하는 방법
    ④ 조화로운 배열 및 양식 즉, 절차
    ⑤ 하나의 조직화된 사회 또는 사회환경 즉, 체계

2) 시스템을 다른 표현으로 정의한 사례
    ① 상호 작용하는 수많은 사물과 그 처리 과정
    ② 특정 목적을 성취하기 위해 구성인자들이 유기적으로 연결되어 있으면서 목적을 위해 노력하는 것
    ③ 여러 가지 요소로 짜여진 기능 종합체로 짜여진 인간과 기계의 결합에 의해 이루어짐
    ④ 조화 있게 상호 작용 또는 관련되어 전체를 이루는 사물 집단
    ⑤ 질서가 있는 집단의 상태

1 시스템의 분류
1.1 현상에 의한 분류
1.2 인간과 인체 시스템
1.3 컴퓨터 시스템
1.4 주요 사회현상 시스템에 대한 분류
1.5 정보 처리 방식에 의한 시스템 분류

시스템의 분류(계속}
1.1 현상에 의한 분류
  1) 자연 시스템
  2) 인공 시스템
  - 유형적인 것
  - 무형적인 것
1.2 인간과 인체 시스템
1) 생리학적인 분류 :
    - 중 추 계 : 본능, 사고, 기억과 연관된 운동 및 감각중추
    - 근 육 계 : 손, 발, 몸통, 목, 안면 등 신체를 이루고 있는 근육
    - 신 경 계 : 시각, 청각, 후각, 촉각 등의 신경
    - 생존증식계 : 호흡기, 소화기, 순환기, 생식계통 및 신진대사계 통
2) 기능적인 분류 :
    - 인 식 계 : 외부의 정보수집 기능을 갖고 있는 눈, 귀, 코, 입, 피부
    - 제 어 계 : 태어나면서부터 작동. 본능
    - 기 억 계 : 뇌를 주체로 기억을 유지하고 필요정보를 기억하는 기능.
    - 동 작 계 : 운동중추와 얼굴, 손, 발, 몸통으로 구성.
    - 생존증식계 : 호흡, 소화, 순환, 생식계통 및 신진대사계통을 총칭.
 
1.3  컴퓨터 시스템
 컴퓨터 = 하드웨어 + 소프트웨어
 하드웨어 = 입력장치(인식계) + 제어장치(제어계) + 주기억장치(기억계)
            + 산술 및 논리연산장치(동작계) + 출력장치 + 통신장치
 소프트웨어 = 인체의 생존증식계의 역할과 유사
1.4 주요 사회현상 시스템에 대한 분류
1) 공학시스템 :
- 기본시스템
Posted by 으랏차
,
[대학원] 분산시스템아키텍처
조회(641)
Software Engineering | 2007/06/16 (토) 17:35
추천하기 | 스크랩하기
학습 목표
- 분산 시스템 아키텍쳐의 장·단점에 대해 이해할 있다.
- 분산 시스템 아키텍쳐를 위한 중요 모델인 클라이언트-서버와 분산 객체 아키텍쳐를 학습한다.
- 조직간 분산시스템 구축을 위한 피어투피어(peer-to-peer) 서비스 지향 아키텍쳐에 대해 학습한다.
 
학습 개요
 
 
분산 시스템에 대한 설명
- 규모가 상당히 컴퓨터 기반 시스템은 사실상 모두 분산시스템이라고 있다.
- 정보 처리(information processing) 하나의 컴퓨터에 의존하기 보다는 분산되어 있는 많은 수의 컴퓨터에서 이루어진다.
- 최근 들어, 분산 소프트웨어 공학의 중요성이 커지고 있다.
 
분산 시스템의 특징
리소스 공유
(Resource sharing)
디스크, 프린터, 파일, 컴파일러 하드웨어나 소프트웨어 리소스들의 공유를 가능하게 한다.
개방성
(Openness)
다양한 공급자(vendors)로부터의 하드웨어 소프트웨어를 포함할 있다.
병행성
(Concurrency)
동시에 네트워크상의 서로 다른 컴퓨터에서 다양한 프로세스가 처리될 있으며, 이들 간에 통신(communication) 이루어질 있다.
확장성
(Scalability)
시스템에 대한 새로운 요구에 대해서는 쉽게 새로운 자원의 추가가 가능하다.
결함 내성
(Fault tolerance)
여러 컴퓨터의 사용이나 정보의 중복이 이루어질 있고, 이는 하드웨어나 소프트웨어 결함에 대한 내성을 가질 있도록 한다.
 
분산 시스템의 단점
복잡성
(Complexity)
창발적 속성(emergent properties) 이해하기 어렵고 시스템 검사가 어렵기 때문에 중앙처리 시스템보다 훨씬 복잡하다.
( : 성능이 네트워크 밴드위드나 다른 여러 컴퓨터 속도에 좌우됨, 어떤 프로세서에 어떤 자원을 것인가도 성능에 영향을 .)
보안
(Security)
시스템은 다양한 컴퓨터로부터 접근 가능하며, 네트워크의 트래픽이 노출되기 쉬우므로 보안관리가 다른 시스템들에 비해 상대적으로 어렵다.
관리
(Manageability)
다양한 컴퓨터들은 다양한 버전, 운영체제 등을 가지므로 이러한 다양한 환경에 대해 고려해주어야 한다.
결함의 전이 가능성은 불확실성을 증대시킨다.
예측불가능
(Unpredictability)
분산 시스템의 반응(response) 대해서는 예측불가능하다.
시스템을 둘러싸고 있는 다양한 환경때문인데, 예를 들어 시스템의 부하, 시스템의 구성 네트워크의 트래픽 등을 예측하기 어렵기 때문이다.
 
분산 시스템의 설계 이슈
Design Issue
Description
자원 식별
여러 컴퓨터에 분산되어 있으므로 자원을 찾아 사용할 있게끔 naming scheme 필요 ( : URL)
통신
성능이나 신뢰도와 같은 특별한 요구가 있다면 인터넷외의 다른 통신 방법도 필요
서비스의
성능, 가용성, 신뢰도를 의미하며 프로세스의 할당, 자원의 분산, 네트워크와 시스템 하드웨어, 그리고 시스템의 적응성(adaptability)등의 요인에 좌우됨.
소프트웨어 아키텍쳐
응용의 기능이 컴포넌트로 구성되어 어떻게 프로세서에 분산되는가의 문제로 올바른 아키텍쳐를 선택해야 서비스의 질을 향상시킬 있음.
 
실시간 분산 시스템의 아키텍쳐에 관한 장·단점을 이해하면, 어떠한 성질을 가져야 바람직한 분산 시스템을 설계할 있는지를 있습니다.
실시간 시스템은 다음 주차에서 다룰 것입니다.
 
멀티 프로세서 아키텍처란?
- 가장 간단한 분산 시스템 모델
- 서로 다른 프로세서(Processor)에서 실행되는 복수개의 프로세스(Processes) 구성된 시스템
- 규모의 실시간 시스템(Large real-time systems)에서 흔함.
 
멀티프로세서 아키텍쳐의 개념을 바탕으로 멀티프로세서 아키텍쳐의 살펴보도록 하겠습니다.
 
l        Sensor control process : 교통 흐름에 관한 정보를 수집하여 처리함.
l        Operator consoles : 조작수는 처리된 정보를 이용하여 신호등 제어 프로세스에 명령함.
 
다중 프로세스라 하여 반드시 분산 시스템일 필요는 없으며, 설계 과정에서 distribution issues 항상 고려해야 하는 것은 아닙니다.
 
Q1. 멀티프로세서 아키텍쳐에 대한 설명이 아닌 것은?
가장 간단한 분산 시스템 모델
서로 다른 프로세서에서 실행되는 복수개의 프로세스로 구성 
규모의 실시간 시스템에서 흔하다.
클라이언트와 서버로 구성되어 있다.  <- 클라이언트-서버 아키텍처에 대한 설명임.
 
클라이언트-서버 아키텍쳐(Client-server architectures) 특징
서버(servers) 의해 제공되는 서비스들(services) 집합과 이러한 서비스를 이용하는 클라이언트(clients)들의 집합으로 구성된 모델이다.
클라이언트는 서버를 알아야 하지만, 서버는 클라이언트에 대해 필요가 없다.
클라이언트와 서버는 논리적인 프로세스이다.
프로세서(processors) 프로세스(processes) 매핑이 1:1 필요는 없다.
 
 
 
응용 구조의 3계층
클라이언트 서버 시스템을 설계할 때는 응용(application) 논리적 구조를 반영해야 하는데, 응용의 구조는 다음 그림에서와 같이 3계층으로 나눕니다.
 

표현 계층
 
응용 처리 계층
 
데이터 관리 계층
 
 
클라이언트-서버 모델 가장 간단한 것이 2-Tier 클라이언트-서버 아키텍쳐 입니다.
2-Tier 클라이언트-서버 아키텍쳐는 다음과 같이 Thin/Fat client 2가지 형태 가지게 됩니다.
 
1) Thin Client Model
- 모든 응용 처리(application processing) 데이터 관리(data management) 서버에서 수행되고, 클라이언트는 표현(presentation) 계층만 구현하게 된다.
- 레거시 시스템(legacy systems) 클라이언트-서버 아키텍쳐로 바꿀 사용된다.
- 단점
  ; 서버와 네트워크에 걸리는 부하가 .
 
2) Fat Client Model
- 서버는 데이터 관리(data management)에만 관여하고, 클라이언트상의 소프트웨어에 응용 로직(application logic) 표현(presentation) 부분이 구현된다. 
- 응용 처리가 클라이언트에 넘겨져서 로컬(local)에서 실행되기 때문에 클라이언트에 많은 부하가 걸린다. (서버의 부하가 클라이언트에 넘겨진다.)
- 클라이언트 컴퓨터의 사양이 응용 처리를 하기에 충분할 경우 많이 사용된다.
- 단점
    ; 관리적인 면에 있어서는 thin client model 보다 복잡.
    ; 새로운 버전의 애플리케이션이 출시된다면 모든 클라이언트에 배포되어 설치되어야 .
 
- : Banking ATM 시스템, 여기서 ATM 클라이언트이며 서버는 mainframe
 
2-Tier 클라이언트-서버의 문제점은 논리적인 3개의 계층을 2개의 컴퓨터 시스템에 분배했다는 것으로 이는 확장성(scalability)이나 성능(performance) 또는 관리상의 문제(fat client) 일으킬 있습니다. 이에 대한 대안으로 3-Tier 클라이언트-서버 아키텍쳐를 사용하며, 3-Tier 클라이언트-서버 아키텍쳐의 특징으로는 다음 3가지를 있습니다.
 
3-Tier 클라이언트-서버 아키텍쳐의 특징
- 각각의 응용 아키텍쳐 계층은 서로 다른 프로세서(processor)상에서 수행된다.
- thin-client보다 높은 성능을 제공하며, fat-client 경우보다 쉽게 관리할 있다.
- 서버의 부하가 커지거나 요구가 증가할 경우, 여분의 서버를 추가하기만 하면 되므로 아키텍쳐 확장성이 우수하다.
()사용자가 증가하면 서버를 추가한다. 특히 애플리케이션 처리 부분은 가장 자주 바뀌기 쉬운 부분이다.
 
3-Tier 클라이언트-서버 아키텍처
 
인터넷 뱅킹 시스템에서의 분산 아키텍처
 
Web server database server 간에는 internet standards 필요 없으므로 faster & lower-level communication protocol 사용하여 transfer optimize 있습니다. 데이터베이스 쿼리 처리를 위한 efficient middleware SQL 사용합니다.
 
 
Thin client 이용한 2-Tier 클라이언트 서버 아키텍쳐
- 응용 처리(application processing) 부분과 데이터 관리 (data management) 부분을 분리시키는 것이 어려운 레거시 시스템 애플리케이션
- 데이터 관리(data management) 거의 필요하지 않은 컴파일러(compiler) 같은 계산 중심의 애플리케이션
- 응용 처리가 거의 필요하지 않은 데이터 중심(data-intensive) 애플리케이션( 검색, 쿼리 )
 
Fat Client 이용한 2-Tier 클라이언트 서버 아키텍쳐
- 응용 처리(application processing) 클라이언트 상에서 COTS( : Microsoft Excel) 제공되는 애플리케이션 
- 데이터를 계산하거나 처리하는 것의 비중이 애플리케이션
- 구성된 시스템 환경에서 안정화 애플리케이션
 
3-Tier 클라이언트 서버 아키텍쳐
- 클라이언트의 수가 많은 대규모 애플리케이션
- 데이터와 응용 로직이 자주 바뀌는 경우의 애플리케이션
- 다양한 소스로부터 구해진 데이터가 통합되어야 하는 애플리케이션
 
l        Use of different client-server architectures
Architercture
Applications
Two-tier C/S architecture with thin clients
Legacy system applications where separating application processing And data management is impractical Computationally intensive applications such as compilers with little or no data management Data-intensive applications (browsing and querying) with little or no application processing
Two-tier C/S architecture with fat clients
Applications where application processing is provided by COTS (e.g. Microsoft Excel) on the client Applications where computationally intensive processing of data (e.g. data visualisation) is required Applications with relatively stable end-user functionality used in an environment with well-established system management
Three-tier or Multi-tier C/S architecture
Large-scale applications with hundreds or thousands of clients Applications where both the data and the application are volatile Applications where data from multiple sources are integrated
 
 
 
Q1. 다음 설명이 Fat-client 대한 설명이면 Fat, Thin-client 대한 설명이면 Thin이라고 입력하세요.
[thin] 모든 응용 처리(application processing) 데이터 관리(data management) 서버에서 수행된다. 클라이언트는 표현(presentation) 계층만 구현하게 된다. 
[thin] 서버와 네트워크에 걸리는 부하가 크다.
[fat] 서버는 데이터 관리(data management)에만 관여하고, 클라이언트상의 소프트웨어에 응용 로직(application logic) 표현(presentation) 부분이 구현된다.
[fat] 클라이언트의 사양이 응용 처리를 하기에 충분할 경우 많이 사용된다.
 
분산 객체 아키텍쳐(Distributed object architectures) 특징
- 분산 객체 아키텍쳐에서는 클라이언트와 서버간의 차이점이 거의 없다.
- 각각의 분산 요소는 다른 객체들에게 서비스를 제공하기도 하고, 반대로 다른 객체들로부터 서비스를 받기도 한다.
- 객체간의 통신은 ORB(Object request broker)라고 불리는 미들웨어(middleware) 시스템을 이용하게 된다. ( software bus )
- 클라이언트-서버 시스템보다 설계하기가 어렵다.
 
클라이언트-서버 모델은 서버와 클라이언트를 미리 정해야 한다는 점에서 시스템 설계상 유연성이 많이 떨어집니다. 분산 객체 아키텍쳐에서는 클라이언트와 서버간의 차이를 없애고, 동일하게 분산시킨 객체로써 아키텍쳐를 구성할 있습니다.
 
4가지 클라이언트-서버 모델의 장점
- 시스템 설계자가 어디서(where), 어떻게(how) 서비스가 제공되어야 하는지에 대한 판단을 뒤로 미룰 있다. , 시스템 설계자에게 유연성을 제공한다.
- 새로운 리소스(resource) 추가되기 쉬운 열린 시스템(open system) 이다. 예를 들어 다른 언어로 작성된 객체끼리 통신할 있다.
- 시스템이 유연하며(flexible), 확장성(scalable) 좋다. 예를 들어 시스템 부하에 대비하기 위해 같은 서비스를 다른 객체가 제공할 있고 새로운 객체를 추가시킬 수도 있다.
- 네트웍을 통해 객체를 주고 받으면서 시스템을 동적으로 재구성하는 것이 가능하다. 예를 들어 성능 때문이라면 서비스 제공 객체를 서비스 요구 객체와 같이 있다.
 
논리적인 모델로 사용 가능
유연성 있는 접근법으로 사용가능
 
[그림설명]
- 여러 데이타베이스에 저장된 데이터간의 관계를 찾아야 한다.
- 예를 들어 여러 종류의 상점을 운영할 , baby food 사는 사람은 특정 wallpaper 찾는다.
- 각각의 데이타베이스는 하나의 분산 객체이다.
- 통합 객체는 특정 관계를 의미한다.
(예를 들어 다른 종류의 상품간의 관계, 상품의 계절적 변이)
l        데이터 마이닝에 분산 객체가 적당한 이유
- 가지가 아닌 다양한 서비스가 존재
- 전체 시스템에 영향을 주지 않으면서 데이터베이스의 확장을 가능하게 .
- 다른 통합 객체에 대한 지식 없이 사업 부서별로 관심 있는 관계의 마이닝을 위해 새로운 통합 객체를 추가하여 시스템을 확장할 있음.
 
Q1. 분산 객체 아키텍쳐에 대한 설명이 아닌 것을 모두 고르시오.
시스템 설계자가 어디서(where), 어떻게(how) 서비스가 제공되어야 하는지에 대한 판단을 뒤로 미룰 있다.
각각의 분산 요소는 다른 객체들에게 서비스를 제공하기도 하고, 반대로 다른 객체들로부터 서비스를 받기도 한다.
서버와 클라이언트를 구분하여 요청/응답에 대한 통신 설계를 해주어야 한다.
네트웍을 통해 객체를 주고 받으면서 시스템을 동적으로 재구성하는 것이 가능하다.
 
③은 클라이언트-서버 아키텍쳐에 대한 설명이다.
 
 
 
조직내 또는 조직간 분산 객체 컴퓨팅(distributed object computing) 특징
- 보안과 상호 운용성(inter-operability) 때문에 대부분의 분산 컴퓨팅은 조직내 수준(intra-organisational 또는 intra-enterprise level)에서 구현되었다.
- 조직내 수준에서는 많은 서버들이 같은 조직 내에 위치하므로, 로컬 표준과 관리 작동 프로세스(operational process) 적용할 있다.
- 분산 컴퓨팅의 새로운 모델은 조직 내부가 아닌 조직간 컴퓨팅을 지원하도록 설계되고 있다. 여기서는 여러 노드들이 다른 조직들에 위치하게 된다.
 
Peer-to-peer 아키텍쳐의 특징
- p2p 시스템은 분권적(decentralized) 시스템으로 네트워크상의 어느 노드에서도 계산(computation) 수행할 있고 원칙적으로는 서버와 클라이언트의 구별은 없다.
- 전체 시스템은 네트워크로 연결된 상당히 많은 수의 컴퓨터들이 가지고 있는 계산 능력과 기억 공간을 활용하려는 의도로 설계된다.
- 노드간 통신을 위한 표준과 프로토콜은 응용 프로그램 자체에 포함되어 있으므로 노드는 응용 프로그램을 복사하여 실행시켜야 한다.
- 대부분의 p2p 시스템들은 개인적 시스템들이었으나 비즈니스적으로 기술을 이용하려는 시도가 증가하고 있다.
 
2가지 관점의 P2P 아키텍처 모델
P2P 아키텍쳐 모델은 2가지 관점으로 있는데 하나는 p2p 애플리케이션을 구성하는 요소들의 일반적 구조를 다루는 애플리케이션 아키텍쳐입니다.
여기서는 시스템의 분산 아키텍쳐를 다루는 논리적 네트워크 관점만을 다루도록 하겠습니다.
 
1)      분권적(Decentralized) P2P 아키텍처 모델
순수한 의미의 p2p 아키텍쳐 모델에서는 모든 노드가 다른 노드의 존재를 알고 접속할 있지만 실제로는 다른 노드와의 접속을 위해 브릿지 역할을 하는 노드가 필요하다.
 
장점
 - 중복적(redundant) 이어서 결함 내성적(fault-tolerant)이다. 네트워크에 연결되지 않은 노드들이 생겨도 내성적이다.
 
단점
 - 하나의 검색을 여러 노드들이 처리할 있으므로 오버헤드가 존재한다.
 - 반복되는 피어 통신을 생각해도 오버헤드가 크다.
 
2)      반중앙집중식(Semi-centralized) 아키텍처 모델
계산 중심의 p2p 응용에서 작업을 분산시키고 계산 결과를 조합하고 검사하는 역할의 서버가 존재한다.
장점
 - 서비스 중심의 방법(다음의 내용)보다 조직간 컴퓨팅을 위한 보다 효과적인 방법이다.
 
단점
 - 보안이나 신뢰성에 관한 문제가 존재한다. (따라서 p2p 시스템은 non-critical 정보 시스템 또는 working relation 이미 존재하는 조직 간에 사용된다.)

- 피어간의 연결이나 계산 결과를 조정해 주는 역할의 서버가 존재한다.
- ) 메시징 시스템
- 점선 : 노드는 다른 노드가 이용가능한지 알아보기 위해 서버와 통신
- 통신 해당 노드와 직접 연결되면 서버와의 연결 필요
 
 
 
 
 
 
 
 
 
WWW 클라이언트 컴퓨터가 원격 서버에 접근할 있게 하나, 브라우저를 이용해야만 하고 외부 프로그램이 정보를 직접적으로 접근하는 것은 불가능 합니다. 이러한 이유로 서비스 개념이 제안되었으며 서비스 지향 아키텍쳐는 서비스에 기초하고 있습니다.
 
l        서비스란?
- 외부에 제공되는 서비스
  ; 다른 프로그램에게 정보의 접근을 허용할 조직은 서비스 인터페이스를 정의하고 공표할 있음. 
- 서비스는 다른 프로그램이 사용할 있게 계산 또는 정보 자원을 표현하는 표준 방법
- () “세금 신고 서비스”는 사용자가 세금서류 양식을 작성하면 자동으로 검사한 조세당국에 제출할 있도록 지원한다.
 
l        서비스의 일반적인 개념
-          An act or performance offered by one party to another. Although the process may be tied to a physical product, the performance is essentially intangible and does not normally
result in ownership of any of the factors of production.
-   따라서 서비스 제공은 서비스를 이용하는 애플리케이션과 무관하다.
-   서비스는 이것의 인스탄스로 있다.
 
서비스 지향 시스템의 개념적 아키텍처
 
 
Service provider : 서비스 제공자는 서비스의 인터페이스를 정의하고 기능을 구현하여 서비스를 제공한다.
Service registry : 외부에서 서비스를 사용할 있게 하기 위해 서비스 제공자는 서비스 정보의 레지스트리에 서비스 정보를 기록한다.
Service requester : 서비스 요구자는 서비스를 찾아 응용 프로그램에 바인드 한다. (응용 프로그램은 서비스를 호출하는 코드를 포함하여 결과를 처리한다.)
 
서비스 모델과 분산 시스템 아키텍처
서비스 모델은 분산 시스템 아키텍쳐를 위한 분산 객체 방법과 차이점이 있습니다. 느슨히 연결된(loosely coupled) 분산 응용의 구축을 위해 웹서비스에 관심이 쏟아지나 아직까지 서비스 지향 아키텍쳐에 대한 실질적 경험이 부족하다는 점을 알고 살펴보도록 합시다.
> 제공자 독립성 : 조직 내부든 외부든 서비스 제공이 가능한다.
> 서비스 제공자는 서비스가 이용가능 함을 공표함
> 응용 프로그램은 서비스 바인딩을 실행시까지 지연시킬 있음
> 서비스의 조합을 통한 새로운 서비스 생성이 가능
> 서비스 사용에 대한 댓가 지불이 가능
> 응용 프로그램이 보다 작아질 있음
> 응용 프로그램이 환경 변화에 따라 반응적 또는 적응적일 있음
 
서비스 사용 시나리오
[그림설명]
- 자동차 내부의 정보 시스템은 운전자에게 날씨, 교통, 상황, 지역 정보 등을 제공함. 정보는 특정 라디오 채널상의 신호로 전달되어 자동차 라디오에 연결됨
- 자동차는 현재 위치를 알기 이ㅜ한 GPS 수신기를 갖춤. 위치 정보에 기초하여 시스템은 '정보 서비스' 접근함.
- 정보가 특정 언어로 전달됨.
Q1. 분권적 p2p 아키텍쳐와 반중앙집중식 p2p 아키텍쳐가 상대적으로 어떠한 장단점을 가지고 있는지 설명하시오.
- 분권적 p2p 아키텍쳐
  장점: 서비스에 대한 공격에 취약함. 피어를 추가한다고 성능이 떨어지지 않는다.
  단점: 피어 통신을 구성하기 어렵다. 가용한 피어를 발견하기 어렵다.
- 반중앙집중식 p2p 아키텍쳐
  장점: 가용한 피어를 찾기 쉽다. 피어간 데이터 교환이 단순하다(서버를 경유).
  단점: 서버에 대한 공격에 취약함.
Posted by 으랏차
,
[대학원] 소프트웨어 공학 개요 및 사회, 기술적 시스템
조회(820)
Software Engineering | 2007/06/16 (토) 17:09
추천하기 | 스크랩하기


1) 소프트웨어(Software) 무엇인가?
- 많은 사람들이 소프트웨어(Software) 컴퓨터 프로그램(Computer program) 같은 것으로 생각하지만 정확하지는 않음. 
- 소프트웨어(Software) 프로그램(programs) 아니라 관련한 모든 문서(Documents) 프로그램이 정상적으로 동작하기 위해 필요한 설정 데이터(Configuration data) 포함함
 
  Software = Programs + Documents + Configuration data
 
Generic products
- 일반적인 목적으로 사용되는 제품으로, 필요로 하는 사용자가 시장에 나와있는 것을 구입하게 .
-  Software Specification 주도권은 개발조직이 가지게 .
: DB서버, 문서 편집기, 이미지 도구, 프로젝트 관리 도구
 
Bespoke (Or Customized product)
- 특정 고객에 맞도록 개발되는 제품
- Software Specification 주도권은 사용자가 가지게 .
: 특정 전자장비의 제어 시스템, 특정 업무를 지원하는 시스템, 항공 운항 통제 시스템
 
2) 소프트웨어공학(Software Engineering) 무엇인가?
시스템 명세(System Specification)단계와 같은 초기단계부터 시스템이 사용된 수행되는 유지보수에 이르기까지 소프트웨어 생산과 관련되는 공학적 분야
- 공학자들은 어떤 문제를 해결함에 있어서 가장 적합한 이론이나 방법론, 도구를 사용하려고 합니다. 기존의 해결책이 없는 경우에는 새로운 시도를 하게 되지만,
문제해결과정에서 조직이나 예산의 제한성도 고려해야 합니다.
- 소프트웨어공학은 소프트웨어를 개발하는데 있어서의 기술적 과정뿐 아니라 프로젝트 관리나 도구, 방법론 이론의 개발과도 관련되어 있습니다.
- 문제해결과정에서 조직적이고 체계적인 접근뿐 아니라 비정형화된 접근이 필요한 경우도 있습니다. ( : 기반 e-Commerce 시스템의 경우는 다양한 소프트웨어 기술과
그래픽 디자인 기술의 융합을 필요로 .)
 
3) 소프트웨어공학(Software engineering) 컴퓨터과학 (Computer science) 차이점은 무엇인가?
- 소프트웨어 공학 : 소프트웨어를 개발함에 있어서 발생하는 실제적인 문제들과 관련한
- 컴퓨터과학 : 컴퓨터나 소프트웨어시스템의 기초가 되는 이론이나 방법론들과 관련된
 
물리학 지식이 전자공학자에게 필요하듯이 컴퓨터과학은 소프트웨어공학자에게 필수적이지만, 항상 컴퓨터과학의 이론에 따르는 것은 아닙니다.
 
4) 소프트웨어공학(Software engineering) 시스템공학 System engineering) 차이점은 무엇인가?
- 소프트웨어 공학 : 소프트웨어기반의 시스템을 주로 다룸.
- 시스템공학 : 하드웨어 개발, 정책, 프로세스 설계, 시스템 배포 소프트웨어공학을 포함하는 개념으로 개별 시스템 컴포넌트(하드웨어,
              소프트웨어 ) 개발과 관련된 공학이 아님.
시스템공학이 소프트웨어공학에 비해 훨씬 역사가 오래되었지만, 최근 시스템의 대부분이 소프트웨어로 대체되고 있기 때문에 시스템공학에서 소프트웨어공학의 기술을
활용하기도 합니다. ( : use-case modeling)
 
 
5) 소프트웨어 프로세스(Software Process) 무엇인가?
- 소프트웨어 생산과 관련한 행위들과 관련 결과물의 집합
- 대부분의 소프트웨어 프로세스에 적용되는 기본적인 4단계 프로세스

l        명세 : 소프트웨어의 기능과 동작에 대한 제약사항 정의
l        개발 : 소프트웨어 요구사항에 맞는 제품 생산
l        확인 : 고객의 요구사항에 맞는 것인지를 확인
l        진화 : 변화하는 고객의 요구사항에 맞도록 소프트웨어 변경
 
6) 소프트웨어 프로세스 모델(Software process model)이란 무엇인가?
l        소프트웨어 프로세스를 단순화, 추상화시킨 .
l        소프트웨어 프로세스 모델의 종류
- Workflow model : 순서있는 일련의 활동
- Data-flow (또는 Activity) model : 데이터의 변환 과정
- Role/action model : 누가 어떤 일을 하는가를 표현
일반적인 프로세스 모델
- Waterfall Approach : 요구사항분석, 명세, 설계, 구현, 테스팅 등의 단계가 엄격하게 구분되어 순서대로 진행
- Evolutionary development : 명세, 개발, 검증 등을 반복하며, 초기에는 추상적인 명세로부터 시작하여 점점 명확해지며 고객이 만족하는 수준이 때까지 계속적으로 개발을 진행
- Formal transformation : 수학적으로 시스템을 명세하여, 정형적인 변환과정을 통해 시스템을 만들게 .
- System assembly from reusable components : 기존에 존재하는 컴포넌트 재사용 조합을 통해 시스템을 개발
 
7) 소프트웨어공학의 비용은 어떻게 되는가?
- 대략적으로 60% 개발비용이고, 40% 테스트 비용이지만, 커스터마이징이 필요한 소프트웨어의 경우는 개발 비용보다 유지보수 비용이 훨씬 많이 .
- 성능이나 신뢰도 수준 또는 개발되는 시스템의 종류에 따라 다양함.
- 사용한 개발 모델에 따라서도 비용이 다르게 나타남.


8) 소프트웨어공학 방법론(Software engineering methods) 무엇인가?
- 시스템 모델, 표기법, 규칙, 설계 조언이나 프로세스 길잡이를 포함하는 소프트웨어 개발에 대한 구조적인 접근법
- 방법론 구성요소(Method components)
 


시스템 모델 설명(System model description) : 개발되어야 시스템 모델과 모델을 정의하는데 필요한 표기법에 대한 설명  , object model, data-flow model, state model
규칙(Rules) : 시스템 모델에 항상 적용되는 제약사항들
                   , 시스템 모델에서 entity 이름은 유일해야 .
권고사항(Recommendations) : 방법론을 올바르게 사용하기 위한 경험적 지침
                                          , 서브객체는 7 이하로
프로세스 길잡이(Process guidance) : 시스템 모델을 개발하기 위해 따라야 절차들에 대한 정의
                                                   , 속성을 정하고 나서 연산을 정의한다.
 
9) CASE 무엇인가?
- Computer Aided Software Engineering 약자
- 요구사항분석, 시스템 모델링, 디버깅, 테스팅 등의 소프트웨어 프로세스를 지원함. 
- 지원하는 개발 시점에 따라 크게 2가지로 나뉨.
  ; upper-CASE 도구 : 분석 설계
; lower-CASE 도구 : 구현 테스팅
 
10) 좋은 소프트웨어의 속성들은 무엇인가?
- Maintainability : 소프트웨어는 변화하는 요구사항을 만족시킬 있도록 설계되어야 한다.
- Dependability : 소프트웨어는 신뢰도(reliability) 높아야 하며, 보안(security) 안전성(safety) 뛰어나야 한다.
- Efficiency      : 소프트웨어는 시스템의 자원을 낭비하지 않도록 효율적으로 동작해야 한다.
- Usability        : 소프트웨어는 의도한대로 사용자가 사용하기 쉬워야 한다. : 사용자인터페이스, 문서화
 
11) 소프트웨어공학이 직면한 주요 과제로는 어떤 것들이 있는가?
- 오래된 시스템(Legacy system) : 수년 전에 개발되어 사용되고 있는 오래된 시스템을 비용 효율적으로 유지보수하고 업데이트 시킬 있어야 한다.
- 환경의 이질성 : 네트워크를 통해 분산된 환경에서 다양한 컴퓨터들과 운영체제 등에 독립적으로 동작할 있어야 한다.
- 품질과 생산속도 : 품질을 위해 시간을 너무 많이 투자해서는 안된다. 오늘날과 같이 빠르게 변화하는 시장에서 살아남기 위해서는 품질도 충분히
보장하면서 비용을 줄이면서도 빠르게 시스템을 개발할 있어야 한다.
 
 
Q1.소프트웨어공학 방법론(Software engineering methods) 정의와 방법론의 4가지 구성요소에 대해 설명하시오.
- 정의 : 시스템 모델, 표기법, 규칙, 설계 조언이나 프로세스 길잡이를 포함하는 소프트웨어 개발에 대한 구조적인 접근법
- 방법론의 4가지 구성요소(Method components) : 시스템 모델 설명(System model description, 규칙(Rules), 권고사항(Recommendations), 프로세스 길잡이(Process guidance)
 
Q2.다음은 좋은 소프트웨어 속성에 관한 설명입니다. 설명에 해당하는 속성을 보기에서 골라 입력해 보세요.
- 설계되어 유지보수가 쉬워야 한다. [Maintainability]
- 소프트웨어는 신뢰도(reliability) 높아야 하며, 보안(security)이나 안전성(safety) 뛰어나야 한다. [Dependability]
- 소프트웨어는 시스템의 자원을 낭비하지 않도록 효율적으로 동작해야 한다. [Efficiency]
- 소프트웨어는 의도한대로 사용자가 사용하기 쉬워야 한다. [Usability]
 
 
 
ACM, IEEE(Institute of Electrical and Electronic Engineers), British Computer Society 기술전문가가 지켜야 8가지 윤리강령을 만들었는데, 내용은 다음과 같습니다.
- Public : 소프트웨어공학자는 대중의 이익에 부합하는 행동을 한다.
- Client & Employer : 소프트웨어공학자는 대중의 이익에 부합하는 범위 내에서 그들의 고객과 고용주의 최대 이익을 내기 위한 행동을 한다.
- Product : 소프트웨어공학자는 제품 관련 변경이 최대한 전문가적 기준에 부합하도록 한다.
- Judgment : 소프트웨어공학자는 그들의 전문가적 판단 아래 성실하고 독립적으로 행동한다.
- Management : 소프트웨어공학 관리자와 지도자는 소프트웨어 개발과 유지보수를 함에 있어 윤리적 접근을 지향한다.
- Profession : 소프트웨어공학자들은 대중의 이익에 부합하면서 전문가로서의 성실과 평판을 유지·발전시켜 나가야 한다.
- Colleagues : 소프트웨어공학자들은 동료에게 공평하고 협조적이어야 한다.
- Self : 소프트웨어공학자들은 그들의 전문지식을 지속적으로 공부하면서, 윤리적인 접근으로 전문가로서의 실천을 행해야 한다.
 
Q, 국내의 과학윤리 현황을 살펴보고 앞으로 여러분께서 나가야 과제를 생각해 보세요.
제시된 자료는 과학의 윤리적 측면에 대한 국내의 제반 활동에 대해 모니터링을 시도한 것으로 국내의 과학윤리 관련 상황이 얼마나 열악한지를 엿볼 있습니다. 이런 열악한 상황을 극복하기 위해 과학 연구에서의 객관성 유지, 논문 발표시의 저자 표시 (authorship) 공로(credit) 배분, 과학윤리 교육 연구 등에 관심을 가지고 노력하여야 겠습니다.
 
- 침입자 경고시스템은 시스템의
- 시스템이란, 관련 요소들이 체계적으로 조직화된 집합체를 의미한다. 하나의 시스템은 여러 서브 시스템들로 구성되고, 서브시스템은 여러 컴포넌트들로 구성되며, 컴포넌트들은 작은 여러 컴포넌트들로 구성된다.
 
- 우리가 과목에서 학습해야 하는 것은소프트웨어 시스템이지만 일반적으로시스템이라 하면 소프트웨어와 하드웨어 등의 결합체를 의미한다. 최근 들어 시스템을 구성하는 소프트웨어의 비중이 점차 커지고 있으며, 시스템 관점에서의 고려 사항이 소프트웨어 개발에 영향을 끼치므로 먼저 시스템 공학을 이해할 필요가 있다.
 
* 시스템이란?
공통의 목적을 달성하기 위해 서로 연관되어 함께 동작하는 컴포넌트들의 집합
 
* 시스템의 특징?
- 시스템에 존재하는 컴포넌트들 간의 관계가 복잡하며 창발적 속성이 나타남.
- 사회-기술적 시스템은 조직의 정책이나 법률과 같은 변화하는 주변 환경과의 관계도 존재함.
 
시스템을 구성하는 소프트웨어의 비중이 점차 커지고 있으며, 시스템 공학에서의 문제는 소프트웨어 공학에서의 문제와 유사한 경우가 많으므로 유심히 살펴볼 필요가 있다.
* 기술적 컴퓨터 기반 시스템
하드웨어와 소프트웨어 컴포넌트를 포함하나 사용자나 작업 프로세스를 시스템의 일부로 포함하지 않는다. 어떤 목적을 위해 사용하나, 목적에 대한 지식은 시스템에 포함되지 않는다.
[] 책을 저술하고자 워드프로세서를 사용하지만 워드프로세서가 책을 저술하는 것에 관해 필요가 없다
 
* 사회-기술적 시스템
-하나 또는 이상의 기술적 시스템을 포함하며 또한 기술적 시스템을 이용하는 사람과 작업 프로세스를 포함한다. 중요한 점은 시스템이 어떻게 이용되는지에 관한 지식을 시스템이 포함하고 있다는 점이다.
-시스템이 작업 프로세스(operational process) 정의하고 있으며 사람을 시스템의 일부로 포함하고 있다.
- 조직의 정책과 규칙에 지배를 받으며 법률이나 규제 정책과 같은 외적 제약사항에 의해서 영향을 받을 수도 있다.
 
* 사회-기술적 시스템의 특징
1) 창발적 속성을 가진다.
- 창발적 속성은 시스템이 조합된 후에 나타나는 속성이다.
 
2) 비결정적이다.
- 같은 입력에 대해 항상 같은 출력이 나오지는 않는다. 시스템의 행위가 부분적으로 운용자(operator) 영향을 받기 때문이다.
 
3) 조직의 목표와 복잡한 관계가 있다.
- 시스템이 조직의 목표를 얼마나 지원하고 있는가는 단지 시스템만의 문제는 아니다. 목표의 안정성, 목표들 간의 관계와 충돌여부, 목표 해석의 차이도 영향을 있다.
 
여러가지 부품들의 특성과 행위들이 복잡하게 연결되어 있는 시스템이 작동하기 위해서는 다른 부품들과의 기능이 적절하게 연결되어 있어야 합니다. 이러한 시스템의 속성을 창발적 속성(Emergent property)이라고 합니다. 창발적 속성에는 다음 3가지 특징이 있다.
- 서브 시스템이나 컴포넌트들의 경우가 아니라 전체 시스템이 구성되었을 나타나는 특성
- 시스템 컴포넌트들의 상호작용 때문에 생기는 특성
- 시스템이 통합(Integration)되기 이전에는 미리 예상하기가 어려우므로 통합된 후에 평가나 측정이 가능함.
 
* 창발적 속성의
시스템의 크기(overall weight) :
- 컴포넌트의 조합 방법에 따라 달라질 있음 
- () 신뢰도(reliability) - 개별 컴포넌트의 신뢰도뿐 아니라 컴포넌트 간의 상호작용에 대해서도 영향을 받음 
 
시스템의 보안성(security)
공격에 대한 방어 능력으로 쉽게 측정할 없은 복잡한 속성 
 
시스템의 수리성(repairability)
발견된 문제를 얼마나 쉽게 고칠 있는가를 의미 
문제를 진단하고 결함이 있는 컴포넌트에 접근하여 수정 또는 교체하는 능력에 따라 좌우됨 
 
시스템의 유용성(usability)
시스템을 얼마나 쉽게 사용할 있는가를 의미 
시스템 하드웨어나 소프트웨어뿐 아니라 조작수 사용 환경까지도 고려해야 하는 복잡한 속성
 
부품이 전체 시스템의 구성요소가 나타나는 창발적 속성(Emergent property) 다음과 같이 크게 가지 종류로 나뉠 있습니다.
기능적 속성(Functional Properties)
- 특정 목적을 달성하기 위해 시스템의 구성 요소들이 협력하는 경우에 생기는 특성
[] 자전거: 구성 요소들이 통합되면 교통도구라는 Functional Property 가지게 된다. 
 
비기능적 속성(Non-functional Properties)  
- 실제 운영 환경하에서의 시스템 행위와 관련됨
- 최소한의 수준이 만족되지 못한다면 시스템 전체가 무용지물이 수도 있다.
  [] 신뢰도(reliability), 성능(performance), 안전성(safety), 보안(security).
 
신뢰도
시스템의 신뢰도에 영향을 주는 요소는 다음 3가지 입니다.
- 신뢰도는 시스템을 둘러싼 환경에 의해서도 영향을 받습니다.
  시스템 환경은 미리 예측하기 힘들며 예측하더라도 제약하기 힘듭니다.
   ) 상온에서 정상적으로 동작하도록 설계된 시스템이 주변에 새로 놓인 에어컨때문에 정상 온도 범위를 벗어나게 되어 오동작하는 경우
 
* Shall-not 속성
앞에서 살펴본 창발적 속성의 종류 비기능적 속성에는 신뢰도, 성능, 안전성, 보안이 포함됩니다. , 성능과 신뢰도는 측정이 가능하지만, 안전성이나 보안과 같은 특성은 측정이 어렵기 때문에 시스템에 대한 제한요건으로서 표현됩니다. “shall-not” properties 시스템과 환경에 대해 살펴보면 다음과 같습니다.
- 안전성(safety) : 시스템이 사람이나 환경에 위험한 영향을 주도록 동작해서는 안된다.
- 보안(security) : 허가받지 않은 사용자나 외부의 침입에 의해 시스템이 노출되지 않아야 한다.
 
* 계층구조
시스템은 독립적일 없으며 항상 특정 환경에 속하게 된다.
시스템의 동작은 주변의 환경을 변화시킬 있다. [] 온열 시스템에 의한 주변 공기 온도 변화
환경은 시스템의 기능이나 성능에 영향을 미칠 있다. [] 환경으로부터의 전력공급, 번개에 의한 전기 자기적 충격
물리적 환경뿐 아니라 특정 기관이나 조직과 같은 사회적인 환경도 중요하다.
 
* 도시에서 건물의 시스템
- 건물은 도시(town)속의 어떤 거리(street) 위치해 있음.
- 시스템의 지역 환경(local environment)
  같은 계층(level) 상의 다른 시스템들, [] 보안 시스템(security system) 지역 환경(local environment) 건물 안에 있는 다른 시스템들
- 총체적 환경(overall environment)
  지역 환경과 그것들을 포함하는 시스템의 환경으로 구성, [] 건물(building)밖의 모든 다른 시스템들을 포함하며 날씨(weather system)까지 포함하는 개념
 
* 인간 사회적 요소
시스템이 성공적으로 운영되는데 있어서 환경은 매우 중요하며, 인간, 사회, 조직적인 요소들이 환경을 구성하고 있습니다.
 
- 인간 사회적 요소로 인한 영향력
 ; 프로세스의 변화 ->시스템이 조직의 권력구조를 변경시킬 수도 있다. 만약 시스템이 의존적인 조직이 있다면 시스템을 사용할 있는 사람들은 정치적인 권력을 획득하게 된다.
 ; 직업의 변화 -> 시스템이 사용자의 직업 능력을 변화시켜서 업무의 효율이 저하되거나 능력이 상실된다면 시스템 사용의 의미가 상실된다.
 ; 조직의 변화 -> 시스템이 조직의 권력구조를 변경시킬 수도 있다. 만약 시스템이 의존적인 조직이 있다면 시스템을 사용할 있는 사람들은 정치적인 권력을 획득하게 된다.
하지만, 엔지니어가 인간, 사회 조직적 요소와 시스템간의 영향력 정도를 미리 측정하기는 다소 어려운 감이 있습니다. 따라서 이러한 측도를 위한 방법론이 개발되었습니다.
 
Tips : 완벽을 기한다면 시스템 명세에 환경적 요인을 포함해야 하나, 사실상 불가능하므로 시스템 설계자는 상식선에서 다른 시스템들과 비교하여 가정할 밖에 없습니다.
방법론 1 Mumfords sociotechnics (Mumford, 1989)
방법론 2 Checklands Soft System Methodology
                        (Checkland,1981; Checkland and Scholes, 1990)
 
 
Q1. 시스템 엔지니어가 환경을 이해해야 하는 이유는 무엇입니까?
시스템은 환경을 바꾸어 놓을 있으며, 환경에 의해 지배받기도 합니다.
[] 전열 시스템은 온도를 변화시키며, 전력 공급이 끊기면 작동할 없다.
 
Q2.창발적 속성(Emergent properties) 의미를 설명하시오.
Emergent properties이란 서브시스템이나 컴포넌트의 경우가 아니라 전체 시스템이 구성되었을 나타나는 특성을 의미합니다. 이는 시스템 컴포넌트들의 상호작용 때문에 생기는 것으로, 주로 시스템이 통합된 후에 평가나 측정이 가능합니다.
 
시스템 공학이란?
- 사회-기술적 시스템을 명세, 설계, 구현, 확인, 배치, 그리고 유지보수하기 위한 활동 
- 시스템이 제공하는 서비스, 시스템의 개발과 작동사의 제약 사항, 그리고 시스템이 사용되는 방법을 고려해야  
 
시스템 공학 프로세스와 소프트웨어 공학 프로세스의 차이점
- 보통 폭포수 모델을 사용함. 시스템의 여러 부분들을 동시 개발해야 필요성 때문임.
- 하드웨어 변경 비용은 매우 비싸기 때문에 개발 작업을 반복하는 경우는 매우 제한적임. 이러한 이유로 시스템에서 소프트웨어의 중요성이 부각됨
- 여러 다른 분야 엔지니어들과의 공동 작업은 불가피함. 타협이 필요하기도 .
 
시스템 요구사항과 설계 활동의 결과로 전체 시스템의 구성을 보여주는 시스템 아키텍쳐 모델을 만듭니다. 시스템을 기능에 따라 서브시스템들로 분류하고 관계를 표현하는데 주로 블록 다이어그램으로 나타내고 서브시스템 별로 간단한 설명을 붙입니다.
 
- 전통적으로 시스템 아키텍쳐 모델은 병행 개발될 있는 하드웨어와 소프트웨어 컴포넌들을 구분하기 위한 것이었으나, 오늘날 시스템에서의 하드웨어와 소프트웨어의 구분이 모호해지면서 하드웨어와 소프트웨어의 trade-off 대해 결정하기 이전에 서브시스템들을 기능에 따라 구분을 하기 위한 수단으로 사용되고 있다. 
 
- 하드웨어로 개발할 것인지 소프트웨어로 개발할 것인지에 대한 결정은 기성(commercial-off-the-shelf) 컴포넌트의 가용성과 컴포넌트 개발에 허용된 시간 등을 고려해 차후에 결정
 
시스템 아키텍처 모델링의 역할
- 시스템을 구성하는 서브시스템들의 추상적인 (abstract view) 제공한다.  
- 서브시스템들 사이에서 발생하는 관계나 주요 정보의 흐름을 보여준다. 
- 주로 블록 다이어그램(block diagram)으로 표현된다. 
- 모델에서의 컴포넌트의 종류를 구분해준다.
 
시스템 아키텍처 모델링은 서브시스템들 사이에서 발생하는 관계(주로“uses/used by”관계나 다른“dependency”관계) 표현하며, 이때 정보의 흐름은 화살표로 나타냅니다.
 
시스템을 구성하는 서브시스템들은 여러가지 기능 측면을 고려하여 분류할 있습니다. 먼저, 단순한 침입 경보 시스템에 대해 살펴보겠습니다.
 
 
컴포넌트
기능
센서 컴포넌트
시스템의 환경으로부터 정보를 수집
경고 시스템에서의 동작 센서(Movement sensor)
항공 운항 통제 시스템의 레이더(radar)
레이저 프린터의 종이 위치 감지 센서 (paper position sensor)
작동기 컴포넌트
시스템의 환경에 변화를
경고 시스템에서의 사이렌(Siren)
파이프관에서 액체의 이동 속도를 조절하기 위한 밸브(valve)
비행기의 수직, 수평 조절 날개
계산 컴포넌트
주어진 입력 값에 대해 특정 연산을 수행하여 결과를 만들어
실수 계산을 위한 부동소수점 연산 프로세서 (floating-point processor)
통신 컴포넌트
시스템의 컴포넌트들이 서로 통신을 있도록
경고 시스템에서의 전화 호출기(Telephone caller)
분산 컴포넌트들을 연결시켜주는 네트워킹 관련 컴포넌트
조정 컴포넌트
컴포넌트들의 상호작용을 조정
경고 시스템에서의 경고 통제장치(Alarm controller)
실시간 시스템(real-time system)에서의 스케줄러(scheduler)
인터페이스 컴포넌트
다른 컴포넌트가 사용할 있도록 지원하는 컴포넌트
경고 시스템에서의 음성 합성기(Voice synthesizer)
사용자를 위한 디스플레이(display)

출처 : http://blog.empas.com/shone2210/21682553

'UP! > Software Engineering' 카테고리의 다른 글

개발의 중요문제  (0) 2008.08.21
시스템분석가의 역할  (0) 2008.08.21
소프트웨어와 소프트웨어 공학  (0) 2008.08.21
시스템의 특성  (0) 2008.08.21
분산시스템아키텍처  (0) 2008.08.21
Posted by 으랏차
,

S/W System 개발

IT 2008. 8. 21. 13:45
소프트웨어 시스템 개발 패러다임

 

-패러다임(paradigm)이란 바라보는 눈, 시각, 관점, 기본 틀 등을 의미하는 것으로 문제를 보는 방식을 말한다.

<소프트웨어의 개발>

      소프트웨어 개발 방법 소프트웨어를 어떻게 만들 것인가를 결정하는 기술적인 요소들을 제시해 주고 프로젝트의 진행 단계에서 요구되는 기법과 수행되어야 할 과제를 포함한다.

      소프트웨어 개발 환경 소프트웨어 개발 방법론을 지원해 주기 위해 필요한 자동화 시스템(CASE), 데이터베이스 관리 시스템(DBMS)등을 포함한다.

      소프트웨어 개발 관리 개발 방법과 환경을 묶어 시스템을 효율적으로 적시에 개발할 수 있도록 공정과정과 절차를 제시하는 것을 의미한다.

 

4.1 폭포수 모델

-폭포수 모델은 고전적 라이프 사이클 패러다임(classic life-cycle paradigm)이라고도 하며 다른 공학에서도 많이 사용되고 있는 전형적인 기법이다.

- 폭포수 모델은 소프트웨어 개발을 단계적이며 체계적인 순차적인 접근 방법을 사용하여 정의 하고 있으며 가장 오래되고 널리 사용되는 패러다임이다.

- 폭포수 모델은 개념 정립에서 구현까지 하향식(top-down) 접근 방법을 사용하여 높은 추상화 단계에서 시하여 낮은 추상화 단계로 옮겨가고 있다.

- 각 단계가 끝날 때 마다 과정의 끝을 알리고 그 다음 단계로 진행한다.

 

<폭포수 모델의 단계>

1.       요구사항 분석 (결과물: 요구사항 명세서)

2.       설계 (결과물: 설계 명세서)

3.       구현 (결과물: 컴퓨터 프로그래밍)

4.       시험 (테스트를 하기 위한 테스트 계획 필요)

5.       유지보수

 

<단점>

1.       프로젝트의 진행과정을 세분화 하여 관리를 용이하게 하나, 실제의 경우 대부분 순환이 발생하기 때문에 순차적인 흐름을 따라가는데 어려움이 있다.

2.       원하는 요구사항을 초기에 구체적으로 기술하기 어렵다.

3.       작동하는 시스템이 프로젝트의 후반부에 가서야 얻어짐으로써 중요한 문제점이 뒤에 발견된다.

 

4.2 원형(Prototyping) 패러다임

- 원형 패러다임은 엔지니어들이 고객의 요구를 불완전하게 이해하고 있는 경우를 대비해서 간단한 시제품을 만들어 보여주는 것

 

<시제품 개발을 통한 장점>

1.       시스템의 기능이 사용자에게 보여짐으로써 개발자와 사용자의 오해가 규명된다.

2.       생각지 못한 기능과 서비스가 발견된다.

3.       사용하기 어렵거나 혼돈을 일으키는 기능들이 규명되어 명료화된다.

4.       분석가나 개발자는 불완전 하거나 일치하지 않는 요구사항을 시제품을 통하여 발견 할 수 있다.

5.       완전하지 못하지만 작동하는 시스템을 만들어 가능성과 유용성을 관리자에게 보여줄 수 있다.

6.       시제품은 고품질 시스템의 요구사항을 명세화 할 수 있는 기초를 제공한다.

 

<원형 패러다임의 단계>

1.       요구사항 분석단계 원형 패러다임의 첫 번째 단계로 분석가와 사용자가 만나 소프트웨어의 전반적인 요구사항을 정의한다.

2.       시제품 설계단계 원형에 대한 설계를 한다.

3.       시제품 개발 단계 시제품 개발에 있어서는 일반적으로 성능. 다른 시스템과의 인터페이스 등에 대한 것은 판단하기 어려워 중요하게 다루어지지 않는다. 기초 수준 정도로 구현 되면 된다.

4.       고객의 시제품 평가 단계 원형 패러다임의 가장 중요한 단계, 시제품은 고객에 의해 평가되고, 개발된 소프트웨어의 요구 사항을 구체적으로 정제하기 위해 사용된다.

5.       시제품 정제단계 사용자가 원하는 것을 만족시키기 위해 시제품에 대한 조율이 필요하다.

6.       완제품 생산단계 원하는 시스템을 개발 하는 것.

 

4.3 나선형(Spiral) 패러다임

- 나선형 모델은 폭포수 모델과 원형 패러다임의 장점에 새로운 요소인 위헌 분석(risk analysis)을 추가하여 만든 것이다.

- 시스템을 개발하면서 생기는 위험을 최소화하는 것이 이 패러다임의 중요한 목적이다.

- 나선형 모델은 비용이 많이 들고 시간이 오래 걸리는 큰 시스템을 구축해 나가는데 가장 현실적인 접근 방법이다.

 

 

<나선형 패러다임의 단계>

1.       계획 및 정의 단계 요구사항을 모으고 프로젝트 계획을 수립한다

2.       위험분석 단계 요구사항에 근거하여 위험이 규명된다.

3.       개발단계 위험에 대한 평가 후 이루어진다. 이 단계에서는 어떠한 패러다임이 적용되어 시스템의 개발이 이루어 질 것인가 하는 개발 모델을 결정한다.

4.       고객 평가 단계 개발과정에서 나론 결과를 (예: 초기 소프트웨어 시제품)를 사용자가 평가하는 과정이다.

 

<단점>

1.       앞의 두 모델보다 복잡하여 프로젝트 관리 자체를 어렵게 만들 가능성이 많다.

2.       많은 고객을 상대로 하는 상업용 제품의 경우 적용하기 어렵다.

3.       새로운 접근 방법이기 때문에 충분한 검증이 되어 있지 않다.

 

4.4 4세대 기법(4th Generation Techniques)

- 4세대 기법(4GT)은 CASE를 비롯한 자동화 도구들을 이용하여 요구사항 명세서로부터 실행코드를 자동으로 생성할 수 있게 해주는 방법이다. 이러한 도구들은 고급언어 수준에서 요구사항이 명시되면 그것이 실행 할 수 있는 제품으로 전환 가능하게 한다.

-고급언어를 실행코드로 바꾸어줄 만큼 정교하지 못하고 불필요한 많은 양의 코드를 생성하고 유지보수에 어려운 점이 있다.

 

4.5 소프트웨어 제작 방법의 공통점

 - 시스템의 정의(definition), 개발(development), 유지보수(maintenance)단계는 모든 시스템 공학에 적용되는 일반적인 공통점이다.

1. 시스템 정의 과정

: 요구사항 분석과정에 해당하며 사용자의 관점에서 시스템이 제공해야 하는 지능, 데이터, 인터페이스를 정의한다. 이 과정은 무엇(what)에 초점을 맞춘다.

2. 시스템 개발 과정

: 시스템을 어떻게(how to) 만들지에 초점을 맞춘 설계, 구현, 시험의 과정이다

3. 시스템 유지보수 과정

: 시스템이 개발된 후 오류의 수정, 환경의 변화, 기능의 행상 요구 등과 연관되어 발생하는 변화(change)에 초점을 맞춘다.


'IT' 카테고리의 다른 글

Optimize PC  (0) 2008.08.20
개발자 볼것  (0) 2008.08.18
[스크랩] 면접  (0) 2008.08.18
RIA,SaaS  (0) 2008.08.18
SaaS  (0) 2008.08.18
Posted by 으랏차
,

EUC-kr, Unicode, UTF-8

dev 2008. 8. 20. 17:59
euc-kr
  • ascii 코드 + 한글
  • 영문/숫자/기호는 1바이트. 한글과 한자는 2바이트
  • euc-kr 또는 ksc5601
  • 웹페이지 작성에 사용가능
  • 특수한 외국어 문자나 일본식/중국식 한자는 표현불가
unicode
  • 모든 글자를 2바이트로 표현
  • 전세계 모든 글자들을 한꺼번에 표현가능
  • 웹페이지 작성에 사용불가
utf-8
  • 영문/숫자/기호는 1바이트로, 한글과 한자 등은 3바이트로 표현
  • 전세계 모든 글자들을 한꺼번에 표현가능
  • 웹페이지 작성에 사용가능

#1. Ascii Code Table  www.ascii-code.com


#2. KSC5601(EUC-KR) 한글 완성형 코드표       http://blog.naver.com/bestdev/10014915998

#3. UTF-8 코드중 한글 영역     http://www.utf8-chartable.de/unicode-utf8-table.pl?start=44032

U+0000 ... U+007F Basic Latin
U+0080 ... U+00FF Latin-1 Supplement
U+0100 ... U+017F Latin Extended-A
U+0180 ... U+024F Latin Extended-B
U+0250 ... U+02AF IPA Extensions
U+02B0 ... U+02FF Spacing Modifier Letters
U+0300 ... U+036F Combining Diacritical Marks
U+0370 ... U+03FF Greek and Coptic
U+0400 ... U+04FF Cyrillic
U+0500 ... U+052F Cyrillic Supplement
U+0530 ... U+058F Armenian
U+0590 ... U+05FF Hebrew
U+0600 ... U+06FF Arabic
U+0700 ... U+074F Syriac
U+0750 ... U+077F Arabic Supplement
U+0780 ... U+07BF Thaana
U+07C0 ... U+07FF NKo
U+0900 ... U+097F Devanagari
U+0980 ... U+09FF Bengali
U+0A00 ... U+0A7F Gurmukhi
U+0A80 ... U+0AFF Gujarati
U+0B00 ... U+0B7F Oriya
U+0B80 ... U+0BFF Tamil
U+0C00 ... U+0C7F Telugu
U+0C80 ... U+0CFF Kannada
U+0D00 ... U+0D7F Malayalam
U+0D80 ... U+0DFF Sinhala
U+0E00 ... U+0E7F Thai
U+0E80 ... U+0EFF Lao
U+0F00 ... U+0FFF Tibetan
U+1000 ... U+109F Myanmar
U+10A0 ... U+10FF Georgian
U+1100 ... U+11FF Hangul Jamo
U+1200 ... U+137F Ethiopic
U+1380 ... U+139F Ethiopic Supplement
U+13A0 ... U+13FF Cherokee
U+1400 ... U+167F Unified Canadian Aboriginal Syllabics
U+1680 ... U+169F Ogham
U+16A0 ... U+16FF Runic
U+1700 ... U+171F Tagalog
U+1720 ... U+173F Hanunoo
U+1740 ... U+175F Buhid
U+1760 ... U+177F Tagbanwa
U+1780 ... U+17FF Khmer
U+1800 ... U+18AF Mongolian
U+1900 ... U+194F Limbu
U+1950 ... U+197F Tai Le
U+1980 ... U+19DF New Tai Lue
U+19E0 ... U+19FF Khmer Symbols
U+1A00 ... U+1A1F Buginese
U+1B00 ... U+1B7F Balinese
U+1B80 ... U+1BBF Sundanese
U+1C00 ... U+1C4F Lepcha
U+1C50 ... U+1C7F Ol Chiki
U+1D00 ... U+1D7F Phonetic Extensions
U+1D80 ... U+1DBF Phonetic Extensions Supplement
U+1DC0 ... U+1DFF Combining Diacritical Marks Supplement
U+1E00 ... U+1EFF Latin Extended Additional
U+1F00 ... U+1FFF Greek Extended
U+2000 ... U+206F General Punctuation
U+2070 ... U+209F Superscripts and Subscripts
U+20A0 ... U+20CF Currency Symbols
U+20D0 ... U+20FF Combining Diacritical Marks for Symbols
U+2100 ... U+214F Letterlike Symbols
U+2150 ... U+218F Number Forms
U+2190 ... U+21FF Arrows
U+2200 ... U+22FF Mathematical Operators
U+2300 ... U+23FF Miscellaneous Technical
U+2400 ... U+243F Control Pictures
U+2440 ... U+245F Optical Character Recognition
U+2460 ... U+24FF Enclosed Alphanumerics
U+2500 ... U+257F Box Drawing
U+2580 ... U+259F Block Elements
U+25A0 ... U+25FF Geometric Shapes
U+2600 ... U+26FF Miscellaneous Symbols
U+2700 ... U+27BF Dingbats
U+27C0 ... U+27EF Miscellaneous Mathematical Symbols-A
U+27F0 ... U+27FF Supplemental Arrows-A
U+2800 ... U+28FF Braille Patterns
U+2900 ... U+297F Supplemental Arrows-B
U+2980 ... U+29FF Miscellaneous Mathematical Symbols-B
U+2A00 ... U+2AFF Supplemental Mathematical Operators
U+2B00 ... U+2BFF Miscellaneous Symbols and Arrows
U+2C00 ... U+2C5F Glagolitic
U+2C60 ... U+2C7F Latin Extended-C
U+2C80 ... U+2CFF Coptic
U+2D00 ... U+2D2F Georgian Supplement
U+2D30 ... U+2D7F Tifinagh
U+2D80 ... U+2DDF Ethiopic Extended
U+2DE0 ... U+2DFF Cyrillic Extended-A
U+2E00 ... U+2E7F Supplemental Punctuation
U+2E80 ... U+2EFF CJK Radicals Supplement
U+2F00 ... U+2FDF Kangxi Radicals
U+2FF0 ... U+2FFF Ideographic Description Characters
U+3000 ... U+303F CJK Symbols and Punctuation
U+3040 ... U+309F Hiragana
U+30A0 ... U+30FF Katakana
U+3100 ... U+312F Bopomofo
U+3130 ... U+318F Hangul Compatibility Jamo
U+3190 ... U+319F Kanbun
U+31A0 ... U+31BF Bopomofo Extended
U+31C0 ... U+31EF CJK Strokes
U+31F0 ... U+31FF Katakana Phonetic Extensions
U+3200 ... U+32FF Enclosed CJK Letters and Months
U+3300 ... U+33FF CJK Compatibility
U+3400 ... U+4DBF CJK Unified Ideographs Extension A
U+4DC0 ... U+4DFF Yijing Hexagram Symbols
U+4E00 ... U+9FFF CJK Unified Ideographs
U+A000 ... U+A48F Yi Syllables
U+A490 ... U+A4CF Yi Radicals
U+A500 ... U+A63F Vai
U+A640 ... U+A69F Cyrillic Extended-B
U+A700 ... U+A71F Modifier Tone Letters
U+A720 ... U+A7FF Latin Extended-D
U+A800 ... U+A82F Syloti Nagri
U+A840 ... U+A87F Phags-pa
U+A880 ... U+A8DF Saurashtra
U+A900 ... U+A92F Kayah Li
U+A930 ... U+A95F Rejang
U+AA00 ... U+AA5F Cham
U+AC00 ... U+D7AF Hangul Syllables
U+D800 ... U+DB7F High Surrogates
U+DB80 ... U+DBFF High Private Use Surrogates
U+DC00 ... U+DFFF Low Surrogates
U+E000 ... U+F8FF Private Use Area
U+F900 ... U+FAFF CJK Compatibility Ideographs
U+FB00 ... U+FB4F Alphabetic Presentation Forms
U+FB50 ... U+FDFF Arabic Presentation Forms-A
U+FE00 ... U+FE0F Variation Selectors
U+FE10 ... U+FE1F Vertical Forms
U+FE20 ... U+FE2F Combining Half Marks
U+FE30 ... U+FE4F CJK Compatibility Forms
U+FE50 ... U+FE6F Small Form Variants
U+FE70 ... U+FEFF Arabic Presentation Forms-B
U+FF00 ... U+FFEF Halfwidth and Fullwidth Forms
U+FFF0 ... U+FFFF Specials
U+10000 ... U+1007F Linear B Syllabary
U+10080 ... U+100FF Linear B Ideograms
U+10100 ... U+1013F Aegean Numbers
U+10140 ... U+1018F Ancient Greek Numbers
U+10190 ... U+101CF Ancient Symbols
U+101D0 ... U+101FF Phaistos Disc
U+10280 ... U+1029F Lycian
U+102A0 ... U+102DF Carian
U+10300 ... U+1032F Old Italic
U+10330 ... U+1034F Gothic
U+10380 ... U+1039F Ugaritic
U+103A0 ... U+103DF Old Persian
U+10400 ... U+1044F Deseret
U+10450 ... U+1047F Shavian
U+10480 ... U+104AF Osmanya
U+10800 ... U+1083F Cypriot Syllabary
U+10900 ... U+1091F Phoenician
U+10920 ... U+1093F Lydian
U+10A00 ... U+10A5F Kharoshthi
U+12000 ... U+123FF Cuneiform
U+12400 ... U+1247F Cuneiform Numbers and Punctuation
U+1D000 ... U+1D0FF Byzantine Musical Symbols
U+1D100 ... U+1D1FF Musical Symbols
U+1D200 ... U+1D24F Ancient Greek Musical Notation
U+1D300 ... U+1D35F Tai Xuan Jing Symbols
U+1D360 ... U+1D37F Counting Rod Numerals
U+1D400 ... U+1D7FF Mathematical Alphanumeric Symbols
U+1F000 ... U+1F02F Mahjong Tiles
U+1F030 ... U+1F09F Domino Tiles
U+20000 ... U+2A6DF CJK Unified Ideographs Extension B
U+2F800 ... U+2FA1F CJK Compatibility Ideographs Supplement
U+E0000 ... U+E007F Tags
U+E0100 ... U+E01EF Variation Selectors Supplement
U+F0000 ... U+FFFFF Supplementary Private Use Area-A
U+100000 ... U+10FFFF Supplementary Private Use Area-B

'dev' 카테고리의 다른 글

locatin 속성  (0) 2008.09.12
ejb  (0) 2008.08.05
jms  (0) 2008.08.04
expression pattern  (0) 2008.08.01
script class  (0) 2008.08.01
Posted by 으랏차
,

Optimize PC

IT 2008. 8. 20. 11:11
인텔과 엔비디아의 강렬한 충돌

옵티마이즈(optimize)는 ‘최고로 활용하다, 가장 능률적으로 활용하다’라는 의미다. 최근 PC 업계는 때 아닌 옵티마이즈 바람으로 뜨겁다. 옵티마이즈 PC 분야의 맹주자리를 놓고 인텔과 엔비디아가 뜨거운 한판 승부를 벌이고 있어서다. 인텔은 전통적인 PC에 더해 내장형 그래픽의 성능 강화라는 카드를 들고 왔고, 엔비디아는 GPU를 CPU와 동격에 놓고 시스템 성능을 향상시킨다는 지금까지 볼 수 없었던 전혀 새로운 개념으로 이 분야에 도전하고 있다.

연재 순서
1편: 옵티마이즈 PC가 뭐에요?2편: 옵티마이즈 PC 활용 가이드 Part 1
3편: 옵티마이즈 PC 활용 가이드 Part 2
4편: 옵티마이즈 PC에 대한 간단한 테스트


PC를 ‘가장 능률적으로 활용한다’는 한 가지 주제에 대해 두 가지 방법론이 충돌하고 있는 것이다. 4회에 걸쳐 진행되는 연재 중 첫번째 순서로 지금부터 향후 PC 업계 전반에 큰 변화를 가져올 것으로 예상되는 인텔과 엔비디아의 옵티마이즈 PC에 대한 개념을 살펴보자.

1. 옵티마이즈 PC, 왜 등장했나?
사실 PC 업계에 옵티마이즈란 개념이 나온 것은 이번이 처음은 아니다. PC를 주로 어디에 활용하느냐에 따라 그에 적합한 시스템이 제시되어 왔기 때문이다. 전통적으로 ‘게이밍 PC’라면 역시 성능 좋은 그래픽 카드가 필요할 테고, ‘사무용 PC’는 내장 그래픽 기능을 제공하는 메인보드가 제격이란 인식이 강하다.

하지만 인텔과 엔비디아는 이러한 천편일률적인 유저들의 인식에 작은 파장을 몰고 왔다. 인텔과 엔비디아가 옵티마이즈 PC라는 개념을 놓고 강하게 충돌하게 된 데에는 인텔의 선공이 결정적으로 작용했다.

지금까지 내장 그래픽과 애드온 타입의 그래픽 카드 분야는 각자 다른 영역에서 활약해 왔다. 하지만 인텔에서 G45 칩셋에 GMA X4500 HD를 내장하면서 옵티마이즈 PC에 대한 문제가 제기되기 시작했다. 지금까지 애드온 그래픽 카드의 전유물처럼 여겨졌던 다이렉트X 10과 동영상의 하드웨어 디코드 지원이 내장 그래픽만으로 가능해진 것이다.

현재 데스크톱 분야에서 인텔의 내장 그래픽이 차지하는 비율은 무척 높은 편인데, 이제 게임과 동영상에 대한 장점까지 갖춰 그래픽 시장에서 점유율을 더욱 높일 수 있게 된 것이다.

이러한 인텔의 강력한 공격 속에 엔비디아 또한 새로운 솔루션과 전략으로 대응하기로 했다. CPU가 담당했던 그래픽 처리를 GPU가 분담하여 처리하는 것이다. GPU의 남는 자원을 CPU와 공유함으로써 더 뛰어난 그래픽 성능과 데이터 분석 능력을 부여하고, 애드온 그래픽 카드의 소비를 촉진시킬 계획이다.

이번 두 회사의 충돌은 지금까지 보아왔던 인텔과 AMD, 엔비디아와 ATI의 경쟁과는 별개다. 만약 인텔의 옵티마이즈 PC가 승리를 거둔다면 애드온 그래픽 카드 산업의 몰락이 가시화될 수도 있다. 물론 엔비디아의 옵티마이즈 PC가 승리한다면 다중 코어(쿼드 코어 등) CPU의 판매가 부진을 보일 것이다. 때문에 관련 업계를 대표하는 두 회사는 사운을 걸고 이 분야에서 강하게 맞붙고 있다.

이들 굴지의 회사들이 주장하는 옵티마이즈 PC는 모두 어느 정도 설득력을 갖추고 있다. 하지만 어떤 개념이 소비자에게 유용한 지는 아직 알 수 없다. 다만 지금부터 다룰 내용 속에 그 해답이 있을 것이다.


- 인텔 vs 엔비디아 옵티마이즈 요건

인텔 옵티마이즈 PC 구성 요소

인텔 옵티마이즈 PC는 G45 칩셋의 강력한 내장 그래픽 성능을 바탕으로 애드온 그래픽 카드를 따로 장착하지 않아도 된다. 그래픽 카드를 장착하지 않음으로써 비용과 전력면에서 장점을 보인다. 특히 바이브 개념에서 한 단계 발전된 크라운스프링스 전략과도 연결된다. 크라운스프링스 전략을 통해서 원격지에서 자신의 PC를 허브로 이용할 수 있다. 이는 이글레이크 시리즈의 사우스브리지 칩셋인 ICH10을 통해 구현될 전망이다.

 1. G45 칩셋 메인보드
 2. 코어 2 듀오 CPU /   코어 2 쿼드 CPU
 3. PC 케이스
 4. 전원공급장치
 5. 하드디스크
 6. 광저장장치


엔비디아 옵티마이즈 PC 구성 요소
엔비디아의 옵티마이즈 PC는 강력한 성능을 갖춘 애드온 그래픽 카드를 장점으로 내세운다. CPU의 경우에는 코어 2 듀오 정도의 CPU를 권장하고 있다. 쿼드 코어 CPU에 투자하기 보다는 그래픽 카드에 비용을 투자하는 것이 바람직하다고 엔비디아는 설명한다. 장기적으로는 GPU가 처리할 수 있는 종류의 소프트웨어를 지속적으로 늘려서 CPU와 GPU를 동격의 위치로 발돋움시키려는 의지를 가지고 있다.

 1. 인텔 및 AMD 메인보드
 2. 코어 2 듀오 CPU 권장
 3. 지포스 8000 시리즈 이상 그래픽 카드
 4. PC 케이스
 5. 전원공급장치
 6. 하드디스크
 7. 광저장장치
 


2. 인텔이 제안하는 옵티마이즈 PC는?

인텔의 옵티마이즈 PC는 뛰어난 성능을 갖춘 G45 메인보드 칩셋의 등장으로 실현되었다. 때문에 인텔의 옵티마이즈 PC에 대해 알아보려면 역시 G45 메인보드 칩셋에 대해 자세히 알아볼 필요가 있다. G45 메인보드 칩셋의 그래픽 성능은 기존의 내장 그래픽에 비해 비약적으로 향상되었다.

인텔은 올해 2사분기를 기해 이글레이크(Eaglelake) 메인보드 칩셋을 발표하면서 이글레이크 PC를 시장에 내놓았다. 이글레이크 칩셋은 인텔 울프데일(Wolfdale) 및 요크필드(Yorkfield) CPU와 DDR3 1333MHz 메모리를 지원한다. 블루레이, 디스플레이 포트(Display Port)와 HDMI, DVI, HDCP 등의 차세대 인터페이스와도 호환된다. 이밖에도 PCI 익스프레스 2.0을 제공한다. 사우스 브릿지 칩으로는 ICH10을 새롭게 채용했다.

또한 인텔의 AMT(Active Management Technology) v5.0과 다이렉트 입출력을 위한 VT기술, TXT, TPM 2.1모듈, 댄벌리 테크놀로지(Danbury Technology) 등을 지원하며, 플랫폼과 세부 사양에 따라 이글레이크 P, G, Q 시리즈로 나뉜다.

인텔 데스크탑 메인보드를 기반으로 하는 ATX 타입의 이글레이크 P 칩셋(코드명 : Skyberg)은 베어레이크 칩셋의 PCI 익스프레스 16+4배속 구성과는 다르게 PCI 익스프레스 8+8배속을 지원하는 것이 특징이다.


인텔 G45 칩셋이 탑재된 '인텔 DG45ID 디지털헨지' 메인보드

다음으로 내장 그래픽 코어를 갖춘 이글레이크 G 칩셋(코드명 : Icedale, Fly Creek)은 각각 울트라 ATX 타입과 울트라 SFF(Ultra SFF) 폼팩터로 제공되며, HDMI와 다이렉트X10, 인텔 클리어 비디오(Clear Video) 기술을 지원한다.

끝으로 DDR2 메모리를 지원하는 이글레이크 Q 칩셋(코드명 : Cube Cove, Eklo)은 기업용 플랫폼으로 특징은 G 칩셋과 비슷하다.

기업용으로 분류되는 Q 시리즈는 논외로 하더라도, 기본형인 P45 익스프레스 칩셋을 살펴보면 P35와 별로 차이가 없다. 두 칩셋 모두 FSB 1333MHz와 DDR2와 DDR3 메모리를 지원한다. 굳이 차이점을 찾으려면 DDR2 메모리 이용 시 최대 16GB 용량을 사용하는 정도다.

그렇다면 주목할 것은 단연 G45 칩셋이다. 사실 인텔의 옵티마이즈 PC 전략은 G45의 출현에 의해 가능해졌기 때문이다. G45/43에 채용되는 내장 그래픽은 인텔 GMA(Graphics Media Acceralator) 4500 시리즈다. G45에는 GMA X4500 HD가, G43에 GMA X4500이, G41/Q45/Q43에는 GMA 4500이 내장되었다.

GMA 4500 시리즈는 내장 그래픽 최초로 다이렉트X 10에 대응한다. GMA 4500 시리즈는 기존의 G35/G965에 내장되었던 GMA X3000 시리즈에 비해 그래픽 엔진 유닛이 8개에서 10개로 늘어 성능도 뛰어나다.


인텔 G43 칩셋이 탑재된 'GIGABYTE GA-EG43M-S2H' 메인보드

게다가 GMA 4500 시리즈에서는 동영상을 따로 처리하는 고정 유닛이 추가되었다. 때문에 블루레이나 HD DVD에서 채용하고 있는 동영상 포맷인 H.264(MPEG4 AVC) 변환 포맷인 VC-1, MPEG-2 포맷 등의 HD 동영상을 재생할 때 CPU의 부하가 많이 줄었다.

기존 G35/G965의 경우 움직임 보정이나 블록의 노이즈를 억제하는 데블로킹(Deblocking) 작업에 GPU 엔진을 이용했다. 다만 H.264에서 VC-1으로 포맷을 변환할 때는 CPU를 이용하여 많은 부하를 주었다. 하지만 GMA 4500 시리즈는 CPU가 처리했던 부분을 GPU가 처리하게 되어 블루레이나 HD DVD의 동영상을 재생해도 CPU에 걸리는 부하는 최소화된다.

이 외에도 기존 GMA 3000 시리즈에서는 없었던 HDCP의 암호화 해제 솔루션도 GPU 속에 넣을 수 있다. 이 때문에 HDMI나 HDCP에 대응하는 DVI 포토를 제공하기 위해 별도의 트랜스미터를 쓰지 않아도 된다.

인텔의 옵티마이즈 PC는 이 외에도 기존 바이브(viiv) PC의 계보를 잇는 기술인 크라운스프링스(CrownSprings)와 연결된다. 이는 원격지에서 자신의 PC를 허브처럼 이용하는 개념이다. 바이브와 달리 PC를 계속 켜놓지 않아도 원격지에서 자신의 PC를 켜고 PC 속 컨텐츠를 자유롭게 이용할 수 있는 것이다. 특히 PC를 판매한 곳에서 회원들에게 원격지 PC AS 서비스를 제공할 수 있는 것도 이 솔루션의 매력 중 하나다.

인텔의 옵티마이즈 PC는 최소한 저렴한 가격으로 뛰어난 그래픽과 다양한 기능을 활용할 수 있어 많은 기대를 모은다.


3. 엔비디아가 제안하는 옵티마이즈 PC?
엔비디아가 제안하는 옵티마이즈 PC는 CPU보다 GPU를 상위에 둔 개념이다. GPU 제조사인 엔비디아에서 당연히 들고 나올 수 있는 솔루션이다. 엔비디아의 주장은 현재 PC 산업에서 PC의 자원을 가장 잘 활용하고 있는 것이 바로 게임이라는 것이다.

인터넷을 쓴다거나, 워드 작업을 하기도 하지만 결국에는 PC의 쓰임새는 게임과 직결된다는 것이다. 고사양 PC 게임을 하기 위해서는 역시 쿼드 코어 CPU에 투자하기보다는 차라리 SLI 솔루션에 투자해 보라는 말과 같다.

이렇듯 엔비디아의 주장대로라면 게임을 잘 구동시키기 위해서는 그래픽 카드에 대한 투자는 당연히 이뤄져야 한다. 하지만 지금까지처럼 CPU와 GPU의 성능이 높아져야 게임을 원활히 구동시키는 것이 아닌, GPU의 성능이 뛰어나다는 전제 하에서는 CPU의 성능이 조금 모자라도 되는 것이다.

엔비디아는 CPU로만 가능했던 다양한 작업들을 GPU로 처리가 가능하다고 한다. 엔비디아는 자사의 GPU를 다양하게 사용할 수 있도록 C 언어에 기반을 둔 GPGPU나 CUDA 등을 개발해 GPU를 활용한 연산 성능 향상을 꾀했다. 또한 애플리케이션 개발자들에게 GPU 기반 연산도구를 개발, 공급해 최근 GPU를 쓰는 소프트웨어도 상당수 늘어났다.

이렇듯 엔비디아는 GPU가 할 수 있는 일을 계속 늘려간다는 계획이다. 이렇게 된다면 향후 CPU와 GPU가 동격의 성능을 갖출 수도 있겠다.

'IT' 카테고리의 다른 글

S/W System 개발  (0) 2008.08.21
개발자 볼것  (0) 2008.08.18
[스크랩] 면접  (0) 2008.08.18
RIA,SaaS  (0) 2008.08.18
SaaS  (0) 2008.08.18
Posted by 으랏차
,

스케쥴링

Algorithm 2008. 8. 19. 09:53

1. 스케줄링의 개요

* 스케줄링(Scheduling)은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다.

* 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.

* 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있다.

[표]


>스케줄링과 문맥 교환이 무엇인지 개념을 파악하고, 스케줄링의 종류만 간단히 알자.

>잠깐만!

문맥 교환(Context Switching)

하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생디는 것으로 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업을 의미한다.


2. 스케줄링의 목적


>스케줄링의 목적과 성능 평가 기준을 묻는 문제가 자주 출제됨. 스케줄링은 CPU나 자원을 효율적으로 사용하기 위한 정책이란 것을 중심으로 알아둔다.


스케줄링은 CPU나 자원을 효율적으로 사용하기 위한 정책으로, 다음과 같은 목적을 가지고 있다.

* 공정성: 모든 프로세스에 공정하게 할당한다.

* 처리율(량) 증가: 단위 시간당 프로세스를 처리하는 비율(양)을 증가시킨다.

* CPU 이용률 증가: 프로세스 실행 과정에서 주기억장치를 액세스한다든지, 입ㆍ출력 명령 실행 등의 원인에 의해 발생할 수 있는 CPU의 낭비 시간을 줄이고, CPU가 순수하게 프로세스를 실행하는 데 사용되는 시간 비율을 증가시킨다.

* 우선순위제도: 우선순위가 높은 프로세스를 먼저 실행한다.

* 오버헤드 최소화: 오버헤드를 최소화한다.

* 응답 시간(Response Time, 반응 시간) 최소화: 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.

* 반환 시간(Turn Around Time) 최소화: 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.

* 대기 시간 최소화: 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.

* 균형 있는 자원의 사용: 메모리, 입ㆍ출력장치 등의 자원을 균형 있게 사용한다.

* 무한 연기 회피: 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.


>우선순위

우선순위는 시스템에 의해 자동으로 또는 외부 사항에 의해 결정되기도 한다. 시간 제한, 기억장치 요구, 개방된 파일 수, 평균 입ㆍ출력 실행 시간 등을 이용한 내부적 우선순위와 작업을 지원하는 정책, 부서 등의 외부적 우선순위가 있다.


>잠깐만!

스케줄링의 성능 기준

스케줄링의 목적 중 CPU 이용률, 처리율, 반환 시간, 대기 시간, 응답 시간은 여러 종류의 스케줄링 성능을 비교하는 기준이 된다.


3. 프로세서 스케줄링(프로세스 스케줄링)의 기법

 

>선점, 비선점 스케줄링의 의미 파악하고 각 스케줄링의 종류도 알아두자.

 

비선점(Non-preemptive) 스케줄링

* 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.

* 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.

* 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다.

* 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합하다.

* 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있다.

* 비선점 스케줄링의 종류에는 FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘이 있다.


선점(Preemptive) 스케줄링

* 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다.

* 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.

* 주로 빠른 응답 시가늘 요구하는 대화식 시분할 시스템에 사용된다.

* 많은 오버헤드(Overhead)를 초래한다.

* 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클럭(Clock)이 필요하다.

* 선점 스케줄링의 종류에는 Round Robin(RR), SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등의 알고리즘이 있다.


>인터럽트용 타이머 클럭

하나의 시스템 내에서 동작하는 장치들을 감시하기 위해 주기적인 신호를 발생하는 것으로, 하나의 프로세스가 자원을 독점하지 못하도록 방지하기 위해 사용.

'Algorithm' 카테고리의 다른 글

셀정렬  (1) 2008.08.23
삽입정렬  (0) 2008.08.23
선점,비선점 스케쥴링  (1) 2008.08.19
병행프로세스와 상호배제  (0) 2008.08.19
주소지정방식  (0) 2008.08.19
Posted by 으랏차
,

선점 스케줄링에 해당하는 선점 우선순위, SRT, RR, 다단계 큐, 다단계 피드백 큐 알고리즘에 대하여 알아보자.


>선점 스케줄링은 대부분 비선점 스케줄링을 보완한 것이다.


1. 선점 우선순위

* 준비상태 큐의 프로세스들 중에서 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법이다.

* 비선점 우선순위 기법을 선점 형태로 변경한 것으로, 준비상태 큐에 새로 들어온 프로세스의 순위가 높을 경우 현재의 프로세스를 보류하고 새로운 프로세스를 실행한다.


2. SRT(Shortest Remaining Time)

* 비선점 스케줄링인 SJF 기법을 선점 형태로 변경한 기법으로, 선점 SJF 기법이라고도 한다.

* 현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법으로, 시분할 시스템에 유용하다.

* 준비상태 큐에 있는 각 프로세스의 실행 시간을 추적하여 보유하고 있어야 하므로 오버헤드가 증가한다.


>SRT는 SJF를 변경한 것으로, 두 개의 알고리즘을 비교하는 문제가 출제됨.

SJF는 실행시간이 가장 짧은 프로세스.

SRT는 현재 실행중인 프로세스의 남아 있는 실행 시간과 새로운 프로세스의 실행 시간을 비교하여 짧은 것.


3. RR(Round Robin)

* 시분할 시스템(Time Sharing System)을 위해 고안된 방식으로, FCFS 알고리즘을 선점 형태로 변형한 기법이다.

* FCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 시간 할당량(Time Slice, Quantum) 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치된다.

* 할당되는 시간이 클 경우 FCFS 기법과 같아지고, 할당되는 시간이 작을 경우 문맥교환 및 오버헤드가 자주 발생한다.

* 할당되는 시간의 크기가 작으면 작은 프로세스들에게 유리하다.


>RR은 전반적인 내용을 묻는 문제가 출제됨. RR은 시간 할당량을 사용하는 데 할당된 시간이 클수록 FCFS와 같고, 할당되는 시간이 작을수록 문맥 교환과 오버헤드가 자주 발생된다.


예제]


4. 다단계 큐(MQ, Multi-level Queue)

* 프로세스를 특정 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법이다.

* 일반적으로 프로세스 우선순위에 따라 시스템 프로세스, 대화형 프로세스, 편집 프로세스, 일괄 처리 프로세스 등으로 나누어 준비상태 큐를 상위, 중위, 하위 단계로 배치한다.

[그림]


>다단계 큐와 다단계 피드백 큐의 차이점을 알아두자.


* 각 준비상태 큐는 독자적인 스케줄링을 가지고 있으므로 각 그룹의 특성에 따라 서로 다른 스케줄링 기법을 사용할 수 있다.

* 프로세스가 특정 그룹의 준비상태 큐에 들어갈 경우 다른 준비상태 큐로 이동할 수 없다.

* 하위 단계 준비상태 큐에 있는 프로세스를 실행하는 도중이라도 상위 단계 준비상태 큐에 프로세스가 들어오면 상위 단계 프로세스에게 CPU를 할당해야 한다.


5. 다단계 피드백 큐(MFQ, Multi-level Feedback Queue)

* 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법이다.

* 각 준비상태 큐마다 시간 할당량을 부여하여 그 시간 동안 완료하지 못한 프로세스는 다음 단계의 준비상태 큐로 이동된다.

* 상위 단계 준비상태 큐일수록 우선순위가 높고, 시간 할당량이 적다.

* 요구하는 시간이 적은 프로세스, 입ㆍ출력 중심의 프로세스, 낮은 우선순위에서 너무 오래 기다린 프로세스를 기준으로 높은 우선순위를 할당한다.

* 하위 단계 준비상태 큐에 있는 프로세스를 실행하는 도중이라도 상위 단계 준비상태 큐에 프로세스가 들어오면 상위 단계 프로세스에게 CPU를 할당하며, 마지막 단계 큐에서는 작업이 완료될 때까지 RR 스케줄링 기법을 사용한다.



 

비선점 스케줄링에 해당하는 FCFS, SJF, HRN, 우선순위, 기한부 알고리즘에 대하여 알아보자.


>잠깐만!

비선점 스케줄링과 선점 스케줄링

다음과 같이 대응되는 표를 이용하여 각 알고리즘이 선점 기법인지 비선점 기법인지 정리하자.

[표]


1. FCFS(First Come First Service, 선입선출) = FIFO

* FCFS는 준비상태 큐(대기 큐, 준비 완료 리스트, 작업준비 큐, 스케줄링 큐)에 도착한 순서에 따라 차례로 CPU를 할당하는 기법으로, 가장 간단한 알고리즘이다.

* 먼저 도착한 것이 먼저 처리되어 공평성은 유지되지만 짧은 작업이 긴 작업을, 중요한 작업이 중요하지 않은 작업을 기다리게 된다.


예제]


>FCFS(FIFO)는 비선점 기법이며 준비상태 큐에 도착한 순서대로 할당을 받는다.


2. SJF(Shortest Job First, 단기 작업 우선)

* SJF는 준비상태 큐에서 기다리고 있는 프로세스들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법이다.

* 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘이다.

* 실행 시간이 긴 프로세스는 실행 시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태가 발생될 수 있다.


>SJF의 전반적인 특징, 평균 반환 시간을 계산하는 문제가 촐제됨.


예제1]

예제2]


3. HRN(Hightest Response-ratio Next)

* 실행 시간이 긴 프로세스에 불리한 SKF 기법을 보완하기 위한 것으로, 대기 시간과 서비스(실행) 시간을 이용하는 기법이다.

* 우선순위 계산 공식을 이용하여 서비스(실행) 시간이 짧은 프로세스나 대기 시간이 긴 프로세스에게 우선순위를 주어 CPU를 할당한다.

* 서비스 실행 시간이 짧거나 대기 시간이 긴 프로세스일 경우 우선순위가 높아진다.

* 우선순위를 계산하여 그 숫자가 가장 높은 것부터 낮은 순으로 우선순위가 부여된다.

* 우선순위 계산식

[수식]


>HRN에서는 의미, 우선순위를 계산하는 공식, 계산문제가 출제됨.


예제]


4. 기한부(Deadline)

* 프로세스에게 일정한 시간을 주어 그 시간 안에 프로세스를 완료하도록 하는 기법이다.

* 프로세스가 제한된 시간 안에 완료되지 않을 경우 제거되거나 처음부터 다시 실행해야 한다.

* 시스템은 프로세스에게 할당할 정확한 시간을 추정해야 하며, 이를 위해서 사용자는 시스템이 요구한 프로세스에 대해 정확한 정보를 제공해야 한다.

* 여러 프로세스들이 동시에 실행되면 스케줄링이 복잡해지며, 프로세스 실행 시 집중적으로 요구되는 자원 관리에 오버헤드가 발생한다.


5. 우선순위(Priority)

* 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법이다.

* 우선순위가 동일할 경우 FCFS 기법으로 CPU를 할당한다.

* 우선순위는 프로세스의 종류나 특성에 따라 다르게 부여될 수 있다.

* 가장 낮은 순위를 부여받은 프로세스는 무한 연기 또는 기아 상태(Starvation)가 발생할 수 있다.


>무한 연기/기아 상태

우선순위가 낮아 CPU 할당이 무한히 연기되는 상태를 무한 연기라 하고, 무한 연기 상태에서 결국 프로세스를 완료하지 못하는 상태를 기아 상태라 한다.


>잠깐만!

에이징(Aging) 기법

ㆍ시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우, 한번 양보하거나 기다린 시간에 비례하여 일정 시간이 지나면 우선순위를 한 단계씩 높여 가까운 시간 안에 자원을 할당받도록하는 기법이다.

ㆍ SJF나 우선순위 기법에서 발생할 수 있는 무한 연기 상태, 기아 상태를 예방할 수 있다.

 

'Algorithm' 카테고리의 다른 글

삽입정렬  (0) 2008.08.23
스케쥴링  (0) 2008.08.19
병행프로세스와 상호배제  (0) 2008.08.19
주소지정방식  (0) 2008.08.19
RISC 기본원리  (0) 2008.08.19
Posted by 으랏차
,

1. 병행 프로세스

병행 프로세스(Concurrent Process)는 두 개 이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미한다.

* 여러 프로세스들이 독립적으로 실행되는 것을 독립적 병행 프로세스, 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스라고 한다.

* 병행 프로세스는 다중 처리 시스템이나 분산 처리 시스템에서 중요한 개념으로 사용된다.


2. 임계 구역

임계 구역(Critical Section)은 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원(영역)을 의미한다.

* 임계 구역에는 하나의 프로세스만 접근할 수 있으며, 해당 프로세스가 자원을 반납한 후에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.

* 임계 구역은 특정 프로세스가 독점할 수 없다.

* 임계 구역의 자원이나 데이터는 여러 프로세스가 사용해야 하므로 임계 구역 내에서의 작업은 신속하게 이루어져야 한다.

* 프로세스가 임계 구역에 대한 진입을 요청하면 일정 시간 내에 진입을 허락해야 한다.

* 현재 임계 구역에서 실행되는 프로세스가 없다면 임계 구역 사용을 기다리고 있는 잔류 영역에 있는 프로세스의 사용을 허락해야 하며, 그 이외에 있는 프로세스는 임계 구역에 진입할 수 없다.


>임계 구역의 개념에 대한 문제 출제됨. 영문으로 Critical Section이라는 것을 기억할 것.

>공유 자원

공유 자원에는 CPU, 메모리, 디스크, 입ㆍ출력 장치, 버퍼 등이 있다.


3. 상호 배제 기법

상호 배제(Mutual Exclusion)는 특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법을 의미한다.

* 여러 프로세스가 동시에 공유 자원을 사용할 때 각 프로세스가 번갈아가며 공유 자원을 사용하도록 하는 것으로, 임계 구역을 유지하는 기법이다.

* 상호 배제 기법을 구현하기 위한 방법에는 소프트웨어적 구현과 하드웨어적 구현이 있다.


>상호 배제 개념과 영문표기법을 기억할 것.


소프트웨어적 구현 방법

* 두 개의 프로세스 기준: 데커(Dekker) 알고리즘, 피터슨(Peterson) 알고리즘

* 여러 개의 프로세스 기준: Lamport의 빵집 알고리즘


>Lamport의 빵집 알고리즘

고객이 빵집에 들어갈 때 번호를 부여하여 순서대로 고객에게 빵을 제공하는 방법과 같이, 각 프로세스에게 번호를 부여하여 자원을 사용하도록 하는 방법.


하드웨어적 구현 방법

Test_And_Set 기법과 Swap 명령어 기법이 있다.


4. 동기화 기법

동기화 기법(Synchronization)은 두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로, 상호 배제의 한 형태이다.

* 동기화를 구현할 수 있는 방법에는 세마포어와 모니터가 있다.


>세마포어와 모니터를 묻는 구체적인 문제가 출제됨. 각각의 의미와 특징을 파악 할 것.


세마포어(Semaphore)

* 세마포어는 '신호기', '깃발'을 뜻하며, 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법이다.

* 세마포어는 다익스트라(E.J.Dijkstra)가 제안하였으며, P와 V라는 두 개의 연산에 의해서 동기화를 유지하고 상호 배제의 원리를 보장한다.

* S는 P와 V 연산으로만 접근 가능한 세마포어 변수로, 공유 자원의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가질 수 있다.

[그림 및 설명]


모니터

* 모니터는 동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는 데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성된다.

* 자료 추상화와 정보 은폐 개념을 기초로 하며 공유 자원을 할당하기 위한 병행성 구조로 이루어져 있다.

* 모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야 한다.

* 외부의 프로시저는 직접 액세스 할 수 없다.

* 모니터의 경계에서 상호 배제가 시행된다.

* 모니터에는 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.

* 모니터에서는 Wait와 Signal 연산이 사용된다.

[그림]


>정보 은폐

모니터 내부의 프로시저와 데이터의 정보를 은폐시켜서 다른 외부의 프로시저가 접근하거나 변경하지 못하도록 하는 기법.

 

'Algorithm' 카테고리의 다른 글

스케쥴링  (0) 2008.08.19
선점,비선점 스케쥴링  (1) 2008.08.19
주소지정방식  (0) 2008.08.19
RISC 기본원리  (0) 2008.08.19
deadlock 4가지  (0) 2008.08.01
Posted by 으랏차
,

주소지정방식

Algorithm 2008. 8. 19. 09:30

C H A P T E R 4   ::: 주소 지정 방식 :::




공부할 내용
★ 주소 지정 방식 (addressing)
★ 세그먼트와 세그먼트 레지스터
★ 스택의 구현
★ 직접 주소 지정
★ 간접 주소 지정
★ 인덱싱
★ 인덱스 레지스터, 베이스 레지스터
★ 주소를 지정하는 일반적인 규칙
★ 코드세그먼트내에서의 주소 지정

기초적인 PC 주소 지정 방식
★ 기계어 명령이 사용하는 주소의 길이 = 16비트
   - 16비트를 사용하여 만들 수 있는 주소 = 0000H부터 FFFFH까지
      따라서, 메모리의 크기 <= 64K 바이트   (이는 지나친 제약임)
★ 더 나은 방법은?
   움직이는 팔을 가진 로보트가 있다고 하자.
   그 로보트의 팔은 64인치만큼 들락날락하며 움직일 수 있다고 하자.
   (1) 로보트가 방안의 어떤 곳에 고정되어 있는 경우
       그 팔은 64인치 이내의 거리에 있는 물건만을 잡을 수 있다.
   (2) 로보트가 방안을 돌아다닐 수 있다면 그 팔로 방안의
       어느 곳에 있는 물건도 잡을 수 있다.
  ★ 인텔 프로세서는 이런 방식으로 주소를 지정함.
인텔 프로세서의 주소 지정 방식
★ 어셈블리 언어 프로그램에 사용되는 주소
   = 세그먼트 주소 (segment address) + 오프셋(offset)
★ 세그먼트 주소 = 20 비트 크기  =>
   방안에서의 로보트의 위치에 해당
  오프셋 = 16비트 크기 => 로보트 팔에 해당
★ 실효 주소(effective address) : 바이트의 실제 주소
      = 세그먼트 주소 + 오프셋
   예) 세그먼트 주소가 50000H이고 오프셋이 62A3H라고 하자.
       실효 주소 = 50000H + 62A3H
                 = 562A3H
   예) 세그먼트 주소를 50000H로 고정한 상태에서 오프셋만을 변경
        시켜가면서 접근할 수 있는 바이트들은?
           실효주소의 범위 = 50000H ~ 5FFFFH (64K바이트 분량)
   예) 세그먼트 주소가 50000H일 때, 실효주소 8726BH번지의 자료를
        엑세스할 수 있나? no
        해결책: 8726BH가 64K바이트 이내에 들어오도록 세그먼트
               주소를 변경시켜야만 한다.

★ 하드웨어는 실효 주소를 계산하여 항상 20비트짜리 숫자로 만든다.
  즉, 실효 주소는 00000H ~ FFFFFH까지 될 수 있고,
  이제 1 메가바이트 크기의 메모리를 가질 수 있다.



세그먼트와 세그먼트 레지스터
★ 모든 프로그램은 세그먼트(segment) 단위로 나뉘어져야 한다.
   즉, 큰 프로그램을 작성할 때는 프로그램을 적당한 크기로
   나누어서 각 조각이 한 세그먼트에 들어갈 수 있도록 해야 한다. 
★  한 세그먼트의 최대 크기는 64K바이트이다.
★ 프로그램안에는 각 세그먼트의 시작 주소와 끝 주소를 어셈블러에게
  알려주는 특정 명령들이 있다.
★ 프로그램이 실행되는 동안에 프로세서는 각 세그먼트의
  세그먼트 주소를 CS, DS, ES 또는 SS라고 불리는 세그먼트 레지스터 
   (segment register)에 저장하여 두고 관리한다.

★ 한 프로그램이 가질 수 있는 세그먼트의 개수는 4개 이상일 수 있지
만 동시에 활성화될 수 있는 세그먼트의 개수는 4개뿐이다. 
  (이유: 프로세서에 들어있는 세그먼트 레지스터의 개수 = 4)
★ 4개의 표준 세그먼트
   (1) 코드 세그먼트(code segment)
       - 기계어 명령이 있는 곳
   (2) 데이터 세그먼트(data segment)
       - 자료가 저장되어 있는 곳
   (3) 엑스트라 세그먼트(extra segment)
       - 자료가 저장되는 곳 (필요시에 이 세그먼트를 둘 수 있음)
   (4) 스택 세그먼트(stack segment)
      - 스택이 있는 공간
★ 각 세그먼트의 주소가 저장되어 있는 레지스터
   CS: 코드 세그먼트의 주소
   DS: 데이터 세그먼트의 주소
   ES: 엑스트라 세그먼트의 주소
   SS: 스택 세그먼트의 주소
★ 모든 프로그램마다 4개의 표준 세그먼트가 있는가?
   아니다.
   - 모든 프로그램에는 최소한 (명령이 있을 곳인) 코드 세그먼트와
     스택 세그먼트가 있어야 한다.  (COM파일에는 스택이 없음)
   - 데이터 세그먼트와 엑스트라 세그먼트는 꼭 있을 필요는
     없으나 대부분의 프로그램에는 적어도 한 개의 데이터
     세그먼트가 있다.
세그먼트 레지스터의 용도
★프로그램에서의 주소 표시법
  [세그먼트 레지스터 이름] : [오프셋]

  예) 데이터 세그먼트의 시작점으로부터  6AH 바이트 떨어져 있는
      곳의 자료의 주소는?
        DS:6AH
   예) 엑스트라 세그먼트의 시작점으로부터 1A5H 떨어져 있는 곳의
       자료의 주소는?
       ES:1A5H

★ 프로그램이 실행될 때 프로세서는 오프셋을 해당 세그먼트 레지스터
의 값에 더하여 실효 주소를 얻는다.
   즉, 주속 DS:6AH라면, 프로세서는 6AH를 DS의 값에 더한다.
★ 각 세그먼트 레지스터에는 어떻게 해당 세그먼트의 시작주소가 저장
되는가?
   - 프로그램이 실행되기 전에 운영체제가 프로그램을 기억장치에
     로드(load)한다. 이 때에 프로그램의 각 세그먼트의 주소가 결정됨
   - CS, SS:운영체제가 초기화함.
     ES, DS: 프로그리머 자신이 (프로그램안에서) 초기화해야 함.

세그먼트 레지스터가 갖는 값
★ 세그먼트 레지스터에는 세그먼트 주소가 들어 있다.
  그렇다면, 16비트 크기의 레지스터에 20비트 크기의 세그먼트 주소가
어떻게 저장되는 것일까?
  해결책: 주소의 20비트 중에서 레지스터에는 최상위 16비트만을 저장
          남은 4비트는 모두 0으로 간주함.
   예) 운영체제가 코드 세그먼트를 217A0H번지에,
       스택 세그먼트를 1F8A0H에 로드하였다고 하자.
       이 때: CS 레지스터가 갖는 값 =  217AH이고
              SS 레지스터가 갖는 값 = 1F8AH가 된다.
★  프로그램의 각 세그먼트는 0H로 끝나는 주소에 자동적으로 load됨.
   (즉, 세그먼트는 항상 패러그래프 경계에 정돈된다.)
스택의 구현
★ SS(stack segment) 레지스터: 스택 세그먼트의 주소가 저장됨
     - 프로그램이 로드될 때 운영체제가 이 값을 설정해 준다.
★ SP(stack pointer) 레지스터: 스택의 탑의 오프셋이 저장됨
★ 스택 탑의 실효주소 = SS:SP
★ 스택에 저장되는 항목(entry)의 크기 = 16비트 (2바이트) 
★ SS 레지스터: 스택 영역의 가장 낮은 주소를 가리킨다.
   SP 레지스터의 초기값: 스택의 크기
   - 첫째 푸쉬 명령은 자료를 스택영역의 최상위 주소에 저장함
   - 그 다음 푸쉬 명령이 저장하는 자료는 그 다음 최상위 주소의
     엔트리에 저장된다.
   - SP 레지스터: 항상 자료가 마지막으로 저장된 곳을 가리킨다.
     (즉, 스택의 탑을 가리킨다.)
★ 스택은 최상위 주소로부터 시작하여 스택의 베이스를 향하여 아래
방향으로 자란다.
★ 일반적으로 한 항목이 푸쉬될 때는 아래와 같은 일이 이루어진다.
  1. SP는 다음의 빈 공간을 가리키기 위하여 그 값이 2 만큼 감소한다.
     (각 항목이 차지하는 공간은 2 바이트임을 잊지 말자.)
  2. 푸쉬할 항목이 SP가 가리키는 곳에 복사된다.
★ 자료가 팝될 때는 아래와 같은 일이 이루어진다.
  1. SP가 가리키는 곳의 항목이 적당한 다른 곳에 복사된다.
  2. 팝된 후에 스택의 탑에 있는 항목을 가리키기 위하여 SP는 그 값
     이 2만큼 증가된다.
★프로그램이 로드될 때, SP 레지스터는 첫째 항목이 저장될 장소보다
두 바이트 위에 있는 주소로 초기화된다. 첫째 푸쉬 명령은 SP를 2
감소시켜서 첫째 항목이 저장될 곳의 오프셋을 얻는다.


직접 주소 지정 방식
(1) 데이터 세그먼트안의 오프셋이 10AH인 곳을 지칭하려고 할 때
      DS:10AH
(2) 숫자대신 이름을 오프셋으로 사용 (고급언어의 변수에 해당)
   예) SUM이라는 이름이 데이터 세그먼트의 오프셋이 10AH인 곳을
      나타낸다고 하자.  이 곳을 참조할 때는
        DS:SUM
(3) 메모리 영역을 참조할 때, 그 주소가 데이터 세그먼트에 있으면
    세그먼트 레지스터의 이름을 생략할 수 있다.
       SUM
(4) 데이터가 다른 세그먼트에 있는 경우 (예. ES)
       ES:SUM
간접 주소 지정 방식
★ 오프셋이 레지스터에 저장되어 있는 경우
  예)  SI 레지스터의 값이 1000H라고 하자.
       MOV AX, SI  (1000H를 AX에 복사)
       MOV AX, [SI]  (오프셋 1000H에 저장된 자료를 AX에 복사)
★ 간접 주소 지정 방식에 사용될 수 있는 레지스터
   = SP, BP, BX, SI와 DI 임
★ 간접 주소 지정할 때, 대부분의 경우에 세그먼트 레지스터를 명시할
필요는 없다.
   (이유: 프로세서가 적당한 것을 이미 가정하고 있기 때문이다.)


  
   예) 데이터 세그먼트 내의 어떤 자료의 오프셋이 BX에 들어
       있다고 하자. 이 자료는 참조할 때는 다음과 같이 한다.
       [BX]
   예) BX의 값이 엑스트라 세그먼트 자료의 오프셋인 경우 
       ES:[BX]
[예외] 이 규칙을 따르지 않는 중요한 예외가 하나 있다.
      스트링을 MOV 하는 명령을 사용할 때, 프로세서는 DI 레지스터
      의 값이 엑스트라 세그먼트에 있는 오프셋임을 가정한다.


인덱싱(indexing)
★ 인덱싱: 1차원 배열 또는 2차원 배열과 같은 자료를 나타내는데 사용
★ 즉, 배열 전체에 이름을 1개 주고 배열 내의 각 항목(item)은
   첫째 자료 항목으로부터의 상대거리를 사용하여 참조함.
★ 베이스 주소(base address): 배열의 첫째 항목의 주소
예)  100개의 원소를 갖는 배열이 데이터 세그먼트에 있고, 그 원소들은
     연속된 100개의 바이트에 저장되어 있다고 하자. 각 원소는 한
     바이트를 차지한다. 배열의 이름은 LIST라고 하자.
     (1) 첫째 바이트를 엑세스할 때: LIST
     (2) 두번째 바이트를 엑세스할 때: LIST+1
★ 베이스 주소에 더해지는 수를 변위량(displacement)이라 함.
예) 100개의 워드로 구성된 배열 BIGLIST를 생각하여 보자. 각 워드가
    2바이트를 차지하므로 원소들의 변위량은 다음과 같이 된다.
    첫째 원소    ← BIGLIST
    둘째 원소    ← BIGLIST+2
    셋째 원소    ← BIGLIST+4
        
    100번째 원소   ← BIGLIST+198


인덱스 레지스터
★ 배열의 원소를 엑세스할 때 사용되는 변위량을 레지스터에 저장하여
두고 사용할 수 있음. 이 때 사용되는 레지스터를 인덱스 레지스터  
(index register)라고 한다.
★ 인덱스 레지스터로 사용될 수 있는 레지스터: SI, DI
예) 100바이트로 구성된 배열 LIST를 고려하여 보자. 프로그램이 이 배 
열의 원소를 처음부터 끝까지 순서대로 참조한다고 하자. 이 때 SI  
레지스터의 값을 0부터 99까지 변화시키면서 LIST[SI] 를 사용함.
★ LIST[SI]의 의미: SI에 들어 있는 값(value)을 LIST의 오프셋에    
더하여 얻은 주소에 있는 자료를 참조하라.


예) 100개의 워드로 된 배열 BIGLIST를 고려하여 보자. 인덱스를 주기
    위하여 DI 레지스터를 사용한다면
    - 원소를 엑세스할 때: BIGLIST[DI] 를 사용
    - 첫째 원소를 참조하려면 DI = 0
      둘째 원소를 참조하려면 DI = 2
      셋째 원소를 참조하려면 DI = 4
       .........
       n 번째 원소를 참조하려면 DI = (n-1)★ 2
★ 배열의 원소가 더블워드인 경우의 인덱스는 4의 배수이어야 하고,
  쿼드워드인 경우는 8의 배수이어야 한다. 어셈블리 언어를 사용할
  때는 프로그래머가 이를 직접 처리하여야 한다
   (고급언어에서와는 달리).
베이스 레지스터: BX 레지스터
★ 베이스 주소 역시 레지스터에 저장될 수 있다. 데이터 세그먼트에서
는  BX가, 스택에서는 BP가 이런 용도로 사용된다. 이 레지스터들은
  베이스 레지스터(base register)라고 불린다.
예) 배열 LIST는 다음과 같이 인덱스될 수 있다: LIST[DI]
    LIST의 오프셋을 BX 레지스터에 넣어 두었다면
           LIST[DI] <==> [BX][DI]
★ 베이스 주소를 레지스터에 넣어 두면 1개의 명령문을 사용하여 여러
개의 자료 구조를 액세스할 수 있다.
★ 더 복잡한 형식: TABLE[BX][DI]
  두 레지스터의 값이 자료 항목의 오프셋에 더해진다.
  예) BX에 20 들어 있고, DI에 4가 들어 있다면
      TABLE[BX][DI] <==> TABLE + 24 이다.
★ 이중 인덱싱(double-indexing)을 사용하여 얻는 점
  - 자료구조 안에서 베이스 주소를 설정할 수 있다는 것이다.
예) TABLE을 1바이트짜리 원소로 30행 100열짜리 테이블이라고 하자.
    - BX : 특정 행을 가리키도록 하자.
    - DI나 SI: 그 행의 원소를 인덱스할 수 있다.
    첫째 행: 0번째 바이트부터 99번째 바이트
    둘째 행: 100번째 바이트로부터 199번째 바이트
    18번째 행의 57번째 원소: BX = 1700, SI = 56를 저장한 후에
    아래와 같이 함
           TABLE[BX][SI] <==> TABLE + 1756
베이스 레지스터: BP 레지스터
★ 스택의 주소 지정: 대부분의 경우에 SS, SP 레지스터를 사용
     SS : 세그먼트 주소,   SP: 스택 탑의 오프셋
★ 가끔은 스택 내부에 있는 정보를 액세스할 필요가 있을 때도 있다.
   이 때는 BP 레지스터에 스택 내에서의 베이스 주소를 저장한다.
예) 프로시저 A가 프로시저 B를 호출할 때 스택을 통하여 어떤 정보를
    프로시저 B에게 전달한다고 하자.
     - 프로시저 B가 프로시저 A로부터 제어권을 넘겨받은 순간에
       스택 탑의 오프셋을 BP 레지스터에 저장하여 두면 나중에
       어떠한 정보가 스택에 푸쉬되어도 프로시저 A로부터 전달받은
       자료는 BP의 값을 베이스 주소로 하여 액세스할 수 있다.
예) 프로시저 A가 10개의 워드를 스택에 푸쉬하였다고 하자.
    - 프로시저 B의 실행이 시작되면, 프로시저 B가 가장 먼저 하는 일
      은 SP의 값을 BP에 복사함으로써 스택 탑의 오프셋을 저장함.
   - 프로시저 B는 언제라도 10개의 워드를 다음과 같이 엑세스함
     SS:BP
     SS:BP+2
     SS:BP+4
     .....
     SS:BP+18
★ BP가 베이스 주소로 사용되면 SS가 묵시적으로 가정됨.
   SS:BP+2    <==> BP+2

주소를 지정하는 일반적인 규칙
★ 직접 주소를 지정할 때
     TABLE
     TABLE[SI]
     TABLE[DI]+8
     TABLE[BX][SI]+8
★ 간접 주소를 지정할 때
   - SP, BP, BX, SI 또는 DI를 사용한다.
   - BP나 BX가 사용될 때는 SI나 DI가 인덱스로 사용된다.
     [BP]
     [SI]
     [BX][DI]
     [SI]+4
     [BP][DI]+4
★ 간접 방식이든 직접 방식이든 하나의 주소에는 2개 이상의 베이스
  레지스터가 사용될 수도 없고 2개 이상의 인덱스 레지스터가
  사용될 수도 없다.
★ 인덱스의 값을 지정할 때 어셈블러는 다음의 규칙을 따른다.
     인덱스의 값에는 특정 순서가 없다.
     레지스터의 이름은 대괄호에 싸여 있어야 한다.
  레지스터의 이름들과 한 개의 상수 변위량을 모두 하나의 대괄호
안에 넣어 사용할 수 있는데, 이 때 이들은 각각 + 부호로 분리되
어 있어야 한다.
  레지스터의 이름 앞에 상수 변위량을 쓸 수도 있는데 이 때는 이
두 값 사이에 + 부호가 있을 필요가 없다.

   예) TABLE[BX][SI]+8
       TABLE[BX+SI+8]
       TABLE[8+SI+BX]
       [BP][SI]+12
       12[BP][SI]
       12[BP+SI]


★ 아래의 패턴을 추천함
   (1) 직접 주소의 표현: 이름[베이스][인덱스]+상수
       예) TABLE[BX][SI]+8
   (2) 간접 주소의 표현: [베이스][인덱스]+상수
       예) [BP][DI]+8


코드 세그먼트 내에서의 주소 지정 방식
★ 코드 세그먼트로의 주소 지정:
   프로세서가 CS 레지스터와 IP 레지스터를 사용해 자동 해결
★ CS: 코드 세그먼트의 세그먼트 주소가 있음
   IP:바로 다음에 수행될 명령의 오프셋이 있음
★명령을 실행할 때마다 IP 는 그 다음 명령을 가리키도록 수정됨.
★ 다음에 실행될 명령이 분기 명령, 프로시저 호출 등이면
   프로세서는 IP 레지스터의 값을 그에 맞게 바꾼다.
★ 코드 세그먼트로의 주소 지정은 자동적으로 이루어지므로
   대부분의 경우에 CS 레지스터와 IP 레지스터의 값은 잊고 지내면 됨

'Algorithm' 카테고리의 다른 글

선점,비선점 스케쥴링  (1) 2008.08.19
병행프로세스와 상호배제  (0) 2008.08.19
RISC 기본원리  (0) 2008.08.19
deadlock 4가지  (0) 2008.08.01
B-, B+ Tree  (0) 2008.08.01
Posted by 으랏차
,