데이터베이스


정규형

- 두부이결다조

- 도메인원자성, 부분함수종속, 이행종속, 결정자, 다치, 조인

인덱스

- 클러스티드/논클러스티드

트랜잭션

- ACID(Atomicity/Consistence/Isolation/Durability)

- 병행제어/로킹

- Isolation Level

- (READ_UNCOMMITTED/READ_COMMITTED/REPEATABLE_READ/SERIALIZABLE)

- (DIRTY_READ/UNPREPEATABLE_READ/PHANTOM_READ)

SQL

- DDL

- DML

- DCL






자료구조 / 알고리즘


스택

트리

배열리스트/연결리스트

 

정렬알고리즘

기초정렬

고급정렬

특수정렬

탐색알고리즘

이진탐색트리

이분탐색

해싱

- B트리

그래프알고리즘

신장트리: BFS/DFS

최소신장트리프림/크루스칼

최단거리다익스트라/벨만포드

동적프로그래밍






운영체제


프로세스스케줄링

- 비선점: FIFO/SJF/HRN

- 선점: RR/SRT/MLQ/MFQ

가상기억장치

- 페이지/세그먼테이션

- 페이지 교체 알고리즘

- (FIFO/SecondChance/LRU/LFU/NUR/WorkingSet/PFF)

- 가상주소/물리주소

디스크스케줄링

- FCFS/SCAN/N-step SCAN/C-SCAN/LOOK/C-LOOK

리눅스 명령어







네트워크


OSI 7계층

- 물데네전세표응

인터넷계층

- 물데네전응

 

물리계층

- 꼬임쌍선TP

- 동축케이블

데이터링크계층

- 이더넷

네트워크계층

- 라우팅

- IGP/EGP

- RIP/OSPF

전송계층

- TCP/IP

- UDP

응용계층








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

 - 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주된다.






뷰 정의


CREATE VIEW 뷰이름[속성이름[,속성이름]]

AS SELECT문;


ex ) CREATE VIEW 춘천고객(성명, 전화번호)

AS SELECT 성명, 전화번호

FROM 고객

WHERE 주소 = '춘천시';







뷰 삭제


DROP VIEW 뷰이름 {RESTRICT | CASCADE};

RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소된다.

CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.


ex ) DROP VIEW 춘천고객 RESTRICT;




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

SQL - DML  (0) 2017.10.20
SQL - DDL  (0) 2017.10.20
정규화  (0) 2017.10.19


SELECT 


SELECT Predicate [테이블명.]속성명1, [테이블명.]속성명2, ...

FROM 테이블명1, 테이블명2, ...

[WHERE 조건]

[GROUP BY 속성명1, 속성명2, ...]

[HAVING 조건]

[ORDER BY 속성명 [ASC | DESC]];

SELECT

 - 속성명 : 기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술한다.

    두 개 이상의 테이블을 대상으로 검색할 때는 '테이블명.속성명'으로 표현한다.

 - predicate :  불러올 튜플 수를 제한할 명령어를 기술한다.

    ALL(생략), DISTINCT(중복 제거), DISTINCTROW

FROM

WHERE

 - 비교연산자 : =, <, >, <=, >=, IN(포함)

 - 논리 연산자 : NOT, AND, OR

 - LIKE : *, %, ?, _, #를 사용한 문자패턴 검색

GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성을 지정

 - COUNT(속성명) : 그룹별 튜플 수를 구하는 함수

 - MAX(속성명) : 그룹별 최대값을 구하는 함수

 - MIN(속성명) : 그룹별 최소값을 구하는 함수

 - SUM(속성명) : 그룹별 합계를 구하는 함수

 - AVG(속성명) : 그룹별 평균을 구하는 함수

HAVING : GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정한다.

ORDER BY : 특정 속성을 기준으로 정렬하여 검색할 때 사용


ex1 ) SELECT * FROM 사원;

ex2 ) SELECT DISTINCT 주소 FROM 사원;

ex3 ) SELECT 부서, "부서의", 이름, "의 월급", 기본급+10 FROM 사원;


ex4 ) SELECT * FROM 사원 WHERE 부서='기획' OR 부서='인터넷';

ex5 ) SELECT * FROM 사원 WHERE 이름 LIKE "김%";

ex6 ) SELECT * FROM 사원 WHERE 생일 BETWEEN #01/09/69 AND #10/22/73#;


ex7 ) SELECT * FROM 사원 ORDER BY 부서 ASC, 이름 DESC;

ex8 ) SELECT 부서, AVG(부서) AS 평균 FROM 사원 GROUP BY 부서;

ex9 ) SELECT 부서, COUNT(*) AS 사원수 

FROM 사원 

WHERE 기본급>=100 

GROUP BY 부서 

HAVING COUNT(*)>=2;


ex10 ) SELECT * FROM 사원 WHERE 이름 NOT IN (SELECT 이름 FROM 여가활동);

ex11 ) SELECT 사원.이름 사원.부서, 여가활동.취미, 여가활동.경력

FROM 사원, 여가활동

WHERE 여가활동.경력>=10 AND 사원.이름=여가활동.이름;


ex12 ) SELECT * FROM 사원

UNION

SELECT * FROM 직원;







INSERT INTO 

 - 기본 테이블에 새로운 튜플을 삽입할 때 사용


INSERT INTO 테이블명(속성명1, 속성명2, ...)

VALUES(데이터1, 데이터2, ...);








DELETE FROM

 - 기존 테이블에 있는 튜플들 중에서 특정 튜플을 삭제할 때 사용


DELETE FROM 테이블명 WHERE 조건;








UPDATE SET

 - 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용


UPDATE 테이블명 

SET 속성명=데이터[, 속성명=데이터]

WHERE 조건;


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

뷰(VIEW)  (0) 2017.10.25
SQL - DDL  (0) 2017.10.20
정규화  (0) 2017.10.19


Data Define Language

 - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 명령문

 - DDL로 정의된 내용은 Meta-data가 되며, 시스템 카탈로그에 저장한다.






CREATE SCHEMA

 - 스키마를 정의하는 명령문

 - 스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의한다.


CREATE SCHEMA 스키마이름 AUTHORIZATION 사용자아이디;

ex ) CREATE SCHEMA 대학교 AUTHORIZATION 홍길동







CREATE DOMAIN

 - 도메인을 정의한느 명령문이다.

 - 임의의 애트리뷰트에서 취할 수 있는 원자값의 범위가 SQL에서 지원하는 data_type에 

포함하는 전체 값이 아니고 일부분일 때 사용자가 그 값의 범위를 사용자의 data_type으로 정의


CREATE DOMAIN 도메인이름 data_type

[DEFAULT 초기값정의]

[CONSTRAINT VALID-도메인이름 CHECK (범위값)];

ex ) CREATE DOMAIN SEX CHAR(1)

DEFAULT '여'

CONSTRAINT VALID-SEX CHECK(VALUE IN ('남', '여', '?'));







CREATE TABLE

 - 기본 테이블을 정의하는 명령문


CREATE TABLE 기본테이블이름

(속성명 data_type [NOT NULL], ... ,

PRIMARY KEY(기본키속성명),

UNIQUE(대체키속성명),

FOREIGN KEY(외래키속성명),

REFERENCES 참조테이블(기본키속성명),

CONSTRAINT 제약조건명 CHECK(조건식));

ex ) CREATE TABLE 학생

(이름 VARCHAR(15) NOT NULL,

학번 VARCHAR(15) NOT NULL,

전공 VARCHAR(15) NOT NULL,

성별 SEX,

생년월일 DATE,

PRIMARY KEY(학번),

FOREIGN KEY(전공),

REFERENCE 학과(학과코드),

CONSTRAINT 성별제약 CHECK(성별='남'));







CREATE INDEX

 - 인덱스를 정의하는 명령문


CREATE [UNIQUE] INDEX 인덱스이름

ON 기본테이블이름({속성이름[ASC | DESC],})

[CLUSTER]

UNIQUE : 기본키나 대체키 같은 중복되는 값이 없는 속성으로 인덱스를 생성할 때

ASC : 오름차순 정렬

DESC : 내림차순 정렬

CLUSTER : 동일 인덱스 값을 갖는 튜플들을 그룹으로 묶을 때 사용


ex ) CREATE UNIQUE INDEX 고객번호INX

ON 고객(고객번호 ASC);








ALTER TABLE

 - 테이블에 대한 정의를 변경하는 명령문


ALTER TABLE 기본테이블이름 ADD 속성이름 data_type [DEFAULT '기본값'];

ALTER TABLE 기본테이블이름 ALTER 속성이름 [SET DEFAULT '기본값'];

ALTER TABLE 기본테이블이름 DROP 속성이름 [CASCADE];

ADD : 새로운 속성을 추가

ALTER : 특정 속성의 DEFAULT 값을 변경할 때 사용

DROP : 특정 속성을 삭제할 때 사용


ex ) ALTER TABLE 학생 ADD 학년 VARCHAR(3);







DROP

 - 스키마, 도메인, 기본 테이블 , 뷰 테이블, 인덱스 등을 삭제하는 명령문이다.


DROP SCHEMA 스키마이름 [CASCADE | RESTRICTED];

DROP DOMAIN 도메인이름  [CASCADE | RESTRICTED];

DROP TABLE 기본테이블이름  [CASCADE | RESTRICTED];

DROP VIEW 뷰이름  [CASCADE | RESTRICTED];

DROP INDEX 인덱스이름

CASCADE : 삭제할 요소를 참조하는 다른 모든 개체를 함께 삭제한다.

RESTRICTED : 삭제할 요소를 다른 개체가 참조중일 때는 삭제를 취소한다.




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

뷰(VIEW)  (0) 2017.10.25
SQL - DML  (0) 2017.10.20
정규화  (0) 2017.10.19


 - 함수의 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 

더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정

 - 정규화를 거치지 않으면 Anomaly가 발생할 수 있다.

 - 1NF, 2NF, 3NF, BCNF, 4NF, 5NF





1NF(제1정규형)

 - 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있는 릴레이션








2NF(제2정규형)

 - 릴레이션 R이 1NF이고, 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족








3NF(제3정규형)

 - 릴레이션 R이 2NF이고, 키가 아닌 모든 애트리뷰트가 기본키에 대해 이행적 종속 관계를 이루지 않도록 제한한 관계형이다.







BCNF(Boyce-Codd 정규형)

 - 릴레이션 R에서 결정자가 모두 후보키인 관계형







4NF(제4정규형)

 - 릴레이션 R에 A->B가 성립하는 경우 R의 모든 속성이 A에 함수적 종속이면 이 릴레이션 R은 4정규형에 속한다.







5NF(제5정규형, PJ/NF)

 - 릴레이션 R의 모든 조인 종속성(JD)의 만족이 R의 후보키를 통해서만 만족될 때 그 릴레이션 R은 제5정규형 또는 PJ/NF에 속한다.

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

뷰(VIEW)  (0) 2017.10.25
SQL - DML  (0) 2017.10.20
SQL - DDL  (0) 2017.10.20


물리 계층

물리 계층(Physical layer)은 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 네트워크의 높은 수준의 기능의 논리 데이터 구조를 기초로 하는 필수 계층이다. 다양한 특징의 하드웨어 기술이 접목되어 있기에 OSI 아키텍처에서 가장 복잡한 계층으로 간주된다.








데이터링크 계층

데이터 링크 계층(Data link layer)은 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 필요하다. 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공한다. 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다. 주소 체계는 계층이 없는 단일 구조이다. 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다. 이 외에도 HDLC나 ADCCP 같은 포인트 투 포인트(point-to-point) 프로토콜이나 패킷 스위칭 네트워크나 LLC, ALOHA 같은 근거리 네트워크용 프로토콜이 있다. 네트워크 브릿지나 스위치 등이 이 계층에서 동작하며, 직접 이어진 곳에만 연결할 수 있다.








네트워크 계층

네트워크 계층(Network layer)은 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다. 네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다. 라우터가 이 계층에서 동작하고 이 계층에서 동작하는 스위치도 있다. 데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층이다. 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.








전송 계층

전송 계층(Transport layer)은 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다. 시퀀스 넘버 기반의 오류 제어 방식을 사용한다. 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다. 가장 잘 알려진 전송 계층의 예는 TCP이다.








세션 계층

세션 계층(Session layer)은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.








표현 계층

표현 계층(Presentation layer)은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 예를 들면, EBCDIC로 인코딩된 문서 파일을 ASCII로 인코딩된 파일로 바꿔 주는 것이 표현 계층의 몫이다.








응용 계층

응용 계층(Application layer)은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다. 응용 서비스의 예로, 가상 터미널(예를 들어, 텔넷), "Job transfer and Manipulation protocol" (JTM, 표준 ISO/IEC 8832) 등이 있다.







위키피디아 참조 

https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95




 - 사용할 데이터가 디스크 상의 여러 곳에 저장되어 있을 경우

데이터를 액세스하기 위해 디스크 헤드가 움직이는 경로를 결정하는 기법

 - 일반적으로 탐색 시간을 최적화 하기 위해 수행되며, 처리량 최대화

응답 시간의 최소화, 응답 시간의 편차의 최소화와 같은 목적을 가지고 있다.

// FCFS, SSTF, SCAN, C-SCAN, N-step SCAN, 에센바흐, SLTF 등






FCFS(First Come First Service)

 - 디스크 대기 큐에 가장 먼저 들어온 트랙에 대한 요청을 먼저 서비스하는 기법


초기 헤드 위치 : 53

디스크 대기 큐 : 98 183 37 122 14 124 65 67


0   14   37   53   65   67   98   122   124   183   199


53 → 98 → 183 → 37 → 122 → 14 → 124 → 65 → 67









SSTF(Shortest Seek Time First)

 - 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스하는 기법

 - 현재 서비스한 트랙에서 가장 가까운 트랙에 대한 서비스 요청이 계속 발생하는 경우,

먼 거리의 트랙에 대한 서비스는 무한정 기다려야 하는 기아 상태가 발생할 수 있다.


초기 헤드 위치 : 53

디스크 대기 큐 : 98 183 37 122 14 124 65 67


0   14   37   53   65   67   98   122   124   183   199


53 → 65 → 67 → 37 → 14 → 98 → 122 → 124 → 183








SCAN

 - SSTF가 갖는 탐색 시간의 편차를 해소하기 위한 기법이다

 - 대부부의 디스크 스케줄링에서 기본 전략으로 이용된다.

 - 현재 헤드의 위치에서 진행 방향이 결정되면 탐색 거리가 짧은 순서에 따라 그 방향의

모든 요청을 서비스하고, 끝까지 이동한 후 역방향의 요청 사항을 서비스한다.

 - 헤드가 안쪽과 바깥쪽을 왔다갔다 하면서 지나는 기에 있는 대기 요청뿐만 아니라

새로운 요청도 서비스하며, 현재의 진행 방향에 더 이상의 요청이 없을 때에만 이동 방향을 바꾼다.

 - LOOK : SCAN기법을 기초로 사용하되 요청이 없는 경우 끝까지 가지않고 바로 역방향으로 진행한다.


초기 헤드 위치 : 53

디스크 대기 큐 : 98 183 37 122 14 124 65 67


0   14   37   53   65   67   98   122   124   183   199


53 → 65 → 67 → 98 → 122 → 124 → 183 → 199 → 37 → 14








C-SCAN(Circular SCAN)

 - 항상 바깥쪽에서 안쪽으로 움직이면서 가장 짧은 탐색 거리를 갖는 요청을 서비스하는 기법

 - 헤드는 트랙의 바깥쪽에서 안쪽으로 한 방향으로만 움직이며 서비스하여 끝까지 이동한 후,

안쪽에 더 이상의 요청이 없으면 헤드는 가장 바깥쪽의 끝으로 이동한 후 다시 안쪽으로 

이동하면서 요청을 서비스한다.

 - 요청을 서비스하는 도중 새로운 요청 사항이 도착하면 다음 헤드가 진행할 때 서비스한다.

 - C-LOOK : C-SCAN기법을 기초로 사용하되 요청이 없는 경우 끝까지 이동하지 않고 그 즉시

가장 바깥쪽의 위치부터 안쪽 방향으로 서비스하는 기법이다.


초기 헤드 위치 : 53

디스크 대기 큐 : 98 183 37 122 14 124 65 67


0   14   37   53   65   67   98   122   124   183   199


53 → 37 → 14 → 0 → 199 → 183 → 124 → 122 → 98 → 67 → 65








N-SCAN(N-step SCAN)

 - SCAN 기법의 무한 대기 발생 가능성을 제거한 것으로, 어떤 방향의

진행이 시작될 당시에 대기 중이던 요청들만 서비스하고, 진행 도중 도착한 요청들은

한데 모아서 다음의 반대 방향 진행 때 서비스하는 기법이다.








에센바흐(Eschenbach) 기법

 - 부하가 매우 큰 항공 예약 시스템을 위해 개발되었다.

 - 탐색 시간과 회전 지연 시간을 최적화하기 위한 최초의 기법이다.

 - 헤드는 C-SCAN처럼 움직이며 예외적으로 모든 실린더는 그 실린더에 요청이 있던 없던 간에

전체 트랙이 한 바퀴 회전할 동안에 서비스를 받는다.








SLTF(Shortest Latency Time First)

 - 섹터 큐잉(Sector Queuing)이라고 하며, 회전 지연 시간의 최적화를 위해 구현된 기법

 - 디스크 대기 큐에 있는 여러 요청을 섹터 위치에 따라 재정렬하고, 가장 가까운 섹터를 먼저 서비스한다.

 - 헤드의 이동이 거의 없는 고정 헤드 장치인 드럼과 같은 장치에서 사용된다.






'ComputerScience > OperatingSystem' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2017.10.16
가상기억장치 구현 기법  (0) 2017.10.16
단편화  (0) 2017.10.16
주기억장치 할당 기법 - 연속 할당 기법  (0) 2017.10.16
교착상태  (0) 2017.10.16


페이지 폴트가 발생했을때 교체 방법

// OPT, FIFO, LRU, LFU, NUR, SCR 등






OPT

 - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법

 - 각 페이지의 호출 순서와 참조 상황을 미리 예측해야 하므로 실현 가능성이 희박



참조페이지

2

3

2

1

5

2

3

5

페이지

프레임

2

2

2

2

2

2

2

2


3

3

3

3

3

3

3




1

5

5

5

5


페이지 폴트 4번 (하늘색 셀)









FIFO(First In First Out)

 - 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저

들어와서 가장 오래 있었던 페이지를 교체하는 기법

`- 벨레이디의 모순현상이 발생

  : 페이지 프레임 수가 많으면 페이지 부재의 수가 줄어드는 것이 일반적이지만,

   페이지 프레임 수를 증가시켰는데도 불구하고 페이지 폴트가 더 많이 일어나는 현상



참조페이지

2

3

2

1

5

2

3

5

페이지

프레임

2

2

2

2

5

5

5

5

 

3

3

3

3

2

2

2

 

 

 

1

1

1

3

3


페이지 폴트 6번 (하늘색 셀)








LRU(Least Recently Used)

 - 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법

 - 각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은,

즉 가장 오래 전에 사용된 페이지를 교체한다.

 - 계수기나 스택과 같은 별도의 하드웨어가 필요하며, 시간적인 오버헤드가 발생



참조페이지

2

3

2

1

5

2

3

5

페이지

프레임

2

2

2

2

2

2

2

2


3

3

3

5

5

5

5




1

1

1

3

3


페이지 폴트 5번 (하늘색 셀)








LFU(Least Frequently Used)

 - 사용 빈도가 가장 적은 페이지를 교체하는 기법


참조페이지

2

3

1

3

1

2

4

5

페이지

프레임

2

2

2

2

2

2

2

2


3

3

3

3

3

3

3



1

1

1

1

1

1

 

 

 

 

 

 

4

5


페이지 폴트 5번 (하늘색 셀)









NUR(Not Used Recently)

 - LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법

 - 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로,

LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.

 - 최근의 사용 여부를 확인하기 위해서 각 페이지마다 두 개의 비트, 

즉 참조 비트(Reference Bit)와 변형 비트(Modified Bit, Dirty Bit)가 사용된다.

 - 참조 비트 : 페이지가 호출되지 않았을 때는 0, 호출되었을 때는 1로 저장된다.

 - 변형 비트 : 페이지 내용이 변경되지 않았을 때는 0, 변경되었을 때는 1로 지정된다.


참조 비트

변형 비트 

교체 순서 

0

0

1

0

1

2

1

0

3

1

1

4








SCR(Second Chance Replacement)

 - 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로,

FIFO 기법의 단점을 보완하는 기법이다.

 - 각 페이지마다 참조 비트를 두고, FIFO 기법을 이용하여 페이지 교체 수행중 참조

비트가 0일 경우에는 교체하고, 참조비트가 1일 경우에는 참조 비트를 0으로 지정한 후 

FIFO 리스트의 맨 마지막으로 피드백시켜 다음 순서를 기다리게 한다.







'ComputerScience > OperatingSystem' 카테고리의 다른 글

디스크 스케줄링  (0) 2017.10.16
가상기억장치 구현 기법  (0) 2017.10.16
단편화  (0) 2017.10.16
주기억장치 할당 기법 - 연속 할당 기법  (0) 2017.10.16
교착상태  (0) 2017.10.16


 - 가상기억장치는 보조기억장치(하드디스크)의 이부를 주기억장치처럼 사용하는 것으로,

용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법이다.

 - 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상 기억장치에 보관해 놓고 

프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리한다.


페이징 기법

프로그램을 동일한 크기로 나눈 단위를 페이지라 하며 이 페이지를 블록으로 사용하는 기법


세그먼테이션 기법

프로그램을 가변적인 크기로 나눈 단위를 세그먼트라 하며, 이 세그먼트를 블록으로 사용하는 기법






페이징 기법

 - 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈

후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에

적재시켜 실행하는 방법이다.

 - 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다.

 - 주소 변환을 위해서  페이지의 위치 정보를 가지고 있는 페이지 맵 테이블이 필요하다.











세그먼테이션 기법

 - 가상기억장치에 보고나되어 있는 프로그램을 다양한 크기의 

논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법

 - 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.

 - 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 

세그먼트 맵 테이블이 필요하다.










페이지 부재(Page Fault)

 - 프로그램 실행 시 참조한 페이지가 주기억장치에 없는 현상

 - 페이지 부재 발생 시 처리 순서

  1. 운영체제에서 트랩 요청

  2. 사용자 레지스트리와 프로그램의 상태 저장

  3. 현재 사용(교체) 가능한 페이지를 페이지 맵 테이블에서 검색

  4. 가상기억장치에 있는 페이지를 주기억장치로 가져옴

  5. 페이지 맵 테이블 갱신

  6. 프로그램 상태를 불러와 계속 작업을 진행함



'ComputerScience > OperatingSystem' 카테고리의 다른 글

디스크 스케줄링  (0) 2017.10.16
페이지 교체 알고리즘  (0) 2017.10.16
단편화  (0) 2017.10.16
주기억장치 할당 기법 - 연속 할당 기법  (0) 2017.10.16
교착상태  (0) 2017.10.16


단편화는 분할된 주기억장치에 프로그램을 할당하고 반납하는 과정을 반복하면서

사용되지 않고 남는 기억장치의 빈 공간 조각을 의미하며, 내부 단편화와 외부 단편화가 있다.






내부 단편화

 - 분할된 영역이 할당될 프로그램 크기보다 크기 때문에 

프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간


프로그램 크기 < 분할된 영역

내부 단편화 = 분할된 영역 - 프로그램 크기








외부 단편화

 - 분할된 영역이 할당될 프로그램의 크기보다 작기 때문에 프로그램이 

할당될 수 없어 사용되지 않고 빈 공간으로 남아 있는 분할된 전체 영역


프로그램 크기 > 분할된 영역

외부 단편화 = 분할된 영역








단편화 해결 방법


통합(Coalescing) 기법

 - 주기억장치 내에 인접해 있는 단편화된 공간을 하나의 공간으로 통합

 - 주기억 장치에 빈 공간이 발생할 경우 이 빈 공간이 다른 빈 공간과 

인접되어 있는지 점검한 후 결합하여 사용


압축(Compaction) 기법

 - 주기억장치 내에 분산되어 있는 단편화된 빈 공간을 결합하여 하나의 

큰 가용 공간을 만드는 작업. 집약, Garbage Collection이라고도 한다.

 -  여러 위치에 분산된 단편화된 공간을 주기억장치의 한 쪽 끝으로 옮겨서 큰 가용 공간을 만든다.

 - 압축이 실행되는 동안 시스템은 모든 일을 일시 중단한다.

'ComputerScience > OperatingSystem' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2017.10.16
가상기억장치 구현 기법  (0) 2017.10.16
주기억장치 할당 기법 - 연속 할당 기법  (0) 2017.10.16
교착상태  (0) 2017.10.16
병행 프로세스와 상호 배제  (0) 2017.10.11

+ Recent posts