Computing 32

Memory Fragmentation. 메모리 단편화

RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만, 할당(사용)이 불가능한 상태를 말한다. 이는 내부, 외부 2가지로 구분된다. Internal fragmentation. 내부 단편화 → 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황. *A App이 실행될 때 OS는 4kb를 할당했지만, 정작 프로그램은 1kb만 사용하고 있음. 이때 3kb 만큼의 내부 단편화가 발생 External Fragmentation. 외부 단편화 → 메모리가 할당되고 해제되는 작업이 반복될 때 작은 메모리가 중간중간 존재하는데, 이 사용하지 않는 메모리들이 여럿 존재하여 총 메모리 공간은 충분하지만 실제로 할당할 수 ..

False sharing. 거짓 공유

CPU 내부의 코어와 코어간의 메모리 정보가 공유되어 하드웨어 적으로 병목현상이 일어나는 것을 뜻한다. 일반적인 CPU는 L1, L2 캐쉬가 코어에 있고 L3는 외부에 나와 있다. L3 캐시는 메모리로부터 data를 받아오고, 해당 데이터를 L2 → L1 순으로 전달하게 된다. L1 cache는 long long num1 과 long long num2 가 있다. cache는 자주 사용하는 데이터를 메모리까지 가지 않고 메모리 보다 빠른 cache에 저장함으로서 좀 더 빠르게 데이터를 처리하려 한다. CPU는 cache 라인에 따라 64byte로 통째로 읽어온다. 64byte를 통째로 읽어오면 Core 1에는 num1과 num2가 있다. Core2에는 num2의 시작 위치부터 읽어 오고 64byte이내에 ..

Race condition. 경쟁 상태

공햑 분야에서 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태를 말한다. 두 개 이상의 프로세스가 공통 자원을 concurrently(병행적으로) 읽거나 쓰는 동작을 할 때, 순서에 따라 결과가 같지 않고 달라지는 상황을 이야기한다. race는 뜻 그대로, 경쟁하는 상태이고, 두 개 이상의 쓰레드가 하나의 공유 자원을 놓고 서로 사용하기 위해 경쟁하는 상황을 말한다. https://ko.wikipedia.org/wiki/경쟁_상태 https://iredays.tistory.com/125

Cache line.

CPU가 메모리로부터 데이터를 가져올 때 바이트 단위가 아닌 Cache line을 가득 채울 만큼의 데이터를 가져오는 것을 말한다. 메모리의 페이징 기법과 비슷하고, CPU에 따라 32, 64, 128 byte 로 구성되며 해당 사이즈 경계로 정렬되어 있다. Cache line을 사용하는 이유는 일반적인 app의 경우 인접한 byte들을 사용하는 경우가 많기에 cpu의 메모리 접근 횟수를 줄여 성능을 향상 시키기 위함이다. Cache line은 성능의 향상을 위해 도입되었지만, 멀티 프로세서 환경에서는 문제가 될 여지가 있다. 다수의 CPU가 동일한 Cache line을 보유하고 있고, 그 중 하나의 CPU가 해당 Cache line을 수정한다면 다른 CPU들은 해당 Cache line의 갱신을 어떻게 ..

Architecture, Blueprint

시스템 목적을 달성하기 위해 시스템의 상호작용동의 시스템 디자인에 대한 제약 및 설계. 최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성 환경 등을 설명 및 설계하는 청사진 또는 설계도. 컴퓨터 구조는 컴퓨터 공학에서 개념의 설계요인, 컴퓨터 시스템의 근간이 되는 운영 구조. 컴퓨터 시스템의 하드웨어 구조를 말하는데, 시스템을 구성하고 있는 하드웨어인 CPU, Register, 기억 장치 등에 대한 전반적인 기계적 구조와 이를 설계하는 방법. http://blog.naver.com/PostView.nhn?blogId=skytk123&logNo=120156946307

Jupyter - default directory 설정하기(워킹 디렉토리)

해당 블로그에 정말 깔끔하게 잘 정리되어 있다. 0.4.6 주피터의 기본 워킹 디렉토리 설정하기 0. 차례1. 들어가기2. 주피터 노트북의 기본 워킹 디렉토리 설정하기3. 주피터 실행 파일의 대상 경로 수정... blog.naver.com 간단히 정리하면 아래와 같다. 1 jupyter가 실행될 수 있는 환경에서 아래와 같은 명령어를 입력한다. jupyter notebook --generate-config 2 명령어가 실행되면 아래의 경로에 notebook config.py가 생성된다. User folder 하위에 생성되는 것을 확인 할 수 있다. 3 py 확장자를 편집할 수 있는 Tool을 사용하여 아래의 문장을 검색한다. c.NotebookApp.notebook_dir 4 기본 디렉토리로 적용하고 싶..

Computing/Jupyter 2020.12.14

Windows 10 코타나(Cortana) 끄기 및 제거하기

작업표시줄에 떠 있는 O 아이콘이 걸리적 거렸다. 가뜩이나 한 번 작업을 시작하면 5개 이상의 각기 다른 프로그램 창이 하단을 가득 채우는데 이녀석 때문에 더 좁아보여서 그냥 지웠다. Windows 10, 2004 버전에서 파워셀 명령어로 코타나를 삭제하는 방법 Get-AppxPackage -allusers Microsoft.549981C3F5F10 | Remove-AppxPackage 출처 : jsb000.tistory.com/1409 Windows 10 코타나(Cortana) 끄기 및 제거하기 윈도우 10에서 코타나(Cortana)는 조만간 스토어의 앱으로 이동될 것으로 예상됩니다. 이미 오래전부터 MS는 검색과 코타나를 분리했습니다. 현재 영어와 몇몇개국의 언어밖에 지원하지 않습니다. jsb000...

Operating System 2

0. 운영체제는 프로그램 구동 환경을 제공한다. 운영체제의 관찰 관점은 고유의 서비스, 인터페이스, 상호연관성을 살펴보는 것이다. 1. 운영체제 서비스는 프로그래머가 보다 쉽게 프로그래밍 할 수 있도록 프로그래머에게 편리함을 제공한다. 사용자인터페이스 : 명령어 라인, 배치, 그래피컬 사용자 - 세가지 모두 형태를 제공한다. 프로그램 실행 : 메모리에 적재해 실행, 입출력 연산 : 입출력 실행의 수단을 제공해야 한다. 파일 시스템 조작 : 파일 시스템은 특히 중요한 분야이다. 프로그램은 읽고 쓸 필요가 있다. 통신 : 한 프로세스가 다른 프로세스와 정보를 교환하는 상황이 있다. 동일한 컴퓨터에서 실행되는 프로세서 사이에 일어나거나 네트워크에 연결되어 있는 다른 시스템 상에서 실행되는 프로세들 사이에서도 ..