생각했으면 행동한다 GitHub

CS 36

HyperText Transfer Protocol

시작IT 관련 학부생이었다면 네트워크나 프로그래밍 관련 전공수업에서 HTTP는 무조건 들어봤을 것이다. 이번에는 지식을 견고히 하고 확장하는 차원에서 HTTP를 다뤄보려고 한다. HTTP - HyperText Transfer ProtocolHTTP는 클라이언트와 서버가 데이터를 주고 받는 데에 사용되는 통신 규칙(Protocol)이다. 보통 클라이언트는 웹브라우저가, 서버는 웹 서버가 그 역할을 맡는다. 그렇다면 클라이언트와 서버가 주고 받는 데이터란 무엇인가? 명칭에서 알 수 있듯, 하이퍼텍스트(HyperText)다. 하이퍼텍스트란, 문서 안의 다른 문서나 리소스로 연결되는 링크를 포함할 수 있도록 하는 구조화된 텍스트를 의미한다.비선형적 구조 : 일반적인 책이나 문서는 순서에 따라 읽지만 하이퍼텍스트..

CS/네트워크 2025.10.24

DHCP

무엇?오늘은 평소에 곧잘 WiFi를 연결하는 과정에서 사용되는 DHCP(Dynamic Host Configuration Protocol)에 대해서 공부한 내용을 정리하고자 한다.DHCP는 IP만이 아니라 서브넷(prefix), 기본 게이트웨이, DNS 서버까지, 네트워크 통신에 필요한 다른 구성 정보를 함께 자동으로 할당해주는 자동 설정 프로토콜이다.우리가 컴퓨터나 스마트폰으로 인터넷(네트워크)에 연결할 때마다 매번 IP주소를 할당하지 않아도 되는 이유가 바로 이 DHCP 덕분이다. 참고로 무선(Wi-Fi)뿐 아니라 유선 LAN도 똑같이 DHCP를 쓴다. 왜 필요한가?일반적으로 가정에서 쓰이는 공유기를 예로 들어보자.보통 DHCP 서버 역할을 일반 가정집에서는 공유기가 맡고 있다.만약 우리가 와이파이에 ..

CS/네트워크 2025.09.30

가상 메모리 - 페이징

가상 메모리 관리 기법현대 컴퓨터 시스템이 여러 프로그램(프로세스)을 동시에 매끄럽게 실행할 수 있는 비결은 무엇일까? 그 중심에는 한정된 물리 메모리(RAM)를 수많은 프로세스들이 나눠 쓸 수 있도록 하는 메모리 관리 기술이 있다. 그중에서도 페이징(Paging)은 가장 핵심적인 가상 메모리 관리 기법으로, 메모리 공간을 낭비하는 외부 단편화 문제를 근본적으로 해결하고, 각 프로세스가 마치 자신만의 거대한 메모리를 독차지한 것처럼 느끼게 해주는 안정적인 환경을 제공한다.페이징의 기본 원리: 페이지와 프레임페이징의 핵심 아이디어는 물리 메모리를 조각내어 프로세스에 비연속적으로 할당하는 것이다. 마치 책의 내용을 여러 페이지에 나누어 담고, 이 페이지들을 책장 여기저기에 꽂아두지만 목차를 통해 순서대로 찾..

CS/OS 2025.06.27

동기화

프로세스 동기화프로세스 동기화는 현대 멀티프로세싱 시스템에서 가장 중요한 개념 중 하나다. 여러 프로세스가 동시에 실행되는 환경에서 공유 자원에 대한 안전한 접근을 보장하기 위해 반드시 필요한 기술이다. 동기화는 단순히 프로세스 간의 실행 순서를 제어하는 것을 넘어서, 데이터의 일관성과 시스템의 안정성을 보장하는 핵심적인 역할을 수행한다.동기화란 무엇인가동기화(Synchronization)는 시스템 프로세스 간 정보를 공유하는 행위로 정의할 수 있다. 보다 구체적으로 말하면, 여러 프로세스나 스레드가 공유 자원에 접근할 때 발생할 수 있는 문제를 예방하고 올바른 실행 순서를 보장하는 메커니즘이다. 현대 컴퓨터는 다중 프로그래밍 시스템으로 여러 프로세스가 동시에 실행되며, 이러한 환경에서 동기화는 필수불가..

CS/OS 2025.06.10

프로세스, 그리고 스레드

프로세스와 스레드웹이든 앱이든 관계없이 개발을 해본 사람이라면 스레드에 대해 배우거나 들었을 것이다. 오늘은 CS에 대한 이해를 위해 운영체제에 관련된 내용 중 프로세스와 스레드에 대해 정리하려고 한다. 스레드에 관한 내용은 이전에도 올렸지만 이번에는 총체적으로 담아보려고 한다!아래는 내가 이전에 정리한 스레드 관련 글이다.2024.07.08 - [CS/OS] - 스레드 Thread (1) - 하드웨어와 소프트웨어프로세스?프로세스는 실행 중인 프로그램을 의미한다.응용 프로그램은 보조 기억 장치(하드 디스크, SSD 등)에 저장되어 있다가, 사용자가 해당 프로그램을 실행하는 순간 메모리에 적재되면서 '프로세스'가 된다. 컴퓨터는 수많은 프로세스들을 동시에 생성하고, 사용이 끝나면 메모리에서 삭제함으로써 메..

CS/OS 2025.06.08

커널 Kernel

커널?이 한 달 동안 배웠던 부분은 장기기억으로 넘기고, 부족한 부분은 채우기 위해서 공부하고 있다. 이번엔 운영체제의 중요 요소인 커널에 대해서 기록하려고 한다.운영체제의 핵심 요소커널은 운영체제의 가장 핵심적인 부분으로, 컴퓨터 시스템의 모든 것을 완전히 제어하는 컴퓨터 프로그램이다. 하드웨어와 소프트웨어 구성 요소 간의 상호작용을 관리하고, 항상 메모리(RAM)에 상주하면서 운영체제 코드의 일부분 역할을 한다. 커널은 운영체제를 구성하는 가장 중요한 부분으로, 어떻게 구성하느냐에 따라 컴퓨터 전체의 성능이 달라진다.커널의 메모리 보호커널의 핵심 코드는 응용 소프트웨어나 운영체제의 다른 중요하지 않은 부분들로부터 접근이 차단된 별도의 메모리 영역에 로드된다. 이 영역을 _커널 영역_이라고 부른다. 이..

CS/OS 2025.06.04

운영체제란? 커널, 프로세스, 교착 상태까지

운영체제운영체제는 컴퓨터의 하드웨어와 소프트웨어 자원을 관리하고, 사용자와 컴퓨터 간의 상호작용을 가능하게 하는 핵심 소프트웨어다. 사용자와 하드웨어 간의 인터페이스 역할을 하며, 효율적인 자원 관리를 통해 시스템의 성능을 최적화한다.일반적으로 SSD 또는 HDD에 설치되며, 컴퓨터 부팅과 동시에 메모리에 로드되어 실행된다.프로세스는 실행 중인 프로그램의 인스턴스로, 작업을 수행하는 기본 단위다. 운영체제는 프로세스를 관리하며, 프로세스는 실행 중 여러 상태를 거친다.New (생성) 프로세스가 생성된 상태로, 아직 실행 준비가 완료되지 않았다. Ready (준비) 실행 준비를 마치고 CPU 할당을 기다리는 상태다. Running (실행 중) CPU를 할당받아 명령어를 실행하는 상태다. Wait..

CS/OS 2025.03.14

네트워크 - 소켓, 리눅스 네트워크 관리

소켓(Socket) 통신 개요소켓은 네트워크 상에서 두 프로그램 간의 양방향 통신을 위한 엔드포인트를 의미한다. 이는 포트 번호에 바인딩되어 TCP 레이어에서 데이터가 전달되어야 하는 애플리케이션을 식별할 수 있게 한다. 여기서 엔드포인트란 IP 주소와 포트 번호의 조합을 의미한다.소켓의 기본 요소프로토콜 체계소켓은 다양한 프로토콜을 지원하며, 주요 프로토콜은 다음과 같다:PF_INET: IPv4 기반 인터넷 프로토콜PF_INET6: IPv6 기반 인터넷 프로토콜PF_LOCAL: UNIX 시스템 내 로컬 통신 프로토콜PF_PACKET: 저수준 패킷 기반 소켓PF_IPX: 노벨 네트워크 프로토콜소켓의 유형TCP 소켓(스트림 소켓): 연결 지향적이며 신뢰성 있는 데이터 전송을 지원한다. 서버는 클라이언트의 ..

CS/네트워크 2025.03.13

네트워크

네트워크네트워크는 분산돼 있는 컴퓨터들이 자원이나 정보를 공유하기 위해 통신망으로 연결한 시스템이다. 이는 현대 정보 기술의 근간이 되는 핵심 인프라로, 인터넷의 기본 구조를 형성하는 요소이다.네트워크의 주요 특징컴퓨터 네트워크는 다음과 같은 특징을 가지고 있다:지리적 장소의 제약 없이 모든 종류의 물리적·논리적 자원을 효율적으로 공유할 수 있다.여러 컴퓨터가 동시에 작업을 수행하는 병렬 처리가 가능하여 컴퓨팅 성능을 대폭 향상시킨다.데이터와 정보의 실시간 교환이 가능하여 협업과 통신 효율성을 극대화한다.누구나 접근할 수 있는 개방성으로 인해 중요한 보안 문제가 발생할 가능성이 있다.네트워크 확장성이 용이하여 새로운 장치를 쉽게 추가하고 연결할 수 있다.네트워크 주소네트워크 주소는 네트워크 상에 존재하는..

CS/네트워크 2025.03.11

전기 Electric

전류, 전압, 저항에 대해 우리는 일상에서 전기 에너지로 작동하는 기기를 사용하고 있다. 이번에는 이전부터 흥미가 있었던 전기 에너지에 대한 내용을 다루려고 한다. 보통 컴퓨터 구조 분야로 분리하지 않지만 이번만 따로 분리하지 않고 컴퓨터 구조에서 설명하겠다.    전압 전류를 한 방향 또는 여러 방향으로 흐르게 해주는 물질을 '도체'라고 한다. 이러한 도체 내에 있는 전기적인 위치 에너지를 '전위'라고 하며, 두 점 사이의 전위의 차이를 '전위차'라고 한다. 물은 높은 곳에서 낮은 곳으로 흐른다는 사실은 모두가 알 것이다. 이처럼 전하는 전위가 높은 곳에서 낮은 곳으로 이동한다. 이때 전위의 차이가 '전압'이다. ✌️ 높은 곳에서 떨어지는 물이 더 많은 에너지를 갖고 있듯이, 전압이 클수록, 다시 말해..

반응형