동기화 문제 디버깅하기 사람이 컴퓨터 보다 아름다워♪ Advanced Windows Debugging Chapter.10

Slides:



Advertisements
Similar presentations
칠교판 – 탱그램 전주교대 실과교육과 이미현. 칠교판 ( 탱그램 ) 이란 ? 지혜놀이판 또는 탱그램 큰 직각이등변삼각형 2 개 중간 직각이등변삼각형 1 개 작은 직각이등변삼각형 2 개 작은 정사각형 1 개 평행사변형 1 개 =>5 가지의 7 개로 구성됨.
Advertisements

학교 자체평가의 실제 신 동 한. 목 차  표지 제목  학교 소개  평가위원회 구성  지표별 평가의 실제  학교 자체평가의 향후 반영 계획  설문지 처리.
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
KB 스타 경제 · 금융교실 나는 용돈관리왕. KB 스타 경제 · 금융교실 나는 용돈관리왕 선생님은 ? KB 2  이름 : 김국민  별명 : 스타 왕자  소속 : KB 국민은행 소비자 보호담 당 ( 간단한 자기 소개 : 교육 대상이 흥미 를 가질 수 있는 이미지와.
J-Stream part1 (Software streaming service) ▪ 팀명 : Jukdori ▪ 팀원 : 16 th 윤병호 (PL) 15 th 송인규 16 th 김영진.
IF(Infinite Fork) 유닉스 시스템 / 정상훈 / 이재형
새 정부의 공정거래정책 추진방향 Ⅲ 공정위는 새롭게 변하겠습니다. - 튼튼한 기업, 활기찬 시장, 행복한 소비자 -
국민은행 CRM 양태현.
OS 소개 Introduction 설계목표 기본 용어 Resource Management History.
Black Consumer 김인수 권보람 전소희 진소정
2016년도 제2차 서비스 자격시험 고사장 안내 시험종목: 병원서비스코디네이터, 서비스경영컨설턴트,
Chapter 1. 운영체제의 개요 이태호.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
소프트웨어와 운영체제.
제 4 장 프로세스 Section 1 프로세스의 개념 Section 2 프로세스 스케줄링
제 6장 프로세스 간 동기화 및 통신 6.1 개요 6.2 병행 처리의 문제점
Operating Systems Overview
AWR DB 보고서 분석.
Concurrency: Mutual Exclusion and Synchronization (상호배제와 동기화)
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
[ 단원 08 ] 예외처리와 스레드.
ReloadedStudios Inc Q Study TED
제 6 장 프로세스 동기화 (Process Synchronization)
임베디드 운영체제 (리눅스 중심) Lecture #2.
Multi-thread Programming
Ch 14. System Thread.
4장 병행 프로세스 병행성의 원리를 이해한다 병행 프로세스 수행과 관련된 상호 배 제 해결방안을 알아본다
자바 가상 기계 (Java Virtual Machine)
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
병렬처리와 성능향상 A 정승휘.
소프트웨어 공학 Project - 어플리케이션 만들기 ( CS App ) 최종 발표
Chapter 6. 프로세스 동기화(Process Synchronization)
10장 다중 스레드 10.1 스레드 개요 10.2 Thread 클래스 10.3 스레드 생성
운영체제 허상복 컴퓨터시스템 연구실
학습목표 5장. 오픈지엘 기본틀 논리적 입력장치를 설정하는 이유와 종류를 이해한다. 세 가지 입력모드의 차이점을 이해한다.
목차 회사소개 회사현황 시스템 구성도 SQL Server 사용 로드맵 프로젝트 개요 DB 마이그레이션
자바 5.0 프로그래밍.
제19강 병렬처리시스템 1.
Windows 10 업그레이드 방지 관련 메뉴얼 목차 [1] Windows 10 업그레이드 예약 확인 / 취소
멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 이름 장용하 차희진 연구제안서.
제 6 장 프로세스 동기화 (Process Synchronization)
3장 운영체제 2C 김주성.
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
매스커뮤니케이션 신문 목원대학교 서 진 희.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 19장 윈도우 기반의 쓰레드 동기화 데이터베이스실험실 석사 2학기 조정희
국제의료관광 관련 법, 제도.
MAIL CLIENT 김창우 윤성훈 이경재.
Linux/UNIX Programming APUE (Thread Programming)
사이버 공간 - ‘거울의 세계’ 중학교 컴퓨터과 정보통신윤리.
프로젝트 포트폴리오 요약 프로젝트 종류 프로젝트 이력 역할 주요 기술 : Windows System Application
병행 프로세서 과목 : 운영체제 학번 : 이름 : 조장호.
소방시설 자동산정 프로그램.
KB스타 경제·금융교실 은행에 가요.
컴퓨터활용능력1급필기 06 PC 운영체제(2) Windows 탐색기 제어판 인쇄.
2011년 농림사업정보시스템(AgriX) 구축사업
○ 직 무 기 술 서 드라이빙센터 매니저 1. 주요 업무 2. 자격요건 직 무 드라이빙센터 매니저 근무형태
C 프로그램을 위한 동시성 커버리지 측정 기법 송지영 SWTV KAIST.
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 08. 조건에 따른 흐름의 분기.
Concurrency: Mutual Exclusion and Synchronization (상호배제와 동기화)
10장. 컴퓨터 구조에 대한 세 번째 이야기 작성자: 윤성우.
Windows System Programming
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
직장인의 비즈니스 매너 및 에티켓.
오늘의 관심주 오늘의 관심종목 외인/기관 순매수 특징주 코스피 상해종합 다우존스 S&P500 16/01/04(월) 외국인 기관
예외 처리 3조 조일현.
제2기 지역사회복지계획 수립, 추진 및 평가 사 례 발 표
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
KB스타 경제·금융교실 화폐가 태어났어요.
3장 – 병행 프로세스 A 김정문.
Presentation transcript:

동기화 문제 디버깅하기 사람이 컴퓨터 보다 아름다워♪ Advanced Windows Debugging Chapter.10 <NHN 게임서버개발플랫폼TF> 2008.07.29 안준석

개요 병행 프로그래밍? 동기화? 디버거? 병행 프로그래밍 시 발생할 수 있는 동기화 문제들을 살펴본다. 여러 가지 동기화 객체들의 특징을 알아본다 디버거를 통해 동기화 객체들의 작동 방식을 이해하고 동기화 문제를 인지, 해결하는 방법을 배운다. 동기화? 디버거?

순서 Problem Scenarios Synchronization Basic Insight! 마무리

Problem Scenarios Deadlock Orphaned Critical Section DllMain Awareness Lock Contention Managing Critical Section

윈도우 C++ 쓰레드 “ 병행 프로그램을 Primitives 로 지원하기엔 너무 낡은 플랫폼. “ … 그래서 동기화라는 트릭이 필요했다.

5가지 동기화 문제 상황 CS 잘못 사용한 경우 동기화 Lock 경합 DllMain Loader Lock! 짝 잃은 동기화객체 Deadlock Orphaned CS DllMain Awareness Lock Contention Managing CS 동기화 Lock 경합 DllMain Loader Lock! 짝 잃은 동기화객체 교착 상태

Deadlock LiveLock 들어 보셨나요? P. 510 ~ 511 레지스트리 Critical Secion timeOut 값을 수정을 통해 추가 디버깅 정보 얻을 수 있음. E2 E2 E1

Orphaned Critical Section#1 Try { Lock() … Unlock() } Catch Finally P. 516 ~ 517 Exception 발생했을 때 동기화 객체 Release 처리 누락으로 문제 발생 C++ 의 리소스 관리 기법인 소멸자 테크닉을 사용하자!

Orphaned Critical Section#2 HeapAlloc 내 안에 Critical Section 있다 P. 523 ~ 524 Thread Termianation 할 때! 해당 쓰레드에서 예상치 못한 동기화 객체를 사용하고 있을 때 문제 발생

DllMain Awareness DllMain() { Switch case DLL_PROCESS_ATTACH … case DLL_THREAD_ATTACH } 내 안에 Loader Lock있다 P. 530 ~ 531 쓰레드는 APC 상태 부터 시작해서 초기화 완료 후 유저 모드 쓰레드와 맵핑 된다. DllMain() 함수는 시리얼하게 이벤트를 수신해서 처리한다.

Lock Contention Do { Lock() i++ Unlock() } P. 540 ~ 541 많은 수의 쓰레드가 작은 리소스를 두고 경합 벌일 때 어디서 오버헤드가 생기는가? OwnerShip Transfer 하면서! Window2003 sp1 이후 변경됨!

Managing Critical Section CreticalSection cs Initialization (&cs) Enter (&cs) Leave (&cs) … P. 546 ~ 547 크리티컬 섹션 함수를 바르게 사용하자! LockCount 를 고려하면서! 초기화를 고려하면서!

Synchronization Basic Event Critical Section Mutex Semaphore 문제 해결 시나리오

동기화 객체 Event Critical Section Mutex Semaphore Critical Section 님!

Critical Section#1 Critical Section 은 유저 모드 다? Mutex 보다 훨씬 비용이 적게 든다? 커널 모드로 이동 합니다! Critical Section 은 유저 모드 다? Mutex 보다 훨씬 비용이 적게 든다? 멀티 프로세스와 싱글 프로세스에서 작동이 같다? 특정 상황에서만! 스핀은 멀티프로세스에서만!

Critical Section#2 P. 498 스핀 카운트와 Event 커널 객체를 이용하는 똑똑한 유저 모드 동기화 객체! RTL_CRITICAL_SECTION + DebugInfo + LockCount + RecursionCount + OwningThread + LockSemaphore + SpinCount P. 498 스핀 카운트와 Event 커널 객체를 이용하는 똑똑한 유저 모드 동기화 객체! OwnerShip 전환에 걸리는 시간을 줄여 Lock Convoy 현상을 줄임!

문제 해결 시나리오 증상 인식하기 (CPU 점유율등으로) 모든 쓰레드 덤프 뜨기 (~*kb) 동기화 문제가 가능한지 분석 !runaway !handle !cs 문제 수정 Application Verifier 를 사용해 볼까요~!

Insight! 병행프로그래밍 멀티쓰레드프로그래밍 Erlang

병행Concurrent 순차Sequential 병렬Parallel 어떠한 순서로 처리하든 상관없게 작업 분할 동시에 [분할 된 독립작업] 처리 순차Sequential 순서대로 [한 개] 처리 병렬Parallel 동시에 [여러 개] 처리

메이저 OS와 언어에서는 리소스 공유에 따른 동기화 문제가 발생한다! 왜 멀티쓰레드를 써야 할까? “동시에 다수의 일을 처리해야 하니까” 메이저 OS와 언어에서는 리소스 공유에 따른 동기화 문제가 발생한다!

비동기 실행결과 얻기 호출과 실행의 분리 OS... 동기화.. 쓰레드.. BYE! 2008년엔 얼랭을 배워봐요! Thread-Per-Message 비동기 Worker Thread 패턴 OS... 동기화.. 쓰레드.. BYE! Producer-Consumer 호출과 실행의 분리 2008년엔 얼랭을 배워봐요! Future 패턴 실행결과 얻기

마무리 Reference

Reference Advanced Windows Debugging p.493 ~ 550 Windows 구조와 원리 2th

끝 감사합니다. 동기화 문제 이제 Windbg로 분석해 볼까요? ^^; joonseok.ahn@live.co.kr 2008.07.29 안준석