[알고리즘] 너비 우선 탐색(BFS)
CS/알고리즘2023. 8. 3. 23:40[알고리즘] 너비 우선 탐색(BFS)

1. BFS(너비 우선 탐색) 그래프 탐색 - 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것. - 알고리즘 문제를 풀다보면 2차원 배열이 주어지고 탐색을 하며 특정 값을 구하라는 문제가 많은데 DFS와 달리 시간복잡도가 까다롭게 설정되어있고 최단경로를 찾는 문제일 때 주로 사용. -동작과정 큐 선언(2차원 배열이라면 Point 클래스를 활용) 및 시작 포인트 큐에 추가&&방문체크 while(!Queue.isEmpty()) 큐가 없어질 때까지 반복 Queue에서 poll하여 탐색 시작 방향벡터를 이용해서 for문 4방탐색 다음 행선지 NULL체크 탈출 포인트 선언 (예를 들어 목적지 좌표에 도착했다면) 장애물 및 탐색하면 안되는 곳이라면 continue로 탈출 탐색할 수 있는 곳..

Semaphore(System V vs POSIX) -Infinite
CS/시스템 프로그래밍2022. 6. 21. 02:46Semaphore(System V vs POSIX) -Infinite

안녕하세요. 이번에는 앞서다룬 IPC기법들 중 동기화가 필요한 통신에서의 동기화를 책임질 세마포어(Semaphore)에 대하여 알아보도록 하겠습니다. ● 세마포어(Semaphore) -> 기본적으로 세마포어는 프로세스 사이의 동기를 맞추는 기능을 제공합니다. -> 한번에 한 작업만을 허용하는 부분에 접근하여 잠금 또는 잠금해제를 제공하는 정수형 변수입니다.즉 A라는 프로세스가 특정 메모리에 접근을 하고있다면 B 및 C 프로세스들이 이 메모리에 접근을 못하도록 막아주는 기능을 하는 변수라고 생각하시면 편하겠습니다. 이 정수형 변수는 제공되는 함수를 통해 값을 변경할 수 있는데요. 잠금 함수는 p(), 해제 함수는 v()로 표시한다고 합니다. ● 세마포어 함수 (System V) -> 기본적으로 세마포어 함..

시스템 V IPC (System V) 2 -Infinite
CS/시스템 프로그래밍2022. 6. 21. 01:57시스템 V IPC (System V) 2 -Infinite

앞선 글에 이어서 이번 글에서는 Shared Memory와 Message Passing에 관한 간단한 소개 및 Shared Memory 방식에 대한 개념 및 예제를 알아보도록 하겠습니다. ● Shared Memory -> 이는 공유 메모리이며 독립적인 프로세스들 간의 통신을 위해 공유되는 메모리 영역을 사용합니다. -> 장점으로는 시스템 호출을 생성할 때(공유 메모리 생성)에 1번만 사용하기 때문에 매우 빠르며 효율이 좋습니다. -> 단점으로는 모든 프로세스들이 접근 가능하기 때문에 Race Condition의 문제가 발생할 수 있으므로 동기화 과정이 필요합니다. 이는 세마포어를 이용하여 해결할 수 있습니다. ● Message Passing -> 같이 쓴다의 개념이아닌 그때 그때 필요한 소스를 프로세스들..

시스템 V IPC (System V) 1 -Infinite
CS/시스템 프로그래밍2022. 6. 21. 01:21시스템 V IPC (System V) 1 -Infinite

이번 포스팅은 System V IPC 기법들에 대하여 알아보도록 하겠습니다. System V에서는 메시지 큐, 공유 메모리 기법을 통해 프로세스 간 통신을 진행 할 수 있습니다. 독립적인 프로세스들이 서로 통신을 함에 있어 Critical section(중요한 데이터 영역)에 동시에 진입할 경우 Race Condition(충돌)이 발생 할 수 있습니다. 이를 막기위해 독립적인 프로세스들은 동기화 과정이 필요한데 세마포어가 해결을 도와줄 수 있습니다. -> 세마포어는 단순히 메모리 영역에 접근할 수 있는 프로세스들을 알려주는 역할이며 이는 통신기법이 아닌 동기화기법에 해당합니다. 또한 이번 챕터에서 다룰 통신기법들은 각각 공통된 키 생성 -> 키를 통한 식별자 생성 과정을 거친 후 제공되는 함수들을 사용하..

image