전체 글128 가상 메모리(Virtual Memory) -목차- 1. 가상 메모리(Virtual Memory)란? 2. 요구 페이징(Demand Paging) 3. 페이지 교체 3.1 페이지 교체 알고리즘 1. 가상 메모리(Virtual Memory)란? 이전 업로드한 글에서 주 기억장치의 외부 단편화 해결을 위해 페이징(Paging)이라는 메모리 관리 전략을 사용한다고 하였다. 프로세스는 페이지라는 블록으로 나뉘고, 페이지가 주기억 장치의 프레임에 적제 되어 프로세스가 실행된다. 만약 100MB인 메인 메모리에서 200MB 크기의 프로세스를 실행하려면 어떻게 해야 할까? 단순히 메인 메모리가 더 큰 컴퓨터를 사용해야 하는가? 이런 방법은 매우 비효율적일 것이다. 운영체제는 위와 같은 제약사항을 극복하기 위해 상대적으로 값싼 디스크의 일정 공간을 할당해 보조.. 2022. 2. 4. [DL] 경사 하강법(Gradient Descent) -목차- 1. 경사 하강법(Gradient Descent) 이란? 2. 미분 값(Derivative Term) 3. 학습률(Learning Rate) 4. local minima 문제 1. 경사 하강법(Gradient Descent) 이란? 경사 하강법은 함수 값이 낮아지는 방향으로 독립 변수 값을 변형시켜가면서 최종적으로는 최소 함수 값을 갖도록 하는 독립 변수 값을 찾는 방법이다. 경사 하강법은 머신러닝에서 비용함수(Cost function)를 최소화하는 파라미터 \(\theta \)를 구하는 알고리즘으로 폭넓게 쓰이고 있다. 참고 : 비용 함수(Cost function) 위 그림은 독립변수 \(\theta_{0}\), \(\theta_{1}\)을 가지는 임의의 함수 \(J\)가 있을 때, \(J\).. 2022. 2. 4. 메모리 관리 전략 -목차- 1. 메모리 관리 배경 1.1 스와핑(Swapping) 1.2 단편화(Fragmentation) 2. Paging(페이징) 3. Segmentation(세그맨테이션) 4. Paging과 Segmentation 1. 메모리 관리 배경 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다. 메인 메모리(Main Memory, Physical Memory, 주기억장치)는 CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되려면 프로그램 코드를 메인 메모리에 적재해 두어야 한다. 그런데, 만약 프로그램 용량이 메인 메모리보다 크면 .. 2022. 2. 3. 프로세스 동기화(Process Synchronization) [파이썬(Python)] -목차- 1. 프로세스 동기화 (Process Synchronization)란? 2. 임계 구역(Critical section) 문제 3. 임계구역과 동기화의 필요성 4. Lock(MutEx) 5. 세마포어(Semaphore) 1. 프로세스 동기화 (Process Synchronization)란? 정의 : 협력하는 프로세스 사이에서 실행 순서 규칙을 정하여 공유 자원의 일관성을 보장하는 것 프로세스가 서로 협력하며 공유 자원을 사용하는 상황에서, 경쟁 조건이 발생하면 공유 자원을 신뢰할 수 없게 만들 수 있다. 이를 방지하기 위해 프로세스들이 공유 자원을 사용할 때 특별한 규칙을 만드는 것이 프로세스 동기화이다. 임계 구역 (Critical Section) : 여러 프로세스(또는 스레드)가 자원을 공유하.. 2022. 2. 3. Blocking, Non-blocking, Sync, Async 의 차이 1. Blocking/NonBlocking Blocking/NonBlocking은 호출되는 함수가 바로 리턴하느냐 마느냐가 관심사다. 호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 줄 수 있으면 NonBlocking이다. 그렇지 않고 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다면 Blocking이다. 정리하자면 블로킹 Blocking A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료되기 전까지 A 함수에게 제어권을 돌려주지 않는 것 논블로킹 Non-blocking A 함수가 B 함수를 호출 할 때, B 함수가 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 .. 2022. 2. 2. [DL] 가중치 초기화(Weight Initialization)[파이썬/Python] -목차- 1. 초기 가중치 설정(Weight Initialization)의 필요성 2. 초기 가중치의 가장 합리적인 초기화 방법은 무엇일까? 2.1 Random Inifialization 2.2 Xavier Initialization 2.3 He Initialization 3. MNIST 데이터셋을 활용한 가중치 초기화 비교 실험 마치며 구현 코드 : weight_initialization 1. 초기 가중치 설정(Weight Initialization)의 필요성 신경망 모델의 목적은 손실(Loss)을 최소화하는 과정, 즉 파라미터 최적화(Parameter optimization)이다. 이를 위해서 손실 함수에 대해 경사 하강법을 수행한다. 이를테면, 어떤 데이터셋의 손실 함수 그래프가 아래와 같이 생겼다.. 2022. 2. 2. 이전 1 ··· 11 12 13 14 15 16 17 ··· 22 다음