본문 바로가기

개발에 도움이 되는

(78)
컴퓨터를 켜면 일어나는 과정 (OS 부팅 과정) 1. 전원을 켜면 파워 서플라이가 메인보드에 전기를 공급하고, 메인보드가 작동한다. 2. 메인보드에 내장된 메인 메모리인 ROM (Read Only Memory)의 BIOS (Basic Input Output System)가 실행된다. - BIOS : 시스템 보드 칩에 포함된 가장 먼저 실행되는 소프트웨어. 컴퓨터의 하드웨어를 식별, 구성, 테스트하고 운영 체제로 연결하여 추가 지침을 내릴 수 있도록 함 (이 절차를 부트 프로세스라고 부름) 3. BIOS는 RAM, 키보드, 디스크, 기타 하드웨어 등 필수적인 주변 장치들이 문제 없이 동작하는 지 확인하기 위한 테스트인 POST (Power On Self Test)를 동작 시킨다. 만약 문제가 있으면 삑 소리와 함께 에러메시지를 나타내고 부팅이 중단된다...
가상 메모리(Virtual Memory) - 가상 메모리 (Virtual Memory) : 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술. 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 두는 것이며, 프로세스 전체가 물리적 메모리에 있는 것처럼 수행되는, 즉 물리적 메모리가 훨씬 많이 있는 것처럼 보이게 된다. 항상 모든 프로그램에 대한 데이터가 필요한 것이 아니기 때문에 프로그램의 일부분을 필요한만큼 계속 RAM에만 올려놓도록 하고 나머지는 Backing Storage에 넣어놓는다. 결과적으로 메모리에 작은 양의 주소 공간만 있으면 충분히 프로세스를 수행할 수 있고, 그에 따라 더 많은 프로그램을 동시에 실행할 수 있게 된다. 가상 메모리를 구현하기 위해서는 메모리 관리 하드웨어인 MMU (Memory ..
Float(부동 소수점 자료형)의 숫자 표현법 - Float (부동 소수점 자료형) : 부동이라고 해서 움직이지 않는다라는 뜻이 아니다. 그 반대의 의미로 소수점이 떠다니며 움직인다라는 의미의 부동이다. 컴퓨터는 2진수로 소수를 어떻게 표현할까? 위의 그림처럼 2진수만으로 표현할 수 있었으면 좋겠지만 그렇지 않은 경우가 있다. 예를 들어 0.3 같은 경우에는 0.01001100110011..... 무한 반복이다. 그래서 어쩔 수 없이 컴퓨터는 이를 표현할 수 있는 가장 근사치의 값이 저장된다. 이 근사 값을 저장하는 방법은 두 가지가 있다. 1. 고정 소수점 : 정수를 표현하는 비트 수와 소수를 표현하는 비트 수를 미리 정해 놓고 해당 비트만큼만 사용해서 숫자를 표현하는 방식이다. 예를 들어 실수 표현에 4byte(32bit)를 사용하고 그중 최상위..
호이스팅(Hoisting) - 호이스팅 (Hoisting) : 코드가 실행하기 전 변수/함수 선언을 실행 컨텍스트 내부 메모리에 저장시킴으로써, 해당 스코프의 최상단으로 끌어 올린 것처럼 처리하는 것 자바스크립트 엔진은 코드를 실행하기 전 실행 가능한 코드를 형상화하고 구분하는 과정 즉, 실행 컨텍스트를 위한 과정을 거친다. 실행 컨텍스트를 위한 과정에서 모든 선언(var, let, const, function, class)을 스코프에 등록한다. - 실행 컨텍스트 : 실행할 코드에 제공할 환경 정보들을 모아 놓은 객체 코드 실행 전 이미 변수/함수 선언이 저장되어 있기 때문에 선언문보다 참조/호출이 먼저 나와도 오류 없이 동작한다. (단, let과 const 등은 참조할 수 없다는 error 메세지가 뜨지만 호이스팅이 안된게 아님..
SPA(Single Page Application) - SPA (Single Page Application) : 단어를 그대로 해석하면 단일 페이지 어플리케이션이다. 서버로부터 새로운 페이지(HTML)를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자에게 더 나은 UX를 제공할 수 있다. SPA는 웹 앱에 필요한 모든 정적 리소스를 처음에 한번 다운로드한다. 페이지 간 이동 시, 페이지 갱신에 필요한 데이터만을 Json으로 전달받아 페이지를 갱신하므로 전체적인 트래픽을 감소할 수 있고, 전체 페이지를 다시 렌더링하지 않고 변경되는 부분만을 갱신하므로 새로고침이 발생하지 않는다. 위의 그림들을 보면 더 직관적으로 이해할 수 있을 것이다. - 장점 1. 자연스러운 사용자 경험(UX) : 전체 페이지를 업데이트할 필요가 없어서 깜빡거림이 안생긴..
Node.js - Node.js 1. 자바스크립트를 브라우저 밖에서도 실행시킬 수 있게 만든 자바스크립트 런타임(실행 환경) 2. Single Thread Non-Blocking Model 3. SIngle Thread지만 비동기 I/O 작업을 통해 요청들을 서로 Blocking 하지 않음 4. 동시에 많은 요청들을 비동기로 수행함으로써 Single Thread지만 Non-Blocking이 가능 5. 이벤트 기반으로 동작 - 이벤트 기반 : 이벤트가 발생할 때 미리 지정해둔 작업을 처리하는 방식, Node.js는 이벤트 리스너에 등록해둔 콜백 함수를 실행하는 방식으로 동작(이벤트 루프가 이를 가능하게 해줌) 6. Clustering을 통해 프로세스를 fork하여 Multi Thread 처럼 사용 가능하여 서버의 확정성..
Web browser 동작 과정 사용자가 크롬과 같은 웹 브라우저 주소창에 URL을 입력하면 이를 DNS로부터 IP 주소를 받은 뒤(어떻게 IP 주소를 받는지 보러가기), 웹서버를 통해 해당 IP의 화면에 보여줄 Data를 요청한다. 받은 Data를 이용하여 화면에 출력을 한다. 어떤 방식으로 Data를 처리하여 화면에 출력하는지 정리해보려고 한다. 우선 받은 Data(HTML, CSS, Img 등)는 웹 표준화 기구인 W3C의 명세에 따라 해석한다. - 용어 1. DOM (Document Object Model) : 파싱한 HTML 파일 내용과 구조를 자바스크립트가 이해할 수 있는 객체 행태로 변경한 것 2. CSSOM (Cascading Style Sheets Object Model) : 파싱한 CSS 정보를 객체 형태로 변경한 것..
힙(Heap) - 힙 (Heap) 이진 힙(binary Heap)이라고도 하며, 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전 이진트리(Complete Binary Tree)를 기본으로 한 자료 구조 오로지 부모 노드의 값과 자식 노드의 값 사이에는 대소관계가 성립한다. 형제 사이에는 대소관계는 의미 없음. 우선 순위 큐, 다익스트라 알고리즘 등에 사용 - 힙의 종류 1. 최대 힙 (Max Heap) : 부모 노드의 값이 자식 노드의 값보다 크거나 같은 힙, 가장 큰 값이 루트 노드에 있음 2. 최소 힙 (Min Heap) : 부모 노드의 값이 자식 노드의 값보다 작거나 같은 힙, 가장 작은 값이 루트 노드에 있음 - 힙 표현 : 일반적으로 배열로 표현, 개발 편의성과 가독성 때문에 배열 인덱스 1..

반응형