WIFT | 2020. 12. 01

sol ahn·2020년 12월 2일
0

What I Had Fun Today

목록 보기
2/6
post-thumbnail

[OS]

컴퓨터 시스템의 구조

입력(input) | 출력(output) => I/O

컨트롤러(controller): 일종의 작은 CPU, 각 하드웨어 장치마다 존재하며 이들을 제어함.

커널(kernel): 운영체제 중 항상 메모리에 올라가 있는 부분으로, 운영체제 중 핵심적인 영역에 해당함.

로컬버퍼(local buffer): 각각의 장치 컨트롤러가 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위한 작은 메모리

인터럽트(interupt)

인터럽트(interupt): 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법

CPU는 매 시점 메모리에서 명령(instruction)을 하나씩 읽어와 수행함. 이 때 CPU 옆에 인터럽트 라인(interupt line)이 있어, CPU가 자신의 작업을 하던 중간에 인터럽트 라인에 신호가 들어오면 하던 일을 멈추고 인터럽트와 관련된 일을 우선 처리함.

인터럽트 처리루틴(= 인터럽트 핸들러): 운영체제 커널 내에 있으며, 다양한 인터럽트에 대해 각각 처리해야 할 업무들을 정의함.

인터럽트 벡터(interupt vector): 인터럽트 종류마다 번호를 정하고, 그 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키고 있는 자료구조

하드웨어 인터럽트 | 소프트웨어 인터럽트

소프트웨어 인터럽트는 트랩(trap)이라고도 부름.
예외상황(exception): 사용자 프로그램이 비정상적인 작업을 시도하거나, 권한이 없는 작업을 시도할 때 이에 대한 처리를 위하여 발생시키는 인터럽트
시스템 콜(system call): 사용자 프로그램이 운영체제 내부에 정의된 코드를 싱행하고 싶을 때 운영체제에 서비스를 요청하는 방법

인터럽트 핸들링(interupt handling): 인터럽트가 발생한 경우 처리해야 할 일의 절차

입출력 구조

동기식 입출력 | 비동기식 입출력

동기식 입출력: 어떤 프로그램이 입출력 요청을 했을 때, 입출력 작업이 완료된 뒤에야 그 프로그램이 후속 작업을 수행할 수 있는 방식

비동기식 입출력: 입출력 연산을 요청한 뒤에 연산이 끝나기를 기다리는 것이 아닌, CPU의 제어권을 입출력 연산을 호출한 그 프로그램에게 곧바로 다시 부여하는 방식

DMA(Direct Memory Access)

DMA는 일종의 컨트롤러로, CPU가 입출력 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 막아줌.
DMA를 사용하면, 디바이스 컨트롤러가 디바이스의 버퍼 스토리지의 내용을 메모리에 블록(block) 단위로 전송함.
즉, 로컬버퍼에서 메모리로 읽어오는 작업을 DMA가 대행함으로써 CPU는 원래 하던 작업을 멈추고 인터럽트를 처리할 필요가 없어짐.

저장장치의 계층 구조

레지스터(register) , 캐시 메모리(cache memory), 메인 메모리(main memory)

  • 휘발성 저장장치
  • CPU 직접 접근 가능
  • byte 단위

마그네틱 디스크, 광디스크, 마그네틱 테이프

  • 비휘발성 저장장치
  • CPU 직접 접근 불가능
  • sector 단위

하드웨어 보안

커널 모드(kernel mode): 운영체제가 CPU의 제어권을 갖고 운영체제 코드를 실행하는 모드
사용자 모드(user mode): 일반 사용자 프로그램이 실행되며 제한적인 명령만 수행하는 모드

모드비트(mode bit)

컴퓨터 시스템은 CPU 내부에 모드비트를 두어 사용자 프로그램을 감시함.
모드비트가 0으로 세팅되어 있으면, 커널모드로서 모든 명령 수행 / 모드비트가 1으로 세팅되어 있으면, 사용자모드로서 제한된 명령만 수행

일반명령: 메모리에서 자료를 읽어와 CPU에서 계산하고, 결과를 메모리에 쓰는 일련의 명령
특권명령: 보안이 필요한 명령으로 입출력 장치, 타이머 등 각종 장치에 접근하는 명령

타이머(timer)

정해진 시간이 지나면 인터럽트를 발생시켜 운영체제가 CPU의 제어권을 획득할 수 있도록 하는 역할을 수행
타이머는 일정한 시간 단위로 세팅될 수 있으며, 매 클럭 틱(clock tick) 때마다 1씩 감소
시분할 시스템에서 현재 시간을 계산하기 위해서도 사용됨.

시스템 콜(system call)

일종의 소프트웨어적인 인터럽트로서 사용자 프로그램이 시스템 콜을 할 경우, 트랩이 발생하여 CPU의 제어권이 운영체제로 넘어가게 됨.
사용자 프로그램이 시스템 콜을 하게 되면, 운영체제는 사용자 프로그램의 코드가 아닌 커널 영역에 정의된 시스템 콜 처리 코드를 수행
시스템 콜은 비록 함수를 호출하는 것이기는 하지만, 자신의 주소 공간을 거스르는 영역에 존재하는 함수를 호출하는 것.

사용자 프로그램이 사용하는 함수

사용자정의 함수: 프로그래머가 직접 작성한 함수

라이브러리 함수: 이미 직성된 함수를 호출만 해서 사용

커널 함수: 운영체제 커널의 코드에 정의된 함수

시스템 콜 함수: 사용자 프로그램이 운영체제의 서비스를 요청하기 위해 호출하는 함수

인터럽트 처리 함수: 각종 하드웨어 및 소프트웨어가 CPU의 서비스를 요청하기 위해 발생시키는 함수


[SQL]

DBMS 아키텍쳐

쿼리 평가 엔진

  • 사용자로부터 입력받은 SQL 구문을 분석, 어떤 순서로 기억장치의 데이터에 접근할지 결정함.`
  • 실행 계획(실행 플랜)
  • 접근 메서드(access method)
  • 계획을 세우고 실행하는 DBMS의 핵심 기능을 담당하는 모듈

버퍼 매니저: 버퍼라는 메모리 영역을 관리하는 매니저

디스크 용량 매니저: 어디에 어떻게 데이터를 저장할지 관리하며, 데이터의 읽고 쓰기를 제어하는 매니저

트랜잭션 매니저 & 락 매니저: 트랜잭션의 정합성을 유지하면서 실행시키고, 필요한 경우 데이터에 락을 걸어 다른 사람의 요청을 대기시키는 매니저

리커버리 매니저: 데이터를 정기적으로 백업하고 문제가 일어났을 때 복구하는 일을 수행하는 매니저

DBMS와 버퍼

데이터를 버퍼에 어떤 식으로 확보할 것인가 하는 부분에서 트레이드오프가 발생함.

기억 비용: 데이터를 저장하는데 소모되는 비용

많은 데이터를 영속적으로 저장하려면 속도를 잃고, 속도를 얻고자 하면 많은 데이터를 영속적으로 저장하기 힘듦!

DBMS: 데이터 저장을 목적으로 하는 미들웨어

하드디스크(HDD)

  • DBMS가 데이터를 저장하는 매체는 대부분 HDD
  • 2차 기억 장치

메모리

  • 디스크에 비하여 기억 비용이 비쌈.
  • 1차 기억 장치

버퍼(buffer) / 캐시(cache): 성능 향상을 목적으로 데이터를 저장하는 메모리

데이터 캐시: 디스크에 있는 데이터의 일부를 메모리에 유지하기 위해 사용하는 메모리 영역

로그 버퍼: 갱신처리(INSERT, DELETE, UPDATE, MERGE)와 관련있는 버퍼

워킹 메모리(working memory): 정렬 또는 해시 관련 처리에 사용되는 작업용 영역

DBMS와 실행계획

DBMS의 쿼리 처리 흐름

파서(parser): 사용자로부터 입력받은 SQL 구문이 항상 구문적으로 옳다는 보증이 없으므로 검사해주는 것

옵티마이저(optimizer): '최적화'라고도 함. DBMS 두뇌의 핵심

카탈로그 매니저: 옵티마지어가 실행계획을 세울 때 옵티마이저에 중요한 정보를 제공하는 매니저

플랜 평가: 옵티마이저가 SQL 구문에서 여러 개의 실행계획을 세운 뒤 그것을 받아 최적의 실행 결과를 선택하는 것

카탈로그에 포함되어 있는 통계 정보

  1. 각 테이블의 레코드 수
  2. 각 테이블의 필드 수와 필드의 크기
  3. 필드의 카디널리티(값의 개수)
  4. 필드값의 히스토그램; 어떤 값이 얼마나 분포되어 있는가
  5. 필드 내부에 있는 NULL의 수
  6. 인덱스 정보

Ref

[강의] KOCW 이화여자대학교 반효경 교수 <운영체제> 강의
[도서] 반효경, ⌜운영체제와 정보기술의 원리⌟ 개정판, 이화여자대학교출판문화원, 2020
[도서] 미크/윤인성, ⌜SQL 레벨업⌟, 한빛미디어, 2016

profile
아는 만큼 재밌는 개발자 🤓

0개의 댓글