*원*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 4
검색어 입력폼
  • [프로그래밍언어] 논리형 프로그래밍 평가B괜찮아요
    - 프로그래밍언어개념 연구보고서④병렬 프로그래밍소 속: 공 학 대 학학 과: 컴 퓨 터 학 과학 번: 2 0 0 1 1 5 2 1이 름: 손 원 락담당교수: 이 계 영 교수님제출날짜: 2004년 5월 4일논리형 프로그래밍■ 주요내용 및 목차1. 논리형 프로그래밍의 개요 --------------------- 3page2. WHAT과 HOW ---------------------------- 3page3. 비절차적 언어의 예 -------------------------- 4page(1) 데이터베이스 언어(2) SETL(3) Snobol44. Prolog ----------------------------------- 5page(1) 사실, 규칙, 질문(2) 단일화와 퇴각 검색(3) 일반적인 자료 구조5. Prolog와 Snobol4의 단일화 개념----------------- 9page[Reference] --------------------------------- 10page■ 논리형 프로그래밍의 개요논리형 프로그래밍의 배경 : 프로그래밍 언어들의 수준이 점점 높아져 가고 있어 프로그래머에게 무한한 창조성을 요구하게 되어 많은 시간이 소요되고 비경제적이며, 오류를 발생시키는데, 그 원인은 종래의 컴퓨터들에서 선언적 기술(declarative description)을 할 수 없기 때문이다. 따라서 사용자의 요구 사항들이 절차적 기술(procedural description)로 상세하게 번역되어야 하는데 논리형 프로그램은 이런 요구사항에 부응하여 탄생하게 되었다.논리형 프로그래밍의 목적 : 실행 가능한 기술(executable description)의 영역을 훨씬 높이 추구하여 사용자 요구를 저 수준의 절차적 구현으로 변형할 필요 없이 직접 명세를 실행 가능하도록 하는 것.논리적 프로그램 : 프로그래머는 해를 구할 수 있는 문제를 기술하기 위해 사실들(facts)과 특성들(properties)을 선언함. 이러한 정보들은 취급하는 방법에 관한 또 다른 언급 없이도인은 종래의 컴퓨터들에서 선언적 기술을 할 수 없기 때문이다. 따라서, 사용자의 요구 사항들이 절차적 기술로 상세하게 번역되어야 한다.논리형 프로그래밍은 실행 가능한 기술의 영역을 훨씬 높이 추구하여 사용자 요구를 저수준의 절차적 구현으로 변형할 필요없이 직접 명세를 실행 가능하도록 하는 것이 최종 목적이다.어떤 선언적 논리에 기반을 둔 기술 방법으로 정의된 문제가 있을 때, 한 문제가 해결되는지 질문을 제시할 수 있으며, 또 해를 구하기 위해 이미 정의되어 있는 선언적 몸체와 일치하는 것을 찾아 달라고 시스템에게 요구할 수도 있다. 따라서, 해를 구할 수 있는 문제가 목표로 명세되어야 하는데 이 목표는 주어진 선언의 결과로서 증명되어야 한다.? 명령형 언어나 함수 프로그래밍 언어들은 모두 절차적(procedural)특성을 갖는다. 즉, 이 언어들은 문장들이나 함수를 어떤 수서로 나열하여 문제의 해를 구할 것인가를 기술한다. 한편 논리 프로그래밍 언어는 선언적 형태로 문제를 정의하는데. 목적이 무엇인가를 기술하고 이 목적의 증명을 찾아나가는 구현 방법을 기초로 한다.? 명령형 언어나 논리형 언어 모두 문제를 해결하는 방법에서 창조성을 요구한다. 순차 언어에서 정렬 프로그램을 작성하는 방법이 서로 다른 것과 마찬가지로 해를 선언적으로 형식화하는 방법도 서로 다르다. 선언적 방법은 문제의 본질을 보다 확실하게 접근함으로써 해를 구하려 하지만 명령적 방법에서 원시 연산을 가지고 어떻게 해를 형식화할 수 있는가에 더 깊은 관련이 있다. 이것은 다음과 같이 다시 설명할 수 있다. 논리형 프로그래밍은 소프트웨어 개발시 요구 명세에 더 집중하해야 되며, 임계 부분에서 창의성을 요구한다. 즉, 논리형 프로그래밍은 명령형 언어보다 소프트웨어 생산 주기의 앞 단계에서 직면한 한계성을 해결하는데 초점을 맞추어야 한다.? 논리형 프로그래밍은 실행 가능한 명세를 작성하기 위한 수단으로 제공된다. 논리형 언어는 초기에 간결하게 구현해 보기 위해 소프트웨어 생산의 요구 단계에 서 사용할 자료 검색은 SELECT문장으로 이루어짐.(2) SETL?1970년 초에 뉴욕대학에서 설계되고 구현.?매우 높은 수준의 집합 지향(set-oriented) 언어.?현재 소프트웨어 원형(prototype) 언어로서 사용되고 있음.예) 초기 Ada 번역기의 구성에 사용?내장된 강력한 선언적 구조▷ 자료형 : 집합(sets), 투플(tuple), 상(map)?집합 : 수학에서의 의미와 유사하며 반복과 순서가 없는 객체들의 모임.?투플 : 순서가 명시되어 있는 모임으로서 각 구성 요소들은 첨자를 통해서 접근.?사상 : 순서쌍(ordered pair)의 모임.첫 번째 원소 → 사상의 정의역을 구성.두 번째 원소 → 치역을 나타냄.※ 언어에서의 이와 같은 집합 이론적 요소가 일반적으로 논리 연산자와 for each, there exists등과 같은 한정자를 포함하는 술어 해석식(predicate calculus formula)을 사용한 고수준의 선언적 형식으로 조작할 수 있게 한다.?프로그램의 결과를 생성하는 데에는 비효율적이지만 SETL과 같은 추상 언어를 사용하는 주된 이유 → 프로그래밍의 원형을 짧은 기간 내에 작성해 볼 수 있기 때문.(3) Snobol4?패턴(pattern) : 현재의 프로그래밍 언어에서 선언적 구조를 잘 표현한 예.문자열 집합을 정의하는 자료 구조.임의의 문자열에서 원하는 문자열을 검사하는 형태 부합문(pattern-matching statement)에서 사용.?가장 중요한 기본 자료형 : 문자열(문자열 지향 언어이기 때문)■ Prolog?연구 환경에서 외부로 알려진 유일한 논리형 언어.?Prolog의 고유한 특성 외에도 개인용 컴퓨터를 포함한 여러 기종에서 구현이 가능하다는 점과 일본의 “Fifth Generation" 프로젝트에 사용된 가장 중요한 언어라는 이유 때문에 널리 알려짐.(1) 사실, 규칙, 질문? 객체와 이 객체들 사이의 관계에 관한 사실들을 명세화함으로써 상황(situation)이나 실세계를 모델화(facts).? 모델화될 1756, 1791).이 질문에 대해 시스템은 YES라고 답할 것이다. 또한?- composer(mozart, 1902, 1982).로 질문하면 NO를 답할 것이다. 이 YES나 NO의 해석은 “YES는 데이터베이스에 저장된 정보를 사용해서 이 물음을 증명할 수 있다.”이며, “NO는 데이터베이스에 저장된 정보를 사용해서 이 물음을 증명할 수 없다.”라는 뜻이다.1) Prolog에서의 질의의 처리?데이터베이스에 있는 자료들과 부합(matching)시키는 행위로서 목표(goal)를 증명하는 것처럼 처리.?목표가 변수를 갖지 않으면 사실들에서 동일한 이름과 동일한 인수가 발견되는 즉시 부합이 일어나게 되고, 변수를 가지면 변수들은 자동적으로 부합되는 사실의 인수로서 결정됨.2) Prolog에서의 변수의 개념?변수는 폰 노이만 기계에 맞는 기존 언어의 변수 개념과는 근본적으로 다름.?변수는 값이 변경될 수 있는 기억 장소를 나타내는 것이 아니라 함수형 언어에서처럼 수학적인 개념의 변수로 행동함.3) Prolog의 규칙?모델화된 실세계의 특징을 기술.?표현 형식“만일 p1, p2, ..., pn이 순차적으로 모두 성립되면 p가 성립된다.”→ 논리 술어에서의 이러한 형태들을 혼절(Horn clauses)이라고 하며, 이 혼절은 Prolog의 추상 처리기(abstract processor)에 의해 “목표 p를 풀기 위해서 부목표 p1, p2, ...의 해로서 p를 처리한다.”고 해석됨.?Prolog에서 혼절 문장을 표현하는 구문p :- p1, p2, ..., pn→ p는 규칙의 머리(HEAD)라 하고 p1, ..., pn은 규칙의 부목표(sub-goal)라 함.예)작곡가에 대한 사실들의 데이터베이스에 같은 이름을 갖는 두 작곡가가 없다고 가정하고, 어떤 두 작곡가가 동시대에 활동했다는 것을 명세하기 위해서는 데이터베이스에 다음과 같은 규칙을 첨가할 수 있다.contemporary(X, Y) :- composer(X, B1, D1),composer(Y, B2, D2),x머리에 명세된 목표를 증명하기 위해서 규칙의 부목표들이 증명되어야 하고 규칙의 부목표들을 증명하는 동안 규칙의 다른 변수들이 바인딩 될 수 있다.(2) 단일화와 퇴각 검색1. 대화식(interactive) 시스템사실과 규칙, 질문들이 대화적으로 제시,응답은 단말기의 화면에 나타남.2. 질의?시스템이 증명하려는 목표?목표는 사실과 규칙들의 집합이 주어짐으로써 반복적으로 증명을 유도하기 위해 선택할 수 있는 여러 개의 부목표로 분해됨.3. Prolog 프로그램 실행을 지원하는 기계?목표 지시 해석(goal directed interpretation)으로 간주될 수 있음.?추론 엔진(inference engine)이라고도 부름.4. Prolog 인터프리터에서 실행되는 기본연산?단일화(unification) - 형태 부합과 변수의 바인딩을 포함한 것.?단일화의 주어진 목표와 세가지 조건▶ 증명하려는 목표와 동일한 이름▶ 인수의 수가 동일한 경우▶ 대응되는 (좌에서 우로) 모든 인수들이 다음과 같은 조건 중 하나를 만족하는 경우→ 대응되는 인수가 같은 상수값일 때→ 대응되는 인수가 바인딩되지 않은 변수이고 상수일 때, 이 경우에 변수는 대응되는 상수값으로 바인딩된다.→ 대응되는 인수 둘 다 변수일 때, 이 경우에는 변수들이 공유되는데, 하나가 이미 바인딩되었다면 다른 것도 같은 객체에 바인딩된다. 둘 다 바인딩되지 않았으면 어느 하나가 바인딩되자마자 둘 다 같은 객체에 바인딩 된다.?인터프리터의 기본적인 쟁점▶ 탐색하는 방법?인터프리터가 가능한 모든 경로를 실패하기 전에 어떻게 찾을 수 있는가, 또 지나간 경로를 어떻게 유지할 수 있는가 하는 것.?Prolog 인터프리터는 하향식(top down)이면서 왼쪽에서 오른쪽으로 주어진 규칙의 부목표들을 증명함.?각각의 부목표는 마치 그것이 목표인 것처럼 증명되고, 인터프리터는 깊이 우선(depth-first)법칙을 엄격히 따른다.?목표와 사실(또는 규칙의 머리) 사이에 부합이 이루어지면 인터프리터는 부합된 사실(또는 규칙)을 ①
    공학/기술| 2004.05.17| 10페이지| 1,000원| 조회(886)
    미리보기
  • [프로그래밍언어] 함수형 프로그래밍
    - 프로그래밍언어개념 연구보고서②함수형 프로그래밍소 속: 공 학 대 학학 과: 컴 퓨 터 학 과학 번: 2 0 0 1 1 5 2 1이 름: 손 원 락담당교수: 이 계 영 교수님제출날짜: 2004년 4월 6일함수형 프로그래밍■ 주요내용 및 목차1. 함수형 프로그래밍의 개요 -------------------- 3page2. 명령형 언어의 특징 ------------------------- 3page(1) 명령형 프로그램(2) 명령형 언어의 문제점3. 함수형 프로그래밍의 본질 -------------------- 6page(1) 함수(2) 수학 함수와 프로그래밍 언어 함수(3) 함수 언어(적용언어)4. 간단한 순수 함수 언어 ---------------------- 8page(1) 원시 함수(2) 함수 형식5. 기존 언어의 함수 기능 ---------------------- 9page(1) Lisp6. 적용형 언어와 명령형 언어의비교 -------------- 10page[Reference] ------------------------------- 10page■ 함수형 프로그래밍의 개요현존하는 대다수의 프로그래밍 언어가 폰 노이만(von Neumann) 기계 구조에 기초하여 설계되었다. 우리가 지금까지 살펴본 모든 언어는 이 구조를 추상화한 것이다. 이러한 추상 개념으로 언어를 설계할 때, 우리는 언어 기능의 유용성과 실행의 효율성간에 균형을 맞추려고 노력한다. 효율은 현재 사용되는 대부분의 언어에 잘 반영되어 있다.실행효율은 폰 노이만 컴퓨터에서의 성능으로 측정된다. 이에 따라 폰 노이만컴퓨터 구조가 프로그래밍 언어 설계의 기본적인 고려 사항으로 간주되어 명령형 프로그래밍 언어가 발전되었다.이와 대조적으로 수학적 함수에 기반을 둔 적용형 언어인 함수 프로그래밍 언어가 있다. 함수형 프로그래밍이란 프로그래밍의 주된 구조가 함수 호출에 기반을 둔 프로그래밍 접근 방법을 의미한다. 이 방법은 일반적인 문제 해결에 실질적으로 접근하는 데 도움을 주며 계산적인 측면에 통찰력을 갖도록 한다. 최근 10여년 동안에 학계와 산업 연구 분야에서 함수형 프로그래밍에 관한 흥미로운 연구와 관심이 증가되어 왔다.함수형 프로그래밍을 지원하는 고급 언어를 함수 프로그래밍 언어(약해서 함수언어)라 하며, 일반적으로 함수 언어가 주목받을 만한 세 가지 중요한 측면이 있는데 그것은 다음과 같다.? 함수 프로그램이 기존 명령형 언어로 작성한 프로그램보다 간결하고, 더 추상적이며 이해하기 쉽다는 것이다.? 함수 프로그램은 형식적인 분석과 조작이 용이하다.? 함수 프로그래밍 언어가 자연스럽게 병렬 컴퓨터에 구현될 수 있다.이러한 세 가지 특성들은 함수 언어의 수학적 특성에서 유래된 특징이다. 함수 프로그램에서 구축된 블록들은 수학적 함수 개념을 갖는 실제 함수들이다. 즉, 함수(프로그램 블록)들은 함수가 사용된 환경과 관계없이 단지 주어진 입력값들을 출력값들로의 변환을 기술한 것이다.이러한 개념은 함수 프로그램이 소프트웨어 공학에서 사용되는 일종의 계층 명세로 간주되기 때문에 프로그래밍 측면에서 매력적이다. 또한 함수 프로그램의 형식적인 조작이 기존의 수학적 표기를 상대적으로 쉽게 적용할 수 있게 한다.■ 명령형 언어의 특징Fortran, Cobol, Pascal, Ada 등과 같이 현재 많이 쓰고 있는 대부분의 언어는 폰 노이만식 기곅 구조를 염두에 두고 설계된 언어이다.이러한 부류의 언어를 명령형 언어(imperative language)라고 하며, 이 언어에서 프로그램의 작업 단위는 문장(statement)이다. 언어와 컴퓨터 구조는 서로 밀접한 관련을 갖고 있으며, 컴퓨터 구조는 명령형 언어에 지대한 영향을 주었다. 이러한 영향은 명령형 언어의 다음과 같은 세 가지 특징에서 찾을 수 있다.(1) 변수기계의 주된 구성 요소 중의 하나가 바로 여러 개의 셀(cell)로 구성된 기억 장치이다. 기억 장치에는 자료가 저장되며, 그 저장 장소를 지정하려면 셀마다 이름이 있어야 한다. 특히 어셈블리 언어 프로그래밍시에 기억장소 셀에 대한 이름 부여를 접하게 된다.값은 셀에 저장되며 셀의 이름으로 값에 접근한다. 좀더 고급 언어에서는 기억 장치 셀과 이름의 개념이 변수의 개념에 나타난다. 본질적으로 프로그래밍 언어의 변수는 값이 저장되는 기억 장치 셀이다. 따라서, 프로그램 작성 목적이 비록 값을 만들어 내는 것이라 할지라도 프로그램 작성시 값뿐만 아니라 그 값이 저장되어 있는 셀도 고려하여야 한다. 또 변수가 있음으로 해서 부작용(side effect)과 이명(aliasing)의 문제가 발생한다.(2) 배정 연산(assignment operation)기억 장치 구조와 밀접한 관련을 갖고 있는 것으로서 “모든 계산치는 기억 장치 셀에 저장되어야 한다.”는 개념을 생각할 수 있다. 이것이 바로 배정문의 필요성을 보여주는 것이다. 기억 장치 셀과 주소 지정이 저급 개념이 모든 프로그래밍 언어에 널리 퍼져 있기 때문에 프로그래머는 폰 노이만 구조의 사항에도 관심을 가져야 한다.(3) 반 복명령형 언어의 프로그램은 일련의 기본 단계를 반복 수행함으로써 주어진 문제를 처리한다. 이는 명령어를 기억 장치에 저장하는 폰 노이만 구조에 기인한다. 복잡한 것을 수행하는 유일한 방법은 일련의 명령을 반복하는 것뿐이다.? 명령형 프로그램명령형 언어의 특징과 그 결과간의 상호 작용을 다음 예를 가지고 알아보자.이 예는 소수를 작성하는 Pascal 프로그램이다.{2~n 사이의 소수를 인쇄}program primes(input, output) ;const n = 50 ;var i : 2 . . n ;j : 2 . . 25 ;i_is_prime : boolean ;beginfor i := 2 to n dobegin {i가 소수인가?}j := 2 ; i_is_prime := true ;while i_is_prime and ( j ,
    공학/기술| 2004.05.17| 10페이지| 1,000원| 조회(1,088)
    미리보기
  • [프로그래밍언어] 병렬 프로그래밍
    - 프로그래밍언어개념 연구보고서④병렬 프로그래밍소 속: 공 학 대 학학 과: 컴 퓨 터 학 과학 번: 2 0 0 1 1 5 2 1이 름: 손 원 락담당교수: 이 계 영 교수님제출날짜: 2004년 5월 4일병렬 프로그래밍■ 주요내용 및 목차1. 병렬 처리 소개 -------------------------- 3page(1) 공유 메모리 구조(2) 분산 메모리 구조2. 병렬 처리와 프로그래밍 언어 ---------------- 4page(1) 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍(2) 프로세스 생성과 소멸(3) 명령어 수준의 병렬성(4) 프로시저 수준의 병렬성(5) 프로그램 수준의 병렬성3. 세마포어 ------------------------------- 8page4. 모니터 --------------------------------- 9page(1) CSP/K(2) Concurrent-Pascal5. 메시지 전달 기법------------------------- 10page6. 실시간 언어----------------------------- 11page[Reference] ------------------------------ 11page■ 병렬 처리 소개병렬 처리(parallel processing)란 다수의 프로세서들이 여러 개의 프로그램들 또는 한 프로그램의 분활된 부분들을 동시에 처리하는 기술을 의미한다. 병렬 처리는 한 프로그램을 여러 개의 작은 부분들로 분할해서 병렬로 실행시킨 결과가 전체 프로그램을 순차적으로 실행한 경우와 동일한 결과를 얻을수 있다는 것을 보장해야 한다.병렬 처리의 구현을 위한 병렬 프로그래밍에 대한 연구는 두 가지로 분류할 수 있다. 첫 번째는 병렬 프로그래밍 언어 자체에 대한 연구이다. 즉, 병렬 처리가 가능한 병렬 프로그래밍 언어를 이용하여 사용자가 병렬 프로그램을 작성하는 방법이다. 이러한 병렬 프로그래밍 언어에는 Ada, Occam, Concurrent Pascal 등이 존재한다. 이 개념은 병행 프로그램(D는 범용성이 뛰어난 구조이다. 그러므로 많은 병렬처리 컴퓨터들이 MIMD 모델 구조를 채택하고 있으며 앞으로도 마찬가지의 현상을 나타낼 것으로 예측된다.(1) 공유 메모리 구조이 구조는 메모리가 어느 한 프로세서에 속해 있지 않고 모든 프로세서들에 의해 공유되는데 그림 과 같다. 이러한 구조는 병렬 처리용 프로그램의 작성이 용이하고 이식성이 응용 프로그램들이 뛰어난 공유 메모리 방식의 프로그래밍 모델을 지원하며 프로세서들은 고유 메모리 내의 공유 변수를 이용하여 서로간에 통신이나 동기를 수행 할 수 있다. 또한 프로그램실행 시간 동안에 각 프로세서들이 처리할 작업들을 동적으로 균등하게 배당할 수 있으므로 프로세서의 이용률을 극대화시킬 수 있다. 그러나 이러한 구조에서는 여러 개의 프로세서들이 메모리와 같은 자원을 공유함으로 동시에 사용하고자 하는 경우 에 충돌(conflict)이 발생하게 된다. 이러한 결점을 보완하여 성능을 향상 시키고자 하는 여러 연구가 진행 중인데 상호 연결망의 고속화와 캐시 메모리의 사용들을 들 수 있다. 그러나 캐시메모리를 사용하게 되면 자료 일관성 문제(data coherency problem)가 발생하게 된다.공유 메모리 구조에서 일반적으로 사용되는 상호 연결망은 다음과 같다→버스(Bus)→크로스바 스위치(Crossbar Switch)→다단계 상호 연결망(Multistage Interconnection Network : MIN)(2)분산 메모리 구조분산 메모리 구조에서는 프로세서들이 메모리를 공유하지 않고 각 프로세서들이 자신의 메모리를 별도로 가지고 있다. 이러한 하나의 프로세서와 자신의 메모리 모듈을 프로세싱 단위(processing unit)라 하며, 프로세싱 단위들간에는 상호 연결망으로 연결되어 있는데, 이들간에 메시지를 주고 받음으로써 상호 연동하게 하는 형태의 병렬 처리 환경을 갖게 된다. 이러한 구조에는 각 프로세서들에 의해 실행될 프로그램이 컴파일 단계에서부터 별도로 작성되어 각 지역 기억장소로 적재되며, 프로세서들상황에서 더 부합된다고 설계자들이 주장하듯이 몇몇 소수의 언어들은 이 두 가지 모델을 모두 포함하고 있다. 언어 설계자는 또한 언어 정의에 있어서 병렬 기법이 포함되지 말아야 한다는 관점을 보이고 있다. 다음 예제는 자주 다루어지는 대표적인 2가지 예제이다.? 유한 버퍼 문제이 문제는 두개의 프로세스가 계산과 입출력 작업을 함께 수행한다고 가정한다. 한 프로세스는 두 번째 프로세스에 의해 사용될 값들을 생성한다. 버퍼 프로세스는 생성된 값들이 사용될 때까지 이 값들을 저장한다. 이 문제의 해결 방법은 생성된 값을 저장할 공간이 있어야 만 프로세스가 값을 생성할 수 있으며, 값이 생성된 후에야 다른 프로세스가 소비할 수 있다는 것을 보증해야 된다. 이것은 프로세스간 통신과 동기화를 필요로 한다.? 병렬 행렬 곱셈병행성이 매우 큰 속도 행상을 가져 올 수 있다. 행렬은 다수의 정수형 행렬 선언과 같이 이 차원 배열이다.VAR a, b, c :ARRAY[n, n] OF INTEGER행렬 a와 b의 곱인 행렬 c를 구하는 알고리즘이 반복문으로 제공되어있다.FOR I :=1 TO nDOFOR j :=1 TO nDOc[i, j] :=0;FOR k := 1 TO n DOc[i, j] := c[i, j] +a[i, k]*b[k, j];END;END;END;이 알고리즘은 순차적으로 수행된다면 n3 단계가 걸린다. 그러나 각c[i, j]계산 하는데 프로세스를 각각 별개로 배정하고, 각 프로세스마다 분리된 프로세서로 실행한다면 이 계산은 n 단계의 시간으로 수행될 수 있다. 이러한 알고리즘은 병렬 알고리즘에서 심도있게 고찰되어 있다.사실 이 알고리즘은 가각의 프로세스에 의해 c[i,j]를 계산할 때 쓰기 충돌(write conflict)이 없기 때문에 가장 단순한 형태의 알고리즘이다. 그러므로 행렬을 공유 메모리에 저장하여 접근할 때 상호 배제를 보장할 필요까지 없다. 그러나 c의 결과는 그것을 계산하는 모든 프로세스가 종료할 때까지 사용될 수 없으므로 동기화 문제는 있다. 프로ata) 프로그래밍이라 한다. 그러나 SPMD 프로그램은 프로그램 코드의 다른 세그먼트들을 실행할 수 있고 꼭 동기화되어 실행할 필요가 없다는 것이 SIMD 구조와 다르다. 프로세스 생성의 두 번째 방법에서는 한 코드의 세그먼트가 프로세스와 명시적으로 관련을 맺는다. 그래서 다른 프로세스는 각기 다른 코드를 가지며 이 방법을 MPMD라 한다. 이 경우의 전형적인 예가 소위 fork-join 모델이다. 이 모델에서는 한 프로세스가 몇 개의 자식 프로세스를 생성하는데 각기 자신의 코드를 소유하며(a fork), 이 부모 프로세스는 모듈들의 프로세스가 끝나기를 기다린다(a join). 불행히도 UNIX시스템 호출fork()는 실제로 SPMD 프로세스 생성기이고 fork-join 생성기가 아니기 때문에 이름에 혼동이 생긴다. 그래서 fork-join 생성기라기 보다는 MPMD 프로세스 생성기라는 용어 사용을 더 좋아 한다. 프로세스 생성의 또 다른 관점은 각각의 분리된 프로세스가 될 수 있는 코드의 크기에 초점을 맞추는 것이다. 어떤 설계에서는 각 명령이 한 프로세스가 되어 병렬로 실행된다. 두 번째 가능성은 한 프로시저가 프로세스에 배당되는 것이다. 세 번째 가능성은 프로세스가 전체 프로그램을 표현하는 것이다. 때때로 각각의 프로세스에 배당 가능한 코드 크기의 종류를 프로세스의 입상(granularity)이라한다. 병렬 처리를 위한 세 가지 선택 방법은 다음과 같다.a. 명령어 수준의 병렬성 - 작은 덩이b. 프로시저 수준의 병렬성 - 중간덩이c. 프로그램 수준의 병렬성 - 큰 덩이입상(granularity)은 하드웨어의 종류에 따라 프로그램의 효율에 대한 문제가 될 수 있다. 작은 덩이의 많은 프로세스들은 이들의 생성과 유지에 막대한 오보헤드를 초래할 수 있으므로 적은 수의 큰 프로세스보다 느리게 수행되나. 반면에 큰 덩이의 프로세스들은 프로그램에 병렬성을 부여하는 기회를 어렵게 할 수 있다. 프로세스 생성방법과 관계없이 프로세스 생성자(부모 프로세스)와 피 생성전체 프로그램이 한 프로세스가 된다. MPMD 방식에서 이 방법이 전형적으로 사용되는데 한 프로그램이 자신의 완전히 사본을 생성함으로써 새로운 프로세스를 생성한다. 이방법의 전형적인예가 UNIX의 fork()시스템 호출이다. fork 호출은 호출하는 프로세스의 동일한 사본으로서 자식 프로세스를 생성하며, fork 호출 시점의 모든 변수와 환경을 그대로 포함한다. 함수 fork 호출이 반환하는 값에 의해 자식 프로세스(반환값=0)인지 부모 프로세스(반환값=0이외의 숫자)인지를 구별한다. 함수 fork 호출로 생성된 프로세스는 exit 호출로 종료될 수 있다. 프로세스 동기화는 wait 호출에 의해 수행된다. 다음은 병행 언어의 필요한 사항들은 보자.? 병렬로 실행될 수 있는 코드 묶음을 한정하는 방법 : 우리는 이러한 것들을 프로세스, 태스크 또는 collateral 절이라 부를 것이다.? 프로세스의 실행 시작을 기술하는 방법? 공유 자료의 상호 배제를 보장하는 방법: 이에 대해서는 근본적으로 차이가 나는 두 가지 방법이 존재한다. 하나는 공유 자료를 보호하는 언어 학상의 기법을 제공하는 것이다.다른 하나는 모든 공유 자료를 프로세스들 사이에서 메시지를 통하여 통신 되도록하는 것이다.? 병행 프로그램들을 동기화 시킬수 있는 수단이 제공되어야 한다. 예를 들면, 모니터의 대시 - 신호(wait-signal)연산과 Ada의 랑데부(rendezvous)가있다.? 프로세스에 우선 순위를 부여하는 방법? 프로세스를 지정된 시간동안 지연시키는 기법■ 세마포어(Semaphores)프로세스들이 공유하고 있는 변수들을 참조하는 일련의 문장들을 임계 구역(critical region)이라 하는데, 여기에서 프로세스는 공통 변수를 읽고, 테이블을 갱신하고, 파일을 접근하는 행위 등을 행한다. 하나의 프로세스가 어떤 정해진 시간 안에 임계구역의 실행을 항상 끝낼 수 있다면, 이 프로세스는 종료(terminate)한다고 한다. 한 프로세스가 어느 한정된 시간 내에 임계 구역에 들어갈 램이다.
    공학/기술| 2004.05.17| 11페이지| 1,000원| 조회(1,354)
    미리보기
  • 볼링의 기초
    볼링의 역사볼링의 기원은 명확하지는 않으나 영국의 고고 학자인 프란다스 페트리 교수가 이집트의 고분을 발굴하는 도중 BC 5천년 경 이상 된 것으로 보이는 어린아이 무덤 속에서 현재의 볼링과 닮은 꼴의 돌로 만든 볼과 핀을 발견되었습니다. 당시 이집트에서는 죽은 사람이 생전 가장 즐기고 중요하게 여긴 것을 무덤에 같이 매장하는 풍습이 있었던 것으로 미루어 고대 이집트에서는 어떤 형태로 든 볼링이 행해졌으리라 추측할 수 있습니다. 이것을 오늘날 지구상에 생겨난 최초의 볼링 용구로 보고 있습니다. 또 중세 유럽에서는 독일의 수사들이 케글링( kegling )이라는 종교의식을 하고 있었습니다.케겔(kegel)이란 원추형의 기둥이라는 뜻으로, 이것을 세워 놓고 둥근 물체를 굴려서 케겔을 넘어 뜨리면 신앙심이 깊은 사람이라 인정해 주었습니다. 하지만 그때의 케겔은 놀이라기 보다는 종교의식에 가까웠습니다. 이 케겔의 의식이 점점 놀이로 인식되어지고 전유럽에 퍼지게 되면서 그 후 스포츠로서 각광을 받게 되었습니다. 지금도 독일에서는 볼러를 케글러라고 부르고 있습니다. 유럽사람들에의해 처음 미국으로 전파된 '나인 핀' 게임은 그 때까지 제각기 달랐던 핀의 수를 9개로 하여 다이아몬드형으로 핀을 세우도록 정하는 등 게임 규칙을 만들어 이때부터 볼링에 기본적인 틀이 만들어지게 되었습니다.미국으로 건너간 볼링은 점점 인기를 끌기 시작하였지만 게임에 도박성이 성행하여지면서 한때 몇몇 주에서는 전면적으로 금지를 당하게 된때도 있었습니다. 그러나 볼링에 관심을 가진 많은 사람들의 노력과 개혁의 결과로 핀수를 9개에서 10개로 늘리고 세트하는 방법도 다이아몬드형에서 삼각형으로 바뀌면서 볼링붐을 일으켜 법의 제한을 받지 않고 순수 스포츠로 다시 성행하게 되었습니다. 1895년 9월9일 뉴욕에서 처음으로 미국 볼링 협회( ABC)가 설립되어 볼링의 저변 확대가 모색되었습니다. 볼링 경기 규칙이 통일 되고 볼과 핀, 레인 그 밖의 용구에 관한 세칙이 제정되었습니다. 제2차 세계대전 중에서도 식 종목 채택.1986 제10회 아시안 게임에서 금메달 2개 동메달 2개로 종합 준 우승.1988 서울 올림픽 전시 종목으로 당시 권종률 금메달 획득.볼링의 매력볼링의 매력은 여러 가지가 있겠지만 그 중에서도 바로 인간의 파괴의 본능을 충족시켜주는데 있다고 할 수 있습니다 . 눈 앞에 있는 열 개의 핀이 동시에 쓰러질 때 느껴지는 쾌감 은 바로 볼링을 중독의 길로 이끄는 첫 번째라 할 수 있을 것 입니다. 그리고 볼링은 하면 할수록 어렵다는 것 ,그 것이 바로 매력이라 할 수 있을 것입니다. 하면 할수록 어렵다는 것은 바로 누구나 즐길순 있지만 누구나 모두 잘할순 없다는 뜻도 되니까요. 그리고 볼링은 연령에 관계 없이 누구라도 간단히 즐길 수 있는 운동입니다. 남녀노소 누구라도 볼을 굴릴 힘만 있다면 부담 없이 쉽게 즐길 수 있는 전천후 스포츠이죠 그리고 힘이 부족한 여성이라 할지라도 꾸준히 즐기시면 높은 애버리지가 나올 수 있습니다. 그리고 현대인들에게 부족한 운동 부족을 간단하게 해결 하면서도 스트레스까지 날려 버릴수있는 일석이조의 역활까지...볼링 3게임 = ( 테니스 20분, 사이클 20분, 골프 18분, 죠깅 15분 )볼링장에 가보면핀 스폿 핀이 서있는 점을 말합니다거 터 레인의 양쪽에 길게 늘어선 홈을 말합니다타겟 스폿 목표가 되는 점을 말합니다 핀을 겨냥하고 볼을 굴리는 것이 아니라 이 타 킷 스폿을 보고 볼을 굴리는 것입니다가이드 스폿 안내하는 점이란 뜻이겠죠 이 점을 이용하여 좀 더 확실한 스트라이크포켓 을 알 수 있습니다릴리즈 스폿 볼을 이끄는 점이란 뜻인데 이 지점에서 볼은 엄지가 빠지기 시작하며볼을 내보내기 시작합니다스탠딩 스폿 스탠스 자리를 잡는 점입니다 다시 말해 이점을 보고 자신의 서는 지점을 파악합니다핀 덱 레인의 가장 끝 자리에 자리잡고 있으며 10개의 핀이 세워져 있습니다어프로치 가늘게 잘라진 보드가 쭉 연결되어있으며 파울라인 까지 의 길이는약 4.28m 정도 입니다레인 레인의 길이는 대략 23.42m 정도이고 파울라인에서 헤드 고무(단단한 성질의 고무)성질을 가진 에보나이트란 재질이 사용되었는데 암모니아 냄새를 심하게 내며 대부분 검정색이었읍니다. 또한 장시간 사용하면 경도가 떨어지기 때문에 70년대 후반부터는 사용되지 않고 있습니다. 이후에 하드성 볼은 호마이카와 폴리에스터, 플라스틱 재질로 발전되었으며 소프트볼은 에폭시 ,우레탄 ,리엑티브 우레탄, 프렉셀, 수퍼 리엑티브.우레탄 ,리엑티브 레진등으로 다양하게 시판되고 있는 실정입니다. 볼의 재질이 발전해야 했던 이유는 볼의 회전력 증가를 위한 마찰력 증대와 핀 액션의 증대를 위한 고탄력의 볼을 만들어 내기 위한 필요에 의해서 였습니다. 흔히 어떠어떠한 볼이 핀을 잘 찬다는 식의 말을 들은 적이 있을겁니다. 만약에 각 볼의 탄력이 모두가 같다면 이런 말은 큰 모순이 되겠죠 하지만 볼의 재질과 코어의 구조나 볼의 지공 방법에 따라 둥그런 볼에는 생명이 들어가고 곧 이어 개성도 숨쉬게 되는 것이죠.볼은 표층부를 이루는 쉘과 볼의 심장과도 같은 코어의 두 부분으로 나눌 수 있습니다. 쉘은 볼러들이 육안으로 관찰이 가능한 부분이며 레인에 닿는 부분이기도 합니다. 쉘의 두께는 1/2 인치에서 5.6인치에 이르기 까지 다양합니다. 쉘은 볼이 핀을 향해 굴러갈 때 레인과 의 스키드와 마찰에 아주 큰 영향을 미칩니다. 같은 레인 컨디션이라 해도 어떤 볼은 레인과의 마찰이 커서 훅이 크게 일어나는 반면 또 어떤 볼은 앞의 볼이 꺾이기 시작한 지점에서도 계속 미끄러지기도 합니다. 볼의 표층부의 거친 정도는 레인의 앞부분에서 볼 액션에 기본적인 영향을 미치게 됩니다. 예를 들어 샌딩처리를 하여 레인과의 마찰 계수를 높인 볼과 폴리싱을 하여 레인과의 마찰계수를 낮춘 볼과의 스키드의 차이를 보면 금방 알 수 있을 것입니다.물론 마찰 계수를 높인 볼이 일찍 회전이 발생합니다. 반면 폴리싱을 하여 마찰 계수를 낮춘 볼은 길게 미끌리며 또 나중에 회전이 일어납니다. 볼링 볼을 연구하면서 가장 우선되면서도 중요한 사항은 볼의 겉 재질이 무엇인가와 이러한 재질이 있는데 이것은 한 프레임에 두번까지 투구할수 있으며 이곳에 넘어진 핀의 수를 기록합니다.FIQ < 세계 볼링연맹 >의 일반 경기 규칙 제 1조에 보면 ' 한게임은 10개의 프레임으로 한다 경기자가 스트라이크를 했을때를 제외하고 9프레임까지는 한 프레임당 볼을 2회 투구한다 10프레임에서는 스트라이크를 했을때는 같은 레인에서 두번 더 굴리고 스페어를 했을 때는 한번 더 굴릴수 있다 ' 고 되어 있습니다.기록하는 법은 스트라이크는 기본적인 점수 10점에 다음투구로 넘어진 핀과 그 다음에 넘어진 핀의 수를 더한 수가 점수가 됩니다.스페어는 기본 점수 10점에 다음 투구로 쓰러진 핀의 수만 가산합니다 파울은 득점상 0 점이며 제2투구째라면 제 1투구의 득점만 유효합니다.스플릿은 기호일뿐 득점관 상관 없읍니다.X 스트라이크~ 제 1투구로 10개의 핀을 전부 넘어뜨렸을때/ 스 페 어 ~ 제 1투구로 남은 핀을 제 2 투구에서 모두 넘어뜨렸을때F 파 울 ~파울라인을 넘어 투구 했을때G 거 터 ~ 볼이 핀에 닿기전에 레인의 옆으로 빠졌을때S 스플릿 ~ 2개 이상의 핀이 벌어져 있을때-- 미스 ~ 제 1 투구에서 남은 핀을 제 2투구에서 모두 쓰러뜨리지 못하고 남길때.볼링을 시작합니다.볼링을 이루는 신체적인 3요소를 따진다면 먼저 스텝,스윙 그리고 리듬이라고 할 수 있을 겁니다. 그 어느것 하나 중요하지 않은 것이 없습니다. 스텝과 스윙 그리고 리듬이 잘 조화된 볼링을 우리는 이상적인 볼링이라고 말할 수 있습니다. 여러분이 생각하는 이상적인 볼링이란 무엇입니까 ? 제가 생각하는 이상적인 볼링이라면 먼저 신체의 에너지는 최소화 하면서도 하이 스코어를 꾸준해 유지할 수 있는 볼링이라고 할 수 있겠지요. 그리고 자신의체격의 조건을 잘 고려하여 자신만의 볼링을 구사 할 수 있다면 더 할 나위가 없겠지요. 우린 텔레비전을 보면 그런 사람들을 만날 수 있습니다. 바로 프로 볼러들이 이상적인 볼링을 구사합니다. 그들은 아주 자연스러우면서도 꾸준히 폭발적인 스코어를 유지하곤 한답니다. 어바로 이 부분입니다. 왜냐하면 스텝과 스윙은 바로 눈에 보이는 부분이지만 이 리듬은 그렇지 않고도 스윙과 스텝 전반에 걸쳐 많은 영향을 미치기 때문입니다. 사람마다 자기 자신에 맞는 고유의 리듬이 있습니다. 예컨대 키가 큰 사람과 작은 사람이 같은 리듬에 맞춘다는 것은 서로 다른 성대를 지닌 두 마리의 새에게 똑 같은 목소리를 강요하는 것이라 할 수 있습니다. 키가 큰 사람은 조금 느린 리듬이 , 키가 작은 사람은 약간 빠른 리듬을 구사하는 것이 훨씬 더 수월하게 볼링을 수행하게 해 줍니다. 여기서 리듬이 스윙과 스텝에 어떠한 영향을 미치는 지 알아 보겠습니다.우선 스텝과 스윙이 모두 똑 같은 리듬으로 행하여 져야 한다는 것입니다. 대분의 초보 분들이 하는 실수 중에 하나가 손 따로 발 따로 노는 그런 부분이 있습니다. 예를 들어 설명하자면 스윙과 스텝이 마지막 슬라이딩 시 모두 같이 들어와야 하며 그렇게 해야만 좀더 파괴력 있고 스피드한 롤을 구사할 수 있으며 좀 더 정확한 컨트롤이 되기 때문입니다.그렇다면 어떻게 해야 스텝과 스윙을 잘 맞출 수 있을 까요? 우선 볼링의 첫 단추를 잘 꿰어야 합니다. 볼링의 첫 단추라 함은 바로 볼링의 첫번째 스텝을 말하는데 이때 우리는 첫 스텝과 스윙이 동시에 시작되어야 합니다. 그리고 스윙에 몸을 맡긴 채 머릿속에는 항상 리듬을 생각하고 있어야 합니다. 그래서 단 한 순간도 리듬이 흩트러지지 않아야 합니다 .그리고 정말 중요한 것은 리듬이 어느 한 순간도 절대 끊기지 않아야 한다는 것 입니다. 리듬이 끊기지 않고 매끄럽게 연결되어야 만이 정말 자연스러운 스윙을 구사할 수 있을 겁니다. 그리고 불필요한 어깨의 힘을 최대한 뺄 필요가 있습니다. 어깨에 힘이 들어가면 발과 손의 리듬이 흩트러지는 경우가 생기기 때문이죠체크 포인트리듬을 머리 속에 항상 생각하고 그 리듬에 맞추려고 노력합시다.리듬은 어느 한 순간도 끊김이 없이 자연스럽게 연결되어야 합니다.볼링의 첫 스텝과 스윙이 동시에 나와야 합니다.몸에 불필요한 힘을 빼고 편안다.
    예체능| 2000.12.03| 16페이지| 1,000원| 조회(1,202)
    미리보기
전체보기
받은후기 1
1개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    1
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 06일 수요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
6:34 오전
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감