분류 전체보기 203

[DBS] 트랜잭션 - Part 2. 회복 가능한 스케줄과 비연쇄적 스케줄

지난 글에서는 트랜잭션의 의미와 동작 과정에 대해 살펴보았다. 데이터베이스 시스템에서 트랜잭션의 안정성과 성능을 보장하려면 스케줄의 유형을 이해하는 것이 중요하다. 이번 글에서는 회복 가능한 스케줄과 비연쇄적 스케줄에 대해 알아보자. 회복 가능한 스케줄이란?회복 가능한 스케줄은 트랜잭션 간의 데이터 읽기와 커밋 순서를 고려하는 스케줄이다. 트랜잭션 Tj가 트랜잭션 Ti가 작성한 데이터를 읽었다면, 반드시 Ti가 먼저 커밋을 해야 Tj도 커밋할 수 있다. 이렇게 해야 하나의 트랜잭션이 실패하더라도 데이터베이스를 일관된 상태로 되돌릴 수 있다. 예를 들어, T1이 데이터 A를 수정하고 T2가 그 데이터를 읽은 다음 커밋하는 경우, T1이 먼저 커밋한 후에 T2가 커밋해야 회복 가능한 스케줄이 된다. 반대로..

[운영체제] 단일/다중 프로그래밍 환경에서의 메모리 관리 방식을 비교해 보자

운영체제에서 메모리 관리는 CPU와 함께 시스템 자원을 효율적으로 사용하는 핵심 요소 중 하나다. 메모리를 어떻게 관리하느냐에 따라 시스템의 응답 속도, 자원 활용률, 안정성 등이 크게 달라진다.대표적인 메모리 관리 기법들을 간단하게 살펴보자.연속 메모리 할당초기 운영체제 구조에서는 단일 프로그래밍 환경이 일반적이었고, 이때는 하나의 프로세스만 메모리에 적재되어 실행되었다. 이를 연속 메모리 할당 방식이라고 한다. 구조가 매우 단순하고 구현도 쉽지만, 하나의 프로세스만 실행되기 때문에 메모리의 많은 부분이 낭비되고, CPU도 유휴 상태로 남는 시간이 많다. 이런 비효율을 극복하기 위해 다중 프로그래밍 개념이 도입되었다.메모리 분할다중 프로그래밍 환경에서는 여러 프로세스를 동시에 메모리에 올려놓고 번갈아가..

[운영체제] 환형대기 조건(사이클)을 차단하여 교착상태를 예방하는 방법

운영체제에서 교착상태(Deadlock)는 여러 프로세스가 서로 자원을 점유한 채, 상대가 가진 자원을 기다리면서 무한 대기에 빠지는 현상이다. 교착상태가 발생하려면 다음 네 가지 조건이 모두 동시에 성립해야 한다.상호 배제 (Mutual Exclusion) – 자원은 한 번에 하나의 프로세스만 사용할 수 있다.점유 대기 (Hold and Wait) – 자원을 점유한 상태에서 다른 자원을 요청하며 대기한다.비선점 (No Preemption) – 점유한 자원을 강제로 빼앗을 수 없다.환형 대기 (Circular Wait) – 자원을 기다리는 관계가 원형 고리를 이룬다.교착상태를 막기 위해선 이 중 하나 이상의 조건을 제거하면 된다.그중 환형 대기 조건을 제거하는 방법에 대해 알아보자. 자원에 일련번호(순서..

[이산수학] 조합이론 - Part 4. 점화식

점화식이란? 점화식(Reccurence relation)은 수열에서 항과 항 사이의 규칙을 수식으로 표현한 것이다.즉, 수열의 어떤 항 an​을 앞에 있는 항들 an−1,an−2,…을 이용해서 나타낼 수 있다면, 이 식을 점화식이라고 한다.점화식을 사용하면 수열의 구조를 간단하게 나타낼 수 있고, 반복되는 계산을 체계적으로 처리할 수 있다.예를 들어 수열 1, 4, 7, 10, 13, …은 각 항이 앞 항보다 3만큼 커지는 규칙을 갖고 있다. 이 수열의 점화식은 다음과 같다.이 식은 “첫째 항은 1이고, 그 다음 항은 앞 항에 3을 더해서 만든다”는 뜻이다.***점화식에서 n은 수열의 항 번호를 뜻함. "점화식을 푼다"는 것은?점화식을 푼다는 것은 반복적으로 항을 계산하지 않고,n만 입력해도 곧바로 값을..

[이산수학] 조합이론 - Part 3. 이항정리

이항정리란 ? 수학에서 다항식을 전개할 때 사용하는 중요한 공식 중 하나가 이항정리다.이 공식은 단순히 식을 전개하는 것을 넘어서,선택과 경우의 수라는 조합의 개념이 수학적으로 어떻게 쓰이는지를 잘 보여준다. 가장 간단한 예부터 출발해 보자. 중학교 때 무지성으로 외워서 수능까지 잘 써먹었던 (x + y)2 = x2+2xy+y2 은 사실 조합과 관련이 깊다. ✅ 1단계: 가장 간단한 예부터 출발해 보자먼저 (x + y)2를 전개해보자.이걸 분배법칙으로 전개하면 다음과 같다. 여기서 중요한 점은 xy와 yx가 사실 같은 문자 조합이라는 것이다.즉, 순서만 다를 뿐 둘 다 똑같이 xy라는 항이 되므로 하나로 묶는다.그렇다면 xy라는 같은 문자 조합이 만들어지는 방법은 몇 가지일까?첫 번째 괄호에서 x, 두..

[이산수학] 조합이론 - Part 2. 중복 집합에서의 순열

중복된 원소를 포함하는 집합에서는 순열을 어떻게 구할까? 중복된 원소를 포함하는 집합에서 순열을 구하는 방법은 일반적인 순열 공식을 약간 확장하여 이해할 수 있다.지난 글(조합 Part 1.)에서 살펴보았듯, 서로 다른 원소 n개를 모두 일렬로 배열하는 경우의 수는 n!이라는 것은 이미 알고 있다. 하지만 집합 안에 동일한 원소가 여러 개 존재한다면, 단순히 n!로 계산하는 것은 중복을 포함한 결과를 만들어내므로 적절하지 않다.중복된 원소들끼리 자리를 바꿔도 전체 배열이 같기 때문이다.예를 들어, 다음과 같은 문자 집합을 생각해 보자. {A, A, B} 이 세 문자를 일렬로 배열하는 경우의 수를 생각하면,겉보기에는 3개의 문자를 배열하므로 3! = 6 가지가 있을 것 같지만,여기서 두 개의 A의 위치를 ..

[이산수학] 행렬의 종류와 특징

이산수학에서는 다양한 형태의 행렬이 등장한다. 각각의 행렬은 특정한 구조를 가지며, 그 구조에 따라 계산이나 해석에 용이한 특성을 갖는다. 대표적인 행렬의 종류들을 살펴보자. 1. 정방행렬 (Square Matrix)정의: 행(row)의 수와 열(column)의 수가 같은 행렬을 정방행렬이라고 한다.특징: n×n 형태로 나타난다. 정방행렬은 대각선, 역행렬, 행렬식 등을 논의할 수 있는 기본 구조이다.예시:2. 대각행렬 (Diagonal Matrix)정의: 정방행렬 중에서 주대각선 이외의 모든 원소가 0인 행렬을 대각행렬이라고 한다.특징: 대각선의 값만 의미가 있으며, 행렬 곱이나 거듭제곱 계산이 간단하다.예시:3. 단위행렬 (Identity Matrix)정의: 대각행렬 중에서도 모든 주대각선 원소가 1..

[이산수학] 집합의 서로소, 분할, 멱집합 개념

📌 1. 서로소 집합 (Disjoint Sets)정의:두 집합이 공통 원소를 전혀 갖지 않으면, 서로소(disjoint)라고 한다. 예시:A={1,2,3}, B={4,5}공통 원소 없음 → 서로소C={2,3}, D={3,4}공통 원소 {3} 있음 → 서로소 아님 📌 2. 집합의 분할 (Partition)정의:어떤 집합 A를 겹치지 않는 부분집합들로 나누되, 그 부분집합들을 모두 합치면 원래의 집합 A가 되는 경우, 이를 분할이라 한다. 조건:모든 부분집합은 공집합이 아님.부분집합들은 서로소.부분집합들을 합치면 원래 집합과 같음.예시:A={1,2,3}분할 예: { {1}, {2,3} }또 다른 분할 예: { {1,2}, {3} }틀린 예: { {1,2}, {2,3} } → 2가 중복됨 📌 3. 멱집합..

[DBS] 트랜잭션 - Part 1. 데이터 일관성과 트랜잭션 연산

트랜잭션(Transaction)이란 ? 데이터베이스에서 트랜잭션은 데이터의 일관성을 보장하면서 여러 작업을 하나의 논리적 단위로 묶어 처리하는 과정을 말한다. 일관성(Consistency)란 무엇을 말하는가? 우선 데이터베이스에서 일관된 상태란 다음 조건들을 충족하는 상태이다. 데이터 무결성 제약 조건(Integrity Constraints) 만족개체 무결성: 모든 테이블의 기본 키(Primary Key)는 널(NULL) 값을 가질 수 없으며, 중복될 수 없다. 각 엔티티(개체)는 고유하게 식별되어야 한다.참조 무결성: 외래 키(Foreign Key)는 참조하는 기본 키의 값이 데이터베이스에 존재하거나, 널(NULL) 값이어야 한다. 즉, 참조하는 데이터가 유효해야 한다. 예를 들어, '주문' 테이블에 ..

아두이노의 디지털 신호와 논리값에 대해... (+프로그래밍 연습)

아두이노를 처음 공부하다 보니 HIGH/LOW, 5V/0V과 같은 값과 논리값 1/0과 True/False와 같은 용어가 자주 등장한다. 이것들은 모두 아두이노의 디지털 신호와 관련이 있다.참고로 이 글은 최대한 쉽게 아두이노를 이해해보려는 내 노력의 과정을 기록한 두서 없는 메모일 뿐이라는 점을 먼저 말해둔다. 아두이노의 디지털 신호 : HIGH와 LOW란? 아두이노는 디지털 출력 핀을 통해 전기 신호를 보낸다. 이 신호는 HIGH 또는 LOW 두 가지 상태만 가질 수 있다.HIGH : 5V의 전압, "켜짐(ON)" 상태LOW : 0V의 전압, "꺼짐(OFF)" 상태5V 핀과 GND 핀의 역할아두이노 보드에는 5V 핀과 GND(접지) 핀이 있다.5V핀: 5V핀은 항상 5V를 출력한다. 이 전압은 LED..