[설문조사 사이트 테스트]
이름 :
점넷(.Net)
분류 전체보기 (176)
점넷공간 (38)
COMPUTER (1)
.NET (29)
DB (36)
SCRIPT (3)
MarkUp & CSS (3)
OS (7)
IT Story (52)
Information (7)
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2009. 3. 31. 00:55

모든 입출력 장치들은 I/O Port를 거쳐야만 공유 메모리 영역을 사용 할 수있다.

그러나 모니터는 다른 입출력 장치와는 다르게 메모리와 직접 연결되어 사용된다.

이 말을 그림으로 표현하면 아래와 같다.

 

 



모니터는 가로 80자 세로 25줄을 표현한다.
: 2000개의 문자를 사용한다.

문자가 1Byte면 글자는 총 2KB가 된다.

그렇다고 모니터 전용 메모리 영역이 2KB는 아니다.
속성으로 2KB를 더가지며
4KB가 된다.

문자당 속성은 1Byte(8Bit)이며  배경색 4Bit와 전경색(글자색) 4Bit로 구성된다.




모니터 전용 메모리는 하나가 아니라 여러 개가 존재한다.

왜냐면 페이지 단위로 버퍼처럼 사용하기 위함이다.

I/O가 특정 메모리 영역을 전용으로 사용하는 것을

MMIO(Memory Mapped I/O)라 한다.

 


MMIO (Memory Mapped I/O)
는 쉽게 설명하자면 특정 메모리 영역과 I/O가 하나가 된다고 생각하면 된다.

, 설정된 영역의 메모리 공간은 다른 의미로는 사용할 수 없으며 오직 연결된 I/O에서만 사용이 가능하다.

예를 들어 모니터가 MMIO 되어있으면 해당 메모리 영역에 내용은 별도의

모니터로 보내는 명령 없이 메모리에 있는 내용이 화면에 출력된다.

 


예제)  MMIO 영역에 데이터 입력

 

콜솔 화면을 띄워보자(실행 – CMD)

C:\> DEBUG (엔터)

-EB800:0200 41 49 42 57 43 82 44 55 45 91 (엔터)

-Q(엔터)

 

[결과]

 

 

[해설]

E : 메모리 영역에 입력

B800 : 모니터 전용 메모리 영역

0200 : 200번째 문자 위치에서 시작

1번째 41 : 알파벳 A

2번째 49 : 4 = 배경색, 9 = 글자색

3번째 42 : 알파벳 B

4번째 57 : 5 = 배경색, 7 = 글자색

5번째 43 : 알파벳 C

6번째 82 : 8 = 배경색, 2 = 글자색

7번째 44 : 알파벳 D

8번째 55 : 5 = 배경색, 5 = 글자색

9번째 45 알파벳 E

10번째 91 : 9 = 배경색, 1 = 글자색

Q : 종료

 

위의 예제를 실행하면 결과와 같은 내용이 보여질 것이다.

이는 B800(모니터 전용 메모리 영역)에 데이터를 입력한 것이다.

메모리에 데이터를 넣었을 뿐 화면에 출력 하라는 명령은 하지 않았다.

그러나 입력이 되는 순간 화면에 나타나는 것을 확인할 수 있다.

다음으로 8번째 속성을 보면 배경색과 글자색이 동일한 값을 가지고 있다.

그러므로 화면에는 ‘D’ 라는 글자가 보이지 않는다.

 

이번 이야기는 개발하는데 큰영향을 가져오지는 않는다.

하지만 이런 부분도 존재 한다는 걸 알려주고 싶다.

2009. 1. 14. 10:50
한국산업인력공단에서 2009년도 검정시행일정을 공개하였습니다.
많은 사람들이 도전하여 성취하였으면 좋겠습니다.(저도 포함해서^^)

2009년도 기사/산업기사 회별 검정시행일정 ( 전문사무포함 )

필기시험원서접수

필기
시험

필기시험합격
(
예정)자발표

응시자격서류제출
필기시험
합격자결정
<
방문제출>

실기시험 원서접수
<
인터넷>

실기시험

합격자 발표

인터넷

1

2009.02.06 - 2009.02.12

2009.03.01

2009.03.13

2009.03.16 - 2009.03.26

2009.03.16~3.17/19~3.20
(318일제외)

2009.04.18 - 2009.05.01

2009.06.01

2

2009.04.17 - 2009.04.23

2009.05.10

2009.05.29

2009.06.01 - 2009.06.10

2009.06.01 - 2009.06.04

2009.07.04 - 2009.07.17

2009.08.17

3

2009.07.03 - 2009.07.09

2009.07.26

2009.08.14

2009.08.17 - 2009.08.26

2009.08.17 - 2009.08.20

2009.09.12 - 2009.09.25

2009.10.26

4

2009.08.07 - 2009.08.13

2009.08.30

2009.09.11

2009.09.14 - 2009.09.23

2009.09.14 - 2009.09.17

2009.10.17 - 2009.10.30

2009.11.30

1. 원서접수시간은 원서접수 첫날 09:00부터 마지막 18:00까지 .
2.
필기시험 합격예정자 발표시간은 해당 발표일 13:00.
3.
회별마다 시행종목이 다르므로 반드시 아래 회별 시행종목을 확인하시기바랍니다.


2009년도 기사/산업기사 회별 검정시행종목

출처 : 한국산업인력공단(http://won.hrdkorea.or.kr)
2009. 1. 12. 18:27
[DB]
DELETETRUNCATE는 TABLE의 내용을 지우는 의미에서는 같은 기능입니다.
하지만 같은기능을 두개의 명령어로 사용할 필요는 없겠죠?
그래서 두 명령어의 차이점에 대해 알아보겠습니다.

TRUNCATEDDL, DELETEDML 입니다.

DDL(Data Definition Language)은 데이터를 정의하는 언어로서 개체를 만들고 변경, 삭제하는 CREATEALTER, DROP문과 같은 것들을 말합니다.

DML(Data Manipulation Language)은 데이터 조작 언어로서 데이터를 가공하는 SELECT, INSERT, UPDATE, DELETE문과 같은 것들을 말합니다

구문은 다음과 같습니다.
[TRUNCATE 구문]
TRUNCATE TABLE [ { database_name.[ schema_name ]. | schema_name . } ] table_name [ ; ]

[DELETE 구문]

[ WITH <common_table_expression> [ ,...n ] ]
DELETE [ TOP ( expression ) [ PERCENT ] ] [ FROM ] { <object> | rowset_function_limited  [ WITH ( <table_hint_limited> [ ...n ] ) ] }
    [ <OUTPUT Clause> ]
    [ FROM <table_source> [ ,...n ] ]
    [ WHERE { <search_condition> | { [ CURRENT OF  { [ GLOBAL ] cursor_name }  | cursor_variable_name } ] } } ]
    [ OPTION ( <Query Hint> [ ,...n ] ) ] [; ]
<object> ::=
{ [ server_name.database_name.schema_name. | database_name. [ schema_name ] .  | schema_name. ] table_or_view_name }

구문만 보더라도 TRUNCATE는 DELETE보다 간단한걸 볼 수 있습니다.
간단하다는 말은 TRUNCATE는 단순한 조건일 것이고 DELETE는 다양한 조건이 가능하다고 추측할 수 있습니다.

그럼 MSDN에서 두 명령어에 대해 비교해놓은 내용을 참고로 보겠습니다.


DELETE 문과 비교하여 TRUNCATE TABLE에는 다음과 같은 이점이 있습니다.

  • 트랜잭션 로그 공간을 덜 사용합니다.
    DELETE 문은 행을 한번에 하나씩 제거하고 삭제된 각 행에 대해 트랜잭션 로그에 항목을 기록합니다. 반면 TRUNCATE TABLE은 테이블의 데이터를 저장하는 데 사용되는 데이터 페이지의 할당을 취소하는 방식으로 데이터를 제거하며 페이지 할당 취소만을 트랜잭션 로그에 기록합니다.
  • 일반적으로 적은 수의 잠금이 사용됩니다.
    행 잠금을 사용하여 DELETE 문을 실행하면 삭제를 위해 테이블의 각 행이 잠깁니다. TRUNCATE TABLE은 항상 테이블과 페이지를 잠그지만 각 행은 잠그지 않습니다.
  • 빈 페이지는 예외 없이 테이블에 남습니다.
    DELETE 문이 실행된 후에도 테이블은 계속 빈 페이지를 포함할 수 있습니다. 예를 들어 힙의 빈 페이지는 최소한 배타적인(LCK_M_X) 테이블 잠금이 있어야만 할당 취소할 수 있으므로 삭제를 위해 테이블 잠금을 사용하지 않는 경우 테이블(힙)에는 빈 페이지가 많이 남게 됩니다. 인덱스의 경우도 삭제 작업 후에 빈 페이지가 남을 수 있지만 이러한 페이지는 백그라운드 정리 프로세스에 의해 신속하게 할당 취소됩니다.

TRUNCATE TABLE은 테이블에서 모든 행을 제거하지만 테이블 구조와 테이블의 열, 제약 조건, 인덱스 등은 그대로 남습니다. 테이블 정의 및 테이블의 데이터를 제거하려면 DROP TABLE 문을 사용하십시오.

테이블에 ID 열이 포함되어 있으면 해당 열의 카운터는 열에 대한 초기값으로 다시 설정됩니다. 초기값이 정의되어 있지 않으면 기본값인 1이 사용됩니다. ID 카운터를 보존하려면 DELETE를 대신 사용하십시오.


친절하게도 MSDN에 자세하게 설명이 되어있군요 글을 읽어보면 금방 이해가 될것이라 생각이 듭니다.

여기서 마지막 내용으로 예제를 만들어 보도록 하겠습니다.

먼저 테이블을 생성하도록 하겠습니다.

CREATE TABLE TABLENAME

( A INT IDENTITY ,B INT )


자동증가값을 가지는 A 컬럼, 정수형의 B 컬럼이 있는 TABLENAME이라는 테이블을 생성하였습니다.

INSERT INTO TABLENAME VALUES(1)

INSERT INTO TABLENAME VALUES(2)

INSERT INTO TABLENAME VALUES(3)


입력 결과를 확인해 보겠습니다.

SELECT * FROM TABLENAME

A           B
----------- -----------
1           1
2           2
3           3

(3개 행 적용됨)

DELETE문을 이용해서 전체를 삭제후 다시 입력을 해보겠습니다.

DELETE FROM TABLENAME

INSERT INTO TABLENAME VALUES(4)

INSERT INTO TABLENAME VALUES(5)

INSERT INTO TABLENAME VALUES(6)


처리된 결과를 확인해 보겠습니다.

SELECT * FROM TABLENAME

A           B
----------- -----------
4           4
5           5
6           6

(3개 행 적용됨)


전체 삭제후 새롭게 입력을 했을때 자동증값은 삭제된 항목의 최대값 다음의 증가값으로 입력된걸 확인할 수 있습니다.

이번엔 TRUNCATE문을 이용해서 삭제후 다시 입력을 해보겠습니다.

TRUNCATE TABLE TABLENAME

INSERT INTO TABLENAME VALUES(7)

INSERT INTO TABLENAME VALUES(8)

INSERT INTO TABLENAME VALUES(9)


처리된 결과를 확인해 보겠습니다.

SELECT * FROM TABLENAME

A           B
----------- -----------
1           7
2           8
3           9

(3개 행 적용됨)


자동증가값이 초기값이 되고나서 증가되었음을 확인할 수 있습니다.
이제 이해가 좀 쉽게되시죠? ^^

하지만 TRUNCATE문의 단점도 있습니다.
DELETE문은 WHERE절을 이용하여 조건을 사용할 수 있지만 TRUNCATE는 조건을 사용할 수 없습니다.

그리고 DDL이기 때문에 사용권한 문제도 있습니다.(아래는 MSDN에 있는 사용권한 내용입니다.)

최소한 table_name 대한 ALTER 권한이 필요합니다. TRUNCATE TABLE 권한은 테이블 소유자, sysadmin 고정 서버 역할 db_owner db_ddladmin 고정 데이터베이스 역할의 기본 권한이며 위임할 없습니다. 하지만 저장 프로시저와 같은 모듈 내에 TRUNCATE TABLE 문을 통합한 EXECUTE AS 절을 사용하여 적절한 권한을 모듈에 허용할 있습니다. 자세한 내용은 EXECUTE AS 사용하여 사용자 지정 권한 집합 만들기 참조하십시오


TRUNCATE를 사용하기위한 제한 사항들도 있습니다.(아래는 MSDN에 있는 제한사항 내용입니다.)

다음과 같은 테이블에서는 TRUNCATE TABLE 문을 사용할 없습니다.

  • FOREIGN KEY 제약 조건에 의해 참조됩니다. 자신을 참조하는 외래 키가 있는 테이블을 잘라낼 있습니다.
  • 인덱싱된 뷰에 참여합니다.
  • 트랜잭션 복제 또는 병합 복제에 의해 게시됩니다.

이런 특징을 이상 갖고 있는 테이블의 경우 DELETE 문을 대신 사용하십시오.

TRUNCATE TABLE 개별 삭제를 기록하지 않기 때문에 트리거를 실행할 없습니다. 자세한 내용은 CREATE TRIGGER(Transact-SQL) 참조하십시오.


어느게 좋다 나쁘다 이런문제가 아닙니다. 사용목적에 따라 적절하게 사용하시는게 최선이라고 생각합니다.

MSDN참조 경로 : (http://msdn.microsoft.com/ko-kr/library/ms177570.aspx)
2009. 1. 6. 00:30

이번에도 계절학기를 핑계로 주인장은 게으름을 무모화 하려고 합니다.^^
과락한 과목은 없지만 조금더 좋은 점수를 얻기위해 계절학기를 하는거라 더더욱 열심히 공부하고 있습니다.
이전학기보다 이번학기 결과가 더 좋고..
다음학기는 더좋은 결과를 얻기위해 더욱 노력하고...
점점 공부에 흥미를 가져가고 있습니다. (좋은 현상입니다.^^)

그러기에 이번 계절학기에도 학업에 전념하느라 포스팅을 미루게 되네요 (사실 핑계일수도 있습니다.^^)
좋은성적 나오도록 응원해주세요 ^^b
2008. 12. 16. 16:19