쓰레드 동기화 기법 1. 동기화의 두 가지 관점 - 실행 순서의 동기화 ㆍ쓰레드들이 정해진 특정 순서로 실행되어야 할때 필요 - 메모리 접근의 동기화 ㆍ멀티 쓰레드 기반시 메모리에 접근 할떄 사용 ㆍ크리티컬섹션(Critical Section), 뮤텍스(Mutex), 세마포어(Semaphore) 등이 있따. 2. 동기화 주체로 나누어 본 두 가지 방법 2.1 유저 모드 동기화 - 커널의 힘을 빌리지 않는 동기화 기법이지만 커널의 전환이 불필요해서 성능상 이점이 있지만 그만큼 기능상의 제한이 있다. - 종류로는 ㆍInterlockedXXX 계열 함수, Critical Section, SpinLock 2.2 커널 모드 동기화 - 커널에서 제공하는 동기화 기능을 활용하는 방법 - 커널 오브젝트를 생성하고 이를 조작하는 함수 호출로.. 더보기 탐색 알고리즘 1. 순차 탐색(Sequential Search) - 데이터가 모인 데이터 배열이 있으면 데이터 배열의 처음부터 끝까지 차례대로 비교하며 원하는 데이터를 찾아내는 알고리즘 ㆍ순차 탐색은 단방향으로 탐색을 수행하기 때문에 선형 탐색이라고 부르기도 함 2. 이진 탐색(Binary Search) - 정렬된 배열에서 중간 요소를 선택해서 선택된 값보다 작으면 왼쪽 크다면 오른쪽으로 검색을 하며 - 중간 요소보다 작다면 왼쪽의 중앙값을 선택 작다면 또 왼쪽의 중앙값을 선택해서 점점 오차를 줄여가는 방법 3. 이진 탐색 트리(Binary Search Tree) - 트리 형식으로 자라있는 노드를 루트와 비교하며 작으면 왼쪽, 크면 오른쪽으로 검색하게되는 방법 4. 깊이 우선 탐색 5. 너비 우선 탐색 더보기 정렬알고리즘(sorting Algorithm) 1. 버블 정렬(Bubble Sort) - 자신과 인접한 데이터와 비교하여 정렬하는 방식 예) 10 1 2 60 7 9 1. 10 1 비교 후 치환 ( 1 10 2 60 7 9) 2. 10 2 비교 후 치환 ( 1 2 10 60 7 9) - 즉 자신과 가장 인접한 데이터를 지속적으로 비교하면서 정렬해가는 방식 ㆍ버블 정렬의 비교 횟수 = (n-1)+(n-2)+(n-3)+...+(n-(n-2))+(n-(n-1)) = (n-1)+(n-2)+(n-3)+...+3+2+1 = n(n-1)/2 -> 즉 O(n^2) 로 n의 값이 증가하면 실행 시간은 기하급수적으로 증가 하게 된다. 2. 삽입 정렬(Insertion Sort) - 정렬할 새로운 데이터를 뽑아 적당한 새 위치에 삽입하는 알고리즘 예) 3 4 6 2 8.. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 19 다음