본문 바로가기
반응형

일단 제가 준비한 건,261

운영체제 비순차적 명령어 처리 ( Reorder , Out-of-order execution , OoOE ) Reorder or Out-of-order execution (OoOE) (비순차적 명령어 처리) 말 그대로 명령어를 순차적으로 실행하는 것이 아니라 cpu의 효율을 최대화하기 위해 비순차적으로 처리하겠다는 의미다. 간단히 예를 들어보자. 2개의 core는 boolean flag = false;와 int x = 0;이라는 공유 변수를 사용한다 했을 때 코드를 보자. # share var boolean flag = false; int x = 0; # core 1 while(!flag); print(x); # core 2 x = 100; flag = true; 이렇게 돼 있으면 core1과 core 2는 동시에 두 공유 변수를 가져와서 실행한다. 이때 core1에서는 무한루프에 빠지고, core 2에서 x를.. 2022. 5. 12.
운영체제 Sychronization ( 동기화, Mutual Execlusion, Progress, Bounded waiting, Interrupt-based solution, Peterson's solution, Memory Barrier ) 먼저 Race condition에 대해 알아보자 Race condition이란 한정된 자원을 동시에 이용하려고 프로세스끼리 경쟁을 벌리는 걸 말한다. 예를 들어보자, 네이버에 서버 접속하면 fork()를 통해 고유의 PID를 배정받고 thread가 생성된다. 근데 동시에 네이버에 접속하는 사람이 있다면 누구에게 다음 PID를 배정해야 할까?? 이렇게 동기화의 문제가 생긴다. 이렇듯 중요한 정보를 가지고 있는 부분을 critical section이라고 부른다. critical section에는 공유 변수(common variables), updating tabel, writing file 등과 같은 것들이 있다. 이런 부분에는 혼자만 수정해야 한다. 그래야 동기화 문제가 생기지 않는다. 크게 4개의 부분으.. 2022. 5. 12.
딥러닝을 위한 기초 개념 Perceptron ( 활성함수, DNN ) Perceptron 가장 기본이 되는 단위라고 생각할 수 있다. 어떤 모델에 대해 내가 원하는 결과를 나타내는 h라고 본다. 심플하게 어떤 입력과 h에 대한 가중치를 곱한 값을 sign함수에 넣었을 때, 양수면 +1로 판단하고 음수면 -1로 판단한다. 일종의 예측값이라고 보면 된다. 이렇게 예측값과 실제 값이 있을 텐데 이 값을 비교해서 틀렸다면 가중치 w를 변경해가며 내가 원하는 결과가 나올 때까지 h를 변경해 간다. 가중치란 어떤 입력이 더 중요한지 아닌지에 대한 조절 값이다. 다음과 같은 식이 있는데 조금 더 예쁘게 하기 위해 b를 w0라고 하고 1을 x1이라고 하면 예쁜 식이 나온다. 이렇게 시그마를 행렬로 바꾸면 똑같은 결과를 나타내니 더 이쁘게 정리하기 해서 최종적으로 위와 같은 식이 나왔다... 2022. 5. 4.
딥러닝을 위한 기초 개념 Entropy ( Cross entropy, KL divergence, 엔트로피 ) Entropy 먼저 entropy에 대해 알아보자 entropy는 정보를 표현하는데 있어 필요한 평균 최소 자원량이라고 한다. 그렇다면 정보를 어떻게 표현할까? 공통적으로 bits로 표현하기로 했다. 그렇다면 비트가 길면 길수록 더 많은 자원을 썼다고 볼 수 있다. 그러니 우린 최소한으로 만들기 위해 비트의 길이를 줄여야 한다. 예를 들어보자, 대화를 하는데 100마디 중에 1마디만 욕이라고 하고, 나머진 칭찬이라고 하자. 이럴 때 욕과 칭찬을 bit로 표현할 때, 욕을 1bit, 칭찬을 3bit라고 하면 (3 bit * 99 + 1 bit * 1) = 298 bit으로 표현된다. 하지만 우린 최소 길이로 만들어야 한다. 그러니 확률이 적은 애한테 큰 bit를 할당해야 한다. 욕을 3bit, 칭찬을 1b.. 2022. 5. 2.
운영체제 Linux Schedule Algorithm ( O(N), O(1), CFS, 변천사 ) O(N) Algorithm - version 2.4에는 O(N) algorithm을 사용했다. 단순히 N개의 프로세스가 있는 ready queue를 확인하며 우선순위에 따라 time quantum 기준으로 실행했다. 이러니 프로세스가 많으면 많은 시간이 걸린다는 단점이 있다. Q(1) Algorithm - version 2.6에서는 O(1) algorithm을 사용했다. O(1)은 runqueue를 이용하여 프로세스의 수와 상관없이 queue마다 정해진 시간(constant time) 동안 task를 동작하는 것이다. # run queue란, cpu에 실행되기 전에 대기하는 queue라고 생각하면 되는데 Active(활성) array와 Expired(만료) array로 나눈다. O(1) 알고리즘을 동작을.. 2022. 4. 28.