분류 전체보기 101

[OS] 2-3. 시스템 콜

시스템 콜(System Call)은 OS에 의해 사용가능한 서비스에 대한 인터페이스를 제공한다. 1. 예제(Example) OS가 어떻게 시스템 콜을 사용할 수 있게 하는지 살펴보기 전에 시스템 콜이 어떻게 사용되는지를 설명하는 예시를 보자. ex) 하나의 파일에서 데이터를 읽어와서 다른 파일로 복사하는 간단한 프로그램을 작성한다. 그러면 크게 아래의 과정을 생각해 볼 수 있다. 1) 파일 이름을 얻어내는 작업 2) 입력 파일을 열고 출력 파일을 생성 후 여는 작업 3) 입력 파일에서 내용을 읽어서(read) 출력 파일에 쓰는(write) 작업 4) 전체 파일이 복사된 이후 파일을 닫고 기록 후 정상 종료 여기에 각 단계에서 발생할 수 있는 오류 처리도 시스템 콜을 이용한다. 이러한 순서를 아래 그림으로..

OS Concepts 10th 2023.08.21

[DB] 14-2. 순서 인덱스

여러 개의 순서 인덱스 방식을 살펴볼 것이다. 각각의 기술은 DB 응용 프로그램에 맞게 사용하면 된다. 각각의 방식들은 다음과 같은요소에 기초해서 평가된다. 접근 유형(Access Type) : 효율적으로 지원되는 접근 유형. 접근 유형은 특정 속성의 값을 가진 레코드나 특정 범위에 들어가는 속성의 값을 가진 레코드를 찾는 것을 포함한다. 접근 시간(Access Time) : 특정 데이터 항목이나 항목의 집합을 찾는데 걸리는 시간 삽입 시간(Insertion Time) : 새로운 데이터 항목을 삽입하는데 걸리는 시간. 여기에는 새로운 데이터 항목을 삽입하기 위한 정확한 위치를 찾는데 걸리는 시간과 인덱스 구조를 갱신하는데 걸리는 시간이 포함된다. 삭제 시간(Deletion Time) : 데이터 항목을 삭..

[DB] Chapter 14. 인덱싱 & 14-1. 기본 개념

대부분의 쿼리(query)는 파일 내의 레코드 중에서 극히 일부분만 참조한다. ex. 물리학과에 속한 모든 교수를 찾아라 ⇒ instructor 의 레코드들만 참조한다. ex. ID가 2201인 학생이 취득한 총 학점을 계산해라 ⇒ student의 레코드들만 참조한다. 물리학과인지 알아내기 위해서 instructor 릴레이션의 모든 레코드들 살펴보는 건 비효율적이다. 마찬가지로 ID = 2201인지 알아내기 위해서 student 릴레이션의 모든 레코드를 살펴보는 것 역시 비효율적이다. 이상적인 방법은 시스템이 원하는 값을 가진 record를 직접 찾는 것이다. 이를 구현하기 위해서 파일과 관련된 부가적인 구조를 설계한다. 1. 기본 개념 ex) 교재의 인덱스 교재에 특정 내용을 알고싶다면... 1) 교재..

[DB] 13-7. 메인 메모리 DB의 저장구조

오늘날의 main memory는 크기가 충분히 크고 가격도 저렴해서 많은 곳의 전체 DB가 메모리에 들어갈 수 있다. 이렇게 큰 main memory는 DB 버퍼에 많은 양의 메모리를 할당해서 사용할 수 있다. 그러면, 전체 DB를 버퍼에 적재할 수 있게 되면서 데이터를 읽기 위한 디스크 I/O 연산을 피할 수 있다. (다만, 블록을 갱신했다면 그 블록을 디스크에 작성(write)하는 작업은 필요하다) 따라서, 이와 같이 main memory가 큰 환경은 DB 일부만 버퍼에 저장되어 있는 환경보다 훨씬 더 좋은 성능을 제공할 수 있다. 메인 메모리 DB는 모든 데이터가 메모리에 존재하는 DB다. 메인 메모리 DB 시스템은 일반적으로 이 사실을 활용하여 성능을 최적화하도록 설계되었다. 특히, 버퍼 관리자를..

[OS] 2-2. User and OS Interface

사용자와 OS가 소통하는 방법은 기본적으로 3가지가 있다. ⇒ 명령 인터프리터, 그래픽 기반 사용자 인터페이스, 터치스크린 인터페이스 1. 명령 인터프리터 (Command Interpreter) 대표적으로 Linux, Unix 뿐만 아니라 Windows, macOS에서도 명령 인터프리터 형태의 UI를 제공한다. 여기서 인터프리터(해석기)는 shell(쉘)이라고도 불린다. Linux 시스템에서는 Bourne shell, C shell, Bourne-Again shell 등 여러 가지 쉘을 제공한다. 명령 인터프리터의 중요한 기능은 사용자가 지정한 명령을 가져와서 그것을 수행하는 것이다. 파일 생성, 삭제, 리스트, 프린트 등 많은 명령을 수행할 수 있다. 2. 그래픽 기반 사용자 인터페이스 (GUI, Gr..

OS Concepts 10th 2023.08.16

[OS] 2-1. Operating-System Services

OS는 1) 프로그램 실행환경을 제공 2) 프로그램과 그 프로그램의 사용자에게 특정 서비스를 제공 아래 그림은 다양한 OS 서비스에 대한 관점과 각 서비스 간의 상호작용을 보여준다. 이러한 서비스는 프로그래머가 프로그래밍 작업을 더 쉽게 수행할 수 있도록 한다. UI - GUI, CLI, 터치스크린 인터페이스 program execution (프로그램 수행) 시스템은 프로그램을 main memory에 적재해서 실행할 수 있어야 한다. 해당 프로그램은 정상적이든 비정상적이든 실행을 끝낼 수 있어야 한다. I/O Operation (입출력 연산) 입출력에는 파일 혹은 입출력 장치과 연관될 수 있다. 효율성과 보호(protection)를 위해 사용자가 I/O 장치를 직접 제어할 수는 없고 OS가 입출력을 수행..

OS Concepts 10th 2023.08.16

[OS] Chapter 2. Operating-System Structure

OS를 살펴볼 때 3가지 관점으로 바라볼 수 있다. 1) OS가 제공하는 서비스에 초점을 맞춘다. 2) OS가 사용자와 프로그래머에게 제공하는 인터페이스에 초점을 맞춘다. 3) 시스템의 구성요소와 그들의 상호 연결에 초점을 맞춘다. 이번 챕터에서는 OS의 3가지 측면을 모두 살펴본다. 이번 챕터의 목표 - OS에서 제공하는 서비스를 식벼랗ㄴ다. - OS 서비스를 제공하기 위한 시스템 콜을 사용하는 방법을 설명한다. - OS 설계를 위한 monolithic, 계층화, micro kernel 등을 비교 및 대조한다. - OS 부팅 프로세스를 설명한다. - OS 성능을 모니터링하기 위한 도구를 적용한다. - Linux 커널과 상호작용 하기 위한 커널 모듈을 설계하고 구현한다.

OS Concepts 10th 2023.08.16

[OS] 1-10. 계산환경

1. 전통적 계산 (Traditional Computing) 현재는 전통적인 시분할 시스템을 많이 사용하지 않아서 굳이 다루지는 않겠다. 2. 모바일 컴퓨팅 (Mobile Computing) : 스마트폰, 태블릿 컴퓨터의 컴퓨팅 환경 데스크톱이나 랩톱과 달리 장치들을 손쉽게 가지고 다닐 수 있다는 특징을 갖고 있다. 뿐만 아니라 이메일, 웹 브라우징, 음악 연주, 비디오, 사진 촬영, 비디오 녹화 등의 다양한 범위의 응용 프로그램을 사용할 수 있게 되면서 엄청나게 성장해왔다. 현재 모바일 컴퓨팅에서 사용되는 대표적인 OS는 Apple iOS와 Google Android이다. 이에 대해서는 2장에서 좀 더 자세히 다루겠다. 3. 클라이언트-서버 컴퓨팅 (Client-Server Computing) 현대 네..

OS Concepts 10th 2023.08.06

[DB] 13-6. Column-Oriented Storage

전통적으로 DB는 하나의 record 안에 모든 속성에 대한 값을 저장한 튜플을 저장하고 그 튜플은 지금까지 봐왔던 file에 저장된다. 이러한 저장 방식을 row-oriented storage라고 한다. 반면, Column-Oriented Storage에서는 relation의 각 속성(attribute)이 속성의 값과 함께 별도로 저장된다. 이때, 연속된 튜플의 해당 속성 값들은 파일 내에서 연속된 위치에 저장된다. 그림 : instructor relation이 column-oriented storage 방식으로 어떻게 저장되는지 보여준다. Column-Oriented Storage의 가장 간단한 형태에서 각각의 속성(attribute)은 별도의 파일에 저장된다. 게다가, 각각의 파일은 크기를 줄이기 ..

[DB] 13-5. Database Buffer

Main Memory의 크기가 시간이 지나면서 커지면서 중간 사이즈(medium-sized) DB들이 메모리에 들어갈 수 있게 됐다. 하지만, 서버는 memory에 많은 것을 요구(demand)하기 때문에 DB에게 줄 수 있는 메모리의 공간은 DB의 크기보다 훨씬 작을 수 있다. 그래서, DB의 데이터들은 주로 Disk에 저장되고 데이터를 읽거나 수정할 때 메모리로 가져온다. 물론, 수정된 데이터 블록은 다시 디스크에 반영이되야 한다. 디스크에 접근하는 건 in-memory에 있는 데이터에 접근하는 속도보다 느리기 때문에 DB 시스템의 주요 목적은 디스크와 메모리 사이의 블록을 전송하는 횟수를 최소화하는데 있다. 이를 위한 방법 중 하나로 최대한 많은 블록을 main memory에 저장하는 방법이 있다...