분류 전체보기 97

메모리 관리

[ 메모리 관리 ] 각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있음. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않기 때문에 운영체제에서 메모리를 관함. 또한, 멀티프로그래밍 환경으로 변화하면서 한정된 메모리를 효율적으로 사용해야 했고, 운영체제가 이를 어떻게 관리하는지에 대한 관리방법이 중요해짐 즉, 어떤 프로그램이든 프로세스가 되어 프로세서에 적재되기 위해서는 메모리에 적재되어야 실행이 가능함 따라서 메모리는 중요한 작업 공간이고 한정된 메모리를 다중 프로그래밍 환경에서 이용하기 위해서는 여러 프로세스가 함께 메모리를 사용하므로 효율적인 관리를 해야함 이러한 메모리 관리를 위해 메모리..

CS/컴퓨터 구조 2024.03.10

EC2란?

1. EC2란 무엇인가? 3. 마무리 ✅ EC2란 무엇인가? Amazon Elastic Computed Cloud의 준말로 AWS 클라우드에서 온디맨드 확장 가능 컴퓨팅 용량을 제공하여 하드웨어 비용 절감 및 빠른 애플리케이션 배포를 목적으로 사용하는 클라우딩 컴퓨팅 서비스 사용한만큼 비용을 지불하기에 Elastic(탄력적)이라는 용어가 붙었으며, 비용뿐만아니라 성능, 용량 또한 자유롭게 조절할 수 있다. 우리는 물리적으로 서버를 구축하여 사용하는 것보다 더욱 빠르고 간편하고 적은 비용을 들이고 효율적으로 서버를 구축하기 위해 클라우딩 컴퓨팅 서비스를 이용할 수 있다. 📌 온디맨드 확장 가능하다? 더보기 사용자가 필요할 때마다 실시간으로 컴퓨팅 리소스를 추가하거나 줄일 수 있다는 의미로 이러한 유연성을 ..

CS/네트워크 2024.03.10

JWT - 어떻게 사용해야하는가?

1. JWT란 무엇인가? 2. 왜 JWT를 사용해야하는가? 3. JWT는 안전한가? 4. 토큰 탈취는 어떻게 이루어지는가? 5. 나는 어떤 방법으로 보안을 강화해야할까? ✅ JWT(JSON Web Token)란 무엇인가? 웹에서 사용되는 JSON 형식의 토큰에 대한 표준 규격으로 사용자의 인증, 인가 정보를 서버와 클라이언트 간에 안전하게 주고 받기 위해 사용되는 토큰이다. header, payload, signature로 구성되어 있으며 Base64-URL 문자열 형태로 "."을 통해서 구분되어 있다. 📦 header 일반적으로 토큰 유형과 서명 알고리즘으로 구성되어 있으며 JWT의 첫 번째 부분을 구성한다. { "alg": "HS256", "typ": "JWT" } 📦 payload 세가지 유형의 클..

CS/네트워크 2024.03.06

Jotai 상태관리 라이브러리란?

Jotai는 Daishi Kato에 의해 만들어졌으며, React 상태 관리의 단순성과 효율성을 개선하려는 목적에서 만들어졌다. Recoil과 MobX와 같은 기존 상태 관리 솔루션들이 제공하는 강력한 기능을 유지하면서도, 단순하고 직관적인 API를 제공하여, 개발자들이 쉽게 상태 관리를 할 수 있도록 설계되었다. Jotai는 일본어로 '상태'를 의미하며, Jotai는 그 사용성과 유연성으로 인해 빠르게 인기를 얻었고, 다양한 규모와 유형의 프로젝트에서 사용되고 있다. npm trend에서 recoil과 비교하면 recoil을 역전한 것을 볼 수 있는 꽤 핫한 라이브러리이다. 1. jotai의 기본 개념과 atom 생성 방법 Jotai는 atom개념을 사용하며, atom은 작은 데이터를 담고 있다. us..

메모리

메모리 계층 구조(Memory Hierarchy)는 여러가지 기억장치를 필요에 따라 속도, 용량, 성능에 따라 계층적으로 나누어 둔 것을 의미함. 하위 계층으로 갈수록 용량이 늘어나고 가격이 저렴하지만 속도가 느리며 상위계층으로 갈수록 용량이 작고 가격이 비쌈 이를 보완하기 위해 메모리 계층 구조를 사용함 레지스터와 캐시 CPU 내부에 존재(CPU에 아주 빠르게 접근할 수 있음) 메모리 = 주기억장치 CPU외부에 존재(레지스터와 캐시보다 더 느리게 CPU에 접근) 하드디스크 = 보조기억장치 CPU가 직접 접근할 방법조차 없음 CPU가 하드 디스크에 접근하기 위해서는 하드디스크의 데이터를 메모리로 이동시키고 메모리에서 접근해야 하기에 아주 느린 접근만 가능함 ▶ 보조기억 장치 보조기억장치는 물리적인 디스크..

CS/컴퓨터 구조 2024.03.02

메모리와 캐시 메모리

✅ RAM의 특징과 종류 📦 RAM의 특징 실행할 프로그램의 명령어와 데이터가 저장되는 메모리로 전원을 끄면 저장된 명령어와 데이터가 날아가는 휘발성 저장 장치로 CPU는 보조기억장치에 직접 접근을 하지 못하기에 실행하고 싶은 프로그램이 보조기억장치에 있다면 RAM으로 복사하여 저장한 뒤 실행한다 즉 실행할 대상이 저장되는 공간이다. 📌 비휘발성 저장 장치 더보기 하드 디스크, SSD, CD-ROM, USB 메모리와 같은 보조 기억장치로 전원이 꺼져도 저장된 내용이 유지된다. 📦 RAM의 용량과 성능 RAM의 용량이 작다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 잦아 실행 시간이 길어지기에 RAM의 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는데 유리하다. RAM의 용량에 비례해서 실행 ..

CS/컴퓨터 구조 2024.03.02

CPU의 작동 원리

✅ ALU와 제어장치 📦 ALU 1+2라는 연산을 수행하기 위해서는 피연산자(1, 2)와 수행할 연산(+)이 필요하기에 ALU는 레지스터를 통해 피연산자를 받고 제어장치로부터 제어 신호를 받아 산술, 연산, 논리 연산 등을 수행하는 장치이다. 결과값은 특정 숫자, 문자, 메모리 주소가 될 수 있다. 이 결과값은 메모리에 저장되지 않고 레지스터에 저장된다.(CPU는 메모리에 접근하는 시간이 레지스터보다 느리기에 추가적으로 다른 레지스터에 사용하거나 메모리에 담는 것인 이후에 실행) 부가적인 정보인 플래그를 추가적으로 내보낸다. 다양한 계산을 위한 회로를 가지고 있다.(덧셈: 가산기, 뺄셈: 보수기, 비트의 이동: 시프터, 오버플로우 검출기) 📌 플래그 더보기 위 보기와 같이 CPU에 숫자가 이진법으로 저장..

CS/컴퓨터 구조 2024.03.02

CPU, 메모리 개념

[ CPU ] CPU는 각종 연산을 수행하고 기억장치에 기억되어 있는 명령어들을 수행하는 컴퓨터 시스템을 이루는 핵심 부품 즉, CPU는 컴퓨터의 두뇌로 메모리에 저장된 명령어를 읽어 들이고, 읽어 들인 명령어를 해석하고 실행하는 부품 ▶ CPU 구조 내부 구성은 크게 산술/논리 연상 장치(ALU), 제어 장치와 레지스터로 구성되어 있음 산술논리 장치(Arithmetic Logic Unit, ALU) 쉽게 말해 계산기로 가산기, 보수기, 누산기, 기억레지스터, 데이터 레지스터 등으로 구성 캐시나 메모리로 부터 읽어 온 데이터는 레지스터에 저장 숫자의 산술연산과 배타적 논리합, 논리곱 같은 논리연산을 계산을 담당하는 장치 배타적 논리합 - true 연산, 배타적 논리곱 - and 연산 레지스터(Regist..

CS/컴퓨터 구조 2024.03.02

디자인 패턴 - 싱글톤 패턴

1. 디자인 패턴이란? 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여, 해결 할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을 의미한다. 2. 싱글톤 패턴(singleton pattern)이란? 싱글톤 패턴(singleton pattern)은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 하나의 클래스를 기반으로 여러 개의 개별적인 인스턴스를 만들 수 있지만, 하나의 클래스를 기반으로 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만드는데 쓰이며, 보통 데이터베이스 연결 모듈에 많이 사용된다. class Singleton { static instance; constructor() { if (Singleton.instance) { return Singlet..

CS/프로그래밍 2024.02.28

브라우저 렌더링 원리

브라우저 렌더링 원리를 알아야 하는 이유 C는 직접 운영 체제에서 실행되고, Java는 가상 머신 위에서 실행된다. C는 컴파일 언어로, 소스코드가 기계어로 변환된 후 실행된다. Java는 소스코드가 바이트코드로 컴파일되어 JVM에서 해석 및 실행된다. 반면 JavaScript는 웹 브라우저에서 실행된다. (물론 Node.js를 통해 서버 사이드에서도 실행될 수 있다.) JavaScript를 클라이언트 사이드에서 사용할 경우 웹 브라우저에서 HTML, CSS, JavaScript가 실행되므로 브라우저 렌더링 원리를 이해하는 것은 중요하다. 더보기 -(JVM이란?) JVM은 하드웨어와 운영 체제 사이의 추상화 레이어로 작동하는 소프트웨어이다. 보통 자바 개발 키트(JDK)에 포함되어 컴퓨터에 설치된다. -..

CS/브라우저 2024.02.26