'분류 전체보기'에 해당되는 글 84건

  1. 2020.02.03 #1 HTML5
  2. 2020.02.03 #0 Web introduction
  3. 2020.01.22 #1 Data Structure
  4. 2020.01.22 #4 Concurrency
  5. 2020.01.22 #3 Virtualizing Memory
  6. 2020.01.22 #2 Virtualizing CPU
  7. 2020.01.22 #1 Introduction to OS
  8. 2020.01.19 OOP 요약
  9. 2020.01.11 #4 SQL
2020. 2. 3. 11:25

 

1. 기본태그

<title> : 페이지 제목으로 <head> 내에서만 작성

 

<meta> : 웹 페이지의 메타데이터를 표현하기위해 사용

 

<h1> ~ <h6>

  • 문단 제목, 블록태그
  • title 속성 : tooltip(설명문) 출력 (ex. <h1 title="h1 tag"> )

 

<p> : 단락 나누기, 블록태그

 

<hr> : 수평선 긋기

 

 <br> : 새로운 줄로 넘어가기

 

html entities

  • html문서에서 예약어로 사용되고 있는 문자나 기호는 html entities를 이용하여 입력

 

<pre> : 개발자 포맷 그대로 출력

 

<strong> : 굵게 강조

 

<i> : 이탤릭체로 강조

 

<del> : 취소선

 

<ins> : 밑줄

 

<mark> : 하이라이팅

 

<div>

  • 블록을 구성하기 위한 컨테이너로 사용되는 블록태그
  • 블록태그는 항상 새 라인에서 시작하고 기본적으로 가로폭 전체 넓이를 가지는 직사각형 형태

 

<span>

  • 텍스트 일부분에 스타일링을 하거나 JS로 제어하기 위해 사용되는 인라인 태그
  • 인라인태그는 블록에 삽입되어 블록 콘텐트의 일부를 표현하는데 사용

 

<img>

  • 이미지 삽입 태그
  • src 속성 : 이미지파일의 url, 필수 속성
  • alt 속성 : 이미지를 출력할 수 없는 경우 출려되는 문자열, 필수 속성
  • width 속성 : 이미지 너비, 생략시 원본의 너비
  • height 속성 : 이미지 높이, 생략시 원본의 높이

 

<ol> : 순서 있는 리스트

 

<ul> : 순서 없는 리스트

 

<li> : 리스트 아이템

 

<dl>

  • definition list
  • <dt> : 용어
  • <dd> : 설명

 

<table>

  • 표 전체를 담는 컨테이너
  • <caption> : 표제목
  • <thead> : 헤드
  • <tbody> : 바디, 데이터 표현
  • <tfoot> 바닥
  • <tr> : 행, 여러개의 <td>, <th> 포함
  • <th> : 제목 셀
  • <td> : 데이터 셀

 

2. 하이퍼링크

<a>

  • 하이퍼링크 태그
  • href 속성 : 이동할 html 페이지의 url 또는 html 페이지 내의 앵커 ( 앵커는 id속성으로 지정)
  • target 속성 : 연결된 html 페이지가 출력될 윈도우 지정
    • _blank : 새창에서 열기
    • _self : 현재창에서 열기
    • _parent : 부모창에서 열기
    • _top : 최상위 창에서 열기
    • iframe_name : 해당 인라인프레임에서 열기
  • download 속성 : 링크 클릭시 href에 지정된 파일 다운로드 시작

 

3. 인라인 프레임

<iframe>

  • 현재 html 페이지 내에 내장 윈도우를 만들고 다른 html 페이지를 출력
  • src 속성 : 출력할 html 페이지 url
  • name 속성 : 프레임 윈도우 이름 -> 다른 웹 페이지에서 <a> 태그의 target 속성 값으로 사용됨

 

4. 미디어

- 미디어 표준화

: html5 이전에는 오디오나 비디오를 재생하기 위해 플러그인 소프트웨어를 설치해야 했고 브라우저마다 설치해야되는 플러그인이 달라 브라우저에 따라 미디어가 재생되지 않는 문제점이 있었다. html5에서는 플러그인 없이 오디오나 비디오를 재생할 수 있도록 미디어 태그를 이용하여 표준화 시켰다.

 

<video>

  • src  : 비디오 파일의 url
  • width, height : 비디오 재생 영역의 너비와 높이
  • controls : 비디오 제어 버튼
  • autoplay : 비디오 로딩 즉시 재생
  • loop : 비디오 반복 재생
  • type : 비디오의 MIME type 설정 = video/mp4 | video/webm | video/ogg

 

<audio>

  • src  : 오디오 파일의 url
  • controls : 오디오 제어 버튼
  • autoplay : 오디오 로딩 즉시 재생
  • loop : 반복 재생

 

5. 문서구조화

- 시맨틱 웹

: 웹 문서를 구조화 하여 의미 있는 내용 탐색이 용이한 웹

 

- 시맨틱 태그

  1. <header> : 페이지나 <section>의 머리말을 표현하는 태그
  2. <nav> :  하이퍼링크들을 모아 놓은 섹션. ex) 페이지 내 목차
  3. <section> : 본문의 콘텐츠를 분류
  4. <article> : 콘텐츠의 실질적인 내용
  5. <aside> : 본문의 흐름에서 약간 벗어난 내용
  6. <footer> 페이지나 <section>의 꼬리말

 

<figure>

  • 본문에 삽입된 그림, 이미지, 동영상등을 블록화하는 시맨틱 블록 태그
  • <figcaption>으로 <figure>태그의 제목을 붙인다

 

<time> : 시간정보임을 표시하는 시맨틱 인라인 태그

 

<meter> 

  • 퍼센테지를 나타내는 시맨틱 인라인 태그
  • value 속성 : 0~1 사이의 값으로 비율 표현

 

<progress>

  • 작업의 진행 정도를 표시하는 시맨틱 인라인 태그
  • value 속성, max 속성 : max속성값 기준 value 값의 비율 표현

 

6. 웹 폼

- 개념

  • 웹 페이지를 통해 사용자 입력을 받는 폼을 web form 이라고 한다.
  • web from을 구성하는 태그들을 form element라고 한다. ex) <input>, <select>, <button>

 

<form>

  • 웹 폼을 구성하는 폼 태그들을 담는 컨테이너
  • name 속성 : 폼이름 지정
  • action 속성 : 폼 데이터를 처리할 웹 서버 응용프로그램의 url
  • method 속성 : 폼 데이터를 웹 서버로 전송하는 형식 지정 = "GET|POST"

 

- 텍스트 입력 form element

  1. <input type="text"> : 한줄 텍스트를 입력받음
  2. <input type="password"> : 비밀번호 입력받음
  3. <textarea cols="20" rows="5"> : 20 x 5 크기의 여러줄의 텍스트 입력 받음
  4. <input type="text" list="datalistId"> : 데이터 목록을 가진 텍스트 입력
      <datalost id = "datalistId">
        <option value="listItem1">
        <option value="listItem2">
      </datalist>

 

- 버튼 form element

  1. <button type="button"> : 단순버튼, JS 코드에서 주로 이용
  2. <button type="submit"> : submit 버튼
  3. <button type="reset"> : 폼에 입력된 내용 모두 지우고 초기화하는 버튼
  4. <button type="button"> : 이미지버튼
      <img src="imageUrl" alt="이미지버튼">
    </button>

 

- 선택형 form element

  1. <input type="checkbox" value="요소 값" name="요소 이름" checked>
    • 각각의 체크박스를 선택/해제 하는 폼 요소
    • value 속성 : 폼 요소가 선택된 상태일 때 웹서버에 전송되는 값
    • checked 속성 : 이 속성이 설정되어 있으면 초기에 선택 상태로 출력
  2. <input type="radio" value="요소 값" name="요소 이름 checked>
    • 가은 name 값을 가진 radio 버튼들이 하나의 그룹을 형성하고 그 중 하나만 선택되는 폼 요소
  3. <select name="요소이름" size="5"> 
      <option value="1">option1</option>  
      <option value="2">option2</option>
    </select>
    • 드롭다운 목록을 보여주고 그 중 하나를 선택하는 폼 요소
    • size 속성 : 드롭다운 목록에 보여지는 항목 갯수

 

<input type="color" value="초기값">

  • color 입력 form element

 

<input type="month | week | date | time | datetime-local">

  • 시간정보 입력 form element

 

- 특정형식 입력 form element 

  1. <input type="email"> : email 주소 형식으로 입력하지 않고 submit 하는 경우 오류메세지를 출력
  2. <input type="url"> : url 형식으로 입력하지 않고 submit 하는 경우 오류메세지 출력

 

- placeholder 속성

  • 입력할 정보의 예시를 보여주는 속성
  • <input type="tel" placeholder="010-0000-0000">

 

- form element caption 설정 : 라벨링

  • caption : 폼 요소 앞에 붙는 간단한 설명이나 이름
  • 라벨링1 
    <label>
      캡션 : <input type="text">
    </label>
  • 라벨링2
    <label for="formId">
      캡션 :
    </label>
    <input type="text" id="formId">

 

- 다수의 form element를 grouping

  • <fieldset> : 폼 요소들을 감싸서 그룹핑. 브라우저는 그룹을 둘러싸는 외곽선 출력
  • <legend> : 그룹핑된 그룹의 제목
  • <form>
      <fieldset>
        <legend>회원정보</legend>
        이름 : <input type="text"><br>
        메일 : <input type="email">
      </fieldset>
    </form>

'CS > Web Programming' 카테고리의 다른 글

#4 Responsive Web  (0) 2020.02.04
#3 Basic Javascript  (0) 2020.02.04
#2 CSS3  (0) 2020.02.04
#0 Web introduction  (0) 2020.02.03
Posted by yongminLEE
2020. 2. 3. 11:24

- 웹

  • 한 컴퓨터에서 만든 문서를 다른 컴퓨터에서 볼 수 있도록 하기위해 인터넷으로 전 세계의 컴퓨터들을 거미줄처럼 연결하고 웹 문서를 쉡게 주고 받을 수 있도록 만든 시스템.

 

- 웹의 구성

  • 웹 서버 : 문서, 이미지, 동영상 등의 데이터 저장. 웹 서버로 동작하려면 웹 브라우저로부터 요청을 해석하고 웹 문서를 전달하거나 적절한 웹 응용 프로그램을 실행시키고 실행결과를 다시 전송하는 웹 서버 소프트웨어(ex Apach, Nginx)를 탑재해야 한다.
  • 웹 클라이언트 : 웹 서버로부터 데이터를 다운받아 사용자에게 보여주거나 사용자 데이터를 웹 서버에 업로드 하는 인터페이스. 웹 클라이언트로 작동하기 위해서는 웹 브라우저가 필요.

 

- 웹 페이지

  • 정의 : 월드 와이드 웹 상에 있는 개개의 문서
  • 웹 페이지 구성 3요소
    1. 웹 페이지 구조, 내용 - html 태그로 작성
    2. 웹 페이지 모양 - css로 작성
    3. 웹 페이지 행동 및 응용 프로그램 - javascript로 작성
  • 정적 웹 페이지 : 저장된 그대로 사용자에게 전달되는 웹 페이지
  • 동적 웹페이지
    • 서버사이드 동적 웹페이지 :  서버사이드 스크립트를 처리하는 애플리케이션 서버에 의해 통제되는 구조의 웹페이지이다. 서버 사이드 스크립트에서 파라미터는 클라이언트 사이드 처리의 구성을 포함하여, 새로운 모든 웹 페이지의 조합이 어떻게 처리되는지를 결정한다.
    • 클라이언트 동적 웹페이지 : 로드될 때 브라우저에서 실행되는 HTML 스크립트를 사용하여 웹 페이지를 처리한다. 자바스크립트와 다른 스크립트 언어들은 수신된 페이지의 HTML이 문서 객체 모델(DOM)로 구문 분석하는 방식을 결정하며 로드되는 웹 페이지를 표출한다. 동일한 클라이언트 사이드 기법들이 동일한 방식으로 DOM을 동적으로 업데이트하거나 변경한다.

 

- URL

  • 웹 서버의 주소와 웹 페이지 파일의 경로명으로 구성된 인터넷 자원 주소
  • 구성요소 : 프로토콜 + 서버주소 + tcp/ip 포트번호 + 경로명 + 파일이름

 

- HTTP

  • 웹 브라우저와 웹 서버가 웹 페이지 등의 자원을 주고받기 위해 사용하는 통신 규약
  • 웹 브라우저가 요청하고 웹 서버가 응답하는 방식으로 작동
  • http 세션 : 하나의 html 파일을 받아오는 과정

 

- 쿠키

  • 정의 : 브라우저가 웹 서버에 처음 접속하면 그 응답으로 웹 서버가 브라우저에게 보내는 4KB 이하의 작은 데이터
  • 용도 : 웹의 stateless 상태에서도 현재 방문한 사용자가 다음에 방문할 때 알아보기 위해 사용된다.
  • 쿠키 데이터는 6개의 쌍으로 구성되어 있다
    name=value; Expires=[Date]; Domain=[Domain]; Path=[Path]; [Secure]; HttpOnly;
  • 웹 사이트의 어떤 웹 페이지가 다른 웹 페이지에게 전달할 정보를 쿠키로 만들어 사용자 로컬 컴퓨터에 저장하면, 다른 웹 페이지는 쿠키를 통해 정보를 전달 받는다
  • 한계점
    • 크기가 4KB로 제한
    • 웹서버에 요청 보낼때마다 쿠키가 함께 전송되서 높은 트래픽 발생
    • 쿠키는 브라우저의 모든 윈도우가 공유하므로 윈도우마다 독립적인 값을 저장할 수 없다 

 

 

- 세션 스토리지

  • 브라우저 윈도우마다 마련된 독립적인 저장소로 윈도우가 사라지면 함께 사라지는 일시적인 저장소
  • 세션 : 브라우저 윈도우와 웹 사이트가 연결된 상황
  • 용도 : 세션 스토리지는 한 세션동안 한 윈도우에 연결된 웹 사이트의 웹 페이지들이 주고 받는 임시 데이터를 로컬 컴퓨터에 일시적으로 저장하기 위해 사용된다.

 

- 로컬 스토리지

  • 모든 브라우저 윈도우들이 공유하며 윈도우나 브라우저가 닫혀도 사라지지 않는 영구적인 저장소
  • 웹 사이트와 연결하지 않고도 오프라인 상태에서 웹 어플리케이션이 로컬 스토리지를 활용할 수 있다

 

'CS > Web Programming' 카테고리의 다른 글

#4 Responsive Web  (0) 2020.02.04
#3 Basic Javascript  (0) 2020.02.04
#2 CSS3  (0) 2020.02.04
#1 HTML5  (0) 2020.02.03
Posted by yongminLEE
2020. 1. 22. 17:28

프로그램에서 자료를 다루기 위해 필요한 여러가지 자료구조에 대해 배움
스택, 큐, 데크
연결 리스트, 환형 연결 리스트, 이중 연결 리스트
해쉬, 더블해쉬, 맵
트리, 트리 순회 방법, 이진 트리, 이즘진 탐색 트리, AVL 트리, 힙, 우선 순위 큐
그래프, 무방향 그래프, 방향 그래프, DFS, BFS, 다익스트라 알고리즘

 

 

data-structure-summary.pdf
0.13MB

Posted by yongminLEE
2020. 1. 22. 15:39

1. Thread
2. Lock
3. Condition Variable
4. Semaphore
5. Common Concurrency Problems


1. Thread

- 개념

  • 독립된 객체로 프로그램 내에서 독립적으로 생성, 실행되어 프로그램 대신 작업 수행
  • 하나의 프로세스 안에 thread들은 주소공간을 공유하여 동일한 값에 접근 가능
  • 각 thread는 자신의 상태를 나타내는 PC, 레지스터들을 가지고 있으며 문맥교환시 이를 TCB에 저장
  • 프로세스와 달리 쓰레드 간의 문맥 교환시 주소 공간을 그대로 사용
  • 쓰레드마다 스택이 할당된다

 

- 쓰레드 장점

  1. parallelism : 여러 cpu에 각각 쓰레드를 동작하게 함으로써 프로그램의 성능 향상
  2. 멀티 쓰레드를 통해 하나의 프로그램 안에서 I/O 작업과 다른 작업이 중첩되어 프로세스가 blocked 되는 것을 방지

 

- 멀티쓰레드 문제점

  • 쓰레드는 호출자와 별개로 실행되므로 특정한 실행 순서를 가지고 있지 않아서 race condition에서 indeterminate result 발생

 

- 해결방안

  • race condition이 존재하는 critical section에서 하드웨어와 OS의 지원을 통해 synchronization primitive를 구현하여 쓰레드간 mutual exclusion을 보장해야 한다
  • 이를 위한 쓰레드 간 시그널 교환 메커니즘을 위해 condition variable를 사용
  • lock 기법을 통해 mutual exclusion 구현 가능

 

2. Lock

- 개념

  • 소스 코드의 critical section을 lock으로 설정하여 해당 critical section이 마치 single atomic instruction인 것처럼 실행되도록하는 기법
  • lock을 통해 mutual exclusion이 구현되므로 lock을 mutex라고도 부른다
  • mutual exclusion : 한 쓰레드가 critical section 내에 있으면 이 쓰레드가 lock을 release 할때까지 다른 쓰레드가 해당 critical section에 들어 올수 없도록 제한 하는 것

 

- lock 평가 기준

  1. mutual exclusion
  2. fairness : 모든 쓰레드들이 락 획득에 대해 공정한 기회가 주어지지 않으면 계속 lock을 획득하지 못하는 starvation 발생
  3. performance

 

3. Conditional Variable

- 개념

  • 쓰레드간 시그널 교환 메커니즘 구현을 위해 사용된는 일종의 큐 자료구조
  • 쓰레드가 계속 진행하기 전에 어떤 조건이 참인지 검사 하는 경우 lock만으로는 병행 프로그램을 제대로 구현할 수 없으므로 조건이 참이 되기를 기다리며 쓰레드가 대기할 수 있는 큐를 생성
  • 다른 쓰레드가 조건을 만족시키고 시그널을 보내면 대기중이던 쓰레드는 깨어나서 작업 진행

 

4. Semaphore

- 개념

  • 정수 값을 갖는 객체
  • 세마포어를 락과 컨디션 변수로 모두 사용함으로써 동기화 관련 문제를 한번에 해결
  • 세마포어는 초기 값에 의해 락 또는 컨디션 변수로의 동작이 결정됨

 

5. Common Concurrency Problems

  1. Atomicity-Violation Bugs
    • 해결방법 : 락을 추가
  2. Order-Violation Bugs
    • 해결방법 : 컨디션  변수를 추가하여 쓰레드의 순서를 지정
  3. DeadLock Bug
    • deadlock dependency graph에서 dependency cycle이 존재하는 deadlock 발생 가능성 존재
    • deadlock 발생 조건
      1. circular wait : 각 쓰레드가 다음 쓰레드가 요청한 락을 갖으면서 순환고리 형성
        • 해결방법 : 락 획득의 전체 순서를 정하여 순환대기가 발생하지 않도록 한다
      2. hold-and-wait
        • 해결방법 : 원자적으로 모든 락을 단번에 획득하도록 한다
      3. no preemption
        • 해결방법 : trylock을 이용하여 락 획득 실패시 다시 시도한다
      4. mutual exclusion
        • 상호배제를 없애고 하드웨어 명령어를 사용하여 wait-free 자료구조 구현

'CS > Operating System' 카테고리의 다른 글

#3 Virtualizing Memory  (0) 2020.01.22
#2 Virtualizing CPU  (0) 2020.01.22
#1 Introduction to OS  (0) 2020.01.22
Posted by yongminLEE
2020. 1. 22. 13:45

1. Address Space
2.  Base-and-Bound
3. Segmentation
4. Paging
5. 물리메모리 크기 극복

 

1. Address Space

- 정의

  • 실행중인 프로세스가 가정하는 선형적인 메모리의 모습. 실제로는 임의의 물리주소에 산재되어 탑재되어 있다
  • address space는 실행 프로그램의 모든 메모리 상태를 갖는다 : code, stack, heap

 

- virtualizing memory, VM, 메모리 가상화

  • 프로세스로 하여금 자신이 특정주소의 메모리에 탑재되고 자신만의 address space를 가지고 있다는 환상을 만드는 것
  • VM의 목표 1 : transparency -> 프로그램은 메모리가 가상화되었다는 사실을 인지해서는 안된다
  • VM의 목표 2 : efficiency -> OS는 가상화가 시간과 공간 측면에서 효율적이도록 해야 한다
  • VM의 목표 3 : protection -> OS는 다른 프로세스로부터 프로세스 및 자신을 보호해야한다. 이를 위해 프로세스들을 서로 고립, isolation 시켜야 한다

 

- address translation, 주소 변환

  • "효율적"이고 "유연성"있는 메모리가상화를 구현하기 위한 기법
  • 하드웨어는 명령어 반입, 탑재, 저장등의 가상주소정보를 정보가 실제로 존재하는 물리 주소로 변환
  • OS는 메모리의 빈 공간과 사용중인 공간을 항상 알고, 메모리 사용을 제어 및 관리
  • 주소변환을 통해 프로그램이 자신의 전용 메모리를 소유하고 그 안에 자신의 코드와 데이터가 있다는 환상을 만든다

 

2. Base-and-Bound ( = dynamic relocation )

- 정의

  • address translation 기법을 구현하기 위해 사용되는 기술
  • 각 cpu마다 "base register"와 "bound register"라고 불리는 2개의 하드웨어 레지스터를 이용
  • OS가 프로그램이 탑재될 물리 메모리 위치를 결정하고 base register를 그 주소로 지정한다. 그러면 프로세스 실행시 프로세스에 의해 생성되는 모든 주소가 프로세서에 의해 다음과 같이 변환 : physical address = virtual address + base
  • 프로세스가 생성하는 메모리 참조는 모두 가상주소 이며 하드웨어는 베이스 레지스터의 값을 이 주소에 더하여 물리 주소를 생성한다
  • 가상주소에서 물리주소의 변환을 address translation이라고 하며 이 주소의 재배치는 실행 시에 일어나고, 프로세스가 실행을 시작한 이후에도 address space를 이동할 수 있기 때문에 dynamic relocatoin이라고 한다
  • 베이스와 바운드 레지스터는 cpu칩 상에 존재하는 하드웨어 구조처럼 주소변환에 도움을 주는 프로세서의 일부를 MMU (메모리 관리 장치)라고 부른다

 

- H/W support

  1. 하드웨어는 processor status word 레지스터의 한 비트로 cpu의 현재 실행 모드 ( kernel mode or user mode)를 나타낸다
  2. 하드웨어는 base register와 bound register를 자체적으로 제공하며 프로세스가 생성한 가상주소에 base register값을 더하여 주소를 변환, bound register와 cpu 내부 일부 회로를 사용하여 주소가 유효한지 검사한다
  3. 하드웨어는 base register와 bound register 값을 변경하는 명령어를 제공한다
  4. cpu는 user program이 bound를 벗어난 주소로 불법적인 메모리 접근을 시도하는 상황에서 예외를 발생시킨다. 

 

- OS issue

  1. 프로세스가 생성될 때, OS는 새로운 주소 공간 할당에 필요한 영역을 찾기위해 free list 자료구조를 검색
  2. 프로세스가 종료할 때, OS는 프로세스가 사용하던 메모리를 회수하여 다른 프로세스나 운영체제가 사용할 수 있도록 한다
  3. 운영체제는 프로세스 전환시 base와 bound쌍을 저장/복원해야 하므로 OS가 process를 중단하기로 결정하면 메모리에 존재하는 프로세스 별 자료구조 안에 base register와 bound register 값을 저장한다
  4. OS는 예외핸들러 또는 호출될 함수를 제공해야 한다

 

- base-and-bound 문제점

  • address space 전체를 physical memory에 올리는 base-and-bound 방식은 스택과 힙 사이의 빈공간도 physical memory를 차지하므로 메모리 낭비가 심하다.
  • address space가 physical memory 보다 큰 경우 프로세스 실행이 불가능하므로 유연성이 없다

 

3. Segmentation

- 정의

  • base-and-bound 문제를 해결하기 위해 고안된 기법
  • 주소 공간의 논리적인 segment (코드, 스택, 힙) 마다 base와 bound 쌍이 각각 존재함으로써, OS는 각 segment를 physical memory의 각기 다른 위치에 배치할 수 있다. 

 

- address translation

  • offset : 주소가 참조하는 바이트가 세그먼트 안에서 세그먼트 시작으로부터 몇번째 바이트인지 나타내는 값
  • 하드웨어는 가상주소에서 offset을 구하고 여기에 base register값을 더함으로써 실제 physical address를 구한다.
     

- code sharing 

  • protection bit : 세그먼트마다 protection bit를 추가하여 세그먼트를 읽기 전용으로 설정할 수 있도록 한다
  • 코드세그먼트를 읽기 전용으로 설정하면 주소 공간의 독립성을 유지하면서 여러 프로세스가 주소 공간의 일부를 공유함으로써 메모리를 절약할 수 있다
  • 각 프로세스는 자신의 전용 코드세그먼트를 사용하고 있다고 생각하지만 OS는 변경 불가능한 메모리 영역을 비밀리에 공유시킴으로써 환상 구현

 

- external fragmentation, 외부 단편화 문제

  • 정의 : 물리메모리에 임의의 위치에 세그먼트들이 할당됨으로써 중간중간에 작은 크기의 free space들이 남게 되고 이는 새로 생성된 세그먼트를 할당하기에 너무 작아 메모리 낭비 발생
  • 해결책 1 compact : OS는 현재 실행중인 프로세스를 모두 중단하고 세그먼트들을 물리메모리상에 연속적으로 재배치 하여 하나의 큰 빈공간을 확보 -> 압축비용이 많이 든다
  • 해결책 2 free list : free space들을 리스트 형태로 관리하여 메모리할당시 외부단편화를 최소화 하도록 한다

 

- free list management

  • 분할 : 메모리할당 요청이 free space보다 작은 경우 free space를 분할하여 할당한다
  • 병합 : 메모리해제된 free space가 다른 free space와 인접하면 하나의 큰 free space로 병합
  • free space 마다 그 크기와 다음 free space의 주소값을 가지고 있는 헤더블럭을 유지함으로써 free list 자료구조를 구현

 

- free space allocation strategies

  1. best fit : 요청 크기와 가장 비슷한 메모리를 가지는 free space를 free list에서 검색하여 할당
  2. worst fit : free list에서 가장 큰 크기의 free space를 찾아 요청된 크기만큼 할당하여 최대한 큰 free space를 유지
  3. first fit : 요청 크기보다 큰 첫번째 free space를 free list에서 찾아 할당하여 빠르게 할당
  4. next fit : 마지막으로 할당된 free space 다음부터 요청크기보다 큰 free space를 검색하여 free list의 앞부분에서만 external fragmenation이 발생하는 것을 방지

 

4. Paging

- 정의

  • 메모리를 동일크기의 조각으로 분할하여 공간관리하는 방법
  • 프로세스의 주소공간을 논리 세그먼트로 나누는 것이 아니라, 고정크기의 단위로 나눈다. 고정크기단위로 나눈 가상메모리 블럭을 "Page"라고 하고, 같은 단위로 나눈 물리메모리 블럭을 "Page frame"이라고 한다
  • address space의 각 가상 page에 대한 물리메모리 위치를 기록하기 위해 OS는 프로세스마다 "Page Table"이라는 자료구조를 유지하고 여기에 address translation 정보를 저장한다. 다른 프로세스를 실행해야 한다면 OS는 해당 프로세스를 위해 또 다른 Page Table이 필요하다.
  • 프로세스가 생성한 virtual address의 변환을 위해서는 먼저 가상주소를 VPN (가상페이지번호)과 offset 2개의 구성요소로 분할한다.

 

- 장점

  • 유연성 : paging은 프로세스의 address space가 어떻게 사용되는 지에 상관없이 효율적으로 주소 공간 개념지원 가능
  • free space 관리의 단순함 : OS는 물리메모리의 비어있는 page의 free list를 유지하고 프로세스 실행시 리스트의 첫부분에서 부터 해당 크기의 page frame만 선택하면 된다.

 

- page table

  • 정의 : VPN (가상페이지번호)를 PFN (물리페이지번호)으로 mapping 하는데 사용되는 자료구조이다
  • 가장 간단한 page table은 linear page table로 vpn을 index로 하는 배열이다
  • OS는 vpn으로 배열항목에 접근하여 PTE ( page table entry) 를 검색. PTE에는 PFN 뿐만 아니라 다른 정보를 담고 있는 비트들(valid bit, protection bit, present bit, dirty bit, reference bit)도 존재

 

- 문제점

  1. 성능 저하 : 페이지에 접근하기 위해 페이지 테이블에 먼저 접근 // TLB로 해결
  2. 메모리 낭비 : 페이지테이블의 크기가 크면 물리메모리상의 공간 낭비  // multi-level page table로 해결

 

- TLB, translation-lookaside buffer

  • paging의 속도저하 문제 해결을 위해 MMU의 일부인 TLB를 도입
  • TLB는 자주 참조되는 가상주소-실주소 변환 정보를 저장하는 "하드웨어 캐시"이다.
  • 가상 메모리 참조 시, 하드웨어는 먼저 TLB에 원하는 변환 정보가 있는지를 확인한다. 만약 TLB에 있다면 페이지테이블을 참조하지 않고 변환을 빠르게 실행
  • TLB는 VPN, PFN, 다른 비트들(valid bit, protection bit, dirty bit, address-space identifier등)로 구성되어 있다
  • TLB 히트율은 spatial locality와 temporal locality에 영향을 받는다

 

- TLB algorithm

  1. 가상주소에서 VPN을 추출
  2. 해당 VPN이 TLB에 존재하는지 검사
  3. 존재하는 경우 : TLB 히트
    1. 해당 페이지에 대한 접근 권한 검사
    2. 접근권한이 있는 경우, 그 정보를 오프셋과 합쳐서 물리주소 구성
    3. 메모리접근
  4. 존재하지 않는 경우 : TLB 미스
    1. 하드웨어는 변환정보를 찾기위해 페이지테이블에 접근
    2. 가상메모리가 유효하고 접근 가능한지 검사
    3. 해당 변환정보를 TLB로 읽어들임
    4. TLB가 갱신되면 다시 TLB 검색
    5. TLB 히트

 

 - Multi-level Page Table

  • paging의 메모리낭비 문제 해결을 위해 사용되는 기법
  • 페이지테이블을 페이지 크기의 단위로 나눈 다음, 페이지 테이블의 페이지가 유효하지 않은 항목만 있으면 해당 페이지를 할당하지 않는다.
  • PDE (page directory entry)로 구성된 page directory는 valid bit(페이지테이블의 각 페이지 할당 여부 정보)와 PFN 정보를 갖고 있다.
  • PDI ( page directory index)를 이용하여 PDE address를 알수 있다 : PDE address = PageDIrBase + (PDI * sizeof(PDE))
  • PTI (page table index)를 이용하여 PTE address를 알 수 있다 : PTE address = PDE.PFN + (PTI * sizeof(PTE))
  • 페이지 디렉토리가 너무 크면, 트리의 단계를 증가하여 메모리공간을 효율적으로 사용할 수 있지만 메모리주소를 구하는 작업비용이 증가한다

 

- Multi-level Page Table 장단점

  • 장점1 : 멀티레벨 테이블은 사용된 주소 공간의 크기에 비례하여 페이지 테이블 공간이 할당되므로 메모리를 효율적으로 사용
  • 장점2 : 페이지테이블을 페이지 크기로 분할함으로써, 메모리 관리가 용이하고 페이지 테이블을 위한 공간 할당이 유연하다
  • 단점1 : 주소변환을 위해 두 번이상의 메모리 로드가 발생( 페이지 디렉터리 접근 + PTE접근)하므로 작업비용 증가
  • 단점2 : 페이지 테이블 검색이 복잡해진다

 

5. 물리메모리 크기 극복

- 물리메모리 한계

  • 주소공간이 물리메모리에 탑재되지 못하는 경우 큰 주소공간을 지원하기 위해 OS는 주소 공간중에 현재 필요하지 않는 일부를 보관해 둘 "공간"이 필요.
  • 보조기억장치 ( HDD, SSD 등)에서 "공간"을 확보하고 이 공간을 "swap space"라고 한다

 

- swap space

  • 정의 : 디스크에 페이지를 저장할 수 있는 공간
  • swap space 의 입출력 단위는 페이지 크기
  • OS는 swap psace에 있는 모든 페이지들의 디스크 주소를 기억
  • swap spce를 이용하면 시스템에 실제 물리메모리 공간보다 더 많은 공간이 존재하는 것처럼 가정
  • swap은 swap space에서 뿐만 아니라 물리페이지에서도 가능

 

-present bit

  • 하드웨어 기반 TLB를 사용하는 시스템은 page swap을 위해 하드웨어는 present bit를 사용하여 각 페이지 테이블 항목에 어떤 페이지가 존재하는 표현한다
  • 메모리 참조 알고리즘
    1. 프로세스가 가상 메모리 참조
    2. 하드웨어가 가상주소를 물리주소로 변환하기위해 가상주소에서 VPN 추출, TLB에 변환정보가 있는지 검색
    3. TLB 히트
      1.  물리주소를 얻은 후 메모리로 가져옴
    4. TLB 미스
      1. 페이지 테이블의 메모리 주소 파악
      2. PTE항목 추출
      3. PTE가 유효하고(valid bit = 1) 물리메모리에 존재 (present bit = 1)
        1. PFN 정보를 추출하고 TLB에 저장
        2. TLB 갱신되면 TLB 재검색
        3. TLB 히트
      4. PTE가 유효하지만(valid bit =1) 물리메모리에 존재 하지 않음 ( present bit = 0)
        1. page fault (물리메모리에 존재하지 않는 페이지 접근) 발생
        2. OS에게 제어권이 넘어가고 OS는 page-fault handler 실행
        3. OS는 디스크에 있는 페이지를 물리메모리로 swap-in 한다
        4. 물리메모리에 공간이 없는 경우, 물리메모리에 있는 페이지중 swap-out될 페이지는 replacement policy에 의해 결정된다
        5. 디스크 I/O가 완료되면 OS는 해당 PTE의 PFN값을 탑재된 페이지의 메모리 위치로 갱신하고 page fault를 발생시킨 명령어를 재실행
        6. TLB 히트

 

- swap-out이 일어나는 시기

  • 물리메모리의 여유공간이 고갈된 후에 교체 알고리즘이 작동하는 것은 비효율적이므로 OS는 항상 일정한 수준의 여유공간을 유지한다
  • OS는 HW (high watermark)와 LW ( low watermark)를 설정
  • swap demon 이라고 불리는 백그라운드 쓰레드가 여유공간의 크기가 LW보다 작으면 HW에 이를 때까지 페이지 제거 수행하고 완료후 슬립모드로 전환

 

- replacement policy

  • evict될 page는 OS의 replacement policy에 의해 결정됨
  • replacement policy 목표1 : 디스크로부터 swap-in 횟수 최소화
  • replacement policy 목표2 : 접근할 페이지가 이미 메모리에 존재하는 횟수 최대화
  • Optimal replacement policy : 가장 나중에 접근될 페이지를 evcit -> 가장 최적이며 가장적은 미스 발생하지만 미래의 정보는 알수 없으므로 구현 불가능
  • Least Recently Used : 가장 오래전에 접근된 페이지를 evict -> 과거의 정보를 활용하므로 구현 가능

 

- Approximating LRU

  • LRU 알고리즘은 구현은 가능하지만 과거의 메모리 참조 정보를 모두 기록하고 시간정보배여을 순차탐색해야 하므로 매우 큰 작업비용을 가진다
  • 몇몇 비트(use bit, dirty bit)를 추가하는 하드웨어 지원으로 LRU에 근사하는 저비용 알고리즘 구현 가능
  • Clock Algorithm
    • use bit를 추가, 페이지가 참조될 때마다 H/W는 use bit를 1로 설정
    • 페이지들을 노드로 하는 circular list를 구성
    • 페이지 교체시 OS는 현재 clock hand가 가리키는 페이지의 use bit를 검사
    • use bit가 1이면 해당 페이지는 최근에 참조된 페이지 이므로 물리메모리에 그대로 두고( temporal locality) OS가 use bit를 0으로 재설정
    • 다음 페이지를 검사하여 use bit가 0인 페이지를 찾으면 해당 페이지를 evict
  • Corbato Algorithm
    • 주기적으로 use bit를 지우고, 교체 페이지를 선택하기 위해 use bit가 1인지 0인지 검사
    • use bit가 0인 페이지를 찾으면 evict
  • Enhanced Clock Algorithm
    • dirty bit를 추가하여 페이지의 변경 여부 정보를 저장
    • 교체할 페이지 선택시 use bit와 dirty bit 둘다 고려
    • 페이지가 최근에 수정되어 dirty bit = 1 이면 그 페이지를 swap-out할 때 디스크에 있는 원본 페이지에 수정된 내용을 기록해야 하므로 추가비용 발생, dirty bit = 0 인 페이지는 추가적인 I/O 비용 없음
    • use bit = 0, dirty bit = 0 인 페이지를 먼저 찾고 evict 하고 이를 만족하는 페이지가 없으면 use bit = 0, dirty bit = 1인 페이지를 evict

 

- Thrashing

  • 발생과정
    1. 물리메모리가 요구를 감당할 수 없을만큼 많은 프로세스 실행중이면 많은 페이지폴트 발생
    2. CPU 사용률 감소 
    3. OS는 CPU 사용율 증가를 위해 더 많은 페이지를 물리메모리에 탑재
    4. 페이지폴트가 계속 발생하면서 page-in, page-out 반복
    5. cpu 사용률이 급감하는 thrashing 문제 발생
  • 해결방법
    1. admission control : 다수의 프로세스가 존재할 때, 일부 프로세스의 실행을 중지
    2. out-of-memory killer : 과다한 메모리 요청시, 메모리를 요구하는 프로세스를 kill

'CS > Operating System' 카테고리의 다른 글

#4 Concurrency  (0) 2020.01.22
#2 Virtualizing CPU  (0) 2020.01.22
#1 Introduction to OS  (0) 2020.01.22
Posted by yongminLEE
2020. 1. 22. 13:44

1. Process
2. Virtualizing CPU
3. Limited Direct Execution
4. Scheduling

 

1. Process 

- 정의

: 실행 중인 프로그램

 

- 프로세스 API

: OS가 제공하는 API

a) create : 프로세스 생성

b) destroy : 프로세스 제거

c) wait : 프로세스를 대기 시킴

d) miscellaneous control : 프로세스 재개와 같은 프로세스 제거, 대기 이외의 기능 

e) status : 프로세스 상태 정보를 알아냄

 

- 프로세스 상태

a) running : 프로세서에서 프로세스 실행중

b) ready : 프로세스는 실행할 준비가 되어 있지만 다른 프로세스가 실행중이므로 대기

c) blocked ; 프로세스의 수행이 중단

 

2. Virtualizing CPU

-  정의

: time-sharing 기법을 이용하여 하나의 CPU 또는 소규모 CPU 집합을 무한개의 CPU가 존재하는 것처럼 변환하여 동시에 많은 수의 프로그램을 실행시키는 것.

 

- Direct Execution

: 프로그램을 CPU상에서 직접 실행시키는 것

 

- Direct Execution의 문제점

a) 제한된 연산 : 프로그램이 운영체제가 원치않는 일을 하지 않는다는 것을 보장할수 없다

b) 프로세스 간 전환 : 프로세스 실행 시, 운영체제는 어떻게 프로그램의 실행을 중단하고 다른 프로세스로 전환 시킬 수 있는가

 

3. Limited Direct Execution

- Direct Execution의 2가지 문제 해결

a) kernel mode : 제한된 연산 문제 해결

b) Non-Cooperative Approach : 프로세스 간 전환 문제 해결

 

- kernel-mode 

  • 접근 권한에 따라 user mode 와 kernel mode로 나누어 user mode에서 실행되는 코드를 제한시킨다.
  • 사용자 프로세스는 입출력요청을 하는경우 하드웨어가 제공하는 시스템 콜을 호출하고 이를 위해 trap instruction을 실행
  • 하드웨어는 프로세스의 레지스터를 커널 스택에 저장하고 kernel mode로 진입
  • OS는 사용자 프로세스가 요청한 작업을 처리한다. 작업이 완료되면 return-from-trap instructoin을 실행
  • 하드웨어는 커널 스택으로부터 레지스터를 복원하고 kernel mode에서 user mode로 다시 하향 조정
  • 사용자 프로그램으로 다시 리턴

 

- Non-Cooperative Approach

  • 수밀리 초마다 timer interrupt를 발생시켜 프로세스를 중단
  • 하드웨어는 프로세스의 레지스터를 프로세스 커널스택에 저장하고 부팅시에 미리 구성된 OS의 interrupt handler를 실행
  • OS가 제어권을 다시 획득하면 현재 실행중인 프로세스를 계속 실행할 것인지 아니면 다른 프로세스로 전환할 것인지 OS의 Scheduler가 결정
  • 프로세스 전환하기로 결정되면 OS는 context switch코드 실행하여 프로세스의 레지스터, PC, 커널 스택포인터 를 해당 프로세스의 구조체에 저장
  • 다음 실행될 프로세스의 구조체에서 레지스터, PC, 커널 스택포인터를 복원하고 다음 프로세스의 커널스택으로 전환
  • 하드웨어는 전환된 프로세스의 커널스택에서 레지스터 복원 하고 user mode로 하향조정 및 PC로 분기

 

4. Scheduling

 

- FIFO, First In First Out

  • 먼저 도착한 순서대로 job을 스케쥴링
  • convoy effect : 짧은 시간 동안 자원을 사용할 프로세스들이 자원을 오랫동안 사용하는 프로스세의 종료를 기다림

 

- SJF, Shortest Job First

  • 동시에 도착한 작업들중 job이 짧은 순서대로 스케쥴링
  • convoy effect 발생

 

- STCF, Shortest Time-To-Completion First

  • 새로운 job이 시스템에 도착하면 스케쥴러는 남아 있는 작업의 잔여 실행 시간을 계산하고 그 중 가장 적은 잔여 실행시간을 가진 작업을 스케쥴링
  • convoy effect 해결
  • response time 측면에서는 효과적이지 못함

 

- Round-Robin

  • time slice동안 실행한 후 실행 큐의 다음 작업으로 전환
  • time slice는 timer-interrupt의 N배수
  • time slice가 짧을수록 response time 측면에서 성능은 좋아지지만 context-switch 비용이 증가

 

- Overlap

  • 프로세스가 입출력 작업을 요청하는 경우 입출력이 완료될때까지 cpu를 사용하지 않으며 blocked 상태가 된다
  • 스케줄러는 그 시간 동안 실행될 다른 작업을 스케줄링하여 연산을 overlap, 중첩 시킨다

 

- MLFQ, multi-level feedback queue

  • rule 1 : priority (A) > priority(B) 이면 프로세스 A 실행
  • rule 2 : priority (A) = priority(B) 이면 프로세스 A와 B는 Round-Robin 방식으로 실행
  • rule 3 : 작업이 시스템에 들어가면 최상위 큐에 배치
  • rule 4 : cpu 양도 횟수에 상관없이 time slice를 전부 소진하면 priority 강등 -> cpu를 독점하는 악성 프로세스 방지
  • rule 5 : 일정 주기가 지나면, 시스템의 모든 작업을 최상위 큐로 이동 -> starvation 문제 방지

 

 

'CS > Operating System' 카테고리의 다른 글

#4 Concurrency  (0) 2020.01.22
#3 Virtualizing Memory  (0) 2020.01.22
#1 Introduction to OS  (0) 2020.01.22
Posted by yongminLEE
2020. 1. 22. 13:39

1. System Software
2. Operating System

 

1. System Software

- 정의

: 시스템 전체를 작동시키는 프로그램, 프로그램을 주기억장치에 적재시키거나 인터럽트 관리, 언어 번역 등의 기능 수행한다. 운영체지는 대표적인 시스템 프로그램.

 

- 시스템 소프트웨어 구성

a) control program, 제어 프로그램

: 시스템 전체의 작동 상태 감시, 작업의 순서 지정, 작업에 사용되는 데이터 및 자원 관리등의 기능 수행

b) processing program, 처리 프로그램

: 제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램

 

2. Operating System

- 정의

: 사용자와 하드웨어간 인터페이스로써 시스템을 사용하기 편리하고 정확하고 올바른 동작을 실행시킬 수 있도록 환경을 제공하는 시스템 소프트웨어.

 

- 운영체제 기능

a) 가상화 지원 -> 효율적 자원 관리

b) 병행성 지원 -> 작업 처리능력 향상

c) 영속성 지원 -> 파일 및 정보를 디스크에 안전하고 효율적으로 저장

 

'CS > Operating System' 카테고리의 다른 글

#4 Concurrency  (0) 2020.01.22
#3 Virtualizing Memory  (0) 2020.01.22
#2 Virtualizing CPU  (0) 2020.01.22
Posted by yongminLEE
2020. 1. 19. 17:27

1. OOP 개념
2. 추상화
3. 캡슐화
4. 상속
5. 다형성
6. 동적바인딩

 

1. Object-Oriented Programming 개념

- 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나로 기존의 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.

 

- class, 클래스

: 같은 종류의 집단에 속하는 속성(attribute)행위(behavior)를 정의한 것.

 

- object, 객체

:  클래스의 인스턴스(실제로 메모리상에 할당된 것).

 

- OOP 장점

a) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이

b) 코드 재사용이 용이

c) 대규모 소프트웨어 개발에 적합

d) 소프트웨어 유지보수 편리

 

- OOP 단점

a) 객체가 너무 많으면 용량이 커질 수 있음

b) 설계시 많은 시간과 노력이 필요

 

- 특징

a) abstraction

b) encapsulation

c) inheritance

d) polymorphism

e) dynamic dispatch

 

2. Abstraction, 추상화

- 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것.

자료 추상화를 통해 정의된 자료형을 추상 자료형( ADT, abstract data type)이라고 한다.

 

3. Encapsulation, 캡슐화

- 객체의 구성요소를 캡슐로 싸서 외부의 접근으로부터 데이터를 보호하고 볼 수 없게 하는 것

 

- 자료형의 자료 표현과 자료형의 연산을 캡슐화함으로써 추상 자료형을 정의하고 접근 제어를 통해서 자료형의 정보를 은닉할 수 있다.

 

- 접근제어자

a) private

b) public

c) protected

 

4. Inheritance, 상속

- 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능.

 

- 상속을 받는 새로운 클래스를 부클래스, 파생 클래스, 하위 클래스, 자식 클래스 라고 한고,
  상속하는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 한다

 

5. polymorphism, 다형성

- 다형성 개념이란 어떤 한 요소에 여러 개념을 넣어 놓는 것으로 하나의 같은 메소드(메소드 이름이 같은)가 상황에 따라 다른 기능을 하는 것.

 

- 오버라이딩 : 같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것

 

- 오버로딩 : 같은 이름의 메소드가 인자의 개수나 자료형에 따라서 다른 기능을 하는 것

 

6. Dynamic Dispatch, 동적 바인딩

- 동적 바인딩은 실행 시간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩으로 컴파일 시간에 완료되어 변화하지 않는 정적 바인딩과 대비되는 개념이다. 동적 바인딩은 프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩함으로써 다형성을 실현한다.

ex) 상속관계의 두 인스턴스가 각각 오버라이딩된 메서드를 호출한다. 이때 메서드는 컴파일 시간이 아닌 런타임 시간에 결정된다.

 

Posted by yongminLEE
2020. 1. 11. 17:05

1. SQL
2. DDL
3. DML
4. DCL
5. Join

6. View
7. Transaction

 

1. SQL

: 관계형 데이터 베이스의 표준 질의어로 정의, 조적, 제어기능을 모두 갖춘 언어

 

- sql 구성요소

a) DDL

b) DML

c) DCL

 

2. DDL

: 놀리적 데이터 구조와 물리적 데이터 구조의 사상을 정의

 

- CREATE :  schema, domain, table, view, index 정의

- ALTER : table에 대한 정의를 변경

- DROP : schema, domain, table, view, index 삭제

 

3. DML

: 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는 데 사용되는 언어

 

- SELECT : 테이블에서 조건에 맞는 튜플 검색

- INSERT : 테이블에 새로운 튜플 삽입

- DELETE : 테이블에서 조건에 맞는 튜플 제거

- UPDATE : 테이블에서 조건에 맞는 튜플의 내용 변경

 

4. DCL

: 데이터이 보안, 무결성, 회복, 병행 수행 제어등을 정의하는 데 사용되는 언어

 

- COMMIT : 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료됬었음을 알림

- ROLLBACK : 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 지정 시점으로 복구

- GRANT : 데이터베이스 사용자에게 권한 부여

- REVOKE : 데이터베이스 사용자에게 권한 회수

 

- authorization 의종류 

a) select

b) insert

c) update

d) delete

 

 - ROLE

: 권한을 부여받을 개별적인 사용자가 생성됭 때 마다 권한을 부여할 필요없이 권한을 받을 특정 role을 생성하고 이를 사용자에게 부여함으로써 반복작업을 제거

 

5. Join

: 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산

 

- natural join

: 중복되는 속성을 제거하여 같은 속성을 한 번만 표기하는 방법

 

6. View

: 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 가상 테이블

 

- view 장점

a) 논리적 데이터 독립성을 제공한다

b) 사용자의 데이터 관리를 간단하게 해줌

c) 접근 제어를 통한 자동 보안 제공

 

- view 단점

a) 뷰의 정의를 변경할 수 없다

b) 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따름

 

7. Transaction

: 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위

 

- commit : 한개의 논리적 작업 단위가 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 있을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산.

 

- rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 트랜잭션이 행한 모든 연산을 취소하는 연산

 

- transaction 특징

a) atomicity : 트랜잭션 연산은 데이터베이스에 모두 반영되도록 commit 되거나 전혀 반영되지 않도록 rollback된다

b) consistency : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.

c) isolation : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다

d) durability : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어어 한다.

'CS > Database' 카테고리의 다른 글

#3 Database Design  (0) 2020.01.11
#2 Database Model  (0) 2020.01.11
#1 Database 기본개념  (0) 2020.01.08
Posted by yongminLEE