반응형

1. 레코드 삽입

레코드 삽입 형식

- 필드 리스트 순서대로 값 리스트도 작성하여야 한다.

- 필드 리스트에 나열되지 않은 필드는 NULL 값이 입력된다.

- 팰드 리스트는 생략 가능하다. -> 생략하면 값 리스트는 원래 테이블 열 순서대로 입력된다.

 

 

 

 

레코드 삽입 예시

 

특정 필드를 생략하는 경우

 

 

 

* 레코드 삽입 시 주의사항 *

외래키 필드를 포함하는 레코드를 삽입할 때,

참조하는 테이블의 해당 필드에 그 값을 갖는 레코드가 존재하여야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

2. 레코드 수정

 

 

 

 

name 필드에 값이 없는 조건은?

-> where name is null

But, count(*)는 특정 필드가 아닌 전체 레코드에 대한 연산이므로 null의 존재 여부와는 무관하다.

 

 

 

 

 

 

 

 

 

 

 

3. 레코드 삭제

 

 

 

 

 

 

* 주의 *

모든 레코드를 삭제한다고 하더라도 테이블은 삭제되지 않는다.

 

 

 

 

 

 

 

 

 

 

4. 레코드 검색

: 레코드 정렬, 재명명 연산, LIKE 연산, 집합 연산자, 외부 조인, 그룹화 및 집계 함수, 중첩 질의

 

- where 절은 생략 가능하다.

 

* 중요 *

from 절에서 여러 개의 테이블이 나열될 경우, 관계대수의 카디션 프로덕트를 의미한다.

 

 

* 중요 *

관계대수는 집합이기 때문에 중복되는 레코드를 제거해 주지만,

SQL에서는 중복되는 레코드를 그대로 검색한다.

 

 

 

 

 

- 중복 레코드를 제거하고 싶다면?

select 절에 distinct 키워드를 넣어주면 된다.

 

 

 

 

 

 

 

 

 

- select절에 필드 이름 외에도 산술식이나 상수를 사용할 수 있다.

 

 

반응형
반응형

1. SQL이란?

: Structured Query Language

: 관계형 데이터베이스를 위한 표준 질의 언어

 

 

- 질의어와 SQL

: 관계 대수나 관계 해석은 질의 언어의 이론적 배경을 제공하나, 상용 언어로 쓰기에는 어렵고 적절치 않다.

: 관계 대수는 질의 연산과 그것들의 순서까지 기술해야 한다.

: 반면, SQL은 자연어와 유사하고 수행 절차를 명시할 필요가 없는 비절차적 언어이므로 사용하기 용이하다.

 

 

 

 

 

 

2. SQL의 구성

1) DDL(Data Definition Language)

: 데이터의 저장 구조를 명시하는 언어

: 테이블 스키마의 정의, 수정, 삭제를 위한 명령문 제공

 

 

2) DML(Data Manipulation Language)

: 데이터를 접근하고 조작할 수 있게 하는 언어

: 레코드의 검색, 삽입, 삭제, 수정을 위한 명령문 제공

 

 

 

 

 

 

[ DDL ]

3. 테이블 생성 (기본키, 외래키 설정)

 

테이블 생성 형식
테이블 생성 예시

 

 

 

 

< 주요 데이터 타입 >

 

 

 

< 기본키 설정 >

 

기본키 설정 형식 및 예시

 

- pk_department 는 기본키의 이름이다.

- 기본키의 이름을 설정하지 않아도 된다면, 데이터 타입 뒤에 'primary key'라고만 입력해도 기본키가 된다.

 

 

 

 

 

< 외래키 설정 >

 

외래키 생성 형식 및 예시

- fk_student 는 외래키의 이름이다.

- 외래키의 이름을 설정하지 않아도 된다면 데이터 타입 뒤에 'references 참조하는 테이블(참조하는 기본키)' 를

 작성해주면 된다.

 

 

 

 

 

 

 

 

 

4. 테이블 삭제

 

테이블 삭제 형식

* 주의 *

다른 테이블에서 외래키로 참조하는 경우 삭제할 수 없다.

-> 해당 기본키를 삭제하거나, 외래키 제약조건을 삭제해야 한다.

 

 

 

 

 

 

 

 

 

 

5. 테이블 수정

 

 

- 테이블 추가 수정

테이블 추가 형식
테이블 추가 예시

 

 

 

- 테이블 삭제 수정

테이블 삭제 형식 및 예시

 

 

- 이 때에도 다른 테이블에서 외래키로 참조하는 기본키가 있는 경우 삭제 명령을 수행할 수 없다.

 

 

 

 

 

 

* 중요 *

외래키 제약조건을 삭제하는 방법 !!

[ alter table 테이블명 drop constraint 제약조건명 ]

 

 

 

 

반응형

'Computer Science > Database' 카테고리의 다른 글

SQL 3) DML : select문  (0) 2020.10.20
SQL 2) DML : 삽입, 수정, 삭제, 검색  (0) 2020.10.20
Oracle 오라클 테이블 스페이스 명령어  (0) 2020.10.16
Oracle 오라클 데이터 구조  (0) 2020.10.16
SQL Plus 명령어  (0) 2020.10.16
반응형

!! 스케줄링 알고리즘 !!

 

1. 선입선처리 스케줄링(FCFS)

: 프로세스를 요구 순서대로 할당합니다.(First Come First Served)

 

- 비선점 기법 으로 스케줄링 알고리즘 중에 가장 간단합니다.

- 선입선출 큐로 구현합니다.

- 일괄처리에는 효율적, 대화식 시스템에서는 사용자의 빠른 응답 요구에 부적합

 

1) 평균 반환시간 : (24 + 27 + 30) / 3 = 27

2) 평균 대기시간 : (0 + 24 + 27) / 3 = 17 

3) CPU이용률 : 100%

4) 처리량(작업처리율) : 3 / 30 = 10%

5) 평균 반응시간(응답시간) : (0 + 24 + 27) / 3 = 17

 

 

 

 

1) 평균 반환시간 : (3 + 6 + 30) / 3 = 13

2) 평균 대기시간 : (0 + 3 + 6) / 3 = 9 

3) CPU이용률 : 100%

4) 처리량(작업처리율) : 3 / 30 = 10%

5) 평균 반응시간(응답시간) : (0 + 3 + 6) / 3 = 3

 

 

 

 

 

 

 

 

 

 

 

 

2. 최단 작업 우선 스케줄링

: CPU 버스트 시간이 가장 짧은 작업에 CPU를 할당합니다.

 

- 평균 대기시간을 최소화하는 알고리즘입니다.

- 문제점 : 실행 시간의 길이 예측이 힘듭니다. -> 실제로 실행하면 실행시간이 달라질수도 있기 때문입니다.

 

1) 평균 반환시간 : (3 + 9 + 16 + 24) / 4 = 13

2) 평균 대기시간 : (0 + 3 + 9 + 16) / 4 = 7

3) CPU이용률 : 100%

4) 처리량(작업처리율) : 4 / 24 = 0.167

5) 평균 반응시간(응답시간) : (0 + 3 + 9 + 16) / 4 = 7

 

 

 

 

- 최단 작업 우선 스케줄링은 선점 또는 비선점 모두 가능합니다.

(선점 : 매번 프로세스가 도착할 때마다 최단 작업을 비교하여 더 짧은 작업이 있다면 해당 작업으로 변경합니다.)

(비선점 : 한 프로세스가 끝난 뒤에 남은 것들끼리 비교하여 할당합니다.)

 

 

 

(a) 선점 -> 문맥교환하는 데 시간이 소요됨

- 평균 반환시간 : { (17-0) + (5-1) + (26-2) + (10-3) } / 4 = 13

- 평균 대기시간 : { (10-1) + (1-1) + (17-2) + (5-3) } / 4 = 6.5

- CPU이용률 : 100%

- 처리량(작업처리율) : 4 / 26 = 

- 평균 반응시간(응답시간) : (0 + 0 + (17-2) + (5-3)) / 4 = 

 

(b) 비선점

- 평균 반환시간 : { (8-0) + (12-1) + (26-2) + (17-3) } / 4 = 14.25

- 평균 대기시간 : { 0 + (8-1) + (17-2) + (12-3) } / 4 = 7.75

- CPU이용률 : 100%

- 처리량(작업처리율) : 4 / 26 = 

- 평균 반응시간(응답시간) : (0 + (8-1) + (17-2) + (5-3)) / 4 = 7.75 

 

 

 

 

 

 

 

 

 

 

3. 우선순위 스케줄링

: 최고 우선순위 프로세스를 CPU에 할당합니다.

: 최단 작업 우선 스케줄링은 우선순위 스케줄링에 해당합니다.

: 선점, 비선점에 모두 적용 가능합니다.

 

문제)

: 기아 상태가 발생가능합니다.

(기아 상태란? 우선순위가 높은 프로세스들이 계속 들어오면 우선순위 낮은 프로세스들은 무한정 기다려야 하는 상태)

해결법)

: 에이징(Aging) - 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는 방법입니다.

 

 

-> 선점과 비선점 모두 같은 그림이 나옵니다.

1) 평균 대기시간 : (0 + 1 + 6 + 16 + 18) / 5 = 8.2

 

 

 

 

 

 

 

 

 

 

 

4. 라운드 로빈 스케줄링 [ 순환 할당 스케줄링 ]

: 시분할 시스템을 위해 설계되었습니다.

: 규정 시간량이 지나면 인터럽트가 발생하며 문맥교환을 수행합니다.

: 준비큐는 FIFO 큐이면 순환큐로 설계합니다.

 

순환큐 예시
라운드 로빈 스케줄링

 

평균 반환시간 = { (16-1) + (8-1) + (26-2) + (25-3) } / 4

 

 

 

- 순환 할당 스케줄링은 선점 알고리즘입니다.

- 성능은 규정 시간량에 영향을 받습니다.

if 규정 시간량이 아주 클 경우, 평균 대기시간이 길어집니다.

if 규정 시간량이 매우 작을 경우, 문맥교환 횟수가 증가합니다.

-> 최적 규정 시간량은 시스템 특성 및 오버헤드, 프로세스에 따라 다릅니다.

 

- 반환시간도 규정 시간량에 영향을 받습니다.

if 규정 시간량이 매우 작을 경우, 반환시간이 증가합니다.

but 반환시간과 규정 시간량이 항상 반비례한 것은 아닙니다.

 

 

 

 

 

 

 

 

 

5. 다단계 큐 스케줄링

: 각 작업들을 서로 다른 묶음으로 분류할 수 있을 때 사용합니다.

: 준비상태의 큐를 종류별로 여러 단계로 분할합니다.

: 각 큐는 자신만의 독자적인 스케줄링 알고리즘을 가집니다.

: 큐들 사이에 시간을 나누어 사용가능합니다.

 

큐 5개를 가진 다단계 큐 스케줄링 알고리즘

 

- 각 큐는 순서대로 절대적인 우선순위를 가집니다.

- 앞의 세 가지 큐가 비어있어야, 네 번째 일과 처리 큐에 있는 프로세스가 실행이 됩니다.

 

 

 

 

 

 

 

 

 

 

 

6. 다단계 피드백큐 스케줄링

 

다단계 큐 : 작업이 시스템에 들어가면 한 큐에서만 고정

다단계 피드백큐 : 작업이 큐 사이를 이동 가능

 

-> 기아 상태 예방을 위해 에이징 방법을 활용합니다.

: 특정 큐에서 오래 기다린 프로세스를 우선순위가 높은 큐로 이동합니다.

 

 

 

 

 

 

 

 

 

7. HRN 스케줄링(Highest Response-rate Next)

: 단기 작업 우선 스케줄링의 약점인 긴 작업과 짧은 작업 간의 불평등을 보완한 기법입니다.

: 가변적인 우선순위를 갖는 단기 작업 우선 스케줄링입니다.

가변적 우선순위 계산법

- 비선점 알고리즘입니다.

 

 

 

 

 

* 정보처리기사 문제풀어보기 *

 

1. 선점 기법 : 문맥교환으로 인해 많은 오버헤드 초래

2. 비선점 기법 : 모든 프로세스 요구 공정히 처리, 응답시간예측 용이,

CPU 사용시간 짧은 프로세스가  프로세스들로 인해 오래기다림

3. 라운드 로빈 -> 시분할 시스템

4. HRN 방식 : 서비스 시간이 짧고, 대기 시간이  순서대로

5. 응답시간 줄이고 CPU 이용률 높이고

반응형
반응형

 

1. 다중 프로그래밍

: 여러 프로그램메모리에 적재합니다.

: 프로세서(CPU)를 분할 사용하여 프로세스 효율성 향상시킵니다.

 

-> 프로세스들을 프로세서에 할당하는 일련의 과정

: 각 프로세스의 실행 여부를 결정하므로 시스템 성능에 영향을 미칩니다.

 

 

 

 

프로세스 실행 예시

: 프로세스의 실행은 CPU 실행입출력 대기의 순환으로 구성됨

 

 

 

 

 

 

 

 

 

 

 

2. 프로세스의 종류

1) 입출력 중심 프로세스 : 대부분의 시간을 입출력에 소비

2) 프로세서(CPU) 중심 프로세스 : 대부분의 시간을 연산하는 데 소비

프로세스 종류

 

 

 

 

 

 

 

 

 

3. 스케줄러의 종류

1) 장기(작업) 스케줄러

: 프로세스의 생성 과정에서 프로세스의 준비 상태에 무엇을 추가할지 결정합니다.

2) 중기 스케줄러

: 작업의 혼합 개선 또는 메모리 가용량 증가를 위해 교체(Swapping) 작업을 합니다.

3) 단기(CPU) 스케줄러

: 미리 정해진 정책(알고리즘)에 따라 실행할 프로세스를 선택합니다.

 

스케줄러

                                                                            

 

 

 

 

 

 

4. 디스패처(Dispatcher)

: 문맥 교환을 수행하는 하드웨어 모듈입니다.

: 단기 스케줄러가 선택한 프로세스를 실질적으로 CPU에 할당합니다.

 

 

 

 

 

5. 다중 처리기 스케줄링

: 다중 프로세서 시스템의 스케줄링

: 동종 병렬컴퓨터와 이기종 분산컴퓨터로 구분 가능

: 여러 개의 CPU가 사용가능하면 스케줄링 문제는 더 복잡해집니다.

 

 

- 전역큐를 이용한 부하 공유 (Load Sharing)

: 쉬고 있는 프로세서는 전역큐에서 프로세스를 하나 선택합니다.

단점) 전역큐에 병목 현상이 발생할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

6. 실시간 스케줄링(Real-time)

: 프로세스 수행이 데드라인 이전에 완료를 보장합니다.

: 데드라인을 만족하는지 여부를 사전에 측정합니다.

-> 최대 수행 완료 시간이 데드라인을 만족해야 합니다.

 

- 종류

1) 경성(hard) 실시간 시스템 : 실시간 작업들을 반드시 주어진 시간 내에 완료해야 함

2) 연성(soft) 실시간 시스템 : 실시간 작업들이 일정 수준 이상 주어진 시간 내에 완료해야 함

 

 

 

 

* 중요 *

5. 스케줄링 알고리즘 비교 기준 

1) CPU 이용률

2) 처리량 또는 작업 처리율 : 단위 시간당 완료된 작업의 수

3) 총처리시간 또는 반환시간 : 기계에 진입한 시간과 완료한 시간의 차이

4) 대기시간 : 준비큐에서 대기하는 시간

5) 응답시간 또는 반응시간 : 요청을 제출하고부터 첫 번째 응답이 나올 때까지의 시간

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

 

 

 

1. 쓰레드 개요

: 프로세스에서 실행 제어만 분리한 실행 단위 = 경량 프로세스

: 쓰레드를 포함하는 프로세스 = 중량 프로세스

 

 

 

- 쓰레드 구조

 

 

 

 

 

 

 

- 단일 쓰레드 & 다중 쓰레드 모델

단일 쓰레드 : 프로세스 하나에 쓰레드 하나만 지원합니다.

다중 쓰레드 : 프로세스 하나에 여러 개의 쓰레드를 지원합니다.

 

 

 

 

2. 쓰레드란?

: 문맥 교환이 용이하지 않은 자원들을 공유합니다.

 

 

 

- 쓰레드의 장점

: 자원과 메모리의 공유가 가능합니다.(IPC 프로그램이 용이)

: 다중 프로세서 구조 활용이 가능합니다.

 

 

 

 

 

 

 

 

3. 쓰레드 라이브러리

: 프로그래머들에게 쓰레드를 생성하고 관리하기 위한 API를 제공합니다.

ex) POSIX Pthread, Win32, Java

 

 

 

즉, 프로세스는 직접 실행하는 것이고,

쓰레드는 이에 관해 만들어져있는 함수를 가져다 쓰는 것입니다.

 

쓰레드 프로그래밍 예시

 

 

 

 

 

 

 

 

 

 

 

* 정보처리기사 문제 풀어보기 *

 

1. 현재실행중이거나 실행가능한 CPU 할당받을 있는 프로그램? 프로세스

2. PCB가 포함하고 있는 정보 

-레지스터 보관 정보(), 프로세스의  상태포인터

3. 특정 프로세스의 작업이 중단되어 CPU 다른 프로세스에게 넘겨줄 , 전 프로세스의 레지스터들은 저장되고, 실행될 프로세스의 레지스터를 시스템에 적재하는 작업? Context Switching 문맥 교환

4. 쓰레드

- 모든 쓰레드는 프로레스의 자원과 상태를 공유함

- 다중 스레드의 개념을 도입하면 자원중복할당을 방지

- 하나의 프로세스에 여러개의 스레드를 생성하여 병행성 증진

반응형
반응형

1. 프로세스란?

: 프로그램실행되는 상태

 

- 프로그램과 달리 프로세스는 메모리에 주소 공간을 갖는 능동적인 객체

: 실행 스택 - 일시적인 데이터를 저장하는 영역

: 실행 힙 - 텍스트 코드와는 별도로 유지되는 자유 영역

 

 

 

 

 

 

- 프로세스 상태

: 신규, 준비, 실행, 대기, 종료

 

 

 

 

 

 

 

- 프로세스 제어 블록(PCB)

: 특정 프로세스에 대한 정보를 가진 데이터 블록/레코드

: 프로세스의 모든 변화 정보의 기억 장소 역할

 

: 포인터

: 프로세스 상태(state)

: 프로세스 넘버

: 프로그램 카운터 - 프로세스가 어디까지 실행되었는지

: 레지스터

: 메모리 용량

: 열려있는 파일들

 

 

 

 

 

 

 

 

- 프로세스 간 CPU 스위칭 

: 다중 프로그래밍을 위한 문맥 교환

 

 

 

 

 

 

 

 

 

 

 

2. 프로세스 스케줄링

- 스케줄링 큐

: 스케줄링을 위해 PCB들이 연결되는 큐가 필요

 

- 큐의 종류

1) 작업큐 : 프로세스가 시스템에 들어가면 작업큐에 입력

2) 준비큐 : 주기억 장치에 상주하면서 준비 상태에서 실행을 기다리는 프로세스들로 구성

3) 장치큐 : 특정 입출력 장치를 대기하는 프로세스들의 리스트

 

 

 

- 스케줄러의 종류

1) 단기 스케줄러 : 준비 상태의 프로세스(준비큐)들 중에서 하나의 CPU에 할당

2) 장기 스케줄러: 프로세스를 준비 상태(준비큐)로 만듦

 

 

 

 

 

 

3) 중기 스케줄러

: 메모리 공간의 확보 등을 위해 실행중인 프로세스를 디스크로 교체(Swap out)

: 교체된 프로세스를 다시 메모리에 적재(Swap in)

 

 

 

 

- 문맥 교환 : CPU를 다른 프로세스로 전환하기 위해 이전의 프로세스 상태를 보관하고 새로운 프로세스의 보관된 상태를 적재하는 작업

* 문맥 교환 시간

: 하드웨어 지원에 의해 결정

 

 

 

 

 

 

 

 

 

3. 프로세스에 대한 연산

 

- 프로세스의 생성

: 한 프로세스 병행 도중에도 다른 프로세스를 생성하여 병행 진행합니다.(UNIX의 fork명령)

: 부모와 자식 프로세스가 모든 자원 공유합니다.

: 부모와 자식 프로세스가 함께 실행합니다.

 

 

 

- 프로세스 종료

: 부모는 자식 프로세스를 종료시킬 수 있습니다.(abort)

 

 

 

-프로세스 일시중단과 재시작

: 시스템에 장애가 발생하면 프로세스는 잠시 중단했다가 시스템이 기능을 회복하면 재시작

 

 

 

 

 

 

 

 

4. 프로세스 간 통신(IPC)

 

- 프로세스들 간의 관계는 독립적이거나 협동적 입니다.

: 독립적일 경우, 다른 프로세스에 영향주지 않습니다.

: 협동적일 경우, 다른 프로세스에게 영향을 주거나 받습니다.

 

 

 

- 협동 프로세스가 필요한 이유

: 정보의 공유, 연산속도증가, 모듈성

 

- 협동 프로세스는 프로세스 간의 통신과 동기화 메커니즘이 필요합니다.

 

 

 

- IPC(InterProcess Communication)

: 프로세스 간의 통신동기화 기능 제공합니다.

: 메시지 전달 시스템입니다.

 

< 기본 구조 >

send(message) / receive(message)

 

 

 

 

- 통신의 동기화

1) 봉쇄형(blocking) : send했는데 receive가 안오면 계속해서 기다림 (synchronous)

2) 비봉쇄형(non-blocking) : send했는데 receive가 안와도 저장해놓고 다른 작업을 함 (asynchronous)

 

 

 

 

 

 

반응형

+ Recent posts