전체 글 18

python clean code 문서화(Documentation)

안녕하세요! 오늘부터 "파이썬 클린 코드" 책을 공부하기 시작했습니다. 이 과정에서 파이썬의 공식 스타일 가이드인 PEP-8도 함께 참고하여, 가독성과 유지보수성이 높은 파이썬 코드를 작성하는 방법을 익히고자 합니다.문서화(Documentation)코드를 문서화하는 것은 코드에 주석을 추가하는 것과 다르다는 점이다. 파이썬 코드를 문서화하기 위해 사용하는 docstring, annotation을 살펴본다. 코드 문서화는 파이썬에서 중요한 부분이다. 변수의 타입이 동적이어서 변수나 객체의 값이 무엇인지 읽어버리기 쉽기 때문이다. 이러한 이유로 타입 정보를 명시해두는 것이 좋다. annotation을 사용하는 특별한 이유는 mypy, pytype과 같은 도구를 사용해 변수 타입 힌트와 같은 자동화에 도움을 ..

python 2025.01.29

프로세스 동기화란?

현대 컴퓨터 시스템에서는 여러 프로세스(혹은 스레드)가 동시에 실행되며 서로 영향을 주고받습니다. 이때 자원의 일관성을 보장하기 위해 프로세스의 실행 시기를 조절하는 것을 동기화라고 합니다. 이번 글에서는 동기화의 필요성과 다양한 동기화 기법들에 대해 자세히 알아보겠습니다.동기화란 무엇인가? 동기화란 동시에 실행되는 프로세스들이 자원을 공유하는 과정에서, 자원의 일관성을 보장하기 위해 프로세스들의 수행 순서를 조정하는 것입니다. 예를 들어 여러 프로세스가 동시에 하나의 파일에 접근하려고 한다면, 동기화가 제대로 이루어지지 않을 경우 데이터의 무결성이 깨질 수 있습니다.실행 순서 제어의 중요성동기화는 프로세스의 올바른 실행 순서를 보장하는 데 필수적입니다. 예를 들어, 하나의 파일에 데이터를 쓰는 프로세스..

운영체제 2024.11.28

CPU 스케줄링이란?

운영체제를 공부하다 보면 반드시 마주치게 되는 개념이 있습니다. 바로 'CPU 스케줄링'인데요. 오늘은 CPU 스케줄링의 기본 개념부터 다양한 알고리즘까지 자세히 알아보도록 하겠습니다.CPU 스케줄링이란?CPU 스케줄링은 운영체제가 여러 프로세스들에게 CPU 자원을 공정하고 효율적으로 배분하는 방법을 말합니다. 컴퓨터에서 동시에 여러 프로그램이 실행될 때, 이 프로그램들이 어떤 순서로, 얼마나 오래 CPU를 사용할지 결정하는 것이죠.스케줄링의 기본 개념프로세스 우선순위운영체제는 프로세스들에게 우선순위를 부여합니다. 특히 주목할 만한 점은 입출력 작업이 많은 프로세스(입출력 집중 프로세스)가 CPU 작업이 많은 프로세스(CPU 집중 프로세스)보다 우선순위가 높습니다.스케줄링 큐스케줄링 큐는 크게 두 종류가..

운영체제 2024.11.10

스택(Stack), 큐(Queue)란?

큐와 스택은 모두 컴퓨터 과학에서 요소 컬렉션을 저장하고 관리하는 데 사용되는 추상 데이터 구조입니다. 둘 다 요소를 선형 순서로 관리한다는 점에서는 유사하지만 요소를 추가하고 제거하는 방식이 다릅니다. 각 개념을 알아보는 시간을 갖겠습니다!큐(Queue)란?큐는 선입선출(FIFO) 원칙을 따릅니다. 즉, 큐에 추가된 첫 번째 요소가 가장 먼저 제거됩니다. 이는 계산대의 줄과 같이 실제 생활의 줄과 매우 유사하게 작동합니다. 줄에 가장 먼저 합류하는 사람이 가장 먼저 서비스를 받게 됩니다.대기열의 주요 작업기능 Enqueue대기열의 뒤쪽(꼬리)에 요소를 추가합니다.Dequeue대기열의 앞부분(헤드)에서 요소를 제거합니다.Peek요소를 제거하지 않고 전면에서 봅니다.Python 큐 구현import queu..

자료구조 2024.11.09

스레드와 멀티 프로세스(Multi Process), 멀티 스레드(Multi Thread)

오늘은 프로그래밍의 핵심 개념 중 하나인 스레드와 멀티 프로세스, 멀티 스레드에 대해 알아보겠습니다. 이해가 쉽도록 코드 예시도 함께 제공하였으니 참고해 주시기 바랍니다!스레드(Thread)란?스레드는 프로세스를 구성하는 실행 흐름의 단위이며, 하나의 프로세스는 하나 이상의 스레드를 가질 수 있고, 모든 프로세스는 자원을 공유하면서 실행되며, 스레드의 구성 요소에는 스레드 ID, 프로그램 카운터를 비롯한 레지스터 값, 스택 등 실행에 필요한 최소한의 정보가 포함됩니다.멀티 프로세스프로세스 간에는 자원을 공유하지 않고 독립적으로 실행됩니다.프로세스 간 통신을 위해서는 프로세스 간 통신(IPC) 기법이 필요합니다.예: 파일을 통한 프로세스 간 통신, 공유 메모리를 통한 프로세스 간 통신python 멀티 프로..

운영체제 2024.11.06

프로세스(Process)란?

안녕하세요! 오늘은 운영체제의 핵심 개념인 프로세스(Process)에 대해 알아보겠습니다. 프로세스는 우리가 컴퓨터를 사용할 때 끊임없이 생성되고 관리되는 중요한 요소입니다. 이번 시간에는 프로세스의 개념부터 구조, 상태, 관리 방법까지 자세히 살펴보도록 하겠습니다. 그럼 지금부터 시작하겠습니다!프로세스(Process) 란?프로세스는 실행 중인 프로그램을 의미합니다. 하드디스크에 저장된 정적인 상태의 프로그램이 메모리에 로드되어 동적으로 실행되는 상태를 프로세스라고 합니다.                                      프로그램(Program)                                   VS                                     프로세스(P..

운영체제 2024.11.03

MQTT(Message Queuing Telemetry Transport) 패킷 구조

안녕하세요! 첫 번째 MQTT 이야기에서 인삿말이 늦었습니다. 오늘은 MQTT 패킷의 구조에 대해 자세히 알아보도록 하겠습니다. MQTT는 사물 인터넷 환경에서 널리 사용되는 경량 메시징 프로토콜입니다. 이번 시간에는 MQTT 패킷의 구성 요소와 각 필드의 역할을 살펴보도록 하겠습니다. 이를 통해 MQTT 프로토콜의 작동 원리에 대한 이해를 높일 수 있을 것입니다. MQTT Peket 구조bit76543210byte 1메세지 타입(Message Type)중복 플래그 (DUP flag)Qos LevelRETAINbyte 2Remaining Lengthbyte 3 ~ byte nOption Variable headerbyte n+1  ~Option Payload MQTT는 2바이트의 고정 헤더를 사용하여 메..

IoT 2024.10.30

MQTT(Message Queuing Telemetry Transport)란?

MQTT 란?MQTT(Message Queuing Telemetry Transport)는 ISO 표준의 경량 네트워크 프로토콜로, 제한된 네트워크 환경에서 장치 간 메시지를 효율적으로 전달하기 위해 발행-구독 아키텍처를 사용하며, 중앙 브로커를 통해 메시지를 라우팅하고, 다양한 서비스 품질(QoS) 수준을 제공하여 신뢰성 있는 메시지 전달을 보장함으로써 주로 사물인터넷(IoT), 모바일 애플리케이션등의 분야에서 널리 사용되는 통신 방식입니다.MQTT 인프라 구조MQTT 프로토콜에서는 중앙의 브로커가 발행자로부터 받은 메시지를 해당 토픽을 구독한 모든 구독자에게(1:N) 전달하는 방식으로 작동하며, 클라이언트는 발행자와 구독자 역할을 동시에 수행할 수 있어 양방향 통신이 가능하고, 토픽 기반의 필터링, Q..

IoT 2024.09.22

MAC(Media Access Control) 주소의 구조와 동작

안녕하세요! 이번 포스트에서는 네트워크 통신에서 중요한 역할을 하는 MAC 주소에 대해 알아보겠습니다. MAC 주소는 인터넷을 사용하는 모든 장치에 할당되는 고유한 식별자입니다. 일상에서 자주 접하는 개념은 아니지만, 네트워크의 작동 원리를 이해하는 데 꼭 필요한 중요한 요소입니다. 지식 공유 시작하겠습니다!MAC 주소란?MAC 주소는 Media Access Control의 줄임말로 2계층(데이터 링크 계층)에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자입니다. MAC 주소는 이더넷과 와이파이를 포함한 대부분의 IEEE(국제기구) 802 네트워크 기술에서 2계층 주소로 사용된다.MAC 주소 체계 MAC 주소는 48비트의 16진수 12자리로 표현됩니다. 48비트 MAC 주소는 다시 다음과 같이 ..

네트워크 2024.09.16

로드 밸런서(Load Balancer)란?

안녕하세요! 오늘은 로드 밸런서(Load Balancer)에 대해 이야기를 하겠습니다. 오늘날 인터넷 트래픽은 폭발적으로 증가하고 있습니다. 전 세계적으로 수많은 사용자가 동시에 웹 서비스에 접속하면서, 서버에 가해지는 부하도 크게 늘어났습니다. 이러한 상황에서 단일 서버로는 모든 요청을 처리하기 어려워졌고, 여러 대의 서버를 효율적으로 관리할 필요성이 대두되었습니다. 바로 이 지점에서 로드 밸런서가 등장합니다.로드 밸런서(Load Balancer)란?로드 밸런서는 들어오는 네트워크 트래픽을 여러 서버에 균등하게 분산시키는 장치 또는 소프트웨어입니다. 로드 밸런서의 주요 목적은 어떤 단일 서버에도 과도한 부하가 걸리지 않도록 하여 전체 시스템의 안정성과 가용성을 보장하는 것입니다.로드 밸런서의 작동 원리..

네트워크 2024.09.16