336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
윈도우XP에 보면 MSconfig라는 시스템설정툴이 있습니다.

이것보다 더욱더 강력한 기능을 제공하는 기능확장판이라고 보시면 됩니다

시스템 시작 시 실행되는 각종 항목을 카테고리별로 정리하여 보여주고 설정을 해줄수있게
도와줍니다.

더욱더 자세한 정봉는 이곳에서 보시면 됩니다(영문)
http://www.microsoft.com/technet/sysinternals/utilities/Autoruns.mspx

사용자 삽입 이미지

                                                     다운받으세요


압축을 풀면 두가지 파일이 있는데 하나는 윈도우즈용이고 또 하나는 콘솔용입니다

Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

계정 로그온 이벤트

표 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
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
 Ctrl+Shift+Enter                      UAC관리자 모드로 실행합니다
                     
 Ctrl+Shift+Esc                        작업 관리자를 실행합니다                     

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

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

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

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

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

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

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

윈도우키 + X                            모바일센터를 실행합니다
Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
기존의 윈도우즈에서는 레지스트리 키를 조작하여  윈도우 로그인시에 메세지박스를 띄울수 있었으나 비스타에서는

로컬보안정책상에서 수정 및 변경을 할 수 있습니다.

실행에서 secpol.msc 라고 입력 한뒤  보안설정-로컬 정책- 보안옵션으로 갑니다.

그럼 오른쪽에 여러가지 항목이 나오는데 여기에서

대화형 로그온:로그온은 시도하는 사용자에 대한 메시지 텍스트  를 선택하시고 속성에 들어가면   로그인시 띄울  메시지를 입력할수 있는 창이 나옵니다.

여기에 원하는 메세지를 입력하시면 됩니다.
Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

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

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
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Windows XP 시리얼키를 바꿀수 있게 도와주는 키변경 프로그램입니다
MS에서 제공하는 프로그램으로 안심하고 사용하실수 있습니다.



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

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

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

여기에 알맞는 시리얼키를 입력하시고 다음을 버튼을 누른후 마침을 눌러서 재부팅 하시면 됩니다.
Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
바이러스 백신의  감시기능이 제대로 작동되고 있는지 확인할수 있는 코드입니다.
백신의 기능에 이상이 없는지 확인하는 용도로 사용 하실수 있습니다.

메모장을 여신후

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

위의 코드를 정확히 복사하신 후 저장을 누르신 다음( 공백 한칸이라도 있으면 안됩니다!)

사용자 삽입 이미지
저장을 누르신 다음에

사용자 삽입 이미지
파일 형식을 모든파일로 선택해 주시고 

사용자 삽입 이미지
파일이름은 아무거나 적어주시고 뒤에 .exe를 붙여줍니다.  예) test.exe
사용자 삽입 이미지


저장 버튼을 누르신후 바탕화면에 파일이 없어졌거나 
파일이 있을경우 마우스로 파일을 선택하거나 클릭했을경우 자동으로 삭제 또는
바이러스 경고창이 뜨면 백신프로그램이 정상적으로 작동하고 있는것입니다~
Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
비스타 이전의 윈도우에서는 여러 확장자를 가진 파일을 동시에 검색하려면

;로 구분하여 검색을 하였습니다.  예를 들어 mp3와 avi를 검색한다고 하면

*.mp3;*.avi  이런식으로 했지요.   

비스타에서도 이렇게 검색하면 되는줄 알고 검색창에 입력을 했더니 검색결과가
하나도 안나와서 매우 황당했었습니다.

비스타 검색창에서 이제 ; (세미콜론)은 더이상 사용하지 않고 부울연산자를 사용합니다



부울 필터를 사용하여 검색

부울 필터를 사용하는 것도 좀 더 정교한 검색을 실행할 수 있는 또 다른 방법입니다. 부울 필터를 사용하면 다음 표에서 보는 바와 같이 간단한 논리를 사용하여 검색 단어를 조합할 수 있습니다.

필터

설명

AND

tropical AND island

"tropical"이라는 단어와 "island"라는 단어가 모두 포함된 파일을 찾습니다. 해당 단어가 서로 붙어 있지 않더라도 검색합니다.

NOT

tropical NOT island

"tropical"이라는 단어는 포함하지만 "island"라는 단어는 포함하지 않는 파일을 찾습니다.

OR

tropical OR island

"tropical" 또는 "island" 중 한 단어가 포함된 파일을 찾습니다.

따옴표

"tropical island"

"tropical island"라는 구가 그대로 포함된 파일을 찾습니다.

괄호

(tropical island)

순서에 상관없이 "tropical"과 "island"라는 단어가 모두 포함된 파일을 찾습니다.

>

날짜: >06-01-05

06-01-05 이후 등 특정 값보다 큰 파일이나 이후 파일을 찾습니다.

<

크기: < 4MB

4MB 미만 등 특정 값보다 작은 파일이나 이전 파일을 찾습니다. KB 및 GB 등 다른 크기도 지정할 수 있습니다.

 

부울 필터와 파일 속성 조합

부울 필터와 다른 필터를 조합할 수 있습니다. 같은 검색 단어와 다른 부울 필터를 사용하여 매우 다른 결과를 얻을 수 있는 방법을 보려면 다음 표를 참조하십시오. 괄호를 사용하여 필터 효과를 변경할 수 있는 방법도 참조하십시오.

부울 필터

설명

만든 이: Charlie AND Herb

Charlie가 만들었으며 파일 이름이나 파일 속성에 Herb가 포함된 파일을 찾습니다.

만든 이: (Charlie AND Herb)

Charlie와 Herb라는 두 이름으로 만든 파일만 찾습니다.

만든 이: "Charlie Herb"

이 이름과 정확히 일치하는 사용자가 만든 파일만 찾습니다.




* 이 부울연산자는 반드시 대문자로 입력하셔야 됩니다   
예)*.mp3 OR *.avi
Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이제는 컴퓨터를 사용할때 바이러스백신과 악성코드 치료 프로그램없이 한다는건 생각도
못할 일이 되었습니다. 그만큼 컴퓨터에 있어서 중요하다는 이야기가 되겠지요
하지만 대부분이 상용이라 돈을 주고 구입해야 되기때문에 망설여지기도 합니다

무료로 쓸수 있는 바이러스 백신 프로그램을 소개해드리겠습니다.

홈페이지주소: http://www.geot.com

설명: 유니큐어라 불리는 바이러스백신입니다.
백신프로그램중 최고의 검색률을 자랑한다는 카스퍼스키 엔진을 사용하는 백신이라
검색율이 상당히 뛰어납니다.
하지만 그만큼 프로그램이 무거워 시스템이 느려지는걸 실제로 느낄정도입니다.(실시간감시 기준)

사용자 삽입 이미지

홈페이지의 모습니다. 로그인을 해야 프로그램을 다운받을수 있기 때문에 아이디가 없으신분은
회원가입을 먼저 해주셔야 합니다.

사용자 삽입 이미지

로그인을 하셨으면 다운로드 메뉴에 마우스를 갔다대면 평가판다운로드 라는 메뉴가 나옵니다

사용자 삽입 이미지

다운로드 받으신다음 설치해주시면 됩니다. 업데이트는  평가판다운로드 메뉴 옆에 있는
수동업데이트 메뉴를 이용하셔서 다운받으시면 됩니다.

사용자 삽입 이미지

설치후 프로그램을 실행한 모습입니다. 인터페이스는 상당히 직관적입니다. 기본적으로
시스템 실시간 감시는 실행됨으로 되어 있으며 수동으로 특정 폴더나 드라이브를 검사하고
싶으시면 왼쪽 메뉴의 수동검사를 클릭하시면 됩니다.
Posted by shunman
,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


이글은 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
,