본문 바로가기

분류 전체보기128

메모리 관리 전략 -목차- 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.