관계와 분할
1. 관계 (1) 용어의 정의 1) 관계 곱집합 A X B의 부분 집합 \(R = (A, B, P(x,y))\) 여기서 P(x,y)는 명제함수이다. ex) A={2,3}, B={4,6} AXB = {{2,4},{2,6},{3,4},{3,6}} 일때 P(x,y) : x는 y의 약수이다라고하면 R = {{2,4},{2,6},{3,6}} 2) ...
1. 관계 (1) 용어의 정의 1) 관계 곱집합 A X B의 부분 집합 \(R = (A, B, P(x,y))\) 여기서 P(x,y)는 명제함수이다. ex) A={2,3}, B={4,6} AXB = {{2,4},{2,6},{3,4},{3,6}} 일때 P(x,y) : x는 y의 약수이다라고하면 R = {{2,4},{2,6},{3,6}} 2) ...
1. 기본 용어 정리 (1) 집합의 용어 원소 : 집합의 구성원 ex) a가 A의 원소면 \(a \in A\)로 표기함 원소나열법 : 집합의 원소를 직접 나열하는 방법 ex) {1,2,3,4} 조건제시법 : 집합의 원소를 조건으로 표기하는 방법 ex) {x | x는 자연수} 공집...
1. 명제와 증명 (1) 명제와 연결사 명제 : 참, 거짓이 분명하게 판단되는 문장 단순 명제 : 한 개의 명제 합성 명제 : 몇 개의 단순 명제들이 연결사에 의해 결합된 명제 연결사 : 두 명제 p와 q에 대해 아래의 연결사가 있음 명칭 기호 읽는 법 부정 ~$p$ not p 논리곱 $p \wedge q$...
개요 선형 대수를 듣다보니 집합론에 대한 내용이 부족해서 좀 헤매는 느낌을 받았다. 따라서 집합론을 별도로 수강하기로 했다. (어째 카테고리만 무지막지하게 느는게 아닌가 하는 생각이 들긴하지만) 이상엽Math 님의 유튜브 채널에 올라온 집합론을 기초로 다른 강의 내용을 추가적으로 들어서 업데이트를 할까 한다. 따라서 목차도 이상엽Math 님의 유튜브...
소스코드 분석 시작 쿠버네티스에 대해 가장 확실하게 알아보려면 소스코드를 분석해보는게 가장 확실하다는 판단이 들었다. 그렇기 때문에 쿠버네티스 소스코드를 분석해보기로 했다. 쿠버네티스는 매우 많은 사람들이 기여하고 있는 소프트웨어이다. 그렇기 때문에 분석하고자 하는 버전을 명확히해야 “어제 봤던 거랑 다른 코드인데…?”하는 일을 피할 수 있다. 현...
세마포어 다익스트라가 제안한 방식으로 busy waiting의 문제를 해결할 수 있으며 앞서 언급했던 세가지 조건(상호 배제, 진행, 제한된 대기)를 모두 만족하는 방법이다. 뿐만아니라 다수의 스레드의 경우에도 사용할 수 있는 방법이다. 때문에 멀티 스레드를 구현할 때 API로써 언어에 제공이 많이 되는 편이다. 세마포어에 대해서 알기 위해선 먼...
경쟁 상태 해결법 소프트웨어적 방법 종류 1 Dekker’s Solution 스레드가 두 개일때 사용가능한 방법으로 최초의 상호 배제 알고리즘이다. 이 알고리즘은 상호 배제, 교착 상태 방지, 기아 방지를 보장한다. 의사 코드는 아래와 같다. // 스레드들을 포함한 프로세스에서 정의 bool WTE[2] ={false, false} // 모두 f...
경쟁 상태 여러 개의 스레드가 동일한 자원에 접근하여 작업할 때 작업 순서가 보장되지 않아 진행할때마다 결과가 달라지는 경우를 말한다. 여기서 동일한 자원은 대부분 공유 메모리이다. 문제 제기 생산자 로직이 있고 소비자 로직이 있다고 가정해보자. 그리고 이 두 개의 로직은 한 개의 프로세스 내에서 각각 스레드로 돌아가며 count 변수 값을 공유한다...
교착 상태(Dead lock) 두 개 이상의 프로세스들이 다른 프로세스가 점유하고 있는 자원을 기다릴 때 교착상태가 발생한다. 가령 A 프로세스와 B 프로세스가 있다고 할 때 A,B 프로세스를 끝내기 위해서 둘 다 a,b 리소스가 필요할 때 A와 B 프로세스가 각각 a 리소스와 b 리소스를 점유하고 있어 A,B 둘다 해결되지 않고 무한정 기다리고 있게...
프로세스 실행 중인 프로그램이라고 할 수 있다. 다음과 같은 C언어 프로그램이 있다고 가정해보자 # include <stdio.h> int glob=3; //global or static variable void Function_A (void) { int loc, *dynamic; dynamic = malloc(138...