
병렬 처리는 동시에 여러개의 명령을 처리하는 것을 말합니다. 파이프라인 기법은 명령어 처리를 여러 단계로 나누어 하나의 코어가 동시에 여러 스레드에 대한 작업을 수행하는 것입니다. 슈퍼 스칼라 기법은 파이프라인을 처리할 수 있는 코어를 여러개 두는 것입니다.스레드, T

인터럽트는 CPU에게 상태 변화를 알리는 하드웨어 기법입니다. CPU는 매 명령어를 끝낸 후 인터럽트 라인을 검사합니다. 이때 인터럽트 신호가 있다면, 인터럽트 핸들러를 실행합니다.업로드중..업로드중..하드웨어 인터럽트입출력 인터럽트 : 입력 준비됨, 출력완료 또는 오

자원 관리, 프로세스 관리와 같은 운영체제의 핵심 기능을 모아놓은 것입니다.CPU가 명령어를 실행하는 모드를 커널 모드와 사용자 모드로 구분하는 방식사용자 모드커널 영역의 코드를 실행할 수 없는 모드하드웨어 자원에 접근하는 명령어 실행 불가커널 모드커널 영역의 코드를

컴퓨터 자원을 관리하고, 응용 프로그램 및 사용자가 컴퓨터 자원을 사용할 수 있도록 인터페이스를 제공하는 시스템 소프트웨어입니다.효율성자원을 효율적으로 관리하는 것안정성응용 프로그램 및 사용자의 안전과 하드웨어의 보안확장성시스템 자원을 컴퓨터에 추가하거나 제거하는 데

프로세스란 실행을 위해 메모리에 올라온 동적인 상태입니다. 프로세스는 메모리에 주소 공간을 갖습니다.PCB는 커널 영역에 존재함프로세스 관리를 위한 메타 데이터 집합프로세스 ID, 부모 프로세스 ID, 자식 프로세스 ID프로세스 상태 : 생성, 준비, 실행, 완료, 대

프로세스는 프로그램이 메모리에 올라온 상태를 말하며, 스레드는 하나의 프로세스 내 실행 흐름입니다. 스레드는 프로세스 내의 코드, 전역변수, 파일 영역을 공유합니다. 따라서 하나의 프로세스 내 스레드는 서로 강하게 연결되어있지만 각각의 프로세스는 독립적입니다.CPU의
JVM은 Java 바이트 코드를 실행하는 가상 머신입니다. 모든 Java 코드는 JVM 위에서 실행되기 때문에 이식성이 뛰어납니다. Java 프로그램 동작 원리 1. JAVAC java 컴파일러가 .java 파일을 java 바이트 코드 .class 파일로 변환 2

Java에서 객체는 힙 영역에 저장됩니다. Garbage Collection 이란 힙 영역에서 사용하지 않는 객체를 찾아 삭제하는 것을 의미합니다.GC 식별기가 객체 그래프를 탐색하며 활성 객체 체크GC 식별기가 접근할 수 없는 객체는 죽은 객체로, GC의 대상죽은 객
뮤텍스와 세마포어는 프로세스 동기화의 방법입니다. 뮤텍스는 잠금 기반 동작이며, 하나의 스레드만 동시에 임계 구역에 존재할 수 있습니다. 반면 세마포어는 시그널 기반 동작이며, 여러 스레드가 동시에 임계 구역에 존재할 수 있습니다.프로세스 동기화는 경쟁 조건이 발생하지

교착 상태란 두 개 이상의 프로세스가 서로의 작업이 끝나기를 기다리는 상황입니다.교착 상태는 네 가지 조건을 만족하는 상황에서 발생합니다. 상호 배제, 비선점, 점유와 대기, 원형 대기입니다.상호 배제 : 하나의 자원은 동시에 하나의 프로세스만 사용 가능비선점 : 프로

MMU는 메모리를 관리하는 하드웨어입니다. MMU는 상대 주소를 절대 주소로 변환하고, 메모리 내 프로세스에 대해 가져오기, 배치, 재배치를 책임집니다.가져오기 작업 : 프로그램을 메모리로 가져옴배치 작업 : 프로그램을 메모리에 어떻게 올려 놓을지 결정함가변 분할 방식
가상 메모리 시스템은 프로세스 각각에 가상 주소 공간을 부여하여, 프로세스가 물리 메모리의 크기와 상관 없이 메모리를 이용할 수 있도록 합니다.프로세스 각각에 가상 주소 공간을 부여하는 것프로세스는 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있음핵심 기술메모리

페이징 기법은 프로세스의 가상 주소 공간과 물리 메모리의 주소 공간을 동일한 크기로 나눠, 가상 주소와 물리 주소를 관리하는 방법입니다.고정 분할 방식페이지 : 가상 주소 공간에서 일정하게 분할한 각 영역프레임 : 물리 주소 공간을 일정하게 분할한 각 영역페이지의 크기

요구 페이징은 프로세스 실행 중에 페이지를 요구하면, 메모리로 가져오는 방식 입니다. 요구 페이징을 통해 메모리를 절약하고, 효율적으로 관리할 수 있습니다.프로세스가 페이지를 요청했을 때, 해당 페이지가 메모리에 존재하지 않는 상황페이지 테이블 엔트리의 유효 비트가 1

스레싱은 CPU 작업 시간보다 메모리와 스왑 영역 간 페이지 교체에 시간을 많이 소비하는 것을 말합니다.과도한 페이지 교체로 시스템의 성능이 떨어지는 것CPU의 실제 작업 시간 < 페이지 교체 시간물리 메모리의 부족이 원인 ➡️ 프로세스에 프레임을 얼마나 할당할

JSON 과 XML 은 데이터 직렬화 형식입니다. 이를 사용하면 다양한 스펙의 시스템 간에 데이터를 교환할 수 있습니다. JSON 은 java script 기반의 데이터 포맷입니다. 따라서 표준 java script 함수를 사용해 파싱할 수 있습니다. 반면에 XML 은
CI/CD는 소프트웨어 개발에서 코드를 자동으로 테스트하며 배포할 수 있는 상태로 만드는 개발 프로세스를 말합니다. CI/CD 를 통해 코드의 변경 사항이 항상 자동으로 테스트되고 배포되므로, 고객은 최신 버전의 안정적인 서비스를 이용할 수 있습니다.개발자들이 각자 작
클래스는 객체를 만들기 위한 설계도 입니다. 객체와 인스턴스는 클래스에 따라 생성된 실체이며, 메모리에 할당된 데이터입니다.객체를 생성하기 위한 설계도객체가 가져야 할 데이터(속성)와 기능(메서드)을 정의하는 틀Dog 는 name과 breed 라는 속성을 가진다.Dog
오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미합니다. 오버로딩은 같은 이름의 메서드를 매개변수를 달리하여 여러개 정의하는 것을 의미합니다.오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것매개 변수 리스트가 서로 달라야 함add 메서드는 매
추상화란 구체적인 세부 사항은 감추고, 중요한 개념을 정의하는 것을 의미합니다. java 에서 추상화는 주로 추상 클래스와 인터페이스를 통해 구현됩니다. 추상화 복잡한 시스템에서 불필요한 세부 사항을 숨기고 중요한 부분만을 드러내는 방식 java 에서 추상화는 추상

Singleton 패턴은 프로그램 내에서 하나의 클래스에 대해 하나의 인스턴스만 존재하도록 보장하는 패턴입니다.하나의 클래스에 대해 단 하나의 인스턴스만 존재하도록 보장하는 패턴특정 클래스의 인스턴스가 단 한 번만 생성되고, 이후에는 기존에 생성된 객체를 반환하는 방식
Factory 패턴은 객체 생성 로직을 클라이언트 코드에서 분리하고, 인스턴스를 생성할 때 이를 팩토리 클래스에서 처리하도록 합니다. 따라서 객체 생성 로직을 별도로 분리하므로, 유연성과 유지보수성을 높일 수 있습니다. 객체 생성을 책임지는 Factory 클래스를 두는

DI는 객체 간의 의존성을 외부에서 주입하는 패턴입니다. 이를 통해 객체 간의 결합도를 낮춥니다.객체 간의 의존성을 외부에서 주입객체는 자신이 사용할 객체를 스스로 생성하지 않고, 외부로부터 주입받음객체는 구체적인 구현이 아닌 추상 클래스나 인터페이스에 의존함코드의 유

Strategy 패턴은 특정 작업을 처리하는 여러 알고리즘을 적용하고, 상황에 따라 그 ㄱ중 하나를 쉽게 바꿔쓸 수 있도록 합니다.Context (문맥): 다양한 전략 중 하나를 사용하는 역할, Context는 필요에 따라 Strategy 객체를 바꿔 사용할 수 있도록

proxy 패턴은 실제 객체를 직접 참조하는 대신 프록시를 통해 객체에 대한 요청을 처리하는 패턴입니다.실제 객체를 직접 참조하는 대신 프록시를 통해 객체에 대한 요청을 처리함Remote Proxy: 원격 서버에 있는 객체에 대한 로컬 처리를 제공Virtual Prox

네트워크란 노드와 링크가 서로 연결되어 리소스를 공유하는 집합입니다. 노드는 네트워크에 연결된 모든 장치를 의미하며, 링크는 네트워크에서 데이터를 전송하는 매체를 의미합니다. 네트워크 네트워크의 구성 요소는 노드와 링크 프로토콜은 네트워크에서 데이터를 주고받을 때 따

네트워크 토폴로지는 노드와 링크의 배치 방식을 나타내는 개념이며, 네트워크를 설계할 때 고려하는 사항입니다.노드와 링크의 배치 방식네트워크 규모 : 대규모 네트워크일수록 확장성이 중요한 요소신뢰성 : 특정 노드나 링크의 장애가 네트워크 전체에 미치는 영향을 줄일 수 있

링크 내에서 성공적으로 전달된 데이터의 양'처리량이 많아졌다 = 처리되는 트래픽이 많아졌다'단위는 bps(bits per second), 초당 전송 또는 수신되는 비트 수요청이 처리되는 시간어떤 메세지가 두 장치 사이를 왕복하는데 걸리는 시간Transmit rate,

프로그래밍 언어를 컴퓨터에서 실행될 수 있는 형태로 번역하는 소프트웨어광의로는 텍스트 번역기 ➡️ 세상의 모든 프로그램은 보는 관점에 따라 컴파일러가 될 수 있음컴파일러의 중요한 역할은 번역 과정에서 탐지되는 원시 프로그램의 에러를 보고하는 것컴파일 = 분석 + 통합원

인터넷을 통해 데이터를 전송하기 위한 네트워크 프로토콜OSI 7 계층을 4 계층으로 단순화한 것application, transport, network, network access 단계로 구성됨TCP : 클라이언트/서버 프로세스 간 신뢰성 있는 데이터 전송을 담당함IP

송신/수신 프로세스 사이에 신뢰성있는 전송순서에 맞는 전달흐름 제어 : 클라이언트가 너무 빠르게 데이터를 보내서 서버가 처리하지 못하는 상황을 방지혼잡 제어 : 네트워크가 과부하되지 않도록 클라이언트가 전송 속도를 조절연결 지향 : 신뢰성있는 전송을 위해 클라이언트/서

kafka 는 분산형 이벤트 스트리밍 플랫폼 입니다. kafka producer kafka 로 메세지를 보내는 역할을 하는 클라이언트 consumer kafka 에서 메세지를 꺼내가는 역할을 하는 클라이언트 topic 데이터를 구분하는 카테고리 또는 채널 ex)

kafka 의 각 파티션은 리더 브로커와 팔로워 브로커를 갖습니다. 리더 브로커는 읽기쓰기 요청을 처리하고, 팔로워 브로커는 데이터를 복제해둡니다. Kafka는 각 파티션을 여러 브로커에 분산시켜 클러스터의 자원을 효율적으로 사용하며, 이를 통해 병렬 처리가 효과적으

상태 정보, 요청에 대해 서버가 어떻게 행동할지를 결정하는데 필요한 정보stateful server각각의 서버는 클라이언트 상태를 유지함ex) distributed DBstateless server모든 서버가 동일한 정보를 갖고 있어야 함ex) replicated DB

패킷을 목적지로 라우팅함IP 주소를 사용해 네트워크 간 통신을 관리함프로토콜 :IPProtocol Data Unit :Packetnetwork layer 에서 동작목적지까지의 경로를 정하고 정해진 경로를 따라 패킷을 전달하는 일련의 과정IP 네트워크 간을 연결하는 장비

redis 는 인메모리 DB 여서, DB I/O 비용이 없습니다. 또한 프로그래밍 자료 구조와 유사한 데이터 타입을 제공해 애플리케이션에서 별도의 처리 없이 이용할 수 있습니다. redis 는 동시성 제어 비용을 줄이기 위해 요청 처리에 single thread 를 사

Docker provides the ability to package and run an application in a loosely isolated environment called a container.Docker는 컨테이너 환경에서 애플리케이션을 패키징하고 실행할

Google Container Registry를 활용하면, 개발 환경의 도커를 간단하게 GCP instance로 옮길 수 있다활용해보자Container Registry gdocs일단 GCP 프로젝트에서 Google Container Registry API를 사용 설정해

single thread 인 redis 에서 어떻게 클러스터링을 제공하는지 궁금하다sharding : 데이터를 여러 개의 작은 조각으로 나누어 여러 서버에 분산해서 저장하는 기법shard하나의 큰 데이터셋을 작게 나눈 부분으로, 각 Shard는 특정 데이터 범위를 관리

트랜잭션 DBMS에서 데이터를 다루는 논리적인 작업의 단위 장애가 일어날 때 데이터를 복구하는 작업의 단위 여러 작업이 동시에 같은 데이터를 다룰 때, 이 작업을 서로 분리하는 단위 트랜잭션의 신뢰성을 위해 ACID 성질을 따름 Atomicity all o

각 노드는 키 값과 포인터를 가짐키 값은 오름차순으로 저장됨모든 리프노드는 같은 레벨에 존재함각 노드가 여러 키와 자식 노드를 가질 수 있음 ➡️ 트리의 높이가 낮으므로 더 빠른 검색이 가능함검색, 삽입, 삭제 모두 O(log N)의 성능노드 구조B-Tree : 각 노

!youtube85Zg0HUv_Eo?si=IMu-7NcGgPmoaUHMB-Tree 형태테이블에서 한 개 이상의 속성을 이용하여 생성함데이터를 쉽고 빠르게 찾을 수 있음데이터의 수정, 삭제 등 변경이 발생하면 인덱스의 재구성이 필요함MySQL은 필요에 따라 각각의 인덱스

패킷을 목적지로 라우팅함IP 주소를 사용해 네트워크 간 통신을 관리함프로토콜 :IPProtocol Data Unit :Packet네트워크 계층의 프로토콜호스트는 각자의 IP 주소를 가짐패킷은 송신자와 수신자를 나타내는 IP 헤더를 가짐best effort : 신뢰성을

하나의 노드에서 물리적으로 인접한 다른 노드로 데이터 전송LAN 내에서 장치들을 식별하고 통신하는 역할프로토콜 :MACProtocol Data Unit :FrameMAC 주소는 network access layer 의 식별자네트워크 인터페이스카드에 내장된 컴퓨터의 고유

쿠버네티스는 분산 시스템을 실행하기 위한 컨테이너 오케스트레이션 프레임워크입니다. 쿠버네티스 클러스터는 control plane 과 node 로 구성됨control plane : 클러스터의 상태를 관리하고, 워커 노드에 작업을 할당함. 마스터 노드node : 파드를 호

인메모리 DB레디스 서버에 장애 발생 시 메모리에 있는 데이터 손실 가능성 있음 ➡️ 레디스를 영구 저장소로 사용한다면 디스크에 데이터를 주기적으로 백업해야 함두가지 백업 방식AOF : 레디스 인스턴스가 처리한 모든 쓰기 작어을 차례대로 기록함. 복원 시에는 파일을 다