본문 바로가기

전체 글

(273)
DDD를 적용할 건데, 잘 이해해보자 DDD에 관한 내용을 작성할 예정.
Register 레지스터란? 레지스터는 CPU 내부에 위치한 고속 기억 장치인데요. 이들은 데이터를 일시적으로 저장할 수 있습니다. 그리고 CPU가 연산을 수행하는 데 필요한 정보를 제공하는 역할을 하고 있습니다. 레지스터는 CPU가 매우 빠른 속도로 접근할 수 있기 때문에 CPU가 작업을 수행할 때 가장 먼저 사용하는 메모리 공간입니다. 그렇다면? 레지스터의 주요 역할은 무엇일까?레지스터는 데이터 저장 및 빠른 접근이 가능하는 것입니다. 레지스터는 CPU 내부에 있기 때문에 다른 주기억 장치인 RAM보다 훨씬 빠르게 접근할 수 있습니다. 그리고 이는 연산 속도를 향상하고 프로그램 실행을 더 효율적으로 할 수 있게 만들어 줍니다. CPU에서 수행되는 연산은 주로 레지스터에서 이루어지게 됩니다. 그리고 프로그램의 흐름을 제어하기도 하..
공식문서에서 EventLoop의 MacroQueue를 Event Loop란?Node.js가 논 블로킹 I/O 작업을 수행할 수 있게 도와주는 기능입니다. 어떻게 도와주냐면, 이벤트 루프가 libuv에 작업을 넘기면서 논 블로킹을 하게끔 도와줍니다. 그래서 자바스크립트가 싱글 스레드로 동작함에도 불구하고 논 블로킹 I/O 작업을 수행할 수 있게 합니다. 이러한 I/O 작업이 완료되면 libuv은 Node.js에 이벤트를 전달하게되고, 콜백을 Polling Queue에 추가해 실행할 수 있게 합니다.공식 홈페이지에서는 libuv라고 적혀있지 않고 커널(Kernel)이라고 적혀있습니다. libuv가 좀 더 맞다고 생각해 자체적으로 변환했습니다.Event Loop는 단계를 순차적으로 이동한다. 모든 단계를 한 번 도는 것을 Tick 이라고 한다.먼저 각 단계에 관..
클로저란 무엇인가요? 클로저(Closure)란?실행 컨텍스트가 생성되면서 Lexical Environment에는 두가지 객체가 생성이 됩니다. 하나는 Outer Environment Reference이고, 다른 하나는 Environment Record 입니다. Outer Environment Reference는 현재 실행 컨텍스트가 실행되기 전에 생성된 실행컨텍스트의 Lexical Environment를 참조하고 있는 형태를 이루고 있습니다. 그래서 Scope Chain이 가능한 이유가 이때문으로 나와있습니다. 이 상황에서 클로저라는 것은 어떤 함수 A(현재 실행 컨텍스트가 실행되기 전에 생성된 실행 컨텍스트)에서 선언한 변수 a를 참조하는 내부함수 B(현재 실행 컨텍스트)를 외부로 전달할 때, 전달되는 상황은 return으..
실행 컨텍스트(Execution Context)에 대해서 해당 글은, 코어 자바스크립트를 보고 제가 정리한 내용입니다. 좀 더 자세한 내용을 원하시는 분들은 코어 자바스크립트 책을 구매하셔서 보시면 더 많이 이해를 하실 수 있습니다.실행 컨텍스트란(Execution Context)? 무엇인가?실행 컨텍스트에 담기는 내용들을 먼저 설명해 보겠습니다.첫 번째로, Variable Environment입니다. Variable Environment는 현재 실행한 함수의 초기 값들이 스냅샷 형태로 저장되어 있는 것을 의미합니다. 초기값이라는 것은 좀 추상적이니까 풀어서 얘기해 보자면, 매개변수, 변수, 함수명 등등이 포함이 됩니다. 이 부분의 특징은 처음 선언된 상태 그대로 유지가 된다는 것이 특징 중에 하나입니다. 두 번째로, Lexical Environment인데. ..
Run 중에 Interrupt가 된다면? Interrupt되는 순간과, Wating으로 상태변화 되는 순간 전부 Context Switching이 일어난다라고 설명을 했었던 기억이 있다. 하지만, 고작 keyboard, mouse 이벤트로 Context Switching이 일어날수 없지 않을까?Interrupt란?일단 Interrupt라는 것을 설명해보도록 하겠습니다. Interrupt는 외부 또는 내부 이벤트인 하드웨어 신호 또는 시스템 콜과 같은 것들로 인해 실행중인 프로세스를 일시 중단하는 것을 의미합니다. Interrupt 신호는 하드웨어 장치인 키보드, 마우스, 디스크, 타이머가 CPU에 보내는 신호입니다. 이러한 신호를 감지하게 되면 CPU는 일단 현재 작업을 중단하게 될 것입니다. 그 이후 인터럽트 벡터 테이블(Interrupt V..
자바스크립트는 선언과 할당을 어떻게 해줄까? 아래 적힌 내용은 코어 자바스크립트를 참조해서 제 생각과 책 내용을 합친 내용입니다. 더 많은 지식을 얻고 싶으시다면, 코어 자바스크립트를 정독하는 것을 추천드립니다.기본형(Primitive)과 참조형(Reference)자바스크립트의 타입은 기본형과 참조형 두가지로 나뉘어지게 되는데, 기본형은 Number, String, boolean, Symbol, undefined, null 이렇게 여섯가지 그리고 참조형은 객체, 배열, 등등이 존재하고 있습니다. 기본형이라는 것 중에서 중요한 것은 불변성(Immutability)를 띄는 것을 의미하는데, 불변성의 의미를 잘 파악하고 있어야 된다고 생각해요. 왜냐하면, 일단 var a = 10; 이라고 하고 a = 15라고 변경을 해서 console을 찍어보면 15라..
Process가 생성되면서 PCB(Process Control Block)이 어떻게 변화할까? 프로그램을 명령어나 아이콘을 클릭함으로써 프로세스로 만드는데, 우리는 이 프로세스를 실행 중인 상태 OS의 제어를 받고 있는 상태라고 불렀습니다. 그래서 이 프로세스가 실행되려면 CPU가 연산을 처리하고 있는 것이죠? 그럼 CPU는 어떤걸 참조해서 연산과정을 처리하는 걸까요? 프로세스가 생성되면서, PCB(Process Control Block)가 동시에 생성됩니다. 이 내부에 어떤 과정이 있긴 합니다. 하지만 여기선 어떻게 할당 되는지 저장되는지 초기화 되는지를 설명해보겠습니다.PCB는 어떻게 할당되어 질까?할당은 여러가지 방법들이 존재하는데, 그중에서 사전 할당(Pre Allocation)이 있습니다. 우리가 잘 아는 Pool 있죠, DB의 Connection Pool처럼 바로 Connection을 ..