윈도우 운영체제를 사용하다 보면 많이들 위의 용어를 보셨을겁니다.
헷갈리는듯 하면서도 알듯한 용어인데요 설명을 보겠습니다.
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대용으로 프로그램을 구입하신다면 볼륨라이센스는 가장 최적의 선택일것입니다.
'Windows OS/윈도우팁'에 해당되는 글 38건
- 2007.07.16 RTM OEM Retail VL 의 차이점
- 2007.07.08 바이러스 백신 실시간감시 테스트 코드
- 2007.06.14 비스타에서 다중파일검색하기 1
- 2007.05.23 플랫폼으로서의 Windows 소개
- 2007.05.21 웹사이트의 옛날 모습이 보고 싶다면?
- 2007.05.19 윈도우에서 USB저장장치 제어하기 1
- 2007.05.18 윈도우 바탕화면 없어졌을때
- 2007.05.18 윈도우에서 로그인시 일정횟수 이상 틀리면 계정 잠그기
백신의 기능에 이상이 없는지 확인하는 용도로 사용 하실수 있습니다.
메모장을 여신후
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
위의 코드를 정확히 복사하신 후 저장을 누르신 다음( 공백 한칸이라도 있으면 안됩니다!)
저장을 누르신 다음에
파일 형식을 모든파일로 선택해 주시고
파일이름은 아무거나 적어주시고 뒤에 .exe를 붙여줍니다. 예) test.exe
저장 버튼을 누르신후 바탕화면에 파일이 없어졌거나
파일이 있을경우 마우스로 파일을 선택하거나 클릭했을경우 자동으로 삭제 또는
바이러스 경고창이 뜨면 백신프로그램이 정상적으로 작동하고 있는것입니다~
;로 구분하여 검색을 하였습니다. 예를 들어 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
이글은 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.Now와 AlarmTime은 메모리 위치를 나타내는 이름이라고 할 수 있습니다. jne 명령 대신 비교 결과가 같거나 큰 경우에 점프를 수행하는 jge CPU 명령을 사용할 수도 있습니다.
Microsoft .NET Framework
소프트웨어가 여러 플랫폼에서 작동하도록 여러 가지 운영 체제 간의 차이를 관리하는 것은 프로그래머에게 매우 어렵고 많은 시간과 노력이 요구되는 과제입니다. 운영 체제가 다르면 제공되는 도구도 다를 수 있다는 점이 첫 번째 문제이며 다른 종류의 CPU에서 프로그램을 실행해야 하는 경우에는 CPU 종류마다 CPU 명령을 나타내는 숫자가 다를 수 있을 뿐만 아니라 CPU 종류에 따라 해당 명령이 없을 수도 있습니다.
또한 기존 코드를 다른 프로그램에 다시 사용하려는 경우에도 코드가 프로그램에 사용하는 것과 다른 언어로 작성되어 있으면 문제가 생깁니다. 이미 다른 언어에 익숙한 프로그래머가 새로운 컴퓨터 언어를 배우는 데는 많은 시간이 필요하기 때문입니다.
이러한 문제를 해결하기 위해 Microsoft에서는 .NET Framework를 제작했습니다. .NET Framework는 프로그램을 실행할 수 있는 관리되는 환경을 제공합니다. 이 환경은 운영 체제 내에 또 다른 운영 체제가 있는 것과 비슷하다고 할 수 있습니다. .NET Framework를 사용할 경우 다음과 같은 여러 가지 이점이 있습니다.
-
.NET framework가 지원하는 모든 플랫폼 및 컴퓨터 언어에서 광범위하고 일관된 도구 집합을 사용할 수 있습니다.
-
.NET Framework가 지원하는 모든 종류의 CPU 및 운영 체제에서 실행되는 프로그램을 작성할 수 있습니다.
-
.NET이 지원하는 언어라면 어떤 언어로 된 코드라도 다시 사용할 수 있습니다.
클라이언트/서버
Windows 프로그램을 처음 작성하는 프로그래머는 프로그래밍 개념과 도구를 익히는 데 도움이 되는 간단한 프로그램을 먼저 작성해보게 됩니다. '실질적인 용도'의 응용 프로그램을 작성하려면 이러한 기본 도구 외에 보다 수준 높은 도구를 사용하여 시나리오에 적합한 프로그램을 만들어야 합니다.
실제 개발 환경에서 가장 자주 발생하는 문제는 여러 사람들 간에 정보를 어떻게 공유하느냐 하는 문제입니다. 대개 이러한 시나리오에서는 정보를 한 곳에 저장하여 여러 사람이 다른 위치에서 액세스하게 됩니다.
"클라이언트"와 "서버"라는 용어는 많이 들어보았을 것입니다. 고급 프로그래머가 되기 전까지는 클라이언트/서버에 대해 자세히 알 필요가 없으므로 이 가이드에서 자세히 다루지는 않겠지만 개념은 알아둘 필요가 있습니다.
클라이언트-서버 아키텍처는 여러 사람이 데이터를 공유하는 일반적인 방법입니다. 데이터가 있는 서버는 클라이언트가 해당 데이터에 액세스할 수 있도록 기능을 제공합니다. 서버에서는 클라이언트로부터의 연결을 수신하는 컴퓨터 프로그램이 항상 실행됩니다. 클라이언트 컴퓨터에서는 일정에 따라, 또는 컴퓨터 사용자가 실행한 작업의 결과로 정보가 필요할 때마다 서버에 연결하는 다른 프로그램이 실행됩니다. 예를 들어 사용자가 전자 메일을 확인하면 전자 메일 프로그램이 메일 서버에 연결합니다. 이 경우 전자 메일 프로그램은 메일 서버에 보낼 요청을 만드는 클라이언트 응용 프로그램이 됩니다.
클라이언트가 서버에 대한 요청을 만들면 다음과 같은 결과가 발생합니다.
-
클라이언트가 네트워크를 통해 요청에 대한 자세한 정보가 포함된 메시지를 서버로 보냅니다. 예를 들어 전자 메일 프로그램은 요청의 일부로 사용자 이름과 암호를 보냅니다.
-
그러면 서버가 일반적으로 서버의 데이터베이스 또는 일부 파일을 처리하여 몇 가지 작업을 수행합니다.
-
서버는 다시 클라이언트에 정보를 응답으로 보냅니다.
이 과정을 거치면 클라이언트 프로그램이 응답에 포함된 정보를 적절하게 사용할 수 있습니다. 전자 메일 프로그램의 경우 사용자가 읽을 수 있도록 화면에 전자 메일을 표시하는 데 정보를 사용하게 됩니다.
클라이언트 및 서버 응용 프로그램이 서로 통신하려면 교환하는 데이터를 같은 방식으로 인식해야 합니다. 통신에 사용되는 이러한 공통적인 인식 방법을 정의하는 규칙을 프로토콜이라고 합니다. 프로토콜은 통신에 사용되는 합의된 '언어'를 의미하는 컴퓨팅 용어입니다. 각 컴퓨터는 다른 컴퓨터가 데이터를 인식할 수 있도록 하기 위해 프로토콜을 사용해야 합니다.
프로토콜을 정의하는 것 외에도 클라이언트 컴퓨터와 서버 컴퓨터에서는 프로토콜을 사용하여 다른 컴퓨터와 통신하는 코드를 실행해야 합니다. .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에 이 값이 기록됩니다.
정답을 맞혔다면 축하드립니다. 어셈블리 언어 프로그래밍이라고 하는 이 방식은 전문적인 프로그래머도 잘 사용하지 않는 고급 프로그래밍 방식입니다.
웹사이트의 옛날 모습을 볼수 있는 사이트입니다. 미국사이트인데 전세계의 모든 웹사이트를
크롤링하여 DB에 저장합니다. 거의 대부분의 웹사이트의 내용은 다 나옵니다.
예로 네이버의 옛날 모습이 보고 싶으면 화면가운데에 있는 주소입련란에 naver.com 이라고 치시면
이런식으로 DB에 저장되어 있는 해당사이트의 리스트가 나옵니다. 여기서 보고싶은 날짜의 항목을
클릭하면 됩니다. 한번 1999년 첫번째 데이터를 클릭해보겠습니다.
※ 혹시 페이지에 언어가 제대로 표시가 안되면 익스플로러 메뉴의 보기-인코딩-한국어로 선택해
주시면 잘 보일겁니다
1.(가능 운영체제: 비스타, 서비스팩2가 적용된 모든 윈도우XP,윈도우 2000)
- USB 저장매체를 꽂았을때 필요한 USB 드라이버를 로드 하지 않게 하기
레지스트리 편집기를 열어서
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR 로 갑니다
'start'라는 값이있는데 기본값은 3입니다. 이걸 4로 바꾸면 USB저장매체를 꽂았을때 필요한 드라이버를 로드하지 않으므로 USB장치를 인식할수가 없게 됩니다.
이걸 다시 3으로 바꾸면 사용할수 있게됩니다.
2.(가능 운영체제: 비스타, 서비스팩2가 적용된 모든 윈도우XP)
-USB에 있는 내용을 읽거나 하드로 복사 할수는 있으나 어떠한 데이터도 USB로 복사하지는 못함
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ 에서
"StorageDevicePolicies" 라는 이름으로 키를 하나 만듭니다. 그리고 만든 "StorageDevicePolicies"키를 선택하고 "WriteProtect"라는 DWORD 값이름을 만들고
값에는 1을 넣어주면 됩니다 그럼 USB는 읽기전용으로 되어 읽거나 하드로 내용을 복사할수는
있지만, 데이터 삭제라던지 USB로 복사는 할수 없게 됩니다. 다시 USB를 정상적으로 사용하시려면
값을 0으로 바꿔주시면 됩니다
3.(가능 운영체제: 비스타)
이건 설명이 길기 때문에 Microsoft 링크를 따로 걸겠습니다.
해당 내용은 윈도우의 그룹정책을 이용하여 위의 내용에 해당하는 기능을 설정하거나
등록된 USB저장매체만을 사용,차단 또는 읽기, 쓰기 권한을 줄수 있게 하는 기능입니다.
http://www.microsoft.com/korea/technet/windowsVista/library/ops/9fe5bf05-a4a9-44e2-a0c3-b4b4eaaa37f3.mspx
원래는 작업표시줄에 있는건데 간혹 삭제를 해서 난감해 하시는 분들이 계실겁니다.
다운을 받으신 후에 아무곳에다 놓고 작업표시줄에 다시 복사히거나 단축아이콘으로
놓으시면 됩니다