분류 전체보기 101

[OS] Chapter 1-1. 운영체제가 할 일

컴퓨터 시스템은 크게 4가지 구성요소 HW, 응용프로그램, OS, 사용자로 구분할 수 있다. HW : CPU, 메모리, I/O 장치로 구성되어 기본적인 계산 자원을 제공한다 응용 프로그램 : 워드, 엑셀 등은 사용자의 계산 문제를 해결하기 위해 자원이 어떻게 사용될지를 정의한다. OS : 다양한 사용자를 위해 다양한 응용 프로그램 간의 HW 사용을 제어하고 조정한다. OS는 컴퓨터 시스템이 동작할 때 주어진 자원을 적절하게 사용할 수 있도록 해주는데 마치 정부(government)와 유사하다. 정부처럼 그 자체로는 특별한 기능을 수행하지는 않지만 다양한 프로그램들이 유용한 작업을 할 수 있도록 환경을 제공해주기 때문이다. OS의 역할을 좀 더 완벽하게 이해하기위해 사용자와 시스템 두 관점에서 살펴보겠다...

OS Concepts 10th 2023.07.21

[OS] Chapter 1. 서론

운영체제(Operationg System)는 컴퓨터 HW를 관리하는 SW이다. 또한 응용 프로그램(application)을 위한 기반을 제공하고 User와 HW 사이의 중재자 역할을 수행한다. 현대 컴퓨팅 환경에서 OS의 역할을 탐구하기 위해 먼저 컴퓨터 HW의 구성과 구조를 이해하는 것이 중요하다. 여기에는 CPU, 메모리, 입출력 장치와 저장장치가 포함되는데 OS는 이러한 자원들을 프로그램에 할당하는 역할을 담당하고 있다. 이번 장에서는 현대 컴퓨터 시스템의 주요 구성요소와 OS가 제공하는 기능에 대한 전체적인 내용을 살펴본다. 또한 뒤 장을 다루면서 많이 나오는 주제들, OS에 사용되는 자료구조, 계산 환경 및 오픈 소스 및 무료 운영체제를 다룬다. 목표 컴퓨터 시스템의 일반적인 구성과 인터럽트의 ..

OS Concepts 10th 2023.07.21

[DB] Chapter 13-3. Organization of Records in Files

지금까지 record가 어떻게 파일 구조로 표현되는지 공부했다. relation = set of records다. 그렇다면, 레코드의 모음에서 레코드들을 어떻게 구성할지에 대한 질문이 따라온다. 이에 대한 방법이 여러 가지가 있는데 각각에 대해서 하나씩 살펴볼 것이다. - Heap file organization : 모든 record들이 공간이 있는 파일의 모든 곳에 저장될 수 있어서 record의 순서가 보장되지 않는다. - Sequential file organziation : 각 record가 "search key"를 통해 순서대로 저장된다. - Multitable clustering file organization : 몇몇 다른 relation들의 record를 같은 파일에 저장해서 join 연산..

crontab

cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용한다. 사용환경 : Ubuntu 20.04.6 LTS(GNU/Linux 5.15.0-75-generic x86_64) 설치 및 상태 확인 sudo apt install cron # 설치 sudo service cron status # 상태 확인 - active이면 크론탭이 실행된 상태인 거고 inactive이면 크론탭을 시작해줘야 한다. sudo service cron start # 크론탭 시작 사용법 ① crontab -l : 크론탭으로 설정한 작업들의 리스트를 보여준다. ② crontab -e : 크론탭을 수정할 때 사용한다. 크론탭을..

다양한 주제 2023.07.20

[Network] 2-2. The Web and HTTP

초기에 인터넷은 연구하는 사람들, 대학생들이 주로 원격 호스트에 로그인하거나 파일을 전송하거나 뉴스, 이메일을 송수신하기 위해서 사용되었다. 그러던, 1990년대 초반, World Wide Web(WWW)이라는 응용 프로그램이 개발되었다. 이는 작업 환경 내외에서 사람들끼리 소통하는 방법을 바꿨고 인터넷을 단 하나의 데이터 네트워크로 승급시켰다. 많은 사람들이 웹을 사용하게 된 이유는 다음과 같을 것이다. Web이 실시간(on demand)으로 동작한다는 점. ⇒ 사용자가 원하는 걸 원하는 시기에 받을 수 있다는 점이 큰 장점으로 다가왔을 것이다. 기존의 라디오, TV는 사용자의 필요에 따라 컨텐츠를 제공한 게 아니라 컨텐츠를 제공하는 측이 강제적으로 사용자에게 컨텐츠를 제공하는 형식이었다는 점에서 달랐..

[DB] Chapter 13-2. File Organization

DB는 OS에 저장되어 있는 수많은 여러 파일들과 매핑되어 있다. 이 파일은 영구적으로 디스크에 저장된다. 파일은 논리적으로 레코드의 연속으로 구성되어 있다. 각각의 레코드들은 디스크 블록과 매핑되어 있다. 파일은 OS에서 기본적인 구성으로써 제공되기 때문에 파일 시스템이 있다고 추정할 수 있다. 여기서 우리는 파일을 논리적인 데이터 모델로 표현하기 위한 방법으로 생각할 필요가 있다. 각각의 파일은 논리적으로 블록이라는 단위로 나뉜다. 블록이란 저장장치의 분할과 데이터 전송의 단위이다. 대부분은 블록 사이즈를 4~8KB 정도로 지정하고 상황에 따라 여러 크기를 가질 수 있다. 블록은 여러 개의 레코드들을 포함할 수 있다. 그래서 모든 레코드는 블록보다 작다라는 추정을 할 수 있다. (물론, 이미지와 같은..

[DB] Chapter 13-1. Database Storage Architecture

이번 챕터에서는 저장 매체에 쌓이는 데이터의 구성과 데이터에 접근하는 방식에 대해서 살펴본다. 영구적인 데이터는 비휘발성 메모리에 저장되어야 한다. 대표적으로 자기식 디스크나 SSD가 있다. 자기식 디스크랑 SSD는 블록(block)으로 구조화된 기기이다. 즉, 블록 단위로 데이터를 읽고 쓴다. 반면에 데이터베이스는 레코드를 다루는데 이는 블록보다 훨씬 작은 개념이다. 대부분의 데이터베이스는 OS의 파일을 레코드 저장을 위해 중간 계층으로 사용한다. 이때, 블록의 자세한 내용을 추상화한다. 하지만, 효율적인 접근과 결함 복구를 지원하기 위해서 데이터베이스는 블록(block)을 지속적으로 알아야 한다. 그래서, 13.2에서 블록의 구조를 고려하면서 각각의 레코드가 어떻게 파일에 저장되는지 공부한다. 레코드..

[Network] 2-1. Principles of Network Applications

만약에 내가 굉장히 새로운 네트워크 응용 프로그램에 대한 아이디어가 있다고 생각해보자. 그 응용 프로그램은 굉장히 좋은 영향을 줄 수 있는 프로그램이 될 텐데 그렇다면... 그 아이디어를 어떻게 실세계의 네트워크 응용프로그램으로 바꿀 수 있을까?? 네트워크 응용프로그램 개발의 핵심은 1) 다른 종단 시스템에서 동작하고 2) 네트워크 위에서 서로 다른 종단 시스템과 통신할 수 있는 프로그램을 작성하는 것이다. ex) 사용자의 호스트 서버의 서버 호스트 / 넷플릭스를 제공하는 유저 단계에서의 프로그램 네트워크 서버의 서버 호스트 아래 그림은 위 2개의 예시를 일반적으로 표현한 그림이다. 그렇기 때문에 새로운 애플리케이션을 만들 때 다양한 종단 시스템에서 동작하는 SW를 작성해야 한다. 중요한 건 그런 애플리..

[Network] 2. Application Layer

인터넷이 생기고 나서 수많은 사람들의 편리함과 즐거운 일상의 부분이 되었다. 7,80년 대에는 텍스트 기반의 서비스였던 메일, 파일 전송 등이 주로 발전했고 90년대 중반에 WWW이 발명되면서 웹 서핑과 같은 것들이 생겨나기 시작했고 2000년대 넘어가면서 VoIP, 화상회의, OTT, 유튜브 등의 다양한 애플리케이션이 나타났다. 핸드폰이 생기면서 모바일로 이용할 수 있는 다양한 앱도 많이 생겨났다. 이번 챕터에서는 네트워크 애플리케이션의 개념과 구현 측면에서 다룰 것이다. 먼저 핵심적인 응용 계층의 개념에 대해서 다룰 것이다. 그 다음 네트워크 응용 프로그램(ex. Web, email, DNS, P2P)에 대해서 다룬다. 그러고 나서 TCP, UDP 위의 네트워크 애플리케이션 개발에 대해서 다룬다. 소..

[DB] 12-6. Disk-Block Access

디스크 I/O에 대한 요청은 데이터베이스 시스템에 의해서 생성되며 쿼리를 처리하는 하위 시스템이 대부분의 디스크 I/O를 처리한다. 각 요청은 디스크 식별자와 디스크의 논리적 블록 번호를 지정한다. DB 데이터가 운영체제 파일에 저장된 경우, 요청은 파일 식별자와 파일 내의 블록 번호를 지정한다 데이터베이스 데이터가 운영 체제 파일에 저장된 경우, 요청은 파일 식별자와 파일 내의 블록 번호를 지정한다. 데이터는 디스크와 주 메모리 간에 블록 단위로 전송된다. 앞서 다뤘듯이, 디스크로 부터 블록을 요청하는 sequence는 순차 접근 패턴(sequential access pattern)과 무작위 접근 패턴(random access pattern)으로 나뉜다고 했다. 순차 접근 패턴 : 연속적인 요청은 연속..