C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38621] Re:Re:임계영역문제==>답변 감사합니다.
김상면 [] 1154 읽음    2005-01-04 12:12
아항 그렇군요 이제 자바의 Syncronized 가 하는일을 알겠습니다.
재획득은 영어가 교재에 안나오는군요
아무튼 님의 설명만으로 뭐가 뭔지 알것 같군요
저는 원래 크리티컬 섹션은 아예 진입이 안되는줄 알았거든요
그럼



라스코니 님이 쓰신 글 :
: 저는 자바는 모르지만 제가 알고 있는 분야야 간단히 답변합니다.
:
: 재진입(Reenterant)을 말하자면, 어떤 함수에서 여러개의 instance가 발생하더라도 각각의 함수가 처리하고 있는 데이터의 무결성(integrity)이 손상되지 않고 보존되었을 때 이함수는 재진입 가능하다라고 할 수 있습니다.
:
: 예를 들어, func() 이라는 함수가 있었을 때, 여러 군데에서 콜한다면 다음과 같이 되겠죠.
:
: func()
: {
: }
:
: A()
: {
:     func();
: }
: B()
: {
:     func();
: }
: C()
: {
:     func();
: }
:
: 이때 A, B, C를 각각의 쓰레드라고 했을 때 func()는 여러개의 instance로 나뉘어 실행됩니다. 이럴 때도 문제없이 함수의 기능을 발휘할 수 있을 때 재진입(Reenterant) 가능이라고 합니다. 재진입 가능하지 않은 함수는 멀티 쓰레드에서 사용못합니다. 재진입은 주로 전역번수를 안쓰고 로컬 변수를 사용함으로써 일반적으로 가능합니다.
:
: 그런데,,, 죽어도 전역변수(또는 데이터)를 쓰지 않으면 안되는 경우가 있습니다. 즉 예를든다면 일종의 DB와 관련한 작업 같은 것에서요.
: 임계 영역(critical section)이라는 말은 여기에서 나오는데 전역 변수(또는 데이터)를 핸들링할 때 핸들링 순서, 우선순위 또는 업데이트 우선권을 주지 않으면 DB는 완전히 꼬여 버립니다. 예를 들어 한 문서를 여러명이 편집하고 있을 때 한사람이 문서를 열면 다른 사람은 읽기 전용으로 읽도록 되는 것이 바로 이런 이유입니다.
:
: DB의 무결성을 지키기 위해서 반드시 보호되어야 하는 영역이 임계 영역이라고 볼수 있습니다. 보통은 세마포어, 또는 플래그 같은 것을 사용해서 임계 영역의 조건을 검사합니다. 이런 개념에서 다른 것들이 많이 파생되죠. 순위 역전(Priority Inversion) 같은 것들요.
:
: 재획득은 뭔지 모르겠네요?  영어로 어떻게 되는지 알려 주실수 있나요? 한글이름으로는 잘 몰라서....
:
: 도움이 되었기를 바랍니다.

+ -

관련 글 리스트
38615 임계영역문제 김상면 1280 2005/01/03
38616     Re:임계영역문제 라스코니 1893 2005/01/04
38621         Re:Re:임계영역문제==>답변 감사합니다. 김상면 1154 2005/01/04
38630             Re:Re:Re:임계영역문제==>답변 감사합니다. 라스코니 1122 2005/01/04
38636                 Re:Re:Re:Re:임계영역문제==>답변 감사합니다. 김상면 896 2005/01/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.