목록분류 전체보기 (111)
yoongrammer
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/drLYEY/btq0PbUoznC/9MwU8nBR9F5vsRCar761wk/img.png)
목차Process synchronization: 모니터(monitor)세마포어는 동시성 문제를 해결하는데 유용하지만 프로그래머가 올바르게 사용하지 않으면 타이밍 문제가 발생할 수 있습니다.타이밍 문제란 타이밍에 따라 문제가 발생할 수도 발생하지 않을 수도 있는 것을 의미하는데 이러한 문제는 대처하기 까다롭고 디버깅에 어려움을 줍니다.이러한 타이밍 문제를 해결하기 위해 모니터라는 기법이 개발되었습니다. 모니터는 프로세스 간의 상호 배제를 달성하기 위해 프로그래밍 언어로 지원됩니다.Java 및 C # 등은 해당 언어로 내장된 모니터를 제공합니다.Java - Synchronized 키워드C # - lock 키워드세마포어는 프로그래머가 signal과 wait 함수를 사용해서 동기화를 구현해야 하는 반면 모니터는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/179bR/btq0zuuQrtu/1mexysWqf2Nu8ejcvccy61/img.png)
목차동기화 문제 (Problems of Synchronization)동기화에는 다음과 같은 고전적인 문제들이 있습니다.Bounded-buffer (Producer-Consumer) ProblemThe Readers-Writers Problem식사하는 철학자 문제(The Dining-Philosophers Problem)이번에는 세마포어를 사용하여 고전적인 문제들을 해결방법에 대해서 알아보도록 하겠습니다.Bounded-buffer (producer-consumer) problem생산자 소비자 문제라고도 하는 경계 버퍼 문제는 동기화의 고전적인 문제 중 하나입니다. 문제 설명n개의 슬롯의 버퍼가 있으며 각 슬롯은 하나의 데이터를 저장할 수 있습니다.실행 중인 두 개의 프로세스, 즉 생산자(in)와 소비자(o..
목차스핀락(Spin lock), 뮤텍스(Mutex), 세마포어(Semaphore) 알아보기스핀 락(Spin lock)스핀 락(Spin lock)은 임계 구역에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락을 가리킵니다.임계 구역 진입 전까진 루프를 계속 돌고 있기 때문에 busy waiting이 발생하게 됩니다. 다음은 spin lock을 사용하고 있는 세마포어 함수의 예입니다.wait(S) { while (S 스핀 락은 운영체제의 스케줄링 지원을 받지 않기 때문에, 해당 스레드에 대한 문맥 교환(context switch)이 일어나지 않습니다. 짧은 시간 안에 진입할 수 있는 경우 문맥 교환 비용이 들지 않으므로 효율을 높일 수 있지만 그 반대의 경우에는 다른 ..
목차상호 배제 여러 가지 기법들 : HW solution상호 배제를 보장하기 위해 하드웨어에서 제공하는 방법에 대해서 알아보도록 하겠습니다. TestAndSet (TAS) instructionTestAndSet 명령어는 동시성을 제어 어하기 위한 동기화 명령어 중 하나로서, 하드웨어의 도움을 받아 수행됩니다. 이 명령어는 test 와 set을 한 번에 수행하는 기계어(machine instruction)입니다.// target을 검사하고, target 값을 true로 변경boolean TestAndSet (boolean *target) { //기계어이기 때문에 원자성(atomicity)을 가지며 실행 중 interrupt를 받지 않아 명령어 수행 중에 선점(preemption)이 되지 않습니다.T..
목차상호 배제 여러 가지 기법들 : SW solution소프트웨어를 이용하여 상호 배제를 보장하는 알고리즘은 여러 가지가 있습니다.데커의 알고리즘 (Dekker's algorithm)피터슨의 알고리즘 (Peterson's algorithm)다익스트라 알고리즘 (Dijkstra algorithm)램포트의 베어커리 알고리즘 (Lamport's bakery algorithm)데커의 알고리즘 (Dekker's algorithm)프로세스 두 개일때 상호 배제를 보장하는 최초의 알고리즘입니다.flag는 누가 CS(Critical Section)에 진입할 것인지 알리는 변수이고, turn은 누가 CS에 들어갈 차례인지 알리는 변수입니다. while(1) { // 프로세스i의 진입 영역 fl..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/r8ahB/btqYrFxmE5q/rqD2J9QhjogsmDaxCvZfTK/img.png)
목차상호 배제(mutual exclusion)상호 배제란 둘 이상의 프로세스가 동시에 임계 영역(CS : Critical Section)에 진입하는 것을 방지하기 위해 사용되는 알고리즘입니다. 공유 자원의 동시 사용을 방지하여 race condition과 같은 문제를 피할 수 있습니다. 상호 배제 기본 연산enterCS() primitive (primitive: 기본 연산)Critical section 진입 전 다른 프로세스가 critical section 안에 있는지 검사를 합니다.Critical section에 다른 프로세스가 있다면 비어 있을 때까지 대기를 합니다.exitCS() primitiveCritical section을 벗어날 때의 후처리 과정을 합니다.Critical section을 벗어남..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lWGvj/btqV19GUV3P/Jm0sGUl44gMSWnBNQjWisk/img.png)
목차 YugabyteDB 설치하기 OS별 YugabyteDB 설치 방법에 대해 알아보도록 하겠습니다. macOS 요구사항 macOS 10.12 이상이어야 합니다. Python 2 or 3이 설치되어 있어야 합니다. YugabyteDB 다운로드 1. 다음 명령어를 수행하여 YugabyteDB를 다운로드합니다. $ wget https://downloads.yugabyte.com/yugabyte-2.5.1.0-darwin.tar.gz 2. tar파일의 압축을 풀고 YugabytyeDB 디렉터리로 이동합니다. $ tar xvfz yugabyte-2.5.1.0-darwin.tar.gz && cd yugabyte-2.5.1.0/ 3. 설치가 완료되었는지 확인해 봅니다. $ ./bin/yugabyted version..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vWgkJ/btqV0ENMtZD/rUd3F3wKTkjeiso54Q8Cnk/img.png)
목차YugabyteDB 알아보기YugabyteDB는 고성능 클라우드 네이티브 분산 SQL 데이터베이스입니다. 특징YugabyteDB 특징은 다음과 같습니다.강력한 RDBMS 기능 제공PostgreSQL과 호환됩니다.High Performance낮은 대기시간과 높은 처리량을 보여줍니다. (C, C++ 언어로 만들어짐)Strong consistencyACID transaction 지원으로 강한 일관성을 보장합니다.Continuous availability지속적인 가용성을 위해 raft 분산 합의 프로토콜 기반 이중화를 사용합니다.Horizontal scalability수평 확장이 간단합니다.Multi-cloud다중 클라우드 배포가 가능합니다.AWS, GCP, Azure, PivotalDocker, Kuber..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Idt9x/btqVugBEBNQ/TppLC7iNlZsXag6lcfvBaK/img.png)
목차process synchronization : 임계 구역 (critical section) & 경쟁상태 (race condition)공유 데이터(shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있습니다.process synchronization은 일관성(consistency)을 위해 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이 입니다. 임계 구역 (critical section)임계 구역이란 한 번에 하나의 프로세스만 액세스 할 수 있는 코드 영역을 말합니다. 프로세스는 일반적으로 4가지 코드 영역으로 나뉩니다.do { entry section critical section exit section ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEkyBD/btqVe75AR3x/RSW1mtVIkjendQEkXICxQ0/img.png)
목차 프로세스 간 통신 (IPC : Interprocess Communication) 알아보기프로세스가 동시에 실행될 때 두 가지 유형으로 나눌 수 있습니다.독립적 프로세스(Independent process)다른 프로세스에게 영향을 주거나 받을 수 없는 프로세스입니다. 독립적 프로세스는 데이터를 공유하지 않습니다.협력 프로세스(Cooperating process)다른 프로세스에게 영향을 주거나 받을 수 있는 프로세스입니다. 협력 프로세스는 데이터를 공유합니다. 협력 프로세스는 다음과 같은 장점이 있습니다.정보 공유여러 사용자가 상태나 데이터를 주고받으며 정보를 공유할 수 있습니다.계산 속도 향상여러 프로세스가 동시에 작업을 병렬로 처리하기 때문에 속도를 높일 수 있습니다.모듈성시스템 기능을 별도의 프로..