윈도우 비스타부터 적용이 가능한 팁입니다.

윈도우7 정식버전의 경우 라이센스 인증을 하지 않으면 30일까지 사용이 가능합니다.

 

하지만 윈도우 비스타때부터 적용된 이 명령어로  기간을 정확히 3번 더 연장할수 있습니다

 

아마도 조금더 윈도우7을 체험해 보고 정품구매를 유도하려는 MS의 계획인것 같습니다.

 

커맨트 프롬프트를 여신다음에(실행에서 cmd 입력 또는 실행창에서 아래 명령어를 직접 입력)

 

slmgr -rearm  이 명령어를 치신다음에 컴퓨터를 재부팅하시면 됩니다.

 

윈도우7 rc 7264버전을 쓰고 있는데 조만간 포맷하면 정식버전으로 옮겨탈 계획입니다.

그런데 7260버전이 워낙 안정적이라 언제 포맷할지 모르겠네요. ㅋㅋ

 

위에서 설명하신 방법으로 사용하시면 약 120일간 합법적으로 사용하실수 있습니다. 보통 컴퓨터가 느려졌다 싶으면

3~4개월에 한번씩 미는 저로써는 평생 공짜로 쓸수 있는 방법중에 하나죠. ㅋㅋ

 

회사에서는 업무파일이나 관리때문에 적용하기는 힘든 예일지 모르겠으나 가정용pc로서는 좋은 방법이 아닐까 생각됩니다.

 

ps. 위의 방법은 해당 명령어를 입력한 시간으로부터 인증유예기간을 30일로 다시 초기화 시키는 방법입니다.

즉 윈도우를 깔고 10일이 지난다음에 명령어를 입력한다면 10+30일이 되기때문에 남은 20일은 날라가게 됩니다.

그러므로 최대한 30일에 가까워졌을때 사용하는 방법이 오랫동안  인증유예기간을 유지할수 있는 방법입니다.

Posted by shunman
윈도우즈의 작업표시줄과 바탕화면에 있는 아이콘들과

폴더등을 관리하는 쉘(shell)을 교체하시려면 다음 경로의 레지스트리를

수정해주시면 됩니다. (물론 shell 파일이 해당 경로에 미리 있어야겠지요)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT
\CurrentVersion\Winlogon

의 경로로 들어가셔서 shell의 값을 해당 경로로 바꿔주시면 됩니다.

다시 되돌리시려면 explorer.exe를 입력해주시면 됩니다.
Posted by shunman

Error code Stop 0x000000ed Unmountable Boot Volume

[원인]
IDE 디스크 드라이브의 쓰기(Write) 패턴 최적화로 인해 캐싱 루틴은 데이터가 있는 디스크의 위치에 따라 드라이브 쓰기 속도를 가장 빠른 수준으로 유지할 수 있도록 때때로 순서에 관계 없이 데이터를 쓰게되고 이렇게 하면 쓰기 작업이 완료되지 않은 경우에 NTFS 디스크 시스템이 중요한 테이블을 손상시킬 수 있는 시간 창이 열린다.

이전에는 디스크에 어느 정도 중요한 데이터가 저장되어 있는 프로그램이나 전체 속도가 약간 느려지는 것이 허용되는 상황에서는 IDE 드라이브의 캐싱을 해제하도록 권장했지만, 중요한 데이터가 있는 프로그램은 데이터 트랜잭션 관리 능력이 뛰어난 SCSI 드라이브를 사용해야 할 수도 있다.


[해결]
- XP 시디를 이용하여 부팅이 되면 복구(r)모드로 들어간다.
- 키보드와 운영체를 선택하고 C:\> 상태가 되면 chkdsk /p 를 입력후 엔터.

- 체크디스크가 끝나면 fixboot 입력 후 Y 눌러주고 재부팅한다.



Error code Stop 0x00000005: INVALID_PROCESS_ATTACH_ATTEMPT
[원인]
 윈도우XP SP2, 2003 서버, XP 타블렛PC 2005 에디션에서 바이러스 백신, 방화벽 프로그램, 이와 유사한 기능을 하는 프로그램 때문에 발생 할 수 있다.
 
[해결]
1. Windows XP SP2에서 이 문제를 해결하려면 Windows XP용 887742 업데이트를 다운로드하고 설치하십시오.

2. 바이러스 백신이나 멀티미디어 응용프로그램 백업 프로그램등과 같이 필터프로그램을 사용하는 소프트웨어를 제거 또는 업데이트한다.


[참고]
 Windows XP 서비스 팩 2 또는 Windows Server 2003에서 "Stop 0x05 " Stop 오류가 발생한다



Error code Stop 0x0000000A or IRQL_NOT_LESS_OR_EQUAL

[내 용]

1. 프로세서 및 메모리관리나 데이터 입출력 하드웨어제어 등의 IRQL(interrupt request level)인터럽트 요청 레벨이 너무높을때 발생하는 오류이다.

2. 메모리로 접근을위한 커널모드가 퍼미션을 가지지 못할 때 생기는 오류이다.

3. 일반적으로 이 메시지는 하드웨어나 소프트웨어 호환성 문제 때문에 생긴다.


[해결]

1. 드라이버나 펌웨어를 설치하는데 실패할 때 발생한다. 문제를 해결하기 위해 실패한 드라이버를 삭제하거나 드라이버 롤백기능을 사용한다.

2. 윈도우 XP를 업그레이드하는 동안 이오류가 나타나면 호환성부족 드라이버나 바이러스를 체크 해본다.


[참고]
Windows NT의 "Stop 0x0A" 메시지 문제 해결
Windows XP에서 Stop 0x0000000A 오류 해결
Windows XP를 업그레이드하는 동안 "Stop 0x0000000A " 오류 메시지가 나타난다
같은 파티션에서 Windows NT 4.0과 이중 부팅(Dual Boot)할 때 STOP: 0x0000000A 오류 발생
컴퓨터를 종료하려고 하면 Windows XP가 다시 시작된다
Windows 2000에서 Driver Verifier를 사용하여 장치드라이버 문제를 해결하는 방법
STOP 0x0A, 0x01E, and 0x50 가 발생 가능한 화면 해상도
AC Power에서 DC Power로 변환시 발생하는 "STOP 0x0000000A" 오류 메세지
빠른 사용자 전환 시 "Stop 0x0000000A" 오류 메시지가 발생한다.
Hewlett-Packard 5100C ScanJet에서 "Fatal System Error" 가 발생한다.
컴퓨터를 시작할 때 STOP 0x4E, STOP 0x1A, STOP 0x50, and STOP 0xA 오류가 발생한다.
윈도우2000 계열에서 발생하는"Stop: 0x0000000A (00000063, 0000001c, 00000000, parameter4)" 오류
 


Error code Stop 0x0000001A: MEMORY_MANAGEMENT
[원인]
1. 하드웨어와 관련된 오류중 하나다. 윈도우 설치 중 이 오류가 발생하면 메모리 용량부족, 하드디스크 공간 부족여부를 확인해야한다.
 
[해결]
1. 디스크 공간이 부족할 때 발생되는 오류중하나이며 chkdsk.exe autochk.exe의해 발생되는 인터넷캐쉬파일이나 temporary files(*.tmp files) 응용프로그램 백업파일을 삭제해 준다.

2. 날짜가 오래된 드라이버나 하드웨어 문제가 이 에러의 원인이다. 최근에 드라이버를 바꾼것이 없다면 CPU,메모리,캐쉬,VRAM,BIOS 그리고 다른 칩들이 확실히 장착이 않되었을지 모른다. 엉뚱한 얘기같지만 보통 이러한 문제 때문에 생긴다.


[참고]
 컴퓨터를 시작할 때 STOP 0x4E, STOP 0x1A, STOP 0x50, and STOP 0xA 오류가 발생한다.
 


Error code Stop 0x0000001E or KMODE_EXCEPTION_NOT_HANDLED

[원인]

1. 커널 오류중 하나이며 0×A오류와 거의 같다.

2. 메모리 부족 때문에 발생하는 오류이다.

3. 단순한 버그 체크이다. 일반적으로 제외된 어드레스(두번째 파라미터)는 문제를 야기시키는 드라이버/기능을 찾아낸다. 이 어드레스뿐만 아니라 이 어드레스를 가지고 있는 드라이버/이미지의 연결 날짜를 항상 적어놓아라


[해결]

1. 바이러스 백신이나 멀티미디어 응용프로그램 백업 프로그램등과 같이 필터프로그램을 사용하는 소프트웨어를 업데이트한다.

2. 원격 제어프로그램의 win32k.sys 파일이 손상되었을 경우나 다른회사의 원격제어 프로그램을 설치할 경우에 발생될 수 있다.

3. 안전모드로 접근을 못하는 경우 Recovery Console을 이용하여 문제를 해결한다.

4. 시스템 펌웨어의 호환성부족으로 발생할수 있으며 바이오스 업그레이드로 문제를 해결해 본다.


[참고]
STOP 0x0A, 0x01E, and 0x50 가 발생 가능한 화면 해상도
설치하는 동안 "Stop: 0x0000001E" 오류 메시지 발생
Windows를 설치하는 동안 "STOP 0x0000001E" 오류 메시지가 나타난다
Aspi32.sys로부터의 "STOP 0x0000001E KMODE_EXCEPTION_NOT_HANDLED" 오류 메시지
Open Handles Cause STOP 0x0000001E or STOP 0x00000024
Toshiba Tecra 8100에서 도킹해제 시 STOP 0X0000001E in Protcls.sys가 발생한다.
 


Error code Stop 0x00000019 or BAD_POOL_HEADER
[원인]
1. Pool Header 이상(시스템을 디버깅하면 원인이 나타난다)
2. 일반적인 에러는 아니지만 사용자가 마지막으로 했던 작업이 이 에러의 원인 일 수 있다.


[해결]
2. 부팅시 '마지막으로 성공한 구성' 을 선택한 후 부팅한다.
 


Error code Stop 0x00000023: FAT_FILE_SYSTEM
[원인]
1. FAT 방식의 드라이브를 읽거나 기록시 발생하는 오류. 하드웨어적인 문제, 제어신호의 오류가 원인이된다.
2. 단편화가 심한 경우, 과도한 파일 입출력, 레이드 소프트웨어, 바이러스 백신과의 문제로도 발생한다.

[해결]
1. CHKDSK, Defrag를 실시한다.
2. Virus 백신,스파이웨어 제거툴, 방화벽 프로그램, 백업 프로그램을 사용중지.
3. 최신버전의 서비스 팩, 각종 저장장치 드라이버의 최신버전으로의 업데이트를 실시.
 
[참고]
 "Stop 0x00000023 FAT_FILE_SYSTEM" 오류 시 트러블슈팅 방법
이동식 저장장치를 사용 할 때 "Stop 0x23" Error Message가 발생한다
STOP Errors 0x00000023 and 0x0000000A in Fastfat.sys When a Program Queries the File System


 

Error code Stop 0x00000024 or NTFS_FILE_SYSTE

[원인]

1. NTFS파일 시스템 드라이버들을 쓰거나 읽는데 필요한 드라이버파일인 ntfs.sys 가 깨지거나 삭제되었을 경우 발생한다.

2. 모든 화일 시스템 버그 체크는 자신의 첫번째 UNLONG에 소스화일을 기록하고 버그 체크를 만드는 소스화일내에서 라인을 만든다. 높은 16비트는 화일을 확인하는 반면, 낮은 16비트는 버그 체크가 발생한 화일의 소스라인을 확인한다.


[해결]

1. SCSI나 ATA 하드웨어드라이버의 부조화로 발생하는 에러이다. 스카시인 경우 termination문제 케이블을 체크한다.

2. event viewer에서 시스템 로그 안에 SCSI나 FASTFAT 과 관련된 에러사항을 체크한다.

3. 해당 제품 제조회사에서 제공하는 하드웨어 진단프로그램과 진단 소프트웨어로 테스트해본다.

4. 도스창에서 CHKDSK /F로 체크해본다.(화일시스템의 오류를 수정)

5. 다른 NT시스템에 이 에러가 생긴 드라이브를 장착시킨후 디스크검사를 한다.


[참고]

Troubleshooting Stop 0x24 or NTFS_FILE_SYSTEM Error Messages
응용프로그램을 닫을 때 STOP 0x0000001E or STOP 0x00000024 오류가 발생한다
 


Error code Stop 0x00000027: RDR_FILE_SYSTEM

[원인]
1. 원인이 확실히 밝혀지지 않은 오류다.
 
[해결]
1. (커널의)메모리 관리가 문제가 돨 경우가 있으며 메모리를 추가함으로서 해결되는 경우도 있다.
 
[참고]
 How to Troubleshoot a "STOP 0x00000027 RDR_FILE_SYSTEM" Error Message
"Stop 0x00000027 RDR_FILE_SYSTEM" Error Message During Shutdown

 

Error code Stop 0x0000002E or DATA_BUS_ERROR

[원인]

1. 시스템 페러티 에러나 메모리모듈 Level2 cache 나 비디오메모리 손상으로 발생되는 에러이다.

2. 바이러스로 인해 발생할수있다.


[해결]

1. 드라이버를 잘못설치한 경우 발생할 수 있다.  파일이름을 보여주면 해당파일을 제거하거나 롤백 기능을 사용하여 문제를 해결한다.

2. 램의 물리적인 손상일 경우가 많으므로 데이터가 주소에 제대로 접근 못하는경우가 많다. 이럴경우는 램을 교체해본다.

3. 크랙된 응용프로그램을 설치한 경우에 발생할 수 있다.



Error code Stop 0x00000035: NO_MORE_IRP_STACK_LOCATIONS
[원인]
1. 장치드라이버 또는 램의 결함으로 인해 발생 할 수 있는 문제다.
 
[해결]
1. MSDN 기술자료를 참고
 
[참고]
STOP 0x00000035 When Using TDITrace from the Windows NT Resource Kit
style="BORDER-RIGHT: white 1px; BORDER-TOP: white 1px; BORDER-LEFT: white 1px; BORDER-BOTTOM: white 1px"
Problems Changing Mouse in Windows NT with IntelliPoint 2.0
 


Error code Stop 0x0000003F or NO_MORE_SYSTEM_PTES

[원인]

1. 이 에러는 여러 가지 원인에 의해 발생될수 있다. 주로 PTEs(page table entries)-시스템의 입출력수행의 과도현상 PTEs(메모리공간에대한정보)가 부족하거나 파손되는경우에 발생할수 있는 에러이다.

2. 잘못된 드라이버 설치시 발생할수 있다.

3. 응용프로그램들이 요구하거나 이용할 수 있는 충분한 크기의 메모리 블록이 부족한 경우에 발생하는 에러 이다.


[해결]

1. 최근에 설치한 장치 드라이버나 응용프로그램을 제거해 본다.
2. 저장장치 관련 응용프로그램이나 장치드라이버를 업데이트 한다.



Error code Stop 0x0000004E: PFN_LIST_CORRUPT
[원인]
1. memory management Page File Number list 손상 시 발생하는 오류다.

2. 손상된 램 모듈 또는 bad memory  descriptor lists를 장치드라이버가 생략하고 샐행 될 때 발생한다.
 
[해결]
1. 컴퓨터 제조업체에서 제공하는 하드웨어 진단 도구를 실행합니다.
2. 백업 유틸리티, 바이러스 검색 프로그램 또는 방화벽 소프트웨어와 같은 파일 시스템 필터 드라이버를 모두 해제합니다.
3. 아래의 Microsoft 웹 사이트를 참조하여 하드웨어와 해당 드라이버가 Windows 2000과 호환되는지 확인합니다.
4. 이 오류 메시지가 불규칙적으로 나타나거나 프로그램을 시작할 때 추가 메모리를 제거하거나 컴퓨터의 RAM을 테스트합니다. 불량 RAM이 있는 경우에 이 문제가 발생합니다.


[참고]
컴퓨터를 시작할 때 STOP 0x4E, STOP 0x1A, STOP 0x50, and STOP 0xA 오류가 발생한다.


 

Error code Stop 0x00000050 or PAGE_FAULT_IN_NONPAGED_AREA

[원인]

1. 요청된 데이터가 메모리에 상주되어 있지 않을때 발생하는 에러이다.

2. 호환이 잘 안되는 소프트웨어 설치시(원격 엑세스, 바이러스 백신)들이 에러를 일으키는 원인이 된다.

3. 결함이있는 메모리(메인 메모리,L2케시 메모리,video RAM)


[해결]

1. 잘못된 드라이버 설치시 에러를 발생시킬수 있다. 드라이버를 삭제하고 업데이트된 드라이버를 재설치 한다.

2. 만약 제조회사에서 드라이버를 찾지못한다면 비슷한 종류의 드라이버로 교체한다.


[참고]
블루 스크린에 Stop 0x00000050 오류가 나타난다
Possible Resolutions to STOP 0x0A, 0x01E, and 0x50 Errors
Windows NT 4.0을 설치하는 동안 "Stop 0x50" 오류 메시지
Windows XP에서 Easy CD Creator 5.0이 작동하지 않는다
Driver Verifier를 사용하여 장치 드라이버 문제를 해결하는 방법
STOP Error When You Start Windows After You Connect a Scanner
ToshibaTecra8100에서 도킹해제시 STOP 0X0000001E in Protcls.sys가 발생한다
컴퓨터를 시작할 때 STOP 0x4E, STOP 0x1A, STOP 0x50, and STOP 0xA 오류가 발생한다.
STOP 0x00000050” Error Message in Stac97.sys After You Upgrade Your Panasonic Toughbook to Win XP Service Pack 1



Error code Stop 0x00000051 REGISTRY_ERROR
[원인]
1. 레지스트리 또는 설정관리자와 관련된 오류다. 파일시스템 또는 하드웨어 문제 때문에 레스스트리 파일을 읽거   나 쓸때 발생하는 I/O 오류다.

2. 메모리 관리오류가 원인이 되는 경우도 있다.

3. 컴퓨터에 리소스 제한 문제가 있을 때 발생하는 새로 고침 작업이 작동하지 않는 경우에도 이 오류 메시지가 나타날 수 있습니다


[해결]
1. ERD(응급 복구 디스크)가 있으면 레지스트리를 알 수 있는 작동 상태로 복원하는 것이 좋습니다.응급 복구 디스크에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
※ 231777 (http://support.microsoft.com/kb/231777/) Windows 2000에서 응급 복구 디스크를 만드는 방법
2. 새 하드웨어를 설치한 후에 컴퓨터를 처음 시작한 경우라면 하드웨어를 제거하고 컴퓨터를 다시 시작하십시오.
3. 아래의 Microsoft 웹 사이트를 참조하여 하드웨어와 해당 드라이버가 Windows 2000과 호환되는지 확인합니다.
http://www.microsoft.com/whdc/hcl/default.mspx

4. 하드웨어에 대한 자세한 내용은 해당 제조업체에 문의하십시오.
5. 처음으로 Windows 2000을 설치하는 경우 운영 체제를 로드하는 데 필요한 RAM 크기와 하드 디스크 공간 등 모든 Windows 2000 요구 사항이 만족되는지 확인하십시오.
6. Windows 2000이 로드되고 사용자가 새 하드웨어를 설치하지 않은 경우 복구 옵션을 사용하여 컴퓨터를 다시 시작하여 덤프 파일을 만드십시오.

7. 오류 메시지가 계속 나타나는 경우 컴퓨터를 다시 시작할 때 마지막으로 성공한 구성 옵션을 선택합니다. 마지막으로 성공한 구성 옵션이 없으면 ERD를 사용하십시오. ERD가 없으면 기술 지원 부서에 문의하십시오.마지막으로 성공한 구성 옵션 및 다른 Windows 2000 부팅 옵션에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
※ 202485 (http://support.microsoft.com/kb/202485/) Windows 2000의 안전 부팅 모드에 대한 설명 
8. 부팅시 F8번을 눌러 부트 메뉴에 '마지막으로 성공한 구성.'을 선택하던지 시스템 복원을 이용하여 백업화일로 부터 레지스트리를 복원한다.


[참고]

구성 관리자는 시스템 레지스트리를 관리하는 내부 Windows 시스템 구성 요소입니다. Windows가 실행되는 동안 필요한 경우 항상 실행됩니다



Error code Stop 0x0000005A: CRITICAL_SERVICE_FAILED
[원인]
1. 마지막으로 성공한 구성으로 부팅 시 윈도우 필수 서비스가 실행되지 않아 발생하는 오류다.
 
[해결]
1. 최근에 장착한 하드웨어 제거 후 재 부팅한다.
2. 호환되지 않는 하드웨어를 점검한다.
3. 메모리 덤프를 분석하여 원인이 되는 장치를 찾아본다.
 


Error code Stop 0x00000076: PROCESS_HAS_LOCKED_PAGES

[원인]
1. 이 오류는 장치 드라이버가 I/O 조작 후 잠긴 페이지를 해제하지 못해 발생하는 오류다.
 
[해결]
1. 최신버전의 서비스 팩을 설치하면 해결가능하다.



Error code Stop 0x00000077 or KERNEL_STACK_INPAGE_ERROR

[내 용]

1. 이 에러는 페이징 (가상 메모리)파일로부터 요구된 커널 데이터의 페이지가 메모리에서 읽거들이거나 발견되지 않았을때 생기는 오류이다. L2캐쉬의 불량

2. 디스크 데이터 충돌이나 바이러스 감염에 의해서도 생기는 오류이다.


[상태 코드]

- 0xC000009A, or STATUS_INSUFFICIENT_RESOURCES 리소스부족을 가르킨다.

- 0xC000009C, or STATUS_DEVICE_DATA_ERROR 하드디스크의 베드블럭,섹터로 요청된 데이터를 찾지 못할때

- B127, or STATUS_DEVICE_DATA_ERROR 하드디스크의 배드 블럭, 섹터로 요청된 데이터를 찾지 못할 때

- 0xC000009D, or STATUS_DEVICE_NOT_CONNECTED 결함있는 파워케이블, 스카시 터미네이션 ,하드디스크 컨트롤러

- 0xC000016A, or STATUS_DISK_OPERATION_FAILED 결함있는 하드디스크의 베드섹터

- 0xC0000185, or STATUS_IO_DEVICE_ERROR 결함있는 파워케이블 ,스카시 터미네이션 ,하드디스크 컨트롤러 두가지 디바이스장치가 동일한 시스템 리소스를 사용해서 생기는 오류


[해결]

- CHKDSK /F로 확인했을 때 0xC0000185 이면 SCSI 버스의 연결이나 IRQ를 사용하는 컨트롤러를 확인.

 

Error code Stop 0x0000007A or KERNEL_DATA_INPAGE_ ERROR

[원인]
1. 페이지 파일에서 커널데이터를 찾지 못하여 메모리로 로드하지 못해서 생기는 오류다.
 
[해결]
1. 디스크 결함, 디스크콘트롤러 드라이버의 손상, 바이오스, 하드웨어 문제때문에 발생 할수 있다.

 

Error code Stop 0x0000007B or INACCESSIBLE_BOOT_DEVICE
[원인]
1. 부팅하면서 시스템 파티션을 엑세스하지 못할 때
2. 잘못된 디바이스 드라이버가 설치되거나 업그레이드 될 때
3. 바이러스 감염에 의해서 발생 될 수 있다.
 
[해결]
1. 입출력시스템이나 컨트롤러 등의 드라이버 장치가 잘못 잡혀 있는지 확인한다.
2. 파일시스템이 부트 디바이스의 데이터를 인식하지 못했을 때는 복구콘솔에서 복구를 시도한다.
3. 새로운 디스크를 추가하거나 파티션설정을 다시 할 경우나 새로운 디스크 컨트롤러를 업그레이드할 때 boot.ini 부트 매니져 정보가 변경될 경우 생긴다. 이럴 경우 boot.ini 파일을 편집하거나 부트 매니져 파라미터를 조절한다.
4. 드라이버와 펌웨어를 업데이트한다.
 
[참고]
After You Remove or Reinstall Roxio Easy CD Creator 5 Platinum Edition
[SysprepMassStorage] 섹션이 누락되어 Windows XP Sysprep 이미지에 STOP 0x7B 오류 메시지가 나타난다
When You Press F6 to Load Drivers During Unattended Win XP Setup
Windows XP 기반 컴퓨터를 다시 시작하면 "STOP 0x0000007B"라는 오류 메시지가 나타난다
Windows XP 설치 중에 F6 키를 사용하여 제한된 OEM 드라이버 지원을 사용할 수 있다



Error code Stop 0x0000007E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
[원인]
1. 윈도우가 잘못된 쓰레드를 생성하여 발생하는 오류다. 원인은 다양할 수 있다.
 
[해결]
2. 하드웨어 호환성, 손상된 장치 드라이버 또는 시스템 서비스 점검, 바이러스, 응용프로그램오류 등을 점검해야 한다.
 
[참고]
심각한 오류(Ctljystk.sys에서 STOP: 0x0000007E 발생)가 나타난다
0x0000007e Error When Registering OLEMSG32.DLL or CDO.DLL Files
Stop: 0x7E 오류가 Windows XP를 종료하려고 할 때 Kbdclass.sys에서 발생한다
Windows XP로 업그레이드한 후 "STOP 0x0000007E" 오류 메시지 발생


Error code Stop 0x0000007F: UNEXPECTED_KERNEL_MODE_TRAPED
[원인]
1. 일반적으로 운영체제상의 커널모드(프로그램실행에 필요한 메모리 관리, 프로세서 관리 데이터 입출력, 하드웨어 제어를 수행)에서 발생하는 에러이다.
2. 과다한 CPU 오버클럭킹으로 인한 열 발생 때문에 오류가 발생한다.

3. BIOS 문제, 또는 화일 시스템 드라이버가 깨졌을 경우 발생한다.(버그 체크의 첫번째 숫자는 trap의 수이다. x86 계열의 trap codes를 살펴본다)
 
[해결]
1. 모든 클럭과 버스 스피드 설정을 처음 설정값으로 변경시켜준다.
2. 크랙된 프로 그램을 쓰는 경우 발생 할 수 있다. 삭제해 본다.
3. 호환성이 부족한 응용프로그램을 인스톨할 경우 발생하는 에러이다.
4. 업데이트를 통하여 해결하거나 패치를 통하여 해결한다.

5. SIMM과 DIMM(메모리)이 같은 스피드나 타입인지 확인하고 연결상태를 확인한다.

6. CMOS setup상태에서 메모리량을 확인하고 CPU 의 스피드를 확인한다.(잘못된 BIOS정보는 NT를 죽게 만들수 있다)

7. 주변기기 및 CPU/Cache/memory/Vram 등을 확인한다.


[참고]
 Windows가 응답하지 않고 "Stop Error 0x7F" 오류 메시지가 나타난다
 

Error code Stop 0x00000079 or MISMATCHED_HAL

[원인]

1. 하드웨어추상화계층(Hardware Abstraction Layer)-입출력 인터페이스, 인터럽트 제어, 다중 프로세서 통신을 구현하는 데 필요한 하드웨어 종속적인 세부 사항을 처리하는 루틴과 커널타입이 맞지 않아 생기는 오류이다.

2. 주로 ACPI 펌웨어 설정이 변경되었을때 자주일어나는 오류이다.

3. 이 에러는 주로 Ntoskrnl.exe 나 Hal.dll 파일이 손상되었을 경우에 일어난다.
4. 듀얼 프로세서 또는 하이퍼 쓰레딩 프로세서의 설정 파일이 맞지 않아 발생할 수 있는 오류다.
 

parameter 1 parameter 2 parameter 3 Description                                         

0×00000001 Release level of Ntoskrnl.exe Release level of Hal.dll PRCB release    

level mismatch                                                                                           

0×00000002 Build type of Ntoskrnl.exe Build type of Hal.dll Build type mismatch


3. 이 에러는 주로 Ntoskrnl.exe 나 Hal.dll 파일이 손상되었을 경우에 일어난다.


[해결]

1. 복구 콘솔에서 두 파일을 복구시켜준다.

2. ACPI 기능을 disable 시켜준후 IRQ를 재설정해준다.



Error code Stop 0x00000080 NMI_HARDWARE_FAILURE
[원인]
1. 원인을 찾기 힘든 오류 중 하나다.
2. 패러티 기반 시스템에서
패러티를 쓰지 않는 램을 사용하거나 패러티/비-패러티 램의 혼용 또는 SIMM과 L2 캐쉬에 의해 문제가 나타난다.


 

[해결]
1. 변경된 적이 있는 장치 드라이버 파일이나 하드웨어를 이전으로 되돌려본다.
2. 램모듈에 결함이 있는지 철저히 점검한다.
3. 바이러스검사와 하드디스크 손상을 진단해 본다.
4. CHKDSK를 실행시켜 파일시스템의 이상을 진단한다.
5. 하드웨어장장착상태와 전기적인 접점을 철저히 확인한다.



Error code Stop 0x0000009C: MACHINE_CHECK_EXCEPTION

[원인]
※ 이 문제는 컴퓨터 프로세서가 복구할 수 없는 하드웨어 오류를 발견하고 이를 Windows XP에 보고한 경우에 발생합니다.

1. 시스템 버스 오류
2. 패리티 또는 오류 수정 코드(ECC) 문제를 포함할 수 있는 메모리 오류
3. 프로세서나 하드웨어의 캐시 오류
4. 프로세서의 TLB(Translation Lookaside Buffer) 오류
5. 다른 특정 CPU 공급업체에서만 발견되는 하드웨어 문제
6. 특정 공급업체에서만 발견되는 하드웨어 문제


[해결]
※ Windows XP와 하드웨어 플랫폼이 어떤 종류의 하드웨어 오류에서 복구할 수 없어 시스템이 더 이상 성공적이고 안정적으로 실행될 수 없게 되면 MCE(Machine Check Exception)가 발생합니다. MCE의 추가 특정한 진단은 어려우며 일반적인 해결 방법이 없습니다.

1. 이 문제를 해결하는 데 도움을 받으려면 하드웨어 제조업체나 컴퓨터 하드웨어 기술자에 문의하십시오.


※ MCE는 다음 조건 중 하나에 의해 자주 발생합니다.

1. 해당 사양 이상인 프로세서나 메인보드를 실행(예: 프로세서나 버스 오버클록킹).
2. 전원에서 잡음이 심하게 나고, 전원 스트립이 과부하되고, 전원 공급 장치에 더 높은 전압이 공급되고, 전원 공급 장치가 고장이 나면 컴퓨터가 불안정해질 수 있습니다. 컴퓨터의 전원 공급 장치가 안정적인지 확인하십시오.

3. 팬 같은 냉각 장치의 고장으로 인한 이상 고온 상태. 냉각 장치가 모두 작동하는지 확인하십시오.
4. 손상된 메모리나 사용 중인 컴퓨터에 올바른 종류가 아닌 메모리. 최근에 메모리 구성을 변경한 경우에 잘못된 것을 확인하려면 이전 구성으로 되돌리십시오.

5. 컴퓨터에 올바른 메모리를 사용하고 있는지 확인하십시오.


[참고]

사용 중인 하드웨어가 MCE(Machine Check Exception)를 캡처하고 보다 특정한 해결 방법을 제안하는 추가 오류 로깅 기능을 지원할 수 있습니다.



Error code Stop 0x0000009F or DRIVER_POWER_STATE_FAILURE

[원인]

1. 작스런 전력변동에 의해 발생하는 에러이다.

2. 시스템 종료 중이나 최대절전모드,대기모드로 진입하는 중 나타 날 수 있다.

3. 컴퓨터에 PACE InterLok 불법 복제 방지 소프트웨어가 설치되어 있는 경우에 발생할 수 있습니다

 InterLok이 Tpkd.sys 드라이버를 설치하는데, 이 드라이브가 표준 플로피 디스크 컨트롤러 장치와 같은 IRQ를 사용합니다.


[해결]

1. shutting down stanby mode hibernate 모드설정을 체크한다.

2. 다음 PACE 웹 사이트를 방문하여 최신 Tpkd.zip 드라이버를 다운로드하고, 파일의 압축을 푼 다음 드라이버를 설치

http://www.paceap.com


[참고]

InterLok은 인터넷을 통해 전자적으로 소프트웨어를 보호, 배포 및 판매하기 위한 도구 세트입니다.

이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 신뢰성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

이 문서에 포함된 다른 공급업체의 연락처 정보는 기술 지원을 받는 데 도움을 주기 위한 것입니다. 이 연락처 정보는 예고 없이 변경될 수 있습니다. Microsoft는 이러한 다른 공급업체 연락처 정보의 정확성을 보증하지 않습니다



Error code Stop 0x000000A5: ACPI_BIOS_ERROR
[원인]
1. ACPI 바이오스에서 발생 하는 오류다. 운영체제수준에서 조치할 수 있는 오류가 아니다.

2. Windows 2000이 컴퓨터의 BIOS가 고급 구성 및 전원 인터페이스(ACPI)와 완벽하게 호환되지 않는 것을 발견하면 이 동작이 발생할 수 있습니다.
 
[해결]
1. 표준 PC 하드웨어 추상화 계층(HAL)을 수동으로 설치합니다.

2. 컴퓨터를 다시 부팅하여 Windows 2000 설치를 다시 시작합니다.
3. Windows 2000 설치가 다시 시작되면 "Press F6 if you need to install a third-party SCSI or RAID driver" 화면이 나타날 때 F7을 누릅니다.
Windows 2000은 ACPI HAL의 설치를 자동으로 사용하지 않도록 하고 표준 PC HAL을 설치합니다. 또한 컴퓨터 제조업체에 문의하여 ACPI가 완벽하게 호환되는 BIOS를 구해야 합니다.

 
Error code Stop 0x000000B4: VIDEO_DRIVER_INIT_FAILURE
[원인]
1. 그래픽카드 드라이버의 손상 등의 문제로 윈도우가 그래픽모드로 진입 할 수 없는 오류다.
 
[해결]
1. 안전모드로 부팅하여 장치드라이버를 점검하고 이전 드라이버로 복원을 시도해 본다.
 
[참고]
“Stop 0x000000B4” The Video Driver Failed to Initialize
“STOP 0x000000B4” or Black Screen During GUI-Mode Setup on Micron Powerdigm XSU



Error code Stop 0x000000BE: ATTEMPTED_WRITE_TO_READONLY_MEMORY
[원인]
1. 장치 드라이버가 읽기전용으로 지정된 메모리 공간에 쓰기를 시도할 경우 나타난다.

2. 대부분 잘못된 드라이버, 시스템서비스, 펌웨어를 설치한 후 나타난다.
 
[해결]
1. 문제의 원인이 될 만한 요소를 사용중지, 제거, 롤백해 본다.
 

 
Error code Stop 0x000000C1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
[원인]
1. 장치드라이버 파일이 허락되지 않은 메모리공간(special memory pool)에 데이터를 쓰는 경우 발생하는 오류
 
[해결]
1. 최신버전의 드라이버로 업그레이드한다.



Error code Stop 0x000000C2: BAD_POOL_CALLER
[원인]
1. 커널모드 프로그램(프로세스) 또는 장치드라이버 파일이 잘못된 메모리 조작을 수행한 경우 발생한다.

2. 주로 잘   못된 장치 드라이버나 버그있는 응용프로그램 때문에 발생한다.
 
[해결]
http://support.microsoft.com/?kbid=265879&sd=RMVP


[참고]
Windows 2000에서 업그레이드할 때 중지 오류 발생: Bad_Pool_Caller 0xC2
Computer with ATI RAGE FURY MAXX Video Adapter Stops Responding After Upgrade to Win XP
 
 
Error code Stop 0x000000C4: DRIVER_VERIFIER_DETECTED_VIOLATION
[원인]
1. 이 오류는 Driver Verifier 가 찾아낸 치명적결함을 가진 일반 버그체크코드를 보여준다. 몇몇 파리메터들도 함께   보여준다.
 
[해결]
http://support.microsoft.com/?kbid=244617&sd=RMVP


 
Error code Stop 0x000000C5: DRIVER_CORRUPTED_EXPOOL
[원인]
1. 대부분 장치드라이버로 인한 오류다.
 
[해결]
1. 최근에 설치한 장치가 정확히 설치되었는지 점검하고 드라이버를 업데이트 한다.
 
 
Error code Stop 0x000000C6: DRIVER_CAUGHT_MODIFYING_FREED_POOL
[원인]
1. 장치드라이버 파일이 freed memory pool에 접근을 시도해서 발생하는 오류
 
[해결]
1. 장치 드라이버를 교체한다.
 
[참고]
http://support.microsoft.com/?kbid=244617&sd=RMVP 
 
 
Error code Stop 0x000000C7: TIMER_OR_DPC_INVALID
[원인]
1. 장치드라이버의 잘못된 동작이 원인이 되어 발생하는 오류.
 
[해결]
http://support.microsoft.com/?kbid=244617&sd=RMVP


 


Error code Stop 0x000000C9: DRIVER_VERIFIER_IOMANAGER_VIOLATION
[원인]
1. 제목에서 원인을 추측할 수 있다. 드라이버 Verifier의 I/O매니져가 보여주는 메세지다.
 
[해결]
http://support.microsoft.com/?kbid=244617&sd=RMVP 
 
 
Error code Stop 0x000000CB: DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS
[원인]
1. 0x00000076 오류메세지 대신 나타날 수 있는 메시지. 블루스크린에 나타나는 드라이버 이름을 주의하여 살펴   봐야 한다

 


Error code Stop 0x000000CE: DRIVER_UNLOADED_WITHOUT_CANCELLING
[원인]
1. 잘못된 장치드라이버나 시스템 서비스를 설치한 후 발생 할 수 있는 오류다.
 
[해결]
1. 장치의 최신 드라이버를 설치하거나 최근 설치된 시스템 서비스를 중단한다.

 
Error code Stop 0x000000D1: DRIVER_IRQL_NOT_LESS_OR_EQUAL
[원인]
1. 잘못된 장치드라이버를 설치한 후 나타날 수 있는 에러이다.

2. 호환되지 않거나 손상된 램, 잘못된 가상메모리로  인해 발생 하기도 한다.
 
[해결]
1.드라이버 롤백기능이나 시스템 복원을 이용해서 이전 드라이버나 윈도우 상태로 복구한다.
2.바이러스 백신 소프트웨어, 백업 프로그램, 멀티미디어 소프트웨어, DVD 관련 프로그램 등을 제거해 본다.
3. RAM 문제나 손상된 가상 메모리 관리자에 대한 오류 메시지
 
[참고]
Windows XP 기반 컴퓨터를 시작하면 "STOP:0xD1" 오류 메시지 발생
컴퓨터를 끄면 Stop 0x000000D1이라는 오류 메시지가 나타난다
컴퓨터를 종료하려고 하면 "STOP 0x000000D1" 오류 메시지가 나타난다
WRQ AtGuard Program Causes Error Message in Win XP
 

 
Error code Stop 0x000000D8: DRIVER_USED_EXCESSIVE_PTES
[원인]
1.주로 PTEs(page table entries)-시스템의 입출력수행의 과도현상 PTEs (메모리 공간에 대한 정보)가 부족하거나 파손되는 경우에 발생 할 수 있는 에러이다.
2.응용프로그램들이 요구하거나 이용할 수 있는 충분한 크기의 메모리블록이 부족    한 경우에 발생하는 에러이다.
3.장치드라이버가 과도한 양의 커널메모리를 요청할 때 나타난다.
 
[해결]
1. 응용프로그램의 드라이버를 업데이트 해본다.
2. 윈도우XP는 PTEs 수를 늘리기 위해 registry entry, system pages를 제공한다


※ PTEs를 늘리기 위한 방법
1. 시작 → 실행 → 열기 → regedit 확인을 눌러 레지스트리 편집기 실행
2. HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Control → Session Manager → Memory Management 에서 pagefoolsize의 값:0, systempages의 값 중 128M 메모리 값: 40000, 256M 메모리 값: 110000으로 변경


 
Error code Stop 0x000000E3: RESOURCE_NOT_OWNED
[원인]
1. NTFS 파일시스템 드라이버의 잘못된 동작에 기인한 오류다.
 
[해결]
1. 최신버전의 서비스팩을 설치해야 한다.
 
 
Error code Stop 0x000000EA: THREAD_STUCK_IN_DEVICE_DRIVER
[원인]
1. 일반적으로 주로 비디오 어댑터에 문제가 발생할 때 나타나는 오류이다. 특히 드라이버를 (비디오 드라이버)를   새로 설치한 후에 나타나는 현상으로 드라이버가 잘못 잡히거나 못 잡을 때 나타나는 에러이다.
 
[해결]
1. 최신 드라이버로 업데이트 하거나 하드웨어 제품 출시 시기에 맞는 드라이브로 재설치 한다.
 
 
Error code Stop 0x000000ED: UNMOUNTABLE_BOOT_VOLUME
[원인]
1. 최신 사양의 ATA 하드디스크에 잘못된 케이블을 장착한 시스템에서 윈도우 업그레이드 시볼 수 있는 오류다.

2. 컴퓨터에서 Ultra Direct Memory Access(UDMA) 컨트롤러를 사용 중인 경우
3. UDMA 드라이브를 컨트롤러에 연결할 때 필요한 80배선 40핀 케이블 대신 표준 40배선 커넥터 케이블을 사용하는 경우
4. 더 빠른 UDMA 모드를 강제하도록 기본 입/출력 시스템(BIOS)을 설정한 경우
5. 간혹 정상적인 시스템에서도 나타날 수 있다.
 
[해결]
1. 40배선 케이블을 80배선 UDMA 케이블로 바꾸십시오.
 
[참고]

이것은 의도적으로 설계된 동작입니다.
이러한 동작은 더 빠른 UDMA 모드에 적절하지 않은 IDE 케이블을 사용하여 발생할 수 있는 잠재적인 데이터 손실을 방지하기 위한 것입니다.  
 
 
Error code Stop 0x000000F2: HARDWARE_INTERRUPT_STORM
[원인]
1. 인터럽트 충돌에 의해 발생하는 메시지이다.
 
[해결]
1. 같은 IRQ를 쓰는 장치를 삭제하고 장치를 다시 잡는다.
 
 
Error code Stop 0x000000F3: DISORDERLY_SHUTDOWN
[원인]
1. 메모리 부족으로 인한 종료 실패 오류다.
 
[해결]
1.가상메모리 양을 충분히 늘려본다.
2.너무 많은 양의 메모리나 가상메모리를 요구하거나 종료를 거부하는 프로그램    혹은 드라이버를 찾아본다.
 
 
Error code Stop 0x000000F4: CRITICAL_OBJECT_TERMINATION
[원인]
1. 윈도우 핵심 프로세서 중 하나가 종료되어 나타나는 오류다. 그 결과로 윈도우에서 아무것도 할 수 없는 상황이   된다.
 
[해결]
1. 이벤트뷰어에서 원인이 될 만한 사항을 조사한다.
 
 
Error code Stop 0x000000FC: ATTEMPTED_EXECUTE_OF_NOEXECUTE_MEMORY
[원인]
1. Mpegport.sys 드라이버가 설치된 상태에서 Windows XP 서비스 팩 2를 설치하면 시스템이 반복적으로 다시 시작된다
 
[해결]
1. 안전모드에서 SP2를 제거하거나 OS를 다시 설치한다



Error code Stop 0x1000007E: SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
[원인]
1. 0x0000007E 와 본질적으로 같은 오류다.
 
 
Error code Stop 0x1000008E: KERNEL_MODE_EXCEPTION_NOT_HANDLED
[원인]
1. 0x0000008E 와 동일한 오류다.
 


Error code Stop 0xC000009A: STATUS_INSUFFICIENT_RESOURCES
[원인]
1. 윈도우 커널의 메모리 사용과 관련된 오류다.
 
[해결]
1. 메모리가 사용 가능한데도 NT가 리소스 부족 오류를 보고한다
 


Error code Stop 0xC0000135: UNABLE TO LOCATE DLL
[원인]
1. 윈도우가 DLL 파일을 로드하는데 실패한 상태를 의미하는 오류다.

2. 파일의 손상이나 제거, 레지스트리가 관련된   문제일 수 있다.
 
[해결]
1.DEPENDENCY WALKER로 손상되거나 사라진 모듈을 찾아본다.
2.레지스트리 복구나 시스템복원을 시도한다.
 
[참고]
시작 시 블루 스크린 중지 메시지 C0000135가 나타난다
Windows XP에서 손상된 레지스트리 복구
 
 

Error code Stop 0xC0000142: DLL Initialization Failure
[원인]
1. 응용프로그램 실행 시 초기화에 실패한 경우 발생한다. 오류의 원인이 되는 모듈의 추적이 가능하다.
 
[해결]
1. DEPENDENCY WALKER로 손상되거나 사라진 모듈을 찾아본다
 
[참고]
Windows XP에서 Easy CD Creator를 실행하면 오류 메시지 발생
STOP 0xC0000142 in User32.dll Occurs on Restart or Upgrade of Windows NT 4.0
STOP: 0xC0000142 User32.dll Message on Restart After Upgrade to Windows NT 4.0
Users Are Automatically Logged Off When Attempting to Log on to Terminal Services
 

 
Error code Stop 0xC0000218: UNKNOWN_HARD_ERROR
[원인]
1. 레지스트리에 설정된 중요파일의 로딩에 실패로 인해 발생하는 오류다.

2. 하드디스크의 손상 또는 관련 하드웨어   의 손상이 원인이 될 수 있다.

3. 레지스트리 데이터가 메모리로 로딩되는 동안 디스크를 사용할 수 없는 상황이거나 메모리에 패리티 오류가 발생한 오류일 가능성도 있다.
 
[해결]
1. 시스템에 누전이 심하면 발생 할 수 있다. 접지해 본다.
2. 오래된 메인보드에서 간혹 볼 수 있다.
3. 하드디스크 손상 또는 케이블을 점검한다.
4. 메모리의 결함을 점검한다.
 
[참고]
http://support.microsoft.com/?kbid=314874&sd=RMVP


 
Error code Stop 0xC000021A: STATUS_SYSTEM_PROCESS_TERMINATED
[원인]
1.윈도우 커널모드의 주요기능(Winlogon 또는 Client Server Runtime Subsystem(CSRSS))을 사용할 수 없는 상태로 전환되어 발생하는 오류다. 위의  주요기능이 실행되지 않으면 윈도우는 정상기능이 불가능해진다.
2. 관리자 계정에서 사용자의 폴더 및 파일 접근권한을 변경한 후에도 발생할 수 있다.
 
[해결]
1. Internet Explorer 6의 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
328548
(http://support.microsoft.com/kb/328548/) Internet Explorer 6용 최신 서비스 팩을 구하는 방법
2. Windows XP용 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
322389 (
http://support.microsoft.com/kb/322389/) 최신 Windows XP 서비스 팩을 구하는 방법
 
 
Error code Stop 0xC0000221: STATUS_IMAGE_CHECKSUM_MISMATCH
[원인]
1. 잘못된 장치드라이버, 손상된 시스템 파일, 디스크 오류, 메모리결함 등의 이유로 발생 할 수 있다.

[해결]
1. 플로피 디스크
WINNT32 /OX 명령(Windows NT)이나 WINNT /OX 명령(MS-DOS)을 사용하여 새로운 Windows NT 설치 플로피 디스크 세트를 만듭니다.

※ Winnt32.exe 및 Winnt.exe 파일은 Windows NT 4.0 CD-ROM의 I386 폴더에 있습니다.

2. 하드 디스크
응급 복구 디스크를 사용하여 다음 Microsoft 기술 자료 문서에 나와 있는 절차에 따라 NTFS 파티션에서 없어졌거나 손상된 드라이버 파일을 대체합니다.


[참고]
Error Message: STOP: C0000221 Unknown Hard Error or STOP: C0000221
Err Msg: STOP: C000026C 장치 드라이버를 로드할 수 없음
"중지: C0000221 알 수 없는 하드 오류" 또는 "중지: C0000221 " 오류 메시지 발생
 
 
Error code Stop 0xC0000244
[원인]
1. CrashOnAuditFail이 실행되면서 정책 변동을 할 때 Stop 0xc0000244 에러가 발생.


[해결]
1. Windows XP용 최신 서비스 팩을 구하십시오. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
322389 (
http://support.microsoft.com/kb/322389/) 최신 Windows XP 서비스 팩을 구하는 방법

 
Error code Stop 0xC000026C

[원인]
1. 장치 드라이버와 관련된 문제다.
Err Msg: STOP: C000026C 장치 드라이버를 로드할 수 없음.


[해결]
1. 장치 드라이버를 하드웨어가 출시된 시점에 맞는 버전으로 설치한다.
 

Error code Stop 0xDEADDEAD: MANUALLY_INITIATED_CRASH1
[원인]
1. 사용자가 커널디버거나 키보드를 이용하여 의도적으로 재현한 블루스크린.

원본출처:http://blog.naver.com/webmaster23/10020180515

Posted by shunman

계정 로그온 이벤트

표 1은 계정 로그온 이벤트 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 1: 계정 로그온 이벤트 감사

이벤트 ID 이벤트 설명

672

AS(인증 서비스) 티켓이 성공적으로 발급되어 유효성이 검사되었습니다.

673

TGS(Ticket Granting Service) 티켓이 발급되었습니다. TGS는 도메인에 있는 특정 서비스에서 인증을 받을 수 있도록 하는 Kerberos 버전 5 티켓 부여 서비스 TGS에 의해 발급된 티켓입니다.

674

보안 사용자가 AS 티켓 또는 TGS 티켓을 갱신했습니다.

675

사전 인증이 실패했습니다. 이 이벤트는 사용자가 잘못된 암호를 입력할 때 KDC(키 배포 센터)에서 생성됩니다.

676

인증 티켓 요청이 실패했습니다. 이 이벤트는 Windows XP Professional 또는 Windows Server 제품군 제품에서는 생성되지 않습니다.

677

TGS 티켓이 발급되지 않았습니다. 이 이벤트는 Windows XP Professional 또는 Windows Server 제품군 제품에서는 생성되지 않습니다.

678

계정이 도메인 계정에 성공적으로 매핑되었습니다.

681

로그온 실패. 도메인 계정 로그온이 시도되었습니다. 이 이벤트는 Windows XP Professional 또는 Windows Server 제품군 제품에서는 생성되지 않습니다.

682

연결이 끊긴 터미널 서버 세션에 사용자가 다시 연결되었습니다.

683

사용자가 로그오프하지 않고 터미널 서버 세션과의 연결을 끊었습니다.

페이지 위쪽페이지 위쪽

계정 관리 이벤트

표 2는 계정 관리 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 2: 계정 관리 감사 이벤트

이벤트 ID 이벤트 설명

624

사용자 계정이 만들어졌습니다.

627

사용자 암호가 변경되었습니다.

628

사용자 암호가 설정되었습니다.

630

사용자 계정이 삭제되었습니다.

631

글로벌 그룹이 만들어졌습니다.

632

글로벌 그룹에 구성원이 추가되었습니다.

633

글로벌 그룹에서 구성원이 제거되었습니다.

634

글로벌 그룹이 삭제되었습니다.

635

새 로컬 그룹이 만들어졌습니다.

636

로컬 그룹에 구성원이 추가되었습니다.

637

로컬 그룹에서 구성원이 제거되었습니다.

638

로컬 그룹이 삭제되었습니다.

639

로컬 그룹 계정이 변경되었습니다.

641

글로벌 그룹 계정이 변경되었습니다.

642

사용자 계정이 변경되었습니다.

643

도메인 정책이 수정되었습니다.

644

사용자 계정이 자동으로 잠겼습니다.

645

컴퓨터 계정이 만들어졌습니다.

646

컴퓨터 계정이 변경되었습니다.

647

컴퓨터 계정이 삭제되었습니다.

648

보안이 비활성화된 로컬 보안 그룹이 만들어졌습니다.
참고: 공식적인 이름에 SECURITY_DISABLED가 포함되어 있으면 액세스 검사에서 사용 권한을 부여하는 데 이 그룹을 사용할 수 없습니다.

649

보안이 비활성화된 로컬 보안 그룹이 변경되었습니다.

650

보안이 비활성화된 로컬 보안 그룹에 구성원이 추가되었습니다.

651

보안이 비활성화된 로컬 보안 그룹에서 구성원이 제거되었습니다.

652

보안이 비활성화된 로컬 그룹이 삭제되었습니다.

653

보안이 비활성화된 글로벌 그룹이 만들어졌습니다.

654

보안이 비활성화된 글로벌 그룹이 변경되었습니다.

655

보안이 비활성화된 글로벌 그룹에 구성원이 추가되었습니다.

656

보안이 비활성화된 글로벌 그룹에서 구성원이 제거되었습니다.

657

보안이 비활성화된 글로벌 그룹이 삭제되었습니다.

658

보안이 활성화된 유니버설 그룹이 만들어졌습니다.

659

보안이 활성화된 유니버설 그룹이 변경되었습니다.

660

보안이 활성화된 유니버설 그룹에 구성원이 추가되었습니다.

661

보안이 활성화된 유니버설 그룹에서 구성원이 제거되었습니다.

662

보안이 활성화된 유니버설 그룹이 삭제되었습니다.

663

보안이 비활성화된 유니버설 그룹이 만들어졌습니다.

664

보안이 비활성화된 유니버설 그룹이 변경되었습니다.

665

보안이 비활성화된 유니버설 그룹에 구성원이 추가되었습니다.

666

보안이 비활성화된 유니버설 그룹에서 구성원이 제거되었습니다.

667

보안이 비활성화된 유니버설 그룹이 삭제되었습니다.

668

그룹 종류가 변경되었습니다.

684

관리 그룹 구성원의 보안 설명자가 설정되었습니다.
참고: 도메인 컨트롤러에서 60분마다 백그라운드 스레드는 관리 그룹의 모든 구성원(예: 도메인, 엔터프라이즈 및 스키마 관리자)을 검색한 후 구성원에 고정된 보안 설명자를 적용합니다. 이 이벤트는 기록됩니다.

685

계정 이름이 변경되었습니다.

페이지 위쪽페이지 위쪽

디렉터리 서비스 액세스 이벤트

표 3은 디렉터리 서비스 액세스 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 3: 디렉터리 서비스 액세스 이벤트 감사

이벤트 ID 이벤트 설명

566

일반 개체 작업이 발생했습니다.

페이지 위쪽페이지 위쪽

로그온 이벤트 감사

표 4는 로그온 이벤트 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 4: 로그온 이벤트 감사

이벤트 ID 로그온 이벤트 감사

528

컴퓨터에 성공적으로 로그온했습니다.

529

로그온 실패. 알 수 없는 사용자 이름을 사용하거나 사용자 이름은 알 수 있지만 잘못된 암호를 사용하여 로그온을 시도했습니다.

530

로그온 실패. 허용되는 시간을 초과하여 로그온을 시도했습니다.

531

로그온 실패. 비활성화된 계정을 사용하여 로그온을 시도했습니다.

532

로그온 실패. 사용 기간이 만료된 계정을 사용하여 로그온을 시도했습니다.

533

로그온 실패. 지정된 컴퓨터에서 로그온이 허용되지 않은 사용자가 로그온을 시도했습니다.

534

로그온 실패. 허용되지 않는 암호 유형으로 로그온을 시도했습니다.

535

로그온 실패. 지정된 계정의 암호 사용 기간이 만료되었습니다.

536

로그온 실패. Net Logon 서비스가 활성 상태에 있지 않습니다.

537

로그온 실패. 다른 이유 때문에 로그온 시도가 실패했습니다.
참고: 로그온 실패의 원인을 알 수 없는 경우도 있습니다.

538

로그오프 프로세스가 완료되었습니다.

539

로그온 실패. 로그온하려고 할 때 계정이 잠겨 있었습니다.

540

네트워크에 성공적으로 로그온했습니다.

541

로컬 컴퓨터와 나열된 피어 ID 간에 주 모드 IKE(인터넷 키 교환) 인증이 완료되었거나(보안 연결 설정) 빠른 모드를 통해 데이터 채널이 설정되었습니다.

542

데이터 채널이 종료되었습니다.

543

주 모드가 종료되었습니다.
참고: 이 문제는 보안 연결 만료 시간 제한(기본값은 8시간임), 정책 변경 또는 피어 종료 등의 원인으로 발생할 수 있습니다.

544

피어가 유효한 인증서를 제공하지 않았거나 서명의 유효성이 검증되지 않았으므로 주 모드 인증이 실패했습니다.

545

Kerberos 실패 또는 유효하지 않은 암호로 인해 주 모드 인증이 실패했습니다.

546

피어를 인증하지 못했으므로 IKE 보안 연결을 성립하지 못했습니다. 유효하지 않은 데이터가 포함된 패킷이 수신되었습니다.

547

IKE 핸드셰이크 중에 오류가 발생했습니다.

548

로그온 실패. 트러스트된 도메인에서 가져온 SID(보안 식별자)가 클라이언트의 계정 도메인 SID와 일치하지 않습니다.

549

로그온 실패. 포리스트의 인증 중에 트러스트되지 않은 네임스페이스에 해당하는 모든 SID가 걸러졌습니다.

550

DoS(서비스 거부) 공격이 발생했을 수 있음을 나타내는 알림 메시지입니다.

551

사용자가 로그오프 프로세스를 시작했습니다.

552

다른 사용자로 이미 로그온한 상태에서 명시적인 자격 증명을 사용하여 컴퓨터에 성공적으로 로그온했습니다.

682

연결이 끊긴 터미널 서버 세션에 사용자가 다시 연결되었습니다.

683

사용자가 로그오프하지 않고 터미널 서버 세션과의 연결을 끊었습니다. 참고: 이 이벤트는 사용자가 네트워크를 통해 터미널 서버 세션에 연결되어 있을 때 생성됩니다. 이 이벤트는 터미널 서버에 나타납니다.

페이지 위쪽페이지 위쪽

개체 액세스 이벤트

표 5는 개체 액세스 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 5: 개체 액세스 이벤트 감사

이벤트 ID 이벤트 설명

560

이미 존재하는 개체에 대한 액세스가 허가되었습니다.

562

개체에 대한 핸들이 닫혔습니다.

563

삭제할 목적으로 개체를 열려고 했습니다.
참고: 이 이벤트는 Createfile()에 FILE_DELETE_ON_CLOSE 플래그가 지정되어 있을 때 파일 시스템에서 사용됩니다.

564

보호된 개체가 삭제되었습니다.

565

이미 존재하는 개체 유형에 액세스가 허가되었습니다.

567

핸들과 연결된 사용 권한이 사용되었습니다.
참고: 허가된 특정 사용 권한(읽기, 쓰기 등)으로 핸들이 만들어졌습니다. 핸들이 사용될 때 사용된 각 사용 권한에 대해 최대 1개의 감사 이벤트가 생성됩니다.

568

감사 중인 파일에 대한 하드 링크를 만들려고 시도했습니다.

569

권한 부여 관리자의 리소스 관리자가 클라이언트 컨텍스트를 만들려고 시도했습니다.

570

클라이언트가 개체에 액세스하려고 시도했습니다.
참고: 개체에 대해 시도된 모든 작업에 대해 이벤트가 생성됩니다.

571

권한 부여 관리자 응용 프로그램에 의해 클라이언트 컨텍스트가 삭제되었습니다.

572

권한 부여 관리자가 응용 프로그램을 초기화했습니다.

772

인증서 관리자가 대기된 인증서 요청을 거부했습니다.

773

인증서 서비스에서 다시 제출된 인증서 요청을 받았습니다.

774

인증서 서비스에서 인증서를 취소했습니다.

775

인증서 서비스에서 인증서 해지 목록(CRL)을 게시하도록 요청받았습니다.

776

인증서 서비스에서 CRL을 게시했습니다.

777

인증서 요청 확장이 만들어졌습니다.

778

하나 이상의 인증서 요청 특성이 변경되었습니다.

779

인증서 서비스에서 시스템 종료를 요청받았습니다.

780

인증서 서비스 백업이 시작되었습니다.

781

인증서 서비스 백업이 완료되었습니다.

782

인증서 서비스 복원이 시작되었습니다.

783

인증서 서비스 복원이 완료되었습니다.

784

인증서 서비스가 시작되었습니다.

785

인증서 서비스가 중지되었습니다.

786

인증서 서비스의 보안 권한이 변경되었습니다.

787

인증서 서비스에서 저장된 키를 검색했습니다.

788

인증서 서비스에서 인증서를 데이터베이스로 가져왔습니다.

789

인증서 서비스의 감사 필터가 변경되었습니다.

790

인증서 서비스에서 인증서 요청을 받았습니다.

791

인증서 서비스에서 인증서 요청을 승인했으며 인증서를 발행했습니다.

792

인증서 서비스에서 인증서 요청을 거부했습니다.

793

인증서 서비스에서 인증서 요청 상태를 대기 중으로 설정했습니다.

794

인증서 서비스의 인증서 관리자 설정이 변경되었습니다.

795

인증서 서비스에서 구성 항목이 변경되었습니다.

796

인증서 서비스의 속성이 변경되었습니다.

797

인증서 서비스에서 키를 저장했습니다.

798

인증서 서비스에서 키를 가져와서 저장했습니다.

799

인증서 서비스에서 Microsoft Active Directory 디렉터리 서비스에 CA(인증 기관) 인증서를 게시했습니다.

800

인증서 데이터베이스에서 하나 이상의 행이 삭제되었습니다.

801

역할 구분이 사용되었습니다.

페이지 위쪽페이지 위쪽

정책 변경 이벤트 감사

표 6는 정책 변경 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 6: 정책 변경 이벤트 감사

이벤트 ID 이벤트 설명

608

사용자 권한이 할당되었습니다.

609

사용자 권한이 제거되었습니다.

610

다른 도메인과의 트러스트 관계가 형성되었습니다.

611

다른 도메인과의 트러스트 관계가 제거되었습니다.

612

감사 정책이 변경되었습니다.

613

IPSec(인터넷 프로토콜 보안) 정책 에이전트가 시작되었습니다.

614

IPSec 정책 에이전트가 비활성화되었습니다.

615

IPSec 정책 에이전트가 변경되었습니다.

616

IPSec 정책 에이전트가 심각한 오류 가능성을 감지했습니다.

617

Kerberos 버전 5 정책이 변경되었습니다.

618

암호화된 데이터 복구 정책이 변경되었습니다.

620

다른 도메인과의 트러스트 관계가 수정되었습니다.

621

계정에 시스템 액세스 권한이 부여되었습니다.

622

계정에서 시스템 액세스 권한이 제거되었습니다.

623

사용자 기준으로 감사 정책이 설정되었습니다.

625

사용자 기준으로 감사 정책이 새로 고쳐졌습니다.

768

한 포리스트의 네임스페이스 요소와 다른 포리스트의 네임스페이스 요소 간에 충돌이 감지되었습니다.
참고: 한 포리스트의 네임스페이스 요소가 다른 포리스트의 네임스페이스 요소와 중복되면 해당 네임스페이스 요소에 속하는 이름을 확인할 때 명확성이 떨어질 수 있습니다. 이러한 중복 상황을 충돌이라고도 합니다. 각 항목 형식에 대해 모든 매개 변수가 유효한 것은 아닙니다. 예를 들어 DNS 이름, NetBIOS 이름 및 SID 같은 필드는 'TopLevelName' 형식의 항목에는 유효하지 않습니다.

769

트러스트된 포리스트 정보가 추가되었습니다.
참고: 이 이벤트 메시지는 포리스트 트러스트 정보가 업데이트되고 하나 이상의 항목이 추가될 때 생성됩니다. 추가, 삭제 또는 수정된 각 항목에 대해 하나의 이벤트 메시지가 생성됩니다. 포리스트 트러스트 정보를 한 번 업데이트할 때 여러 항목이 추가, 삭제 또는 수정되면 생성된 모든 이벤트 메시지에 작업 ID라고 하는 단일 고유 식별자가 할당됩니다. 따라서 생성된 여러 이벤트 메시지가 단일 작업의 결과라는 사실을 확인할 수 있습니다. 각 항목 형식에 대해 모든 매개 변수가 유효한 것은 아닙니다. 예를 들어 DNS 이름, NetBIOS 이름 및 SID 같은 매개 변수는 'TopLevelName' 형식의 항목에는 유효하지 않습니다.

770

트러스트된 포리스트 정보가 삭제되었습니다.
참고: 이벤트 769의 이벤트 설명을 참고하십시오.

771

트러스트된 포리스트 정보가 수정되었습니다.
참고: 이벤트 769의 이벤트 설명을 참고하십시오.

805

이벤트 로그 서비스에서 세션에 대한 보안 로그 구성을 읽었습니다.

페이지 위쪽페이지 위쪽

권한 사용 이벤트

표 7는 권한 사용 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 7: 권한 사용 이벤트

이벤트 ID 이벤트 설명

576

지정된 권한이 사용자 액세스 토큰에 추가되었습니다.
참고: 이 이벤트는 사용자가 로그온할 때 생성됩니다.

577

권한이 있는 시스템 서비스 작업을 수행하려고 했습니다.

578

보호된 개체에 대해 이미 열린 핸들에서 권한이 사용되었습니다.

페이지 위쪽페이지 위쪽

세부 추적 이벤트

표 8는 프로세스 추적 감사 보안 템플릿 설정에 의해 생성되는 보안 이벤트를 보여 줍니다.

표 8: 프로세스 추적 이벤트 감사

이벤트 ID 이벤트 설명

592

새 프로세스를 만들었습니다.

593

프로세스를 끝냈습니다.

594

개체에 대한 핸들이 중복되었습니다.

595

개체를 간접적으로 액세스할 수 있습니다.

596

데이터 보호 마스터 키가 백업되었습니다.
참고: 마스터 키는 CryptProtectData 및 CryptUnprotectData 루틴과 EFS(암호화 파일 시스템)에서 사용됩니다. 새 마스터 키가 만들어질 때마다 마스터 키가 백업됩니다. 기본 설정은 90일입니다. 이 키는 일반적으로 도메인 컨트롤러에 의해 백업됩니다.

597

복구 서버에서 데이터 보호 마스터 키가 복구되었습니다.

598

감사 가능 데이터가 보호되었습니다.

599

감사 가능 데이터가 보호 해제되었습니다.

600

프로세스에 기본 토큰이 할당되었습니다.

601

사용자가 서비스를 설치하려고 시도했습니다.

602

스케줄러 작업이 만들어졌습니다.

페이지 위쪽페이지 위쪽

시스템 이벤트 감사

표 9는 시스템 이벤트 감사 보안 템플릿 설정에 의해 생성되는 시스템 이벤트를 보여 줍니다.

표 9: 시스템 이벤트 감사

이벤트 ID 이벤트 설명

512

Windows를 시작하고 있습니다.

513

Windows를 종료하고 있습니다.

514

LSA(로컬 보안 기관)가 인증 패키지를 로드했습니다.

515

신뢰할 수 있는 로그온 프로세스가 로컬 보안 권한으로 등록되었습니다.

516

보안 이벤트 메시지 대기열에 할당된 내부 리소스가 없으므로 일부 보안 이벤트 메시지가 손실됩니다.

517

감사 로그가 삭제되었습니다.

518

보안 계정 관리자가 알림 패키지를 로드했습니다.

519

프로세스에서 클라이언트를 가장하고 응답을 보내거나 클라이언트 주소 공간에서 읽거나 쓰려고 할 때 잘못된 LPC(로컬 프로시저 호출) 포트를 사용하고 있습니다.

520

시스템 시간이 변경되었습니다.
참고: 이 감사는 일반적으로 두 번 나타납니다.

Posted by shunman
 Ctrl+Shift+Enter                      UAC관리자 모드로 실행합니다
                     
 Ctrl+Shift+Esc                        작업 관리자를 실행합니다                     

 윈도우키 + 숫자 1에서 0까지   작업표시줄에 있는 빠른실행 아이콘에 있는 순서대로
                                               프로그램을 실행합니다

시작+Tab                                 창전환 모르(Flip 3D)를 실행합니다

Ctrl+윈도우키+Tab                   일반적인 작업전환창을 실행하지만 창전환을 하거나
                                               ESC키를 누르기전까지 없어지지 않는 작업전환창을
                                               실행합니다

(아이콘을 선택한 상태에서)Alt+Enter       아이콘의 속성(등록정보)를 엽니다

Shift+우클릭                 추가적인 옵션이 더 나오는데 어떤기능인지는 잘모르겠습니다 ^^;

윈도우키+Spacebar                 실행중인 모든 가젯이 화면의 제일 앞으로 나오게됩니다
                                               다시 한번 누르면 다시 사라집니다

윈도우키+T                              실행중인 프로그램의 미리보기창을 볼수 있습니다.
                                               누를때마다 창이 바뀌게 됩니다

윈도우키 + X                            모바일센터를 실행합니다
Posted by shunman

윈도우 운영체제를 사용하다 보면 많이들 위의 용어를 보셨을겁니다.
헷갈리는듯 하면서도 알듯한 용어인데요   설명을 보겠습니다.

RTM 은 Release To Manufacturer 의 약자로 PC제조업체에 제공되는 일반적인 버전입니다.
프로그램의 완전한 공개버전으로서 정식버전이지만 제조업체에 공개되는 제품으로 쓰입니다

RTM버전은 OS 프로그램에 수정을 전혀 가하지 않고 제공합니다.

OEM 은 Original Equipment Manufacturer 의 약자로 RTM으로 제공된 프로그램에 약간의
수정(제조회사 로고 표기라던지 전용 프로그램-유틸리티 첨가)을 가하여 제조회사에서 자체적으로 제공하는 방식입니다 가장일반적으로 말하면 OS 복구 CD가 OEM버전에 해당됩니다

Retail 버전은 말 그대로 정품입니다.  일반 PC사용자들을 대상으로 판매되는 제품으로서
RTM 또는 OEM과 기능상의 차이는 전혀 없습니다. 오로지 개인사용자들을 위해 판매되는
제품으로 고객지원이라던지 사용자 사용권에서 기업판인 RTM이나 OEM과 약간 다를뿐입니다

위의 3가지는 단순히 제공되는 OS프로그램이 기업용으로 제공되는것이냐  일반 사용자를 위한것이냐로 구분되는것이었고  지금 설명 드리는 VL( Volume License)는  프로그램의 사용권에 대해서 구분을 짓는것입니다.   다시 설명하면 시디키라고 볼수 있죠.

보통 일반 사용자들은 OS를 구입하면 운영체제 CD한장 사용자 매뉴얼 한장 그리고 시디키가 적힌 용지 한장 이렇게 주어집니다. 그런데 이걸 만일 100장 500장 1000장 단위로 구입을 한다면? 또 다시 CD 몇백장  매뉴얼 몇백장 시디키 적힌 종이가 몇백장 이렇게 나갈겁니다.
여기에 제품인증을 위한 제품등록까지 한다면?  끔직할겁니다

그래서 나온것이 볼륨라이센스라고 하는 방식입니다.  간단하게 CD는 몇장만 주고  시리얼이
적힌 리스트를 줍니다. 그리고 제품등록은 시디키 자체에 되어있으므로 추가적인 제품등록같은것은 할 필요가 없습니다.  그러므로 보통 규모가 큰 회사나 중소 사업장같은 곳에서 대량으로 프로그램을 구입할때 이용하는 방법이기도 하지요.

그럼 볼륨라이센스는 회사에서만 구입할수 있느냐? 아닙니다. 개인사용자도 볼륨라이센스 버전으로 구입을 할수 있습니다만 최소 판매단위가 5카피 단위, 즉 운영체제 5개가 들은 묶음버전이 최소판매 단위기 때문에 개인사용자는 구입할 일이 없겠죠? 만약 집에서 컴퓨터가 5대인데 5대용으로 프로그램을 구입하신다면 볼륨라이센스는 가장 최적의 선택일것입니다.

Posted by shunman
Windows XP 시리얼키를 바꿀수 있게 도와주는 키변경 프로그램입니다
MS에서 제공하는 프로그램으로 안심하고 사용하실수 있습니다.



파일을 실행하면 아래와 같은 창이 나옵니다. 다음을 눌러줍니다.
사용자 삽입 이미지

버튼을 누르면 시스템 검사를 합니다.
사용자 삽입 이미지

잠시 기다리면 이제 시리얼키를 바꿀수 있는 입력칸이 나옵니다.
사용자 삽입 이미지

여기에 알맞는 시리얼키를 입력하시고 다음을 버튼을 누른후 마침을 눌러서 재부팅 하시면 됩니다.
Posted by shunman


이글은 Microsoft MSDN에서 보실수 있습니다.
http://www.microsoft.com/korea/msdn/library/ko-kr/bb330925(VS.80).aspx
 




플랫폼으로서의 Windows 소개

Rich Tebb

Content Master Ltd

2007년 2월

목차


개요

Visual Studio Express Edition 제품군은 쉽게 익힐 수 있는 간단하고 간편한 무료 프로그래밍 도구 모음을 제공하며, 취미로 개발하는 일반 사용자, 초보 개발자 및 예비 개발자를 대상으로 만들어졌습니다. 이들 중에는 컴퓨터 과학 분야에 대해 정규 교육을 받은 적이 없고 실제로 프로그래밍 경험이 전무한 사람이 많습니다. 여기에 해당하는 독자라면 이제 걱정하지 마십시오. 이 기사를 통해 여러분을 프로그래밍의 세계로 안내해 드리겠습니다.

이 초보자 가이드는 컴퓨터 프로그래밍에 대한 지식이 거의 없거나 전무한 상태로 Visual Studio Express 도구를 사용한 프로그래밍에 도전하려는 독자를 대상으로 작성되었습니다. 따라서 프로그래밍 경험이 풍부한 독자에게는 크게 도움이 되지 않을 수 있습니다.

그러면 이 가이드에서는 어떤 내용을 배우게 될까요? Microsoft Windows 컴퓨터에서 실행할 수 있는 프로그램을 작성하려는 경우 이 가이드에서 구체적인 방법을 이해하는 데 도움이 되는 기본 개념을 배울 수 있습니다. 자세한 내용을 정리하면 다음과 같습니다.

  • 컴퓨터의 작동 원리

  • 하드웨어와 소프트웨어의 차이

  • 운영 체제의 정의

  • 컴퓨터 프로그램의 실행 원리

  • 프로그램의 구성 요소 파트란?

이 가이드는 Microsoft Windows 프로그램 실행 환경을 이해하는 데 도움을 주기 위해 작성되었습니다. 프로그램의 작동 방식은 실행되는 컴퓨터, 운영 체제, 사용자의 프로그램 사용 방식 등 여러 가지 요인에 따라 달라집니다. 이러한 컴퓨터 프로그램의 환경을 플랫폼이라고 합니다. 프로그래밍 환경을 이해하면 컴퓨터가 프로그램을 해석하는 방식을 파악할 수 있으므로 프로그램을 보다 쉽게 배울 수 있고 궁극적으로는 더 나은 프로그램을 작성할 수 있습니다.

이 가이드에서는 이러한 프로그래밍 환경으로서의 Microsoft Windows 플랫폼에 대해 설명합니다. 따라서 이 문서의 내용은 Windows에서 실행되고 Microsoft Windows를 실행하는 사용자가 사용하는 프로그램, 즉 Windows 응용 프로그램에 적용됩니다. 브라우저를 사용하여 액세스하는 응용 프로그램을 작성할 때는 Windows 응용 프로그램이 아니라 웹 응용 프로그램을 만들어야 합니다. 이 경우에는 관련 기사인 "플랫폼으로서의 웹 소개"를 읽어 보시기 바랍니다. 이 기사를 통해 응용 프로그램 플랫폼으로서의 World Wide Web에 대한 정보를 얻을 수 있습니다.


컴퓨터의 작동 원리

컴퓨터는 여러 가지 고급 기술 구성 요소로 이루어져 있지만 기본적인 작동 원리는 매우 간단할 뿐만 아니라 20세기 중반 전자 컴퓨터가 처음 발명된 이래 거의 변하지 않았습니다. 컴퓨터에는 다음과 같은 세 가지 주요 기능 영역이 있습니다.

  • 입/출력. 컴퓨터에 연결되어 컴퓨터와 '외부 세계'(컴퓨터의 관점에서)의 상호 작용 또는 의사 소통 수단을 제공하는 모든 장치를 말합니다. 입력 장치의 예로는 키보드, 마우스, 조이스틱 등이 있고, 출력 장치의 예로는 모니터, 프린터, 사운드 카드 등이 있습니다.

  • 메모리. 컴퓨터에서 정보 저장 기능을 제공하는 부분입니다. 컴퓨터의 메모리는 바이트라는 수천 개의 작은 단위로 나누어져 있으며 컴퓨터에서 관리되는 모든 데이터는 하나 이상의 바이트에 저장됩니다. 이러한 바이트는 벌집의 구멍 하나에 비유할 수 있습니다. 수많은 우편 사서함과 같이 각 구멍(바이트)에는 컴퓨터가 데이터를 가져오고 저장하는 데 사용하는 고유한 메모리 위치, 즉 주소가 할당되어 있습니다. 그리고 각 바이트 안에는 컴퓨터가 처리할 수 있는 숫자가 들어 있습니다.

  • 중앙 처리 장치. CPU(중앙 처리 장치)는 컴퓨터의 '두뇌'에 해당하는 부분으로, 모든 계산을 수행하고 메모리와 입/출력 장치의 작업을 제어합니다.


명령 주기

컴퓨터는 메모리나 입력 장치에서 CPU로 바이트를 복사하고 이 바이트에 대한 계산을 수행한 후 계산 결과를 메모리나 입력 장치로 다시 복사하는 방식으로 작동합니다. 이러한 프로세스는 다음과 같은 주기로 계속 반복됩니다.

이러한 데이터 처리 주기를 실행하기 위해서는 명령을 통해 컴퓨터에 읽고 쓸 데이터와 수행할 계산을 지시해야 합니다. 명령은 데이터를 읽을(메모리에서 데이터를 가져올) 위치나 데이터를 쓸(메모리에 데이터를 저장할) 위치와 액세스할 입력 또는 출력 장치를 CPU에 알려 주는 역할을 합니다. 컴퓨터 메모리에 이미지 또는 사운드와 같은 외부 항목을 나타내는 정보가 저장되는 방법은 이 기사의 뒷부분에서 살펴봅니다.

컴퓨터에서 실행되는 명령은 다른 데이터와 마찬가지로 단순히 숫자에 불과하며 컴퓨터의 메모리에 저장됩니다. CPU는 실행할 다음 명령이 있는 메모리 위치(주소)를 내부 레코드에 항상 유지합니다. 그리고 한 명령을 완료하면 메모리에서 다음 명령을 읽고 그 다음 명령을 가리키도록 레코드를 업데이트합니다. 레코드를 업데이트한 후에는 방금 메모리에서 읽어온 명령을 처리할 수 있습니다.

한마디로 컴퓨터 프로그램은 CPU에 대한 명령이 포함된 일련의 바이트일 뿐입니다. 컴퓨터가 프로그램을 실행할 때는 명령 바이트의 집합 내에서 순차적으로 이동하면서 각 명령을 CPU에 로드하고 해당 명령을 수행한 후 다음 명령을 CPU로 가져옵니다. 이러한 동작은 자동으로 실행되므로 프로그램 자체에서 항상 CPU에 다음 명령으로 이동하도록 지시할 필요는 없습니다.

그러나 명령을 통해 CPU에 내부 레코드를 수정하도록 지시하여 다음 명령을 다른 주소에서 읽게 할 수는 있습니다. '점프'라고 하는 이러한 명령을 사용하면 상황에 따라 컴퓨터가 다른 작업을 수행하도록 할 수 있습니다. 몇 가지 명령과 컴퓨터에서 이를 사용하는 방법을 예로 들어 컴퓨터 내에서 명령이 작동하는 방식을 살펴보도록 하겠습니다.

위 그림은 CPU 명령(하위 섹션)과 데이터(상위 섹션)가 있는 몇 개의 컴퓨터 메모리 바이트를 보여 줍니다.

그림에 나와 있는 메모리의 하위 섹션에는 CPU 명령의 숫자 값이 파란색 텍스트로 표시되어 있습니다. 숫자 값 옆에 어느 정도 알아볼 수 있는 텍스트 형식으로 CPU 명령을 표현했습니다.

CPU 명령은 하위 메모리 위치(그림의 아래쪽)에서 시작하여 위쪽 방향으로 읽히며, CPU에 다음 작업을 수행하도록 지시합니다.

read [8000] 주소 8000의 값을 CPU로 읽습니다.
sub 100 CPU에 로드된 값에서 100을 뺍니다. 앞서 CPU로 읽어 들인 값이 빼기 연산의 결과 값으로 바뀝니다.
cmp 121 CPU의 현재 값을 121과 비교합니다.
jne +8 CPU 값이 121과 같지 않으면 현재 명령에서 8바이트 앞(주소 2020)으로 이동하여 이 메모리 위치에 들어 있는 명령을 실행합니다. 여기서 jne는 Jump Not Equal을 나타냅니다.

CPU 값이 121이면 CPU가 점프하지 않고 순서상 다음 메모리 위치(이 예의 경우 2016)에서 명령을 계속 읽습니다.
jmp [2038] 주소 2038로 이동하여 이 메모리 위치에 들어 있는 명령을 실행합니다.
write [8842] CPU의 값을 메모리 위치 8842에 기록합니다.

이제 끝났습니다. 이렇게 단순한 숫자 처리만으로 컴퓨터가 어떻게 매일 워드 프로세싱이나 인터넷 검색과 같은 모든 작업을 수행하는지 상상하기가 쉽지 않을 것입니다. 걱정하지 마십시오. 이 부분이 가장 복잡한 내용이긴 하지만 약간의 설명만 더 읽으면 충분히 이해할 수 있습니다.

과제: 간단한 과제로서 위의 예에서 어떠한 현상이 발생할지 파악해 보시기 바랍니다. 메모리 위치 8000에 있는 값이 221이라는 가정 하에 CPU 명령 실행 과정에 따라 다음 질문에 답해 보십시오.

  • 메모리 위치 8842에 기록되는 값은 무엇입니까?

  • 메모리 위치 8878에 기록되는 값은 무엇입니까?

이 기사를 모두 읽으면 쉽게 답을 찾을 수 있을 것입니다.


입력 및 출력 장치

컴퓨터가 단순히 메모리의 명령을 처리하기만 한다면 별로 쓸모가 없을 것입니다. 다양한 용도에 활용하기 위해서는 사용자가 수행할 계산을 지정할 수 있도록 하고, 계산 결과를 표시함으로써 사용자와 컴퓨터 간의 상호 작용 수단을 제공해야 합니다.

컴퓨터와의 상호 작용은 입/출력 장치라는 구성 요소를 통해 이루어집니다. 예를 들어 키보드의 경우 키를 눌렀을 때 컴퓨터가 어느 키가 눌려졌는지를 읽을 수 있으므로 입력 장치에 해당합니다. 컴퓨터의 관점에서 보면 키 입력은 들어오는 정보에 해당하기 때문입니다. 반면에 모니터는 컴퓨터가 정보를 내보내 계산 결과를 표시하는 데 사용하므로 출력 장치에 해당합니다.

컴퓨터가 여러 위치 간에 바이트를 복사하는 작업만 수행한다면 이러한 장치와 어떻게 상호 작용할 수 있는지 궁금할 것입니다. 간단히 답하면 입력 및 출력 정보는 바이트로 표현할 수 있기 때문에 상호 작용이 가능합니다. 예를 들어 키보드의 각 키에는 고유한 숫자 값이 할당되어 있어 컴퓨터가 키를 식별하고 메모리 위치에 이 숫자를 저장할 수 있습니다.

조금 이해하기 어렵겠지만, 컴퓨터의 입장에서 보면 독자 여러분이 지금 모니터에서 보는 정보는 일련의 바이트일 뿐입니다. 화면에 있는 각각의 점(픽셀)은 모니터에서 해당 픽셀에 표시할 색을 나타내는 몇 개의 바이트로 표현됩니다.

사실 컴퓨터가 표시하거나 저장하는 사진, 비디오, 노래, 워드 프로세싱 문서 등의 모든 정보는 디지털 표현이라는 바이트 집합이라고 할 수 있습니다. 영화 매트릭스에서 녹색의 0과 1이 검은 화면에 흘러내리는 이미지를 볼 수 있는데, 컴퓨터에서는 모든 데이터가 숫자로 표현되므로 이 영상은 어느 정도 사실에 가깝다고 할 수 있습니다. 컴퓨터가 인식하는 정보와 사용자가 모니터 또는 인쇄물에서 보는 정보를 서로 변환하는 역할을 입/출력 장치가 수행하는 것입니다.

컴퓨터의 입/출력 장치는 디지털 표현과 사용자가 상호 작용하는 실제 매체 사이의 이러한 변환 작업을 담당합니다. 이때 변환의 대상이 되는 데이터에는 소리, 빛, 용지, 키 입력은 물론 이동(마우스의 경우)까지 포함됩니다. 사용자가 상호 작용하지 않는 입/출력 장치도 있습니다. 예를 들어 네트워크 카드와 모뎀의 경우 입/출력 장치에 해당하지만 사용자가 아니라 다른 컴퓨터와 상호 작용합니다.

컴퓨터에 디지털 형식으로 정보가 입력되면 컴퓨터 프로그램이 이 바이트를 다양한 방법으로 조작한 다음 계산 결과를 출력 장치로 보내 사용자 또는 다른 컴퓨터가 결과를 볼 수 있도록 합니다.


하드웨어, 소프트웨어 및 운영 체제

디지털 표현과 외부 매체 간의 변환은 복잡한 작업이며, 입/출력 장치는 이러한 작업을 효과적으로 빠르게 실행하는 방법을 아는 전문적인 전자 구성 요소라고 할 수 있습니다. 입/출력 장치에는 변환 작업에 사용되는 전자 회로가 들어 있습니다. 예를 들어 사운드 카드에는 컴퓨터에서 소리의 디지털 표현을 받아 사람이 들을 수 있는 아날로그 웨이브 형식으로 변환하는 디지털/아날로그 변환기라는 컴퓨터 칩이 내장되어 있습니다.

컴퓨터의 전자 회로는 일반적인 공구 상점에서 살 수 있는 공구와 마찬가지로 물리적으로 존재한다는 의미에서 하드웨어라고 합니다. 이와 대조적으로 컴퓨터에서 실행되는 프로그램은 소프트웨어라고 합니다. 소프트웨어는 하드웨어와 달리 컴퓨터에 물리적으로 존재하지 않으며 컴퓨터 메모리에 저장되어 CPU에 내릴 명령을 구성하는 일련의 바이트에 불과합니다.

하드웨어는 전문화된 작업을 효과적으로 수행할 수 있다는 장점이 있습니다. 컴퓨터의 관점에서 이는 해당 작업에 '전용'으로 사용된다고 할 수 있습니다. 그러나 하드웨어는 특정 작업에 전문화되어 다른 작업을 수행할 수 없기 때문에 유연성이 떨어진다는 단점이 있습니다. 예를 들어 모니터는 컴퓨터의 데이터를 표시하는 데는 매우 유용한 장치이지만 네트워크를 연결하는 데는 적합하지 않습니다. 반면 소프트웨어는 컴퓨터 메모리에 들어 있는 내용만 변경하면 손쉽게 다른 작업을 수행할 수 있으므로 유연성이 매우 뛰어납니다. 워드 프로세싱 응용 프로그램에서 인터넷 브라우저로 전환하는 경우와 같이 두 프로그램 사이를 전환할 때를 떠올리면 이해가 쉬울 것입니다. 이때 컴퓨터는 새 프로그램을 실행할 수 있도록 메모리 내에 있는 바이트를 변경합니다.


운영 체제

이번에는 운영 체제에 대해 알아보겠습니다. 컴퓨터는 그저 명령만 따릅니다. 그렇다면 언제 특정 프로그램의 바이트를 다른 프로그램의 바이트로 바꿀지를 어떻게 알 수 있을까요? 해답은 항상 실행되는 마스터 프로그램을 통해 컴퓨터의 작동을 제어하는 것입니다. 바로 이러한 프로그램을 OS(운영 체제)라고 하며, 그 대표적인 예가 Microsoft Windows입니다. 그 외에도 Macintosh, Linux와 같은 다양한 운영 체제가 있으며 모두 비슷한 역할을 합니다.

운영 체제는 사용자가 요청할 때 워드 프로세서나 브라우저 등의 다른 프로그램을 실행하는 작업도 담당합니다. 운영 체제는 이러한 프로그램을 컴퓨터의 메모리로 로드하고 시작 메모리 위치로 '점프'하여 프로그램을 실행합니다. 또한 실행 중인 여러 프로그램이 CPU를 '공유'하여 동시에 실행될 수 있도록 합니다. 즉, OS는 복잡한 교차로의 신호등이고 교차로에 연결된 각 도로는 CPU에서 실행되는 프로그램이라고 할 수 있습니다. OS는 항상 한 도로를 제외한 다른 모든 도로의 통행을 중지하여 전반적인 교통 흐름을 원활하게 유지합니다. 교차로와의 차이점이 있다면 컴퓨터에서는 CPU의 처리 속도가 빠르기 때문에 OS가 프로그램 사이를 잇따라 전환하더라도 사용자에게는 모든 프로그램이 동시에 실행되는 것처럼 느껴진다는 것입니다. 이는 신호등이 너무 빨리 바뀌어 교차로의 모든 차량이 멈추지 않고 서로 스쳐 지나가는 것과 같습니다.

다른 모든 프로그램이 사용할 수 있는 표준화된 도구를 제공하는 것도 운영 체제의 중요한 역할입니다. 대부분의 운영 체제에서는 응용 프로그램을 최대화하거나 최소화하거나 닫는 단추, 메뉴 표시줄, 테두리 등 표준화된 기능을 살펴볼 수 있습니다. 이러한 기능이 모두 동일한 방식으로 제공되는 것은 모든 소프트웨어 공급업체에서 응용 프로그램을 서로 비슷한 모양으로 만들기 위해 노력했기 때문이 아니라, Windows에서 메뉴 표시줄, 테두리, 단추를 비롯하여 응용 프로그램이 사용할 수 있는 도구의 모음을 제공하기 때문입니다.

Windows는 응용 프로그램이 사용할 수 있는 수백 가지 도구를 제공합니다. 응용 프로그램은 하드 드라이브에서 데이터를 읽거나 네트워크에 연결하거나 화면의 내용을 업데이트하는 등의 작업을 수행할 때마다 운영 체제에서 제공하는 도구를 사용합니다. 메모리 읽기 및 쓰기와 같은 기본적인 작업도 운영 체제가 제어하므로 응용 프로그램이 다른 응용 프로그램에 사용되는 메모리 위치를 실수로(또는 고의로) 수정하는 일은 발생하지 않습니다.

운영 체제에서 제공하는 가장 유용한 기능 중 하나로 앞서 설명한 입/출력 장치를 들 수 있습니다. 운영 체제는 프로그램에서 표준화된 방법으로 이러한 장치를 사용할 수 있도록 합니다.

그래픽 카드를 비롯하여 모든 하드웨어 장치는 대개 여러 제조업체에서 각자 고유한 브랜드로 생산하게 되는데 각 제조업체의 그래픽 카드는 제공하는 기능이 서로 다르므로 작동하는 방식 역시 약간씩 다릅니다. 운영 체제가 도구를 제공하지 않는다면 프로그램에서 그래픽 카드를 사용하기 위해서는 프로그래머가 각 공급업체의 하드웨어별로 전용 코드를 작성해야 할 것입니다. 그러나 운영 체제에서 제공하는 기능을 사용하면 프로그램에서 운영 체제 도구를 사용하고 운영 체제가 각 공급업체의 하드웨어를 제어하도록 하면 되므로 프로그래머가 훨씬 수월하게 프로그램을 개발할 수 있습니다.


Windows 프로그램 작성

지금까지는 모든 종류의 컴퓨터에 적용되는 일반적인 측면을 주로 살펴보았습니다. 위에서 설명한 바와 같이 운영 체제는 프로그램에서 사용할 수 있는 도구를 제공합니다. 그러나 운영 체제마다 제공하는 도구가 다르며 같은 도구라도 제공하는 방식이 다릅니다. 따라서 특정 운영 체제에서 작동하도록 설계된 프로그램은 다른 운영 체제에서 작동하지 않는 경우가 많습니다. 이 섹션에서는 Microsoft Windows 플랫폼에 초점을 맞추어 설명하도록 하겠습니다. 그렇더라도 기본 개념은 다른 플랫폼에도 적용될 수 있습니다.


컴퓨터 프로그램이란?

프로그램은 CPU 명령을 포함하는 여러 바이트로 구성되어 있다는 사실은 이미 배웠습니다. 이러한 명령은 데이터 바이트를 조작하고 메모리 위치나 입/출력 장치로 전송하는 기본 작업을 수행합니다. 프로그램을 실행하면 운영 체제가 메모리에 프로그램 파일을 로드한 다음 프로그램 명령을 실행합니다.

따라서 프로그램 작성은 CPU 명령의 바이트가 들어 있는 수많은 데이터 파일을 만드는 과정이라고 할 수 있습니다. 이는 엄연한 사실이지만 실제로 CPU 명령을 나타내는 바이트를 모두 배우기는 너무나 어렵습니다. 따라서 프로그래머는 엄청난 양의 지식을 갖추지 않고도 이러한 프로그램 파일을 만들 수 있는 여러 도구를 사용하게 됩니다.

프로그래머가 가장 많이 사용하는 도구는 컴퓨터 언어입니다. 일반적인 언어가 사람들 사이의 의사 소통에 사용되는 것과 마찬가지로 컴퓨터 언어는 사람과 컴퓨터 간의 의사 소통에 사용됩니다. 이러한 언어는 직관적이거나 사람이 읽을 수 있는 형식으로 되어 있으며 CPU 명령으로 변환하여 컴퓨터 프로그램을 만드는 데 사용할 수 있습니다.

현실에서 사용되는 언어와 마찬가지로 컴퓨터 언어도 여러 가지가 있습니다. 그 중에는 전문화된 작업에 사용되는 것도 있고 더 일반적인 용도로 사용되는 것도 있습니다. 모든 언어의 공통점은 프로그래머가 컴퓨터의 시스템 코드를 익히지 않고도 컴퓨터에 사용되는 명령을 만들 수 있도록 한다는 점입니다.

다음은 가상적인 자명종 프로그램의 일부를 보여 주는 코드의 예입니다. 코드의 세부적인 사항까지 알 필요는 없습니다. 단지 코드를 보기만 해도 프로그램의 기능을 대략적으로 알 수 있다는 사실이 중요합니다. 적어도 연속된 긴 바이트를 보는 것 보다는 훨씬 내용 파악이 쉬울 것입니다.

Sub CheckAlarm()
  If DateTime.Now >= AlarmTime Then
    DisplayAlarm()
  End If
End Sub

프로그램을 작성할 때는 이 예와 같이 컴퓨터 언어로 일련의 명령을 만들게 됩니다. 그러면 컴퓨터가 명령을 자체적으로 이해할 수 있는 다른 형태의 명령으로 변환합니다.

과제: 이 코드 예가 기사의 앞 부분에서 살펴본 CPU 명령과 어떠한 관계가 있는지 생각해 보십시오. 먼저 다음 명령문을 살펴보십시오.

If DateTime.Now >= AlarmTime

앞서 소개한 예에 연관하여 컴퓨터 명령과 CPU 명령과 비교해 보십시오. 힌트를 드리자면 DateTime.NowAlarmTime은 메모리 위치를 나타내는 이름이라고 할 수 있습니다. jne 명령 대신 비교 결과가 같거나 큰 경우에 점프를 수행하는 jge CPU 명령을 사용할 수도 있습니다.


Microsoft .NET Framework

소프트웨어가 여러 플랫폼에서 작동하도록 여러 가지 운영 체제 간의 차이를 관리하는 것은 프로그래머에게 매우 어렵고 많은 시간과 노력이 요구되는 과제입니다. 운영 체제가 다르면 제공되는 도구도 다를 수 있다는 점이 첫 번째 문제이며 다른 종류의 CPU에서 프로그램을 실행해야 하는 경우에는 CPU 종류마다 CPU 명령을 나타내는 숫자가 다를 수 있을 뿐만 아니라 CPU 종류에 따라 해당 명령이 없을 수도 있습니다.

또한 기존 코드를 다른 프로그램에 다시 사용하려는 경우에도 코드가 프로그램에 사용하는 것과 다른 언어로 작성되어 있으면 문제가 생깁니다. 이미 다른 언어에 익숙한 프로그래머가 새로운 컴퓨터 언어를 배우는 데는 많은 시간이 필요하기 때문입니다.

이러한 문제를 해결하기 위해 Microsoft에서는 .NET Framework를 제작했습니다. .NET Framework는 프로그램을 실행할 수 있는 관리되는 환경을 제공합니다. 이 환경은 운영 체제 내에 또 다른 운영 체제가 있는 것과 비슷하다고 할 수 있습니다. .NET Framework를 사용할 경우 다음과 같은 여러 가지 이점이 있습니다.

  • .NET framework가 지원하는 모든 플랫폼 및 컴퓨터 언어에서 광범위하고 일관된 도구 집합을 사용할 수 있습니다.

  • .NET Framework가 지원하는 모든 종류의 CPU 및 운영 체제에서 실행되는 프로그램을 작성할 수 있습니다.

  • .NET이 지원하는 언어라면 어떤 언어로 된 코드라도 다시 사용할 수 있습니다.



클라이언트/서버

Windows 프로그램을 처음 작성하는 프로그래머는 프로그래밍 개념과 도구를 익히는 데 도움이 되는 간단한 프로그램을 먼저 작성해보게 됩니다. '실질적인 용도'의 응용 프로그램을 작성하려면 이러한 기본 도구 외에 보다 수준 높은 도구를 사용하여 시나리오에 적합한 프로그램을 만들어야 합니다.

실제 개발 환경에서 가장 자주 발생하는 문제는 여러 사람들 간에 정보를 어떻게 공유하느냐 하는 문제입니다. 대개 이러한 시나리오에서는 정보를 한 곳에 저장하여 여러 사람이 다른 위치에서 액세스하게 됩니다.

"클라이언트"와 "서버"라는 용어는 많이 들어보았을 것입니다. 고급 프로그래머가 되기 전까지는 클라이언트/서버에 대해 자세히 알 필요가 없으므로 이 가이드에서 자세히 다루지는 않겠지만 개념은 알아둘 필요가 있습니다.

클라이언트-서버 아키텍처는 여러 사람이 데이터를 공유하는 일반적인 방법입니다. 데이터가 있는 서버클라이언트가 해당 데이터에 액세스할 수 있도록 기능을 제공합니다. 서버에서는 클라이언트로부터의 연결을 수신하는 컴퓨터 프로그램이 항상 실행됩니다. 클라이언트 컴퓨터에서는 일정에 따라, 또는 컴퓨터 사용자가 실행한 작업의 결과로 정보가 필요할 때마다 서버에 연결하는 다른 프로그램이 실행됩니다. 예를 들어 사용자가 전자 메일을 확인하면 전자 메일 프로그램이 메일 서버에 연결합니다. 이 경우 전자 메일 프로그램은 메일 서버에 보낼 요청을 만드는 클라이언트 응용 프로그램이 됩니다.

클라이언트가 서버에 대한 요청을 만들면 다음과 같은 결과가 발생합니다.

  1. 클라이언트가 네트워크를 통해 요청에 대한 자세한 정보가 포함된 메시지를 서버로 보냅니다. 예를 들어 전자 메일 프로그램은 요청의 일부로 사용자 이름과 암호를 보냅니다.

  2. 그러면 서버가 일반적으로 서버의 데이터베이스 또는 일부 파일을 처리하여 몇 가지 작업을 수행합니다.

  3. 서버는 다시 클라이언트에 정보를 응답으로 보냅니다.

이 과정을 거치면 클라이언트 프로그램이 응답에 포함된 정보를 적절하게 사용할 수 있습니다. 전자 메일 프로그램의 경우 사용자가 읽을 수 있도록 화면에 전자 메일을 표시하는 데 정보를 사용하게 됩니다.

클라이언트 및 서버 응용 프로그램이 서로 통신하려면 교환하는 데이터를 같은 방식으로 인식해야 합니다. 통신에 사용되는 이러한 공통적인 인식 방법을 정의하는 규칙을 프로토콜이라고 합니다. 프로토콜은 통신에 사용되는 합의된 '언어'를 의미하는 컴퓨팅 용어입니다. 각 컴퓨터는 다른 컴퓨터가 데이터를 인식할 수 있도록 하기 위해 프로토콜을 사용해야 합니다.

프로토콜을 정의하는 것 외에도 클라이언트 컴퓨터와 서버 컴퓨터에서는 프로토콜을 사용하여 다른 컴퓨터와 통신하는 코드를 실행해야 합니다. .NET Framework에서는 이러한 코드가 대부분 '도구 모음'에 이미 포함되어 있으므로 직접 코드를 작성할 필요가 없습니다. .NET Framework를 사용해 보면 다른 프로그램과 통신하는 데 사용할 수 있는 .NET Remoting과 같은 도구가 많이 포함되어 있음을 알 수 있습니다.


요약

이 가이드에서는 프로그래밍에 대한 기본 개념을 광범위하게 다루었습니다. 컴퓨터의 작동 원리, 정보가 저장되는 방식, 정보를 디지털 표현으로 변환하여 외부로 보내고 받는 방법을 배웠습니다. 또한 하드웨어와 소프트웨어가 서로 상호 작용하면서 컴퓨터를 작동하는 방법, 운영 체제가 하드웨어와 소프트웨어를 함께 작동하도록 제어하는 방법, 운영 체제 내에서 프로그램이 기능을 수행하고 운영 체제에서 지원하는 도구를 사용하는 방법도 알아보았습니다. 마지막으로 클라이언트-서버 구조를 활용함으로써 서로 다른 종류의 컴퓨터에서 두 가지 이상의 컴퓨터 프로그램이 함께 작동하는 방법도 배웠습니다.

이렇게 여러 가지 구성 요소가 함께 작동하는 방식을 배움으로써 컴퓨터 프로그램의 기본 원리에 대해 알아보았습니다. 전자 메일 프로그램, 컴퓨터 게임, 워드 프로세싱 응용 프로그램 등 모든 컴퓨터 프로그램은 그 결과는 서로 다르지만 내부적으로는 동일한 작업을 수행합니다. 다른 실행 결과를 만들어 내는 요소는 프로그래머의 상상력뿐입니다.

이 짧은 기사에서는 컴퓨팅의 기본적인 사항만 대략적으로 살펴봤을 뿐이며, 여러 가지 측면에서 더 배워야 할 내용이 많습니다. Visual Studio Express Editions 제품군 응용 프로그램을 사용하여 프로그램을 작성하려면 MSDN에서 Visual Basic 또는 Visual C#에 대한 소개 가이드부터 읽어 보시기 바랍니다.

그럼 즐겁게 배워 보십시오.

과제 정답

CPU 명령 과제의 정답은 다음과 같습니다.

  • 이 명령은 실행되지 않으므로 메모리 위치 8842에는 값이 기록되지 않습니다. CPU는 메모리 위치 8000에서 221이라는 값을 읽어 100을 빼므로 CPU에 121이라는 값이 저장됩니다. 따라서 jne 명령은 주소 2020으로 점프하지 않으므로 jmp 명령이 실행됩니다. 즉, CPU가 주소 2020의 명령을 완전히 건너뛰게 됩니다.

  • CPU는 121라는 값을 메모리 위치 8878에 기록하며 CPU가 jmp 명령을 실행하면 위치 2038로 점프하게 됩니다. 따라서 write 8878 명령이 실행됩니다. 이때 CPU에는 여전히 이전 계산의 결과로 얻어진 121이라는 값이 들어 있으므로 주소 8878에 이 값이 기록됩니다.

정답을 맞혔다면 축하드립니다. 어셈블리 언어 프로그래밍이라고 하는 이 방식은 전문적인 프로그래머도 잘 사용하지 않는 고급 프로그래밍 방식입니다.

Posted by shunman


티스토리 툴바