호우동의 개발일지

Today :

article thumbnail
[Network] 쿠키(Cookie)를 이용한 클라이언트-서버 상호작용

더보기 쿠키를 사용하는 이유 HTTP 서버는 상태를 유지하지 않는다. 때때로 웹사이트가 사용자를 확인해야 할 때가 존재 → 해당 이유로 HTTP는 쿠키(cookie)를 사용 대부분의 주요 상용 웹사이트는 쿠키를 사용하고 있음 쿠키기술의 4가지 요소와 쿠키 동작 방식 쿠키가 가지는 4가지 요소 HTTP 응답 메시지 쿠키 헤더 라인 HTTP 요청 메시지 쿠키 헤더 라인 사용자의 브라우저에 사용자 종단 시스템과 관리를 지속시키는 쿠키 파일 웹 사이트의 백엔드 데이터베이스 쿠키의 동작 과정 가정 해당 사용자는 PC 인터넷 익스플로러를 통해 항상 웹 접속을 한다. PC로 인터넷 익스플로러를 통해 특정 웹사이트(A)를 접속했다. 해당 사용자는 과거에 웹사이트(B)를 방문한 적이 있다. 과정 웹 서버 A에 요청이 들..

article thumbnail
[Network] HTTP와 TCP의 이해, TCP 연결 방식 정리

웹의 등장과 특성 1990년대 초, 새로운 애플리케이션인 월드와이드웹이 등장 가장 큰 장점 → 웹이 온디맨드 방식 온디맨드(On Demand) : 사용자의 요구가 있었을 때 그 요구에 따라 서비스를 제공하는 것 cf ) 라디오 / TV → 콘텐츠 제공자의 주파수를 사용자가 맞춰야 함 이외의 장점 개인이 웹 상에 어떠한 정보를 사용 가능하게 하는 것이 매우 쉬움 → 모든 사람이 매우 낮은 비용으로 발행자가 될 수 있음 하이퍼링크와 검색 엔진은 정보를 얻는데 많은 도움을 준다. 웹과 관련된 프로토콜은 모바일 인터넷 애플리케이션을 위한 플랫폼을 제공 HTTP의 구현 2가지 프로그램으로 구현됨 (클라이언트 프로그램, 서버 프로그램 ) 클라이언트 프로그램 → 각기 다른 종단 시스템에서 수행 클라이언트 프로그램과 ..

[Network] 애플리케이션 구조와 프로세스 간 통신

네트워크 애플리케이션 개발의 중심 다른 종단 시스템에서 동작하고 네트워크를 통해 서로 통신하는 프로그램을 작성하는 것 예시 웹 어플레케이션의 서버와 클라이언트로 구별되는 두 가지 프로그램 클라이언트 프로그램 : 사용자 호스트에서 실행되는 브라우저 프로그램 사용자 호스트 → 데스크톱, 랩톱, 태블릿, 스마트폰 서버 프로그램 : 웹 서버 호스트에서 실행되는 웹 서버 프로그램 이러한 서버는 종종 데이터 센터에 위치 종단 시스템에만 애플리케이션 소프트웨어가 존재 → 기본 설계 방식 새로운 애플리케이션 개발 여러 종단 시스템에서 실행되는 소프트웨어를 작성해야 함 C, Java, Python 등으로 작성됨 네트워크 코어 장비에서 실행되는 소프트웨어까지 작성할 필요가 없다. 네트워크 코어 장비는 네트워크 계층 및 그..

[OS] 고전적 동기화 문제 - 유한 버퍼, Readers-Writers 문제

고전적인 동기화 문제 많은 클래스의 병행 제어(concurrency control) 문제에 대한 것 해당 문제들로 새로운 동기화 방법을 검증할 수 있음 유한 버퍼 문제(The Bounded-Buffer Problem) 해당 문제는 동기화 프리미티브(primitive)들의 능력을 설명하기 위해 사용 프리미티브 : 프로그래밍 관점에서 해석 이용 가능한 가장 작은 processing의 단위 언어에서 표현의 원자 요소 예 : 덧셈, 뺄셈 → 가장 단순하기 때문에 primitive operation라고 함 소비자와 생산자가 공유하는 자료구조 int n; // n개의 버퍼로 구성된 풀(pool) semaphore mutex = 1; // 상호배제 기능 제공 semaphore emtpy = n; // 비어 있는 버퍼..

[Network] 인터넷의 개념과 프로토콜, 접근 네트워크

인터넷이란 무엇인가? 2가지 방법이 존재 인터넷의 구성요소를 기술하는 것 인터넷을 구성하는 기본적인 하드웨어와 소프트웨어 구성요소 기술 분산 애플리케이션에서 서비스를 제공하는 네트워킹 인프라스트럭처 관점에서 서술 인프라스터럭처(infrastructure) 컴퓨터와 사용자들을 연결하는 데 사용되는 물리적인 하드웨어를 말한다. ← 정보 기술과 인터넷의 관점으로 본 인프라스럭처 줄여서 “인프라”라고 많이 부름 구성요소로 본 인터넷 중요한 3가지 키워드 인터넷(network of networks) : 네트워크들이 모인 네트워크 프로토콜(protocol) : 네트워크에서 메시지 송수신을 제어하는 일련의 규칙 표준화(Internet standards) : 네트워크는 표준화가 굉장히 중요 종단 시스템(end Syst..

[OS] 락 없는(lock-free) 알고리즘, 동기화 도구 사용 전략 정리

동기화 도구들은 임계 구역 문제인 상호 배제를 보장하고 라이브니스 문제를 해결하는데 효과적 락 없는(lock-free) 알고리즘 락 없는 알고리즘의 구현 락 없는 알고리즘을 구현하는 이유? → 락 오버헤드 없이 경쟁 조건으로부터 보호하기 위해 락 없는 알고리즘을 구현하기 위해 CAS 명령을 사용하는데 중점을 둠 CAS → compare and swap의 약어 장점 : 락 없는 설루션은 오버헤드가 낮고 확장성이 있기 때문에 인기가 있음 단점 : 알고리즘 자체가 개발 및 테스트가 어려운 경우가 많음 CAS 기반 접근 방식 CAS 기반 접근 방식이 낙관적으로 접근하는 과정 우선 낙관적으로 변수를 갱신 충돌 감지를 사용하여 다른 스레드가 변수를 병행하게 갱신 중인지 확인 갱신 중이라면, 충돌 없이 성공적으로 갱..

article thumbnail
[OS] 라이브니스(Liveness) 문제 (데드락, 우선순위 역전) 정리

라이브니스(Liveness) 임계구역 접근을 위해 동기화 도구를 사용할 때 문제 임계구역에 들어가려고 시도하는 프로세스가 무기한 대기할 가능성이 생김 무기한 대기는 진행 및 한정된 대기 2개의 기준을 위반한다. 라이브니스와 라이브니스 실패 프로세스가 실행 수명주기 동안 진행되는 것을 보장하기 위해 시스템이 충족해야 하는 일련의 속성 무기한 대기하는 프로세스는 라이브니스 실패의 한 예시 다양한 형태의 라이브니스 실패 → 결과적으로 성능과 응답성이 나쁜 것이 특징 예시 무한 루프 바쁜 대기 루프 → 라이브니스 실패의 가능성이 있음 특히 프로세스가 임의로 오래 시간 동안 루프 돌고 있는 경우 가능성 높아짐 도구를 통해 상호 배제를 제공하려는 노력이 병행 프로그래밍 환경에선 실패 가능성 존재 도구를 통한 상호 ..

[OS] Mutex Lock과 스핀락(Spin lock), 세마포어(Semaphore)

Mutex Locks 만들어진 이유? 임계구역 문제에 대한 하드웨어 기반 해결책은 복잡하고, 응용프로그래머가 사용 불가능 → 임계구역 문제 해결을 간단하게 하기 위해 만들어진 소프트웨어 도구를 개발 Mutex Locks : 상위 수준 소프트웨어 도구 중 하나로, 가장 간단한 도구 임계 구역 보호를 통해 경쟁 조건 방지를 위해 mutex 락 사용 임계 구역에 들어갈 때 락을 획득하고, 빠져나올 때 락을 반환해야 한다. acquire() : 락 획득 release() : 락 반환 Mutex Lock의 구성 available이라는 boolean 변수를 가짐 → 이 변수 값이 락의 가용 여부를 표시 락이 사용 가능하면 acquire() 호출은 성공하고, 락은 사용 불가 상태가 됨 사용 불가 상태의 락을 획득하려..