생각정리
CPU 스케줄링
서론 스케줄러(Scheduler)는 언제, 어떤 프로세스를 선택해서 CPU에서 실행시킬지 결정하는 모듈이다. 멀티프로그래밍의 목적은 CPU 효율을 극대화하는 것이므로 적절한 스케줄링이 필수적이다. 기본적으로 프로세스는 CPU만 사용하는 단계(CPU burst)와 I/O 작업만 하는 단계(I/O burst)의 반복으로 구성된 사이클 형태로 수행된다. 이러한 여러 작업이 혼재되어 있기 때문에 CPU 스케줄링이 필요하다. CPU Scheduler는 메모리에서 Ready 상태의 프로세스 중 어떤 프로세스를 CPU에 할당할지 선택한다. CPU 스케줄링으로 인해 프로세스의 상태는 다음과 같이 변경될 수 있다:Running → Waiting(Blocked): I/O 요청이나 자식 프로세스의 종료를 기다리는 경우Run..
![[JS] Javascript에서의 Memory Management](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK2TpF%2FbtsICQgXaL1%2FVKx8rlM7KZgvklDJ0xkE81%2Fimg.jpg)
[JS] Javascript에서의 Memory Management
Introduce C와 같은 low-level 언어는 malloc()과 free()와 같은 함수로 수동 메모리 관리가 가능하다. 반면, JavaScript는 객체가 생성될 때 자동으로 메모리를 할당하고 더 이상 사용되지 않을 때 garbage collection를 통해 이를 해제한다. 이러한 자동화는 개발자에게 메모리 관리를 신경 쓰지 않아도 된다는 잘못된 인식을 줄 수 있어 혼란의 원인이 될 수 있다. 이 글에서는 JavaScript에서 메모리 관리가 어떻게 이루어지는지 알아보아 효율적인 메모리 관리를 가능하게 하는데 도움이 되고자 한다. PrelimiaresJavascript data type 자바스크립트에는 기본형, 참조형 자료형이 있다. 기본형과 참조형의 종류들은 아래 그림에 나타내었다. 기본형과..

브라우저 렌더링 과정
1. 서론 웹서버에 요청을 하면 브라우저는 우리가 접근하려는 웹페이지의 HTML 파일을 포함한 응답을 받는다. 유저에게 웹페이지를 보여주기 위해서 브라우저는 파일을 파싱, 렌더링, 페인트 해야 한다. 파싱이란 프로그램을 분석하고 실행 환경에서 실제로 실행할 수 있는 내부 형식으로 변환하는 것이다. 즉, 파싱은 우리가 작성한 코드(HTML, CSS)를 브라우저가 작업할 수 있는 형태로 변환하는 것을 의미한다. 파싱은 브라우저 엔진에 의해 수행된다. 브라우저 엔진에는 Gecko, Webkit, Blink 등이 있다.2. HTML Parsing2.1 Byte Stream Decoder입력: 3C 62 6F 64 79 3E 48 65 6C 6C 6F 2C 20 3C 73 70 61 6E 3E 77 6F 72 6..

왜 리눅스는 서버OS로 많이 사용되는가: 리눅스 커널
서론 서버형 컴퓨터에 OS로는 대부분 리눅스를 사용하는 것을 알 수 있다. 델, 아마존, 애저에서 클라우드 및 네트워크 엔지니어로 일하는 선배들의 말을 들었을 때 대부분의 서버에 OS는 리눅스를 사용한다고 한다. 여태까지 개발자가 리눅스를 사용하는 이유 혹은 서버에서 OS로 리눅스를 선택하는 이유에 대해 막연하게 리눅스가 CLI가 잘 되어 있어서라고 알고 있었는데, 이 글에서는 왜 리눅스가 윈도우보다 서버 OS로 더 많이 선택되는지에 대해서 알아보고자 한다. 물론 OS는 드라이버, 시스템 라이브러리, UI, 커널 등 다양한 요소들로 이루어져 있지만, 이 글에서는 리눅스의 커널에 대해서 알아보고자 한다. 배경지식커널 커널은 운영체제의 핵심 구성 요소 중 하로, 하드웨어와 소프트웨어 간의 중개자 역할을 한다..

Git의 동작원리
Git의 버전관리 Git은 분산 버전 관리 시스템(이하 DVCS)으로, 각 클라이언트가 전체 저장소의 복사본을 소유한다. 이는 중앙 서버에 대한 의존성을 줄이고, 네트워크 연결이 불안정한 상황에서도 작업을 지속할 수 있게 한다. 모든 커밋은 sha-1을 통한 Hash를 가지며, 저장하기 전 checksum을 통해 검사하므로 데이터의 무결성을 보장한다.DVCS에서는 클라이언트가 단순히 최신 파일을 체크아웃하는 것이 아니라 전체 저장소를 복제한다. 따라서 과거 버전으로 돌아갈 때 Git은 서버할 필요 없이 로컬 데이터베이스에서 직접 읽어온다. 또한 대부분의 Git 작업은 로컬 파일과 리소스만으로도 수행할 수 있어, 네트워크상의 다른 컴퓨터로부터 정보를 받을 필요가 없다. 따라서 깃의 동작은 매우 빠르다. G..

React lifecycle 이해하기
Introduce framework에서의 lifecycle은 component가 DOM에 추가되어 브라우저에 의해 렌더링되는 시점(마운트)부터 DOM에서 제거되는 시점(언마운트)까지 여러 단계를 포함한다. 각 프레임워크마다 다른 lifecycle을 가지며 컴포넌트가 마운트될 때, 렌더링될 때, 언마운트될 때, 그리고 이들 사이의 여러 단계에서 특정 작업을 수행할 수 있다. 이 글에서는 React의 핵심 개념인 Virtual DOM, React Fiber, Reconciliation, Scheduling, Commit Phase, Render Phase 등에 대해 다룰 것이다. 이러한 개념을 이해하여 React 애플리케이션의 성능과 사용자 경험을 최적화하는 데 도움을 받을 수 있길 바란다.Prelimina..
CSS Framework들의 특징과 장단점 비교 (tailwind, styled-componets)
Introduce CSS 프레임워크를 선택하는 것은 웹 개발에서 매우 중요한 결정이다. 왜냐하면 CSS 프레임워크는 개발 속도와 코드 유지 보수성에 큰 영향을 미치기 때문이다. 다양한 CSS 프레임워크가 존재하며 각각의 프레임워크는 고유한 특징과 장단점을 가지고 있다. CSS 프레임워크를 선택할 때는 프로젝트의 요구 사항과 팀의 역량을 고려해야 한다. 따라서 이 글에서는 기업들에서 많이 사용하는 Tailwind, Styled-components, 두 가지 프레임워크를 비교하여 어떤 프레임워크가 적합한지 살펴보고자 한다. TailwindAboutTailwind CSS는 최근 웹 개발 커뮤니티에서 급격히 인기를 얻고 있는 utility-first CSS 프레임워크이다. Tailwind는 빠른 UI 개발을 위..
SPA와 MPA의 차이, 작동 원리에 대해서 (feat CSR, SSR)
서론 모던 웹사이트들은 대부분 라이브러리와 프레임워크를 이용해서 만들어진다. 이는 유저들과 웹사이트와의 상호작용이 늘어남에 따라 UI를 더 쉽게 구성하고 사용자에게 더 나은 경험을 제공하기 위한 웹 애플리케이션을 개발하는 필요성이 증가하고 있기 때문이다. 현재 사용되는 라이브러리와 프레임워크들은 각기 다른 아키텍처와 렌더링 방식을 사용하고 있다. 이러한 방식들의 차이와 장단점을 이해함으로써 적절한 라이브러리와 프레임워크를 선택하는 데 도움을 받을 수 있다. 많은 사람들이 SPA(Single Page Application)와 CSR(Client-Side Rendering)을 동일시하고, SSR(Server-Side Rendering)과 MPA(Multi-Page Application)를 동일시하는 경향이 ..