2015/07/16 245

05_운영체제 구조_설계 및 구현

05_운영체제 구조_설계 및 구현 설계 및 구현에서는 운영체제를 설계하고 구현할 때 우리가 당면하는 문제점을 논의한다. [설계 목표] 시스템을 설계하는데 있어 첫 번째 문제점은 시스템의 목표와 명세를 정의하는 일이다. 시스템 설계는 하드웨어와 시스템의 유형(일괄처리, 시분할 처리, 단일 사용 자 등)의 선택에 의해 영향을 받는다. 시스템 설계의 요구 조건들을 명세하는 것은 매우 어려운 일이지만 크게 사용자 목적과 시스템 목적 두 그룹으로 나눌 수 있다. 사용자 목적은 사용자들은 시스템이 사용하기 쉽고 편리하며 배우기 쉽고 안전해야 하는 등 요구사항이 있다. 이러한 명세는 어떻게 목적을 달성할 것인가에 대한 합의가 없기 때문에 시스템 설계에 있어 특별히 유용하지는 않다. 즉 운영체제는 설계, 구현, 유지보..

04_운영체제 구조_시스템 프로그램

04_운영체제 구조_시스템 프로그램 시스템은 시스템 프로그램의 집합체이다. 최하위 수준은 하드웨어 이고 그 위에 운영체제와 시스템 프로그램, 마지막에 응용 프로그램의 집합으로 이루어져 있다. 시스템 프로그램은 프로그램 개발과 실행을 위해 보다 편리한 환경을 제공 한다. 일부는 단순한 호출에 대한 사용자 인터페이스 이며 나머지는 훨씬 복잡한 시스템 이다. 시스템 프로그램에 대해 6개의 범주로 구분하여 보자. 파일 관리 : 파일과 디렉토리를 생성, 삭제, 복사, 이름변경, 인쇄, 덤프, 리스트 등 파일의 조작과 디렉토리를 조작 한다. 상태 정보 : 날짜, 시간, 사용 가능한 메모리 정보 등 단순한 정보 외에 상세한 성능, 로깅, 디버깅 정보 등을 제공한다. 파일 변경 : 디스크나 다른 저장 장치에 저장된 파..

03_운영체제 구조_시스템 호출의 유형

03_운영체제 구조_시스템 호출의 유형 시스템 호출은 다섯 가지의 주요 범주로 묶을 수 있다. [프로세스 제어] 끝내기(End), 중기(Abort) 적재(Load), 실행(Execute) 프로세스 생성, 프로세스 종료 프로세스 속성(Attribute) 획득, 프로세스 속성 설정 시간을 기다림 사건을 기다림(Wait Event), 사건을 알림(Signal Event) 메모리 할당 및 자유화 [파일 조작(File Manipulation)] 파일 생성(Create file), 파일 삭제(Delete File) 열기(Open), 닫기(Close) 읽기, 쓰기 위치변경(Reposition) 파일 속성 획득 및 설정 [장치 관리(Device Management)] 장치를 요청(Request Device), 장치를 ..

02_운영체제 구조_시스템 호출 (System Call)

02_운영체제 구조_시스템 호출 (System Call) 시스템 호출은 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공한다. 예를 들어 하드웨어를 접근해야 하는 작업 등의 특정 ROW LEVEL 작업은 어셈블리 명령을 사용하여 작성되어야 하지만 시스템 호출은 일반적으로 C, C++ 등과 같은 언어로 작성된 루틴 형태로 제공 된다. 한 파일로부터 자료를 읽어서 다른 파일로 복사하는 간단한 프로그램을 작성하는 예를 들어 보자.파일의 이름을 읽고 파일에 대한 접근 권한을 확인하고 파일을 열고 하는 등의 일련의 과정이 있을 것이다. 이를 도식화 하면 다음과 같다. 대부분의 사용자들은 이러한 정도의 상세를 결코 알지 못한다. 대부분의 응용 개발자들은 응용 프로그래밍 인터페이스(Applicatio..

01_운영체제 구조 _사용자인터페이스

01_운영체제 구조 _사용자인터페이스 운영체제는 프로그램 실행 환경을 제공 한다. 운영체제는 프로그램과 프로그램의 사용자에게 어떤 서비스를 제공한다. 물론 제공되는 서비스는 운영체제에 따라 다르지만 공통적인 속성은 다음과 같다. 사용자 인터페이스(User Interface) : 거의 모든 운영체제는 사용자 인터페이스(UI)를 갖고 있다. 이 인터페이스는 여러 형태를 가지고 있을 수 있으며 명령어 라인 인터페이스(Command Line Interface: CLI)로 문자 명령을 사용 한다. 다른 방법은 일괄 처리 인터페이스(Batch Interface)로 명령과 이들 명령을 제어하는 지시들이 파일로 입력되며 이들 파일이 수행한다. 가장 일반적으로 그래픽 사용자 인터페이스(GUI)가 사용된다. 이것은 입/출..

MySQL/MariaDB 백업 & 복원 - mysqldump

MySQL/MariaDB 백업 & 복원 - mysqldump Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 백업 및 복원에 대해서 알아본다. 이번 백업은 MySQL 시절부터 널리 알려진 mysqldump를 사용한다. mysqldump는 논리적 백업을 수행한다. 데이터 크기가 비교적 작은 경우 유연하게 사용할 수 있다. 백업파일은 SQL 형식으로 백업 파일을 생성한다. 이렇게 생성된 백업 형식은 MariaDB, MySQL 또는 완전히 다른 DBMS에서 쉽게 가져올 수 있다. mysqldump는 테이블 및 트리거를 덤프한다. 저장 프로시저나 뷰 등은 명시적으로 추가 매개변수를 사용하여 명시적으로 작성해야 한다. [기본 사용 문법] -p 옵션 후 명시적으로 패스워드를 적지..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – 쿼리 실행 구조

MySQL/MariaDB 아키텍처 – 쿼리 실행 구조 Version : Mariadb 5.5.4.2-WinX64 MySQL / MariaDB 쿼리 실행 구조에 대해서 알아본다. 쿼리 실행 구조는 타 DB와 거의 동일하다. [쿼리 실행 순서] 클라이언트는 서버로 SQL 문을 전송 한다. 서버는 쿼리 캐시를 확인하여 캐시에 저장된 데이터가 있다면 저장된 결과를 반환한다. 그렇지 않으면 다음 단계로 통과 시킨다. 서버는 구분 분석 및 전처리기에서 쿼리에 구조적 문제가 없는지 확인하고 옵티마이저는 SQL 쿼리를 최적화 한다. 쿼리 실행 엔진은 스토리지 엔진 API를 호출하여 계획을 실행 한다. 서버는 클라이언트에게 결과를 반환한다. [Parser] 파서는 사용자 요청으로 들어온 쿼리 문장을 토큰(SQL엔진이 인..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조

MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조 Version : Mariadb 5.5.4.2-WinX64 MySQL/MariaDB 메모리 공간은 크게 글로벌 메모리 영역과 로컬 메모리 영역으로 구분할 수 있다. 글로벌 메모리 영역은 MySQL 서버가 시작되면서 무조건 운영체제로부터 할당된다. 글로벌 메모리 영역과 로컬 메모리 영역의 차이는 MySQL서버 내에 존재하는 스레드가 공유해서 사용하는 공간인지 아닌지에 따라 구분된다. MySQL/MariaDB Memory 관련 설정 변수 : http://sqlmvp.kr/220365937569 MySQL 서버의 메모리사용량 = (글로벌 메모리) + (각 클라이언트 스레드 사용 메모리) [글로벌 메모리 영역] 일반적으로 클라이언트 스레드의 수와 ..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – 스레딩 구조

MySQL/MariaDB 아키텍처 – 스레딩 구조 Version : Mariadb 5.5.4.2-WinX64 MySQL./MariaDB 서버는 프로세스 기반이 아닌 스레드 기반으로 작동하며 크게 포그라운드(Foreground) 스레드와 백그라운드(Background)스레드로 구분할 수 있다. [포그라운드 스레드 (클라이언트 스레드)] 포그라운드 스레드는 최소한 MySQL/MariaDB 서버에 접속된 클라이언트의 수만큼 존재한다. 클라이언트 사용자가 작업을 마치고 커넥션을 종료하면 해당 커넥션을 담당하던 스레드는 다시 스레드풀(Thread pool)로 반환된다. 이때 스레드풀에 일정 개수 이상 대기 스레드가 있으면 스레드 풀로 반환하지 않고 스레드를 종료한다. 스레드풀의 크기는 다음 명령으로 확인할 수 있..

MySQL, MariaDB 2015.07.16

MySQL/MariaDB 아키텍처 – Overview

MySQL/MariaDB 아키텍처 – Overview Version : Mariadb 5.5.4.2-WinX64 MariaDB 아키텍처는 MySQL 아키텍처와 동일하다. (당연히 동일 엔진이기에..) MySQL 아키텍처는 아래 그림과 같다. 기본적으로 커넥션 API를 이루고 있는 응용 프로그램 부분과 커넥션풀, SQL Interface, Parser, Optimize, Caches&Buffers 로 이루어진 MySQL 엔진, 그리고 스토리지 엔진 및 실제 데이터를 저장하는 파일 시스템인 하드웨어 영역으로 구분할 수 있다. MySQL은 일반 상용 RDBMS에서 제공하는 대부분의 접근법을 지원한다. C API 부터 JDBC, ODBC, Perl, .NET 표준 드라이버까지 다양하게 제공한다. ASP.NET에..

MySQL, MariaDB 2015.07.16