전체 글 211

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

운영체제에서 교착상태(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..

TinkerCAD로 아두이노와 친해질 준비하기

학교에서 8월에 소프트웨어 경진대회가 열린다. 나는 아직 개발 경험은 없지만 사회적으로 의미 있는 좋은 프로젝트가 있어 용기 내서 참여하게 되었다. 내가 참여하게 된 프로젝트의 산출물은 IoT로 구현되기 때문에 기본적으로 C를 사용한 임베디드 프로그래밍이 필요하다. 내가 프로그래밍에 직접 참여할 수 있을지는 모르지만 어쨌든 프로젝트가 진행되는 동안 맥락을 이해하는 것이 반드시 필요할 것이기 때문에 나도 아두이노와 좀 친해져 보기로 했다. 우선 알리익스프레스에 아두이노 우노 키트를 주문해놨다. 어차피 키트를 받자마자 바로 코딩을 할 준비가 안 되어있기 때문에, 키트 없이도 아두이노를 실습해볼 수 있는 TinkerCAD로 먼저 간단한 실습을 해 보기로 했다. 마침 야심차게 1년치 구독중인 교보문고 sam ..

[책리뷰] "IT세계의 괴물들" - 포기하지 않기 위해 읽은 책

올해 2월부터 대학생이 되어 CS 공부를 시작하면서 책을 읽는 시간이 급격히 줄어들었다. 세상에 좋은 책이 얼마나 많은데 갑자기 할 일이 많아졌다는 핑계로 이렇게 책 읽기를 내려놓는다는 게 여간 아쉬운 일이 아니었다. 이 기회에 같은 공부를 하는 사람들과 IT 분야의 책을 함께 읽고 얘기를 나눌 수 있다면 더할 나위 없이 좋은 동기부여가 될 것 같았다. 교보문고에 가서 평소에는 잘 가지 않던(하지만 앞으로는 자주 가야 할) "I 섹션"에서 책들을 이리저리 뒤적거려봤다. 좋은 책은 차고 넘치지만, 문제는 나의 CS 지식 수준이 그 좋은 책들을 소화하기에 아직 한참 부족하다는 거였다. 그래서 적어도 처음으로 도전할 책 만큼은 내가 앞으로 읽어야 할 많은 책들에 좀 더 의욕적으로 다가갈 수 있도록 물꼬를 터..

책리뷰 2025.04.21