멀티프로세싱과 멀티스레딩멀티프로세싱(Multiprocessing)과 멀티스레딩(Multithreading)은 현대 소프트웨어에서 동시에 여러 작업을 수행하기 위한 대표적인 두 가지 병렬(또는 병행) 처리 기법임.CPU 코어가 늘어나고 고성능 환경이 요구됨에 따라, 이 두 방식을 적절히 활용하는 것은 프로그래밍과 시스템 설계에서 매우 중요한 주제가 됨. 기본 정의와 개념 : 멀티 프로세싱1. 정의물리적으로 여러 개의 프로세스를 동시에 실행하는 것을 말함.여러 프로세스를 활용해 병렬 처리를 수행하고, 각각의 프로세스는 운영체제로부터 독립된 자원(메모리 공간, 파일 디스크립터 등)을 할당받음. 2. 운영체제 레벨에서의 특징운영체제마다 약간씩 다르지만, 보통 각 프로세스는 별도의 주소 공간을 가짐.프로세스 간 ..
프로세스와 스레드의 차이프로세스(Process)와 스레드(Thread)는 현대 운영체제(특히 멀티태스킹 OS)에서 중요한 개념임.서로 긴밀히 연관되어 있으면서도 메모리 구조, 생성 및 종료 오버헤드, 자원 공유 방식 등에 있어 차이를 가짐. 정의1. 프로세스(Process)프로그램(코드)이 메모리에 적재되어 실행 중인 상태를 가리킴.독립된 실행 흐름을 갖고, 운영체제로부터 자원을 할당받아 구동되는 하나의 작업 단위임. 2. 스레드(Thread)프로세스 안에서 실행되는 가장 작은 실행 흐름 단위임.한 프로세스 내부에 여러 스레드가 존재할 수 있으며, 각각 병렬적(또는 병행적)으로 작업을 수행함. 주소 공간과 자원 관리1. 프로세스각 프로세스는 독립된 메모리 공간(코드 세그먼트, 데이터 세그먼트, 힙, 스택..
CPU 스케줄링 알고리즘운영체제에서 CPU 스케줄링(CPU Scheduling)은 여러 프로세스(또는 스레드)가 제한된 CPU 자원을 효율적으로 공유할 수 있도록, 어느 시점에 어떤 프로세스에 CPU를 할당할지를 결정하는 핵심 기법임.스케줄링 알고리즘은 다양한 시스템 목표(처리량, 응답 시간, 공정성, 실시간성 등)를 최대화 또는 최적화하기 위한 전략을 제시함. CPU 스케줄링 개념과 배경1. 프로세스 상태와 준비 큐(Ready Queue)프로세스(또는 스레드)는 Running, Ready, Waiting 등의 상태를 가짐.CPU 스케줄러는 주로 Ready 상태에 있는 프로세스 중 하나를 선택하여 CPU를 할당함. 2. 선점(Preemption) vs 비선점(Non-preemptive)비선점(Non-pr..
자바 표준 스펙자바(Java)는 단순히 하나의 프로그래밍 언어가 아니라, 언어 사양과 가상 머신 사양, 그리고 방대한 표준 라이브러리로 구성된 플랫폼임.자바 ‘표준 스펙(사양)’이란 이러한 자바 플랫폼을 정의하는 일련의 공식 문서를 가리키며, 일반적으로 다음과 같은 세 가지 주요 축으로 나누어 설명함. 1. 자바 언어 명세서 (Java Language Specification, JLS)2. 자바 가상 머신 명세서 (Java Virtual Machine Specification, JVMS)3. 표준 라이브러리(API) 명세 (Java SE API Specification) 이 세 요소는 자바가 어떤 문법과 특징을 가진 언어이고, 그 프로그램을 어떻게 실행하며, 어떤 표준 라이브러리를 제공하는지를 정의함.또..
운영체제의 PCB운영체제(Operating System)에서 프로세스(Process)는 프로그램이 실행 중인 ‘실체’를 의미함.이때 OS는 프로세스의 상태, 스케줄링 정보, 자원 할당 정보 등을 체계적으로 관리해야 하는데, 이를 위해 사용하는 핵심 자료구조가 바로 PCB(Process Control Block)임.PCB는 운영체제 커널이 프로세스를 식별하고 제어하기 위해 유지하는 정보의 집합임. PCB의 개념과 역할1. 프로세스 식별 및 관리운영체제가 여러 프로세스를 동시에(시분할, 멀티태스킹) 관리하기 위해서는 각 프로세스를 ‘고유하게 식별’해야 함.PCB에는 프로세스 식별자로 불리는 PID(Process ID)를 비롯한 여러 정보를 저장하여 운영체제가 프로세스를 구분, 추적, 제어할 수 있도록 함. ..
메모리 계층컴퓨터 메모리 계층 구조(Memory Hierarchy)는 프로세서가 데이터를 저장하고 접근하는 데 필요한 다양한 저장 매체들을 ‘속도와 비용, 용량’ 등의 여러 측면에서 계층적으로 배치한 것을 의미함.일반적으로 가장 빠르지만 용량은 작고 가격이 비싼 매체부터, 상대적으로 느리고 용량이 크며 가격이 저렴한 매체까지 층을 이루게 됨. 계층적 구조의 필요성1. 속도 vs 비용의 Trade-off반도체 기반의 초고속 메모리는 매우 빠르지만 단가가 높고, 대규모로 확장하기 어려움.느리지만 대용량 저장이 가능한 장치는 저렴하므로 데이터를 많이 저장할 수 있지만 속도가 상대적으로 낮음. 2. 지역성(Locality) 원리 활용시간적 지역성(Temporal Locality): 최근에 사용된 데이터나 명령어..
HTTP 개요HTTP(Hypertext Transfer Protocol)는 월드 와이드 웹(WWW)에서 하이퍼텍스트 문서를 전송하기 위한 애플리케이션 계층 프로토콜임.기본적으로 요청(Request)과 응답(Response) 기반의 비상태성(Stateless) 통신 방식으로 동작함.클라이언트와 서버 간의 자원(Resource) 교환을 책임짐. 1. 애플리케이션 계층TCP/IP 프로토콜 스택에서 가장 상위 계층으로, 사용자는 주로 이 계층에서 웹 브라우저, 웹 서버, API 서버 등의 애플리케이션을 통해 HTTP 프로토콜을 다루게 됨. 2. 비상태성(stateless)한 번의 요청-응답이 끝나면 연결 정보나 상태를 서버가 별도로 유지하지 않는 특징이 있음.이로 인해 확장성과 단순성이 뛰어나지만, 세션(ses..
웹 통신 프로토콜웹 통신 프로토콜은 인터넷 상에서 클라이언트와 서버간에 데이터를 교환하는 규칙과 표준을 정의한 체계임.이 것은 웹의 기반 기술로, 데이터 요청과 응답이 이루어지는 방식을 정의함. 웹 통신 프로토콜의 핵심 역할1. 데이터 전송 규칙 정의클라이언트와 서버가 어떤 방식으로 데이터를 요청하고 응답할지, 데이터를 어떤 형식으로 주고받을지 명확히 정의함. 2. 데이터의 무결성과 정확성 보장데이터 전송 중 손실이나 오류 없이 정확히 전달되도록 보장함. 3. 표준화된 통신 지원다양한 기기, 운영체제, 브라우저 간의 상호운용성을 제공함. 4. 보안 및 암호화 지원HTTPS, TLS 등의 프로토콜을 통해 데이터를 암호화하고 전송 중 보안을 강화함. 주요 웹 통신 프로토콜의 계층 구조웹 통신 프로토콜은 OS..
HTTP와 HTTPS 동작방식HTTP와 HTTPS는 웹 통신 프로토콜임.각각의 동작 방식과 차이점이 있음. HTTP 기본 동작 원리HTTP는 클라이언트와 서버 간의 요청 및 응답을 통해 데이터를 주고받는 프로토콜임. HTTP 동작의 주요 과정1. 요청 및 응답 구조1.1 클라이언트 요청클라이언트는 HTTP 요청 메시지를 생성함.이 메시지는 URL, 요청 메서드(GET, POST, PUT, DELETE 등), 헤더(메타 정보), 본문(POST 요청 시 데이터 포함)으로 구성됨.1.2 서버 응답서버는 요청을 처리한 후, HTTP 응답 매시지를 보냄.응답 메시지는 상태 코드(200, 404, 500 등), 응답 헤더, 응답 본문(HTML, JSON 등)으로 구성됨. 2. 상태 코드HTTP는 상태 코드를 통해 ..
메모리컴퓨터 메모리는 데이터를 저장하고 처리하는 데 필수적인 컴퓨터의 구성 요소임.이는 크게 두 가지 유형으로 나눌 수 있음.일시적인 데이터를 저장하는 임시 메모리(주 메모리)와 영구적인 데이터 저장을 위한 영구 메모리(보조 메모리)임. 주 메모리RAM, Random Access Memory주 메모리는 일반적으로 RAM으로 알려져 있음.CPU가 현재 수행 중인 작업에 대한 데이터와 명령어를 저장함.이 메모리는 랜덤 액세스 가능한 특성을 가지고 있어, 저장된 어느 위치에도 직접 접근할 수 있음.RAM은 전원이 꺼지면 데이터가 사라지는 휘발성 메모리임. RAM의 주요 기능1. 속도CPU와 직접적인 데이터 교환으로 매우 빠른 속도를 제공함. 2. 용량현대의 컴퓨터에서는 보통 수기가바이트(GB)의 RAM이 장착..