CS 25

인프라를 지탱하는 응용 기술

캐시 캐시는 사용 빈도가 높은 데이터를 고속으로 액세스할 수 있는 위치에 두는 것을 의미한다. 캐시는 데이터를 잃을 가능성이 있기 때문에 데이터가 손실 돼도 괜찮은 경우에 주로 사용한다. 적합한 시스템 참조 빈도가 높은 데이터 캐시의 데이터가 손실돼도 문제가 없는 시스템 부적합한 시스템 데이터 갱신 빈도가 높은 시스템 대량의 데이터에 액세스하는 시스템 인터럽트 어떤 원인으로 인해 지금 하고 있는 일을 중단하고 급히 다른 일을 하는 것을 인터럽트라고 한다. 하나의 작업 중에 다른 작업을 할 수 있는 이유는 인터럽트를 통해서 CPU가 짧은 순간 다른 처리를 한 후 원래 하고 있던 작업을 계속하기 때문이다. 끼어들기는 어떤 일이 발생하면 연락하는 event-driven 구조이다. 반대로 CPU가 정기적으로 폴..

CS/컴퓨터 구조 2023.11.06

인프라를 지탱하는 기술

직렬과 병렬 직렬 처리로는 속도를 올리는데 한계가 있다. 병렬화를 통해 속도는 빨라지지 않지만, 단위 시간당 처리량을 늘릴 수 있다. 병렬 처리에서는 합류점,직렬화 구간, 분기점이 병목 지점이 되기 쉽다. 병렬화할 때는 일을 분담해서 처리를 한 후 다시 집약할 때 오버헤드가 걸린다. 그러므로 이 오버헤드를 감안하더라도 효과가 있을 경우에 병렬화를 한다. 직렬 처리 속도를 올리는 방법은 CPU의 클럭 주파수를 올린다. 어디에 사용되나? 웹서버는 다수의 이용자가 접속하기 때문에 복수의 프로세스가 분담해서 병렬 처리를 하고 있다. AP 서버에서는 JVM 프로세스가 하나이지만 복수의 스레드가 병렬로 처리하고 있다. Apapche HTTP Server 에서는 이번에 소개한 멀티 프로세스 모델 외에도 멀티 프로세스..

CS/컴퓨터 구조 2023.11.06

3계층형 시스템의 구성도

개요 웹서버, AP 서버, DB 서버가 있다. 주요 개념 프로세스와 스레드 프로세스는 프로그램을 실행하면 OS 상에서 실행되어 독립적으로 동작하는 것이다. 프로세스 및 스레드가 활동하려면 메모리가 필요하고 이것은 커널에 의해 메모리 상에 확보된다. OS 커널 OS 처리는 원칙적으로는 커널을 통해서 이뤄진다. 커널의 역할을 여러가지가 있지만 6가지로 정리가 가능하다. 시스템 콜 인터페이스 프로세스/스레드에서 커널로 연결되는 인터페이스다. 애플리케이션 OS 에서 어떤 처리를 하고 싶으면 시스템 콜이라고 하는 명령을 이용해서 커널에 명령을 내린다. 프로세스를 관리한다. OS 상에서는 몇 천개의 프로세스를 가동할 수도 있지만 물리서버의 CPU 코어는 수십 개 정도 밖에 되지 않기때문에 어떤 프로세스가 어느 정도..

CS/컴퓨터 구조 2023.10.28

물리서버와 내부 구조

서버 설치장소 서버는 랙이라는 것에 장착된다. 랙에는 서버외에도 HDD 가 가득 장착돼 있는 저장소나 인터넷 및 LAN 을 연결하기 위한 스위치 등도 탑재돼 있다. 서버 내부 구성 CPU, 메모리, HDD 등의 컴포넌트들이 버스들로 연결되어 있다. CPU와 메모리는 직접 연결되어있고 HDD나 네트워크 인터페이스는 메모리에 비해 멀리 있다. CPU 서버 중심에 위치해서 연산 처리를 한다. CPU는 명령을 받아서 연산을 실행하고 결과를 반환한다. 명령과 데이터는 기억 장치나 입출력 장치를 통해 전달된다. CPU를 코어라고 하며, 하나의 CPU 에 여러 개의 코어가 존재하는 멀티 코어화가 진행되고 있다. 우리가 프로세스나 키보드 마우스를 통한 입력을 하면 OS 가 동작하고 OS 가 CPU에 명령을 내리게 된다..

CS/컴퓨터 구조 2023.10.27

프로세스 동기화

배경지식 프로세스는 병렬적으로 실행된다. 공유 데이터 에대한 병렬적인 접근은 데이터의 불일치를 낳는다. 데이터 일치성을 유지하기 위해서는 프로세스들의 협력적인 순차적 실행을 보장하는 메커니즘이 필요된다. Procedure Consumer Problem Procedure 와 Consumer 는 counter 를 증가시키고 Consumer 는 counter 를 감소 시킬때 동시에 Procedure process 와 Consumer process 가 counter 에 대한 연산을 진행한다면 각각의 register 에서 counter 는 6, 4 로 저장될 것이다. 그리고 결국 counter 가 register 에서 할당 되는 순서에 따라 counter 는 우리가 기대하는 5라는 값과 다르게 4 또는 6중 무작..

CS/OS 2023.06.25

Real-Time CPU Scheduling

Soft real time systems vs Hard real time system 연성 실시간 시스템 중요 실시간 프로세스가 스케줄 되는 시점에 관해 아무런 보장을 하지 않는다. 마감 시간을 지키지 못한 결과가 경미한 피해인 경우이다. 경성 실시간 시스템 태스크는 반드시 마감시간까지 서비스를 받아야 하며 마감시간이 지난 이후에 서비스를 받는 것은 서비스를 전혀 받지 않는 것과 동잉ㄹ한 결과를 낳는다. 개념 이벤트 지연시간 Event 가 발생할 때 부터 event 에 대한 사건 처리가 완료 될 때까지의 지연시간. event 는 interrupt 라고 생각할 수 있다. 두가지 유형의 지연시간이 실시간 시스템의 성능을 좌우한다. Interrupt latency (인터럽트 지연시간) CPU에 인터럽트가 발생..

CS/OS 2023.06.19

CPU - 스케줄링 알고리즘

FCFS(선입 선처리 스케줄링) 큐에 도착한 순서대로 CPU에 할당하는 방식이다. 실행 시간이 짧은 process 가 뒤로 가면 평균 대기 시간이 길어진다. Process 의 순서 때문에 대기 시간이 길어졌다 대기 시간 : P1: 0, P2 : 24 , P3 : 27 평균 대기 시간: (0 + 24 + 27) / 3 = 17 대기 시간 : P3 - 0 , P2 - 3 , P1 - 6 평균 대기 시간 : (0 + 3 + 6) / 3 = 3 이처럼 Process 의 순서에 따라서 평균 대기 시간이 달라진다. Convoy effect : 긴 프로세스 뒤에 여러 프로세스가 대기 하게 되는 호위 효과가 발생한다. 대부분의 scheduling 이 I/O bound prcoess 에 우선권을 주는 이유이다. SJF(..

CS/OS 2023.06.06

Protocol Stack

Internet 에서 Protocol 의 역할 네트워크를 공부하면서 가장 머리가 아팠던건 다양한 개념들이 다양한 곳에서 다 다른 뜻으로 쓰인다는 점이었다. Internet 을 이해하려면 Internet 을 구성하는 각 protocol들의 메커니즘을 이해하면 됨 SW 블록들을 프로토콜로 이해하면 된다. SW 블록들을 수행할 때 프로토콜 단위로 수행한다. 단위의 약속들이 쌓여서 Protocol stack 이 쌓인다. SW 블록들을 Protocol 기반으로 수행하게 된다. Protocol 이 쌓여 있는 모습을 layer라고한다. Protocol 메시지 + 관련 동작 Protocol 구조 통신 네트워크는 여러개 protocol 이 서로 얽혀서 동작한다. stack 구조로 위 아래 protocol 끼리 API 로..

CS/network 2023.06.05

CPU 스케줄링 - 개념

Basic Concepts(기본 상식들) process 의 동작은 크게 CPU 사용, 입출력의 반복으로 볼 수 있다. CPU burst - I/O burst cycle: Process 는 cpu 실행과 I/O 대기로 이루어져있다. CPU burst 를 CPU에 어떻게 분배할지가 주요한 문제이다. CPU burst 의 길이와 분포가 주로 관심을 가져야할 부분이다. CPU burst 와 I/O burst CPU burst: cpu burst는 Process 가 한번에 CPU를 얼마나 사용하는지에 대한 시간이다. I/O burst: process 는 waiting 상태로 I/ O 동작이 시작하고 끝날 때까지를 의미한다. CPU 스케줄러 CPU 가 유휴 상태가 될 때마다 운영체제는 준비 큐에 있는 프로세스 중에..

CS/OS 2023.06.05

Decorator Pattern

Decorator Pattern 객체에 추가적인 책임을 동적으로 부여한다. 서브 클래스를 사용하지 않고 유연하고 융통성있는 기능 확장을 가능을 가능하게 한다. 조금씩 기능을 추가하기 위해 새로운 클래스를 생성할 때 상속으로 문제를 풀면 너무 많은 상속이 발생할 수 있다. 그래서 상속을 사용하지 않고 문제를 해결하는 방법을 고민했고 나온 패턴이다. 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 추가한다. 서브 클래스를 만들지 않고 기능을 유연하게 확장할 수 있다. 문제 조금씩 다른 다양한 종류가 늘어날수록 확장이 어려워진다. 해결방안 상속을 남용하지 않고 연관으로 필요한 기능을 추가한다. 실행 시점에 확장을 한다.(compile time 이 아닌 runtime에) 구성 Component : 각 구성..

CS/Design Pattern 2023.06.05