이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

Computer Science

  • 시간의화살
[Data Communication] 물리 계층에서의 데이터 전송

[Data Communication] 물리 계층에서의 데이터 전송

2025.04.02
디지털 통신은 컴퓨터가 이해할 수 있는 비트를 주고받는 일인데.. 소리나 영상 같은 아날로그 데이터를 전송하려면 데이터를 비트로 변환해야 한다. 이 과정에서 물리 계층이 개입되고, 이 계층은 전기 신호 / 소리 / 빛 등 아날로그 신호를 비트로 표현하는 역할을 수행한다.물리 계층에서는 유선 케이블을 사용할 때와 무선랜을 사용할 때 비트를 변환하는 방식이 다르다. 유선 케이블을 사용할 때는 라인코딩을, 무선랜을 사용할 때는 사인파를 조작한다.무선에서도 라인코딩을 전혀 사용하지 않는 건 아니지만, 통신 특성 상 유선에서는 디지털 비트를 다른 디지털 신호로 변환하는 라인코딩이 중요하다. 주파수는 두 가지 방식에서 모두 사용하지만.. 무선랜에서 좀 더 중요하게 다뤄진다. 아날로그에서의 대역폭 - 주파수 범위 ..
[Data Communication] Layer Packet Signal

[Data Communication] Layer Packet Signal

2025.04.01
브라우저를 통해 https://www.naver.com/ 으로 접속할 때 무슨 일이 발생할까? 먼저 운영체제가 로컬 DNS 캐시를 확인하고 히트된 경우 해당 IP주소를 바로 사용한다.히트되지 않은 경우 DNS 서버에 질의를 보내는데, 이 때 무선 랜카드와 무선 공유기를 사용한다. (유선의 경우 이더넷 케이블) 무선 공유기(AP)는 와이파이 신호를 받아 이더넷 패킷으로 변환하고 인터넷 라우터로 전달한다.공유기는 NAT로 내부 IP를 공인 IP로 변환해준다.집 인터넷 라우터는 공유기로부터 받은 요청을 ISP 네트워크로 전달한다. 요청 데이터는 광케이블을 통해 ISP 네트워크로 전송되고, ISP 네트워크에서 라우터가 패킷을 분석하고 인터넷으로 보내는데, 이 때 스위치는 패킷을 빠르게 전송하기 위해 적절..
[Operating System] 프로세스와 동시성 제어

[Operating System] 프로세스와 동시성 제어

2025.03.28
멀티쓰레드와 멀티프로세싱 환경에서는 여러 요소들이 동시에 실행되고, 운영체제는 동시성 관련 문제를 해결해 줘야 한다. Race Condition - 두 요소가 동시에 공유 데이터를 조작할 때 실행 순서에 따라 결과가 달라지는 현상을 말한다.Mutual Exclusion - 한 순간에 하나의 요소만 공유 자원에 접근할 수 있도록 보장해 Race Condition을 방지한다.Critical Section - 여러 요소가 동시에 접근하면 안 되는 공유 자원에 접근하는 코드 블록 자체를 의미한다.Starvation - 프로세스가 자원을 기다리지만 다른 프로세스가 자원을 반환하지 않아 무한히 기다리는 상황을 말한다.Deadlock - 여러 프로세스가 서로 자원을 점유해 상대방이 작업을 마칠 때 까지 기다리며 무한..
[UPL] 함수형 언어 OCaml

[UPL] 함수형 언어 OCaml

2025.03.21
Objective Caml. Caml 언어는 ML family에 속하는 프로그래밍 언어로, 안전한 소프트웨어 개발과 교육 용도로 활용된다. Functional Programming Language - 함수를 일급 객체로 사용해 변수처럼 다룰 수 있다.Strongly Typed Language - 자바처럼 컴파일 시점에 모든 변수와 표현식의 타입이 결정된다.Pattern Matching - Case 구문의 상위 호환으로, 값의 구조에 따라 조건부 분기를 간결하게 구현할 수 있다.Type Inference - 타입 시스템이 변수와 표현식의 타입을 추론해 코드의 가독성을 높인다.Polymorphism - 함수와 데이터 타입이 여러 다른 타입에서도 재사용 할 수 있다. 명시적인 main 함수가 없고, 소스코드를..
[Operating System] Process Termination / Thread

[Operating System] Process Termination / Thread

2025.03.19
CPU 에러, signal, 부모 프로세스 관련 문제 등으로 프로세스가 동작을 마치면 exit System Call을 호출해 terminated 상태로 변한다.이 때 release는 프로세스가 실행될 때 사용했던 컴퓨팅 리소스를 반환함을 의미한다.terminated 상태인 프로세스는 아직 제거된 상태는 아니고, wait System Call이 호출될 때 제거된다. 사용량 및 통계 정보를 저장하는 PCB만 남아있는 상태이다.     exit System Call을 호출하면 해당 프로세스는 User Mode에서 Kernel Mode로 변하게 된다.이 때 PCB를 제외한 test.c의 모든 컴퓨팅 자원을 회수하는데, 이 PCB를 통해 해당 프로세스가 terminated 상태임을 확인한다. PCB의 State ..
[Operating System] Process (Context, Creation, Switch)

[Operating System] Process (Context, Creation, Switch)

2025.03.17
Process Context는 프로세스가 실행될 때 필요한 컴퓨터 내 리소스의 집합을 의미한다. User Context운영체제가 직접 만들지 않고, 개발자가 작성한 프로그램이 만들어낸다. 실행 중인 프로그램의 명령어 (Code Segment)전역 변수, 정적 변수 등 프로그램이 끝날 때 까지 유지되는 데이터 (Global Data)함수 내부에 선언된 지역 변수들이 저장되는 LIFO 구조 공간 (User Stack) System Context운영체제가 직접 관리한다. Kernel Stack - 커널 모드에서 실행될 때 함수 호출과 시스템 콜을 처리하기 위한 스택으로, 프로세스마다 독립적이다.Process Control Block - 프로세스의 중요한 정보를 저장하는 자료구조로 프로세스의 상태, pid, 메..
[Operating System] 커널 구조와 프로세스

[Operating System] 커널 구조와 프로세스

2025.03.12
운영체제의 코어 기능을 모아둔 커널을 구현할 때, 구현하는 방식에 따라 Monolithic Kernel과 Micro Kernel로 구분된다. 사용자 공간 - 응용 프로그램에서 실행되는 영역커널 공간 - 운영체제의 핵심 기능이 실행되는 영역 MonolithicKernel운영체제의 모든 핵심 기능이 하나의 커널 공간에서 실행되는 방식으로, Unix와 Linux는 Monolithic Kernel로 구성되어있다.마이크로 커널보다 실행 속도가 빠르지만 작은 에러가 전체 시스템에 전파될 수 있고 커널의 크기가 크다. MicroKernel운영체제의 핵심 기능을 최소화하고 나머지 기능을 사용자 공간에서 가져오는 커널 구조로, IoT 장치 등 작은 운영체제가 필요한 기기에서 사용된다.개발할 때 전체 커널을 다시 컴..
[Operating System] 운영체제 개요

[Operating System] 운영체제 개요

2025.03.10
소프트웨어는 프로그램을 포함하는 더 넓은 개념으로, 프로그램은 시작점이 되는 EntryPoint가 있어 혼자서도 실행될 수 있지만, 소프트웨어는 시작점이 없을 수 있다. 운영체제는 소프트웨어로 단순한 프로그램이 아니라 여러 프로그램, 드라이버, 라이브러리 등 다양한 구성 요소를 포함하는 소프트웨어의 집합이다.    운영체제는 하드웨어와 소프트웨어 사이에 위치해 사용자와 컴퓨터 간 인터페이스를 제공하는 시스템 소프트웨어이다. 운영체제는 컴퓨터의 리소스에 접근하고 관리해 사용자에게 여러 편리한 추상화를 제공한다. 저장소에 파일이 어떤 구조로 저장되어있고, 어떤 위치에 저장되어있는지 사용자가 알지 못해도 운영체제가 알아서 처리해주고, CPU 메모리 등 리소스의 사용량을 지속적으로 모니터링해 기록한다. Proc..
[Nginx] nginx.conf

[Nginx] nginx.conf

2023.12.28
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; keepalive_timeout 65; gzip on; server { listen 80; server_name 127.0.0.1; client_max_body_size 2M; location / { root /usr/share/nginx/html; i..
[Nginx] Timeout

[Nginx] Timeout

2023.12.24
엔진엑스에서의 타임아웃 설정은 크게 클라이언트 / 백엔드 두 가지로 나뉜다. 클라이언트 타임아웃 client_header_timeout 클라이언트가 HTTP 헤더를 서버로 전송하는데 걸리는 최대 시간을 지정한다. 연결이 너무 오래 걸려 서버 리소스를 과도하게 사용하는 연결을 끊어 서버를 보호하고, 의도적으로 헤더를 느리게 전송하는 방식의 공격을 방어한다. 기본 값은 60초이고, nginx.conf의 client_header_timeout 10s; 로 타임아웃 시간을 설정할 수 있다. client_body_timeout HTTP 요청 본문을 서버로 전송하는데 걸리는 최대 시간을 지정한다. header_timeout과 마찬가지로 기본적으로 60초로 설정되고 설정 파일을 통해 수정할 수 있다. 파일 업로드 같..
[Network] 백엔드 아키텍처

[Network] 백엔드 아키텍처

2023.12.21
Listener 네트워크를 통해 들어오는 연결 요청을 대기하고 수신하는 컴포넌트이다. 특정 IP주소와 포트에 바인딩된 소켓을 생성해 그 포트로 들어오는 네트워크 요청을 수신한다. 먼저 운영체제에서 제공하는 네트워크 API를 사용해 네트워크 소켓을 생성하고, 생성된 소켓을 특정 IP와 포트에 바인딩해 해당 소켓이 네트워크 요청을 수신할 수 있도록 한다. Acceptor Listener가 감지한 연결을 운영체제의 네트워크 API 중 accept를 사용해 수락한다. 연결이 수락되면 필요한 세션 정보를 초기화하고 클라이언트와의 통신을 준비한다. Reader 네트워크를 통해 전송된 데이터를 읽고 처리하는 컴포넌트로 데이터를 읽고 애플리케이션에서 사용할 수 있는 형태로 변환한다. 실제 네트워크 요청을 처리하는 컴포..
[Nginx] 내부 구조와 리버스 프록시

[Nginx] 내부 구조와 리버스 프록시

2023.12.21
엔진엑스는 정적 리소스를 제공하는 웹 서버로도 동작할 수 있고 여러 백엔드 서버로 로드밸런싱을 수행하는 리버스 프록시, 메일 프록시로도 동작할 수 있는 다재다능한 웹 서버이다. 리액트로 프론트엔드 웹 애플리케이션을 만들고 사용자들에게 배포 할 때 엔진엑스 웹 서버를 사용할 수 있다. npm build 명령어로 애플리케이션을 번들링하고 엔진엑스를 정적 리소스를 제공하는 웹 서버로 사용하는데, 이 때 root 지시어를 사용해 번들링된 파일이 위치한 디렉토리를 지정하고 모든 서버 요청을 index.html으로 리다이렉트하도록 설정해 SPA 라우팅을 처리한다. server { listen 80; server_name myapp.com; root /app/react/build; index index.html; l..
  • 최신
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • ···
    • 9
  • 다음

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (614)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (97)
      • Machine Learning (28)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (0)
      • Computer Security (0)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Logs (6)
    • 낙서장 (26)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바