본문 바로가기

Backend study/Backend theory

(26)
낙관적 락(Optimistic Locking)과 비관적 락(Pessimistic Locking) 낙관적 락(Optimistic Locking)과 비관적 락(Pessimistic Locking)은 데이터의 동시성 제어 방법이다. 여러 프로세스나 트랜잭션이 동시에 데이터를 수정할 때, 데이터의 무결성을 보장하고 충돌을 방지하기 위해 사용된다. 이 두 방식은 락을 거는 시점과 접근 방식이 서로 다르며, 각각의 장단점이 있다. 1. 낙관적 락 (Optimistic Locking)개념낙관적 락은 데이터 충돌이 드물 것이라고 가정하는 방식이다. 즉, 여러 트랜잭션이 동시에 데이터를 읽고, 수정할 가능성이 낮다고 생각한다.데이터에 접근할 때 락을 걸지 않고, 수정하려고 할 때 충돌 여부를 확인한다.주로 읽기 작업이 많고 쓰기 작업이 적은 환경에서 적합하다.동작 방식데이터를 읽음: 트랜잭션은 데이터를 읽을 때 락..
뮤텍스(Mutex)와 세마포어(Semaphore) 뮤텍스(Mutex)와 세마포어(Semaphore)는 동시성 제어 기법으로, 여러 프로세스나 스레드가 공유 자원에 접근할 때 발생하는 경쟁 조건(race condition)을 방지하기 위해 사용된다. 이 두 개념은 동기화 문제를 해결하는 데 중요한 역할을 하며, 각기 다른 특성과 용도로 사용된다.1. 뮤텍스(Mutex)뮤텍스란?Mutex는 Mutual Exclusion의 약자로, 상호 배제를 의미한다. 하나의 스레드나 프로세스만이 특정 시점에 공유 자원에 접근할 수 있도록 잠금(Lock)을 제공하는 동기화 도구이다.단일 사용자: 특정 공유 자원에 대해 동시에 하나의 스레드만 접근할 수 있다. 다른 스레드가 동일한 자원에 접근하려면, 먼저 사용 중인 스레드가 자원의 잠금을 해제해야 한다.뮤텍스의 동작 원리잠..
IPC (Inter-Process Communication) IPC(Inter-Process Communication)는 프로세스 간 통신을 의미하며, 하나 이상의 프로세스가 서로 데이터를 주고받는 방법을 제공한다. 현대 운영 체제에서 여러 프로세스가 동시에 실행되며, 프로세스들이 각자의 고유한 메모리 공간을 가지기 때문에, 직접적으로 메모리를 공유하지 않는다. 따라서 서로 간에 정보를 교환하거나 협력해야 할 경우 IPC 메커니즘을 통해 통신해야 한다.IPC는 동일한 시스템 내의 프로세스들 또는 네트워크를 통한 서로 다른 시스템 간의 프로세스들이 통신할 때 사용된다. IPC의 필요성각 프로세스는 운영 체제에 의해 독립적인 메모리 공간을 할당받는다. 이 때문에 하나의 프로세스에서 다른 프로세스의 메모리 영역에 직접 접근할 수 없다. 그러나 많은 응용 프로그램은 여러..
TCP's 3-way handshake, 4-way handshake TCP의 3-way 핸드셰이크(3-way handshake)와 4-way 핸드셰이크(4-way handshake)는 TCP(Transmission Control Protocol)에서 연결을 설정하고 해제하는 과정이다. 이 두 과정은 TCP가 신뢰성 있는 통신을 제공하는 데 중요한 역할을 한다. 1. TCP 3-way 핸드셰이크 (연결 설정 과정)3-way 핸드셰이크는 클라이언트와 서버 간에 TCP 연결을 설정하는 과정이다. 이 과정에서 클라이언트와 서버는 서로 통신할 준비가 되었음을 확인하고, 통신을 위한 시퀀스 번호를 교환하여 데이터 전송을 준비한다.단계별 설명SYN (Synchronize):클라이언트는 서버에 TCP 연결을 요청하기 위해 SYN 플래그가 설정된 패킷을 서버로 보낸다. 이 패킷에는 클라..
TCP 와 UDP TCP (Transmission Control Protocol)와 UDP (User Datagram Protocol)는 인터넷에서 데이터를 전송하기 위해 사용되는 두 가지 주요 프로토콜이다. 이 두 프로토콜은 모두 IP(Internet Protocol) 위에서 동작하며, 서로 다른 방식으로 데이터를 전송한다. 1. TCP (Transmission Control Protocol)TCP란?TCP는 연결 지향적(Connection-oriented) 프로토콜로, 데이터의 신뢰성을 보장하는 프로토콜이다. 패킷 손실, 중복 패킷, 순서가 잘못된 패킷 등의 문제를 처리하여 데이터를 안전하게 전달한다.TCP는 데이터를 스트림(Stream) 형태로 전송하며, 흐름 제어 및 혼잡 제어 기능을 가지고 있어 네트워크 환경에서..
Blocking과 Non-blocking Blocking과 Non-blocking은 프로그램이나 시스템에서 작업이 완료될 때까지 대기하는지 여부에 대한 중요한 개념이다. 이 두 개념은 주로 I/O(입출력) 작업, 스레드, 네트워크 통신과 같은 상황에서 사용된다. 이 개념들을 이해하는 것은 프로그램의 성능, 응답성, 자원 사용에 큰 영향을 미치기 때문에 중요하다. 1. Blocking (블로킹)Blocking이란?Blocking은 어떤 작업이 완료될 때까지 해당 작업이 끝날 때까지 프로세스나 스레드가 대기하는 방식을 의미한다. 작업이 완료되기 전까지 다른 작업을 수행하지 않고, 해당 작업이 끝난 후에야 다음 작업으로 넘어갈 수 있다.보통 입력이나 출력(I/O) 작업에서 많이 사용되며, 네트워크 통신, 파일 시스템 접근, 스레드 동기화 등 다양한 ..
경쟁 조건(Race Condition)과 교착 상태(Deadlock) 경쟁 조건(Race Condition)과 교착 상태(Deadlock)는 멀티스레드 또는 멀티프로세스 환경에서 자주 발생하는 동시성 문제이다. 이 두 개념은 동시성 프로그래밍에서 데이터의 무결성과 시스템의 안정성을 위협할 수 있는 중요한 문제이다. 1. 경쟁 조건 (Race Condition)경쟁 조건이란?경쟁 조건은 두 개 이상의 스레드 또는 프로세스가 동시에 공유 자원에 접근하여, 그 실행 순서에 따라 프로그램의 결과가 달라질 수 있는 상황을 말한다. 즉, 여러 스레드나 프로세스가 동일한 자원을 동시에 접근하고 수정하는 경우, 그 결과는 실행 순서에 의해 비정상적인 상태로 변할 수 있다.경쟁 조건의 발생 원인경쟁 조건은 일반적으로 공유 자원에 대한 비동기적 접근으로 인해 발생한다. 여러 스레드가 동시에..
프로세스(process)와 스레드(thread) 프로세스(process)와 스레드(thread)는 컴퓨터 프로그램의 실행 단위로, 운영 체제(OS)가 프로그램을 실행하고 관리하는 중요한 개념이다. 프로세스와 스레드는 서로 다른 개념이지만, 긴밀하게 연관되어 있으며, 둘 다 병렬 처리나 멀티태스킹 환경에서 중요한 역할을 한다. 1. 프로세스 (Process)프로세스란?프로세스는 메모리에서 실행 중인 프로그램이다. 프로그램은 디스크에 저장된 정적인 파일이며, 프로세스는 이 프로그램이 실행되었을 때 생성되는 동적인 실행 단위이다.운영 체제는 각 프로그램이 독립적인 실행 환경을 가지도록 프로세스를 생성하고, 프로세스는 해당 프로그램이 동작하는데 필요한 자원을 할당받는다. 이러한 자원에는 CPU 시간, 메모리 공간, 파일 입출력 핸들 등이 포함된다.프로세스의 ..

728x90