CS 31

[CLRS] Chapter 1. The Role of Algorithms in Computing

Questions 이번 챕터에서는 답을 찾을 질문들 3️⃣가지 1️⃣ 알고리즘이란 무엇인가? (What are algorithms?) 2️⃣ 알고리즘은 왜 연구할 가치가 있는가? (Why is the study of algorithms worthwile?) 3️⃣ 컴퓨터 분야에서 이용되고 있는 다른 기술과 관련해 알고리즘은 어떤 역할을 할까? (What is the role of algorithms relative to other technologies used in computers?)1-1. Algorithms 알고리즘(Algorithms)은 간단히 말하면 어떤 값이나 값의 집합을 입력(input)으로 받아 또 다른 값이나 값의 집합을 출력(output)하는 정의된 계산 절차를 말한다. Inform..

[OS] Lecture 1. 컴퓨터 시스템 개요 (Computer System Overview) - 시스템 버스 (System Bus)와 주변 장치

본 글은 Youtube의 한국과학기술대학교의 김덕수 교수님께서 제작하신 운영체제 강의를 기반으로 작성했습니다.강의 출처는 Reference를 통해 확인하실 수 있습니다. 시스템 버스 (System Bus) 💡 시스템 버스(System Bus)란?앞서 살펴본 CPU(프로세서), 메모리, 주변장치가 같이 일을 하려면 통신할 수 있는 공용 통로가 필요하다.예를 들어, CPU가 메모리에 있는 명령어를 읽어야 하고, 장치에서 입력을 받아 처리해야 하며, 처리 결과를 다시 장치로 내보내야 한다.이 모든 자원들이 통신할 수 있는 공용 통로 역할을 하는 것이 바로 시스템 버스(System Bus)이다.각각의 장치들(프로세서, 메모리, 주변장치)을 정류장으로 가지고 데이터를 나르는 수단이기 때문에 버스라고 부른다고 한..

[자료구조] (1) 자료구조와 알고리즘

자료구조와 알고리즘, 왜 중요할까? 우리가 어떤 정보(자료)에 접근해서 사용하기 위해서는 이 정보(자료)를 단순히 '있는 상태'로 두는 것은 부족하다. 그래서 이를 제대로 활용하기 위해 일정한 규칙에 따라 구조화(structure)가 필요하다. 💡 구조(structure)정보를 담을 때 일정한 규칙을 설정하는 것이 규칙이 있으면, 자료를 빠르게 찾을 수 있다.💡 알고리즘(algorithm)어떤 규칙으로 접근할지를 정의한 절차이 규칙과 구조가 조합되어야 효율적인 정보 활용이 가능해진다.💡 자료구조와 알고리즘의 관계자료가 어떻게 배치되어 있는지(자료구조)에 따라 가장 효율적인 접근 방식(알고리즘)이 달라진다.따라서 두 요소는 함께 고려되어야 한다.자료를 정리하는 이유는 뭘까? 💡 자료를 정리하는 이..

[네트워크] 5-7. 프록시와 안정적인 트래픽

프록시와 안정적인 트래픽 실제 웹 서비스 환경에서는 수천, 수만 명의 클라이언트가 동시에 요청을 보낸다. 단순한 클라이언트와 서버 사이의 1:1 연결 구조 만으로는 이러한 대규모 요청을 안정적으로 처리하기 어렵다. 따라서 서버와 클라이언트 사이에 중간 계층을 두어 트래픽, 즉 요청과 응답의 흐름을 효율적으로 분산·관리할 필요가 있다. 이 중간 계층은 서버의 과부하를 줄이고, 장애 발생 시 서비스가 중단되지 않도록 하며, 보안이나 성능 최적화까지 담당한다. 트래픽을 관리하는 방법을 이해하기 위해 우리는 오리진 서버와 중간 서버의 개념을 시작으로, 프록시와 게이트웨이가 어떤 역할을 하는지, 또 로드 밸런싱과 스케일링을 통해 서버 자원을 어떻게 안정적으로 운영·확장하는지를 차례대로 살펴보자.오리진 서버와 중..

[네트워크] 5-6. (1) 응용 계층 - HTTP의 응용

쿠키(Cookie) 💡쿠키(Cookie)서버가 생성하여 브라우저(클라이언트)에 저장시키는 '이름=값' 형태의 작은 데이터 💡쿠키(Cookie)가 필요한 이유HTTP는 기본적으로 무상태(stateless) 프로토콜이기 때문에 각 요청(request)과 응답(response)은 독립적이고, 서버가 기본적으로 클라이언트의 이전 요청이나 상태를 저장하지 않는다.그러나 웹 서비스(응용 계층) 사용자별 상태를 유지해야하는 경우가 있다.인증/로그인 상태 유지사용자 맞춤 기능 제공장바구니클릭한 뉴스피드 추천다크모드 설정 등그래서 등장한 것이 쿠키(cookie)서버가 응답 헤더로 작은 데이터를 내려주면, 브라우저가 저장해 두었다가 해당 서버로 다시 요청할 때 자동으로 보내 줌결과 : 무상태인 HTTP 위에서 세션 유..

[네트워크] 5-5. (2) HTTP 메서드와 상태 코드

HTTP 메서드 💡HTTP 메시지 구조시작 라인요청 라인 : 메서드 + 요청 대상 + HTTP 버전상태 라인 : HTTP 버전 + 상태 코드 + 이유 구문필드 라인 (헤더) : 여러 개 있을 수 있음메시지 본문 : 선택적, 데이터 포함 💡HTTP 주요 메서드메서드설명GET자원을 조회 (가장 많이 사용)HEADGET과 같지만 응답 본문 제외POST서버가 특정 작업을 처리하도록 요청 (새 자원 생성에 자주 사용)PUT자원을 ‘전체’ 수정 (덮어쓰기)PATCH자원의 ‘일부’ 수정DELETE자원 삭제CONNECT양방향 연결 시작OPTIONS사용 가능한 메서드/통신 옵션 확인TRACE자원에 대한 루프백 테스트 ✅ GET / HEADGET : 웹 페이지, 이미지 등 자원 조회HEAD : GET과 동일하지만 본..

[네트워크] 5-5. (1) 응용 계층 - HTTP의 기초

네트워크 참조 모델의 최상단 계층인 응용 계층의 핵심인 HTTP에 관한 전반적인 내용을 살펴보자. HTTP를 이해하기 위해, 도메인 네임과 이를 다루는 프로토콜인 DNS, 그리고 웹 상에서의 자원 개념과 이를 식별하기 위한 정보인 URI에 대해 이해해야 한다.DNS 네트워크 상의 호스트를 식별하기 위해 기본적으로 IP 주소를 사용하지만, IP 주소는 특정 호스트의 특징을 나타내기 어렵고, 언제든 바뀔 수 있다는 단점이 있다. 이를 해결하기 위해 도메인 네임(Domain Name)을 사용한다. 💡도메인 네임(Domain Name)사람이 읽기 쉬운 문자 형태로 IP 주소를 대신 표시www.google.com, www.naver.com 등과 같은 문자열 형태의 호스트 특정 정보로, 호스트의 IP 주소와 ..

[네트워크] 5-4. (1) 전송 계층 - TCP와 UDP

전송계층(Transport Layer) 네트워크 계층에서 가장 중요한 프로토콜이 IP라면, 지금 살펴 볼 전송 계층에서 가장 중요한 프로토콜은 TCP와 UDP이다. 네트워크 계층(IP)이 호스트(컴퓨터) 간 데이터 전달을 담당한다면, 전송계층은 그 위에서 호스트 내의 애플리케이션(프로세스) 간 데이터 전달을 담당한다. 💡핵심 역할네트워크 계층의 IP 주소는 “어떤 컴퓨터로 갈지”를 결정전송계층에서는 "그 컴퓨터 안에서 어떤 애플리케이션으로 갈지" 결정 → 이를 위해 포트 번호(Port Number) 사용✅ 포트 번호 예시웹 브라우저 → 포트 80(HTTP), 포트 443(HTTPS)이메일 서버 → 포트 25(SMTP) 💡포트를 통한 프로세스 식별 네트워크 계층의 IP 주소와 MAC 주소는 패킷을 ..

[네트워크] 5-3. (1) 네트워크 계층 - IP

IP 목적과 특징 물리 계층과 데이터 링크 계층은 주로 같은 LAN에 속한 호스트끼리 내부에서만 통신할 수 있도록 해주지만, LAN을 넘어 다른 네트워크와 통신하려면 네트워크 계층의 기술이 필요하다. 네트워크 계층의 대표적인 프로토콜인 IP(Internet Protocol)는, 각 장치에 고유한 주소를 부여하고 데이터가 여러 네트워크를 거쳐 목적지까지 전달될 수 있게한다. 따라서 네트워크 계층과 IP는 전 세계의 다양한 네트워크 간에 자유롭게 통신이 이루어지도록 하는 핵심 역할을 한다. 이러한 IP의 역할과 구조를 중심으로 네트워크 간 데이터 전달 원리를 알아보자. 💡IP의 목적 1. 주소 지정(Addressing)각 호스트에 고유한 IP 주소를 부여해, 네트워크 내에서 식별할 수 있도록 함2. 단편..

[운영체제] 3-6. (2) 파일 시스템 (File System)

파일 시스템 지금까지 살펴본 파일 시스템은 다양한 종류가 있다. 운영체제는 보조기억장치(ex. HDD, SSD, USB 등)에 저장된 데이터를 효율적으로 관리하기 위해 여러 파일 시스템을 지원한다. 운영체제마다 각기 다른 파일 시스템을 지원하며, 같은 운영체제라도 다른 파일 시스템을 사용하거나 하나의 컴퓨터에서 여러 파일 시스템을 사용할 수 있다. 💡파티셔닝 앞서 설명한 것처럼 하나의 보조기억장치 내에는 다양한 종류의 파일 시스템이 사용될 수 있는데, 한 보조기억장치에 여러 파일 시스템을 적용하여 사용하려면 보조기억장치 내에 파일 시스템을 적용할 영역이 구분되어야 한다. 이때, 보조기억장치의 영역을 구획하는 작업을 파티셔닝(Partitioning)이라고 하며, 파티셔닝되어 나누어진 하나의 영역을 파..