'엔지니어링'에 해당되는 글 13건
- 2008/06/05 TCP/IP Offload
- 2008/05/28 다이슨(James Dyson): 산업 디자이너 (Industrial Designer)
- 2008/05/27 UMDH를 이용한 메모리릭 탐지
- 2008/05/22 마이크로소프트 비스타 권한 분리 장치: Integrity Level
- 2008/05/22 흥미로운 애플 이야기
- 2008/03/17 Volume Shadow Copy란 무엇인가
- 2008/03/17 비스타(Windows Vista)의 레지스트리 가상화
- 2008/03/17 Windows Vista x64 에디션의 드라이버 싸이닝 문제
- 2008/03/12 IRP_MJ_CLEANUP과 IRP_MJ_CLOSE의 차이점
- 2007/10/31 Windows Vista SP1의 Object Manager Filtering으로 할 수 있는 일
http://del.icio.us/ohjeongwook/TCP%2FIP%2BOffload
TCP/IP Offload
예전 “네트워크 개론” 수업 시간의 교수님의 말씀이 아직도 기억에 생생하다. 소프트웨어를 하는 사람들은 모든 것을 소프트웨어 영역에서 처리하려고 하고 하드웨어를 하는 사람들은 모든 것을 하드웨어 영역에서 처리하려고 하는 경향이 있다고 한다. TCP/IP 스택은 먼전 불안정한 네트워크 계층을 가정하고 있다. IP 패킷을 랜 상으로 쏘아도 그것이 소실될 확률이 0 이라고 가정하지 않는다. 따라서 모든 컨트롤 플로우가 소프트웨어적으로 일어 난다.
그런데, 그 “네트워크 개론” 선생님의 말을 그대로 실현 시켜 주는 일들이 실제로도 많이 벌어지고 있었다.
최근 우리 소프트웨어의 이상 작동을 디버깅하면서 어떤 네트워크 카드들은 TCP/IP 와 관련된 오퍼레이션을 하드웨어적으로 처리하기도 한다는 것을 알게 되었다. 이러한 기능을 TCP Offload라고 한다고 한다. 사실상 대부분의 학계와 업계에서는 별로 퍼포먼스 향상에 도움이 안된다고 하지만, 네트워크를 통한 직접 메모리 접근(RDMA) 기능을 이용한 iSCSI 장치에서 많이 사용한다고 한다.
References)
TCP offload is a dumb idea whose time has come
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| TCP/IP Offload (0) | 2008/06/05 |
|---|---|
| 다이슨(James Dyson): 산업 디자이너 (Industrial Designer) (0) | 2008/05/28 |
| UMDH를 이용한 메모리릭 탐지 (0) | 2008/05/27 |
| 마이크로소프트 비스타 권한 분리 장치: Integrity Level (0) | 2008/05/22 |
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
다이슨 청소기로 유명한 제임스 다이슨이라는 사람이 있다.
다이슨 청소기는 미국 청소기들의 투박한 디자인과 달리 이 유럽산 청소기는 디자인부터가 남다르다. 물론 가격이 최소 300불 이상에서 보통 400-500불에 육박하기 때문에 구매에 망설여지는 면이 많다. 하지만 일단 한번 써 보게 되면 비싼 가격을 주고라도 그 청소기를 사용하는 이유를 알게 될 것이다.
영국 태생인 다이슨이라는 사람은 기존의 먼지 봉투를 사용하는 청소기가 먼지가 봉투에 쌓이고, 또한 청소기 내부에 쌓임으로 인해서 진공 흡입력이 급격히 떨어지는 문제를 어떻게 해결 할 까 고민했다고 한다. 십수년의 노력의 결과로 만들어 낸 것이 바로 다이슨 청소기이다.
그들이 광고하는대로 영국 왕실에서 사용하는 청소기가 바로 다이슨이라고 한다.
물건을 보면 그것을 만든(엔지니어링한) 사람의 철학이 묻어 난다. 다이슨은 먼지가 쌓이고, 뭔가 큰 찌꺼기가 걸릴 만한 부분은 모두 아주 쉽게 분해가 가능하도록 설계 되어 있다.
또한 내부에 먼지가 쌓이는 것을 직접 확인하기 쉽게 투명한 플라스틱으로 먼지통이 만들어져 있고, 씻을 필요가 많은 부분에는 절대 전자 부품과 가까이 배치 되지 않도록 되어 있다.
거기에다 디자인은 어느 우주선에서 떨어진 물건 같이 희안하게 생겼고, 색깔 또한 집안 한구석을 장식할만한 깨끗한 노란색(물론 보라색도 있다)을 띄고 있다.
이 청소기를 볼 때마다 많은 생각을 하게 된다. 나 자신이 소프트웨어이기는 하지만, 엔지니어이고, 세상에 없는 새로운 것들을 만들어 내야만 하는 직업이다 보니 더더욱 그렇다.
자그마한 아이디어가 있을 때에 과연 그것이 세상을 뒤흔들지 아니면 조용히 폐기 처분 될지 전혀 알 수가 없다. 실제로 다이슨이 내어 놓은 새로운 개념의 제품들 중에 실패한 것도 몇개가 있다. 조금 급작스러운 결론을 여기에서 도출해 내자면, 실패를 무서워 해서는 안된다라는 것이다. 어차피 어떤 아이디어가 성공할지는 누구도 모르는 것이다. “Trial & Error” 밖에는 그것을 확인할 수 있는 방법이 없다.
다이슨 회사 홈페이지: http://www.dyson.com/
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| TCP/IP Offload (0) | 2008/06/05 |
|---|---|
| 다이슨(James Dyson): 산업 디자이너 (Industrial Designer) (0) | 2008/05/28 |
| UMDH를 이용한 메모리릭 탐지 (0) | 2008/05/27 |
| 마이크로소프트 비스타 권한 분리 장치: Integrity Level (0) | 2008/05/22 |
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
마이크로소프트에서 많은 흥미로운 툴들이 나오는데, 그 중 하나가 메모리릭(Memory Leak)을 탐지하기 위한 UMDH라는 툴입니다. 이미 윈디버거로 대표되는 “Debugging Tools for Windows” 패키지 안에 포함되어 있습니다.
사실 예전에는 이 툴이 별로 환영을 받지 못했는데, MSVC에서 FPO를 통해서 프로그램 바이너리를 최적화 시키는 것이 디폴트여서 대부분의 프로그램들이 FPO가 내장 된 채로 배포되는 경우가 많았기 때문입니다. 심지어는 마이크로소프트의 바이너리들도 FPO가 적용된채 배포되었습니다. FPO는 프레임 포인터를 사용하지 않고 컴파일 과정에서 남는 register를 하나 찾아서 그 레지스터를 사용해서 로컬 변수 등을 사용하는 컴파일 최적화 과정 중의 하나입니다.
그런데 이 FPO라는 놈이 디버깅시에는 콜스택 추적을 끊어 버리는 효과가 있어서 콜 스택 중에 FPO가 들어간 모듈이 하나라도 있다면 콜스택이 잘린 상태로 볼 수 밖에 없습니다. 그런 경우에는 디버거가 휴리스틱하게 잡아주기도 하고, 사람이 직접 메모리를 직접 보면서 대충 추측하는 수 밖에 없지요.
어쨌든 Windows XP 이후의 버전에서는 시스템 DLL들은 모두 FPO를 없앤채로 나오니 UMDH와 같은 툴들이 꽤 효과를 발휘하고 있습니다.
사용예)
set _NT_SYMBOL_PATH=SRV*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\myapplicationssymbols
C:\Program Files\Debugging Tools for Windows (x86)>gflags -i test.exe +ust
Current Registry Settings for test.exe executable are: 00001000
ust - Create user mode stack trace database
umdh -p:124 -f:test01.log
umdh -p:124 -f:test02.log
umdh -d test01.log test02.log
...
- 520 ( 13520 - 14040) 26 allocs BackTrace363
- 1 ( 26 - 27) BackTrace363 allocations
7C8531E4 : ntdll!RtlAllocateHeapSlowly+00000041
7C83D97A : ntdll!RtlAllocateHeap+00000E9F
77E655E3 : kernel32!FlsSetValue+00000050
77BAF5D2 : msvcrt!__CRTDLL_INIT+000001AC
7C81A352 : ntdll!LdrpCallInitRoutine+00000014
7C82ED97 : ntdll!LdrpInitializeThread+0000010D
7C82EC9F : ntdll!_LdrpInitialize+0000016F
7C8284C5 : ntdll!KiUserApcDispatcher+00000025
...
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| TCP/IP Offload (0) | 2008/06/05 |
|---|---|
| 다이슨(James Dyson): 산업 디자이너 (Industrial Designer) (0) | 2008/05/28 |
| UMDH를 이용한 메모리릭 탐지 (0) | 2008/05/27 |
| 마이크로소프트 비스타 권한 분리 장치: Integrity Level (0) | 2008/05/22 |
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
“Integrity Control”이라고 해서 마이크로소프트 비스타(Vista)에서는 같은 사용자의 권한으로 작동하는 프로세스들의 등급이 나뉘어지는데, 이를 “Integrity Level”이라고 한다.
다음과 같이 기본적으로 4가지 레벨이 존재한다.
System/High/Medium/Low
기본적으로 서비스는 모두 System 레벨이고, 기타 사용자 프로세스들은 각각 미리 정해진 등급들을 가지고 있다. 요즈음에 윈도우즈 보안의 가장 큰 위협이 되고 있는 인터넷 익스플로러는 Low등급을 가지고 있다.
그런데, 특이한 것이 인터넷 익스플로러도 로칼 컴퓨터 도메인을 접근할 경우에는 Medium 권한을 가진다는 것이다.
Illustration 2: Internet Explorer Integrity LevelLow등급을 가지고 있을 경우에는 기본적으로 로칼 자원에 전혀 접근을 하지 못하므로 취해진 조처인듯 하다. 또한 ieuser.exe는 브로커 프로세스라고 그래서 iexplore.exe 가 특정 자원을 접근해야 할 경우에는 중간 매개자 역할을 하는 프로세스이다.
다음 문서가 많은 도움을 될것이다.
How the Integrity Mechanism Is Implemented in Windows Vista
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| 다이슨(James Dyson): 산업 디자이너 (Industrial Designer) (0) | 2008/05/28 |
|---|---|
| UMDH를 이용한 메모리릭 탐지 (0) | 2008/05/27 |
| 마이크로소프트 비스타 권한 분리 장치: Integrity Level (0) | 2008/05/22 |
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
| 비스타(Windows Vista)의 레지스트리 가상화 (0) | 2008/03/17 |
요즘에 난생 처음 애플 제품을 하나 둘씩 쓰게 되면서 애플과 그 창시자들에게 많은 관심을 가지고 있습니다.
스티브 워즈니악과 스티브 잡스가 그들이죠. 참으로 놀라운 것은 70년대말 80년 대 초에 이미 지금의 IT기업들에서나 있을 문화가 애플에서 싹트기 시작했다는 것입니다.
이 애플의 만들 사람들의 스토리에는 정말 흥미 진진한 내용들이 많습니다.
처음 워즈니악과 잡스는 블루박스라는 폰 프리킹 장비를 대학교에서 파는 것으로 꽤 짭짤한 수익을 올립니다.
그 이전에 캡틴 크런치라는 유명한 폰프리킹의 대부와 친해지게 되지요.
워즈니악이 처음부터 대주주였지만 몇년 동안 계속 말단 엔지니어로 계속 일했고, 현재도 애플에서 작은 액수이지만 계속 샐러리를 받고 있다고 합니다.
워즈니악은 비행기 조종을 즐겼는데 사고로 인해 기억 상실에 걸린 적이 있다고 하네요.
스티브 잡스는 파워 게임에서 밀려 자신이 세운 회사를 도망치듯 떠나야 했고, 넥스트라는 나름대로 혁명적인 운영체제를 개발하고 결국은 그 오에스를 들고 다시 애플로 들어가 넥스트를 기반으로 한 맥오에스를 만들어 내더군요. 그 모든 작업에 16년 정도가 걸린 것 같습니다.
맥오에스의 운영체제가 오픈소스라는 점도 흥미롭고(물론 최신 커널 이전 버전들)...
잡스가 픽사사를 인수해서 거의 10년 만에 토이스토리를 만들어 냅니다.
오늘 Geekipedia를 보다가 애플 레코드와 애플 컴퓨터 사이의 소송의 역사가 나와 있길래 잠시 여기에 옮겨 봅니다.
1978: 애플 레코드에서 애플 컴퓨터를 상표권 침해로 고소. 결국 애플 컴퓨터는 음악과 관련한 비지니스에 뛰어 들지 않겠다는 조건하에 8만불을 주고 합의합니다. 거의 20 여년 후에 있을 일들은 전혀 몰랐겠지요.
1989: 애플 컴퓨터의 사운드 칩이 이전 합의를 깼다고 고소
2003: 아이팟과 아이튠스에 대해서 고소. 물론 거액의 합의금을 주고 합의에 이른듯 합니다. 2007년 7월까지 아이팟과 아이튠스로 벌어 들인 돈이 23.5조 달러라는데 도저히 어느 정도인지 감이 안 오는 군요.
애플과 관련한 이야기라면 항상 흥미진진하네요.
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| UMDH를 이용한 메모리릭 탐지 (0) | 2008/05/27 |
|---|---|
| 마이크로소프트 비스타 권한 분리 장치: Integrity Level (0) | 2008/05/22 |
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
| 비스타(Windows Vista)의 레지스트리 가상화 (0) | 2008/03/17 |
| Windows Vista x64 에디션의 드라이버 싸이닝 문제 (0) | 2008/03/17 |
윈도우즈에서 백업 등을 실시하면 그 때 그 때의 파일 쓰기 상황에 따라 덜 쓰여진(flushing이 안된) 파일이 백업 되어 버리기도 하고, 파일이 shared 안된 상태로 열려 있어서 백업이 실패하기도 합니다. 이러한 상황을 찢어진 쓰기 동작(torn writes)이라고 MSDN은 표현하고 있습니다.
이러한 경우 백업 이미지를 “chkdsk”로 복구해야 하는 상황이 발생하게 되는데, 이러한 상황을 피하기 위해서 도입 된 개념이 바로 “Volume Shadow Copy”입니다. 이 메카니즘은 윈도우즈 XP, Server 2003 이상에서 사용되고 있습니다.
특정 시간대의 정확한 하드디스크 볼륨의 스냅샷을 백업해 낼 수 있게 하는 기능입니다. 백업 어플리케이션이나 복구 프로그램, 스토리지 하드웨어에서 유용하게 사용할 수 있습니다.
비스타의 시스템 복구 기능은 바로 이 기능에 기반하고 있습니다.
AntiVirus의 경우 이 쉐도우 카피로 인해서 기능에 혼란이 오는 경우가 종종 있습니다. 시스템에서는 쉐도우 카피도 단지 볼륨의 하나로 인식이 되므로 바이러스 스캐닝이 되는 경우가 있는데, 어떠한 경우에는 원본에서 치료가 된 바이러스가 이 쉐도우 카피에서 나중에 발견 되는 경우도 발생하게 됩니다. 이 경우 엔드 유저는 바이러스 치료가 이전에 실패했다고 착각하는 경우가 있습니다.
또한 검역소에 보관중인 파일에 대해서 쉐도우 카피로 복사하면서 에러가 발생하기도 하고, AntiVirus와 충돌이 종종 보고 되고 있습니다.
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| 마이크로소프트 비스타 권한 분리 장치: Integrity Level (0) | 2008/05/22 |
|---|---|
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
| 비스타(Windows Vista)의 레지스트리 가상화 (0) | 2008/03/17 |
| Windows Vista x64 에디션의 드라이버 싸이닝 문제 (0) | 2008/03/17 |
| IRP_MJ_CLEANUP과 IRP_MJ_CLOSE의 차이점 (0) | 2008/03/12 |
비스타에서 많은 보안성 강화가 이뤄졌습니다. 그런데 그러한 보안성 강화로 인해서 많은 어플리케이션들이 혼란을 겪게 되었습니다. 레지스트리 가상화 기술은 이러한 비스타의 강화된 보안과 기존 어플리케이션의 호환성으로 인해 도입된 기술입니다.
기존의 윈도우즈 시스템에서는 어플리케이션들이 대부분 관리자 권한을 가지고 실행 되어서, 레지스트리키를 마음대로 망쳐 놓을 수 있는 문제가 존재했습니다. 수 많은 스파이웨어들의 창궐은 곧 이러한 문제와 연관이 있습니다.
만약 어플리케이션이 전체 시스템에 영향을 미치는 레지스트리를 수정할 경우 각 사용자별로 별도의 공간에 저장하게 합니다. 어플리케이션은 해당 오퍼레이션이 성공한 것으로 간주하게 됩니다. 따라서 해당 어플리케이션은 문제 없이 실행이 가능합니다.
하지만 이것은 과도기적인 기술로서 향후 버전의 윈도우즈에서는 삭제될 예정입니다. 따라서 이 기술에 의존적인 어플리케이션을 앞으로 개발해서는 안됩니다.
열기의 경우KEY_ALL_ACCESS 를 가지고 열기를 시도할 경우 정책상 줄 수 있는 최대한 권한을 줍니다.
쓰기 권한이 없을 경우 가상 공간에 저장하게 됩니다.
예를 들어 “HKEY_LOCAL_MACHINE\Software\AppKey1”에 대한 쓰기는 모두 “HKEY_USERS\<User SID>_Classes\VirtualStore\Machine\Software\AppKey1”로 리다이렉션 됩니다.
읽기의 경우 가상 공간과 실제 공간의 키를 합쳐서 보여준다. 밸류(Value)들도 합쳐서 보여줍니다. 이 경우 값의 겹칠 경우, 가상 공간의 값이 우선권을 가지고 보여집니다.
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| 흥미로운 애플 이야기 (0) | 2008/05/22 |
|---|---|
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
| 비스타(Windows Vista)의 레지스트리 가상화 (0) | 2008/03/17 |
| Windows Vista x64 에디션의 드라이버 싸이닝 문제 (0) | 2008/03/17 |
| IRP_MJ_CLEANUP과 IRP_MJ_CLOSE의 차이점 (0) | 2008/03/12 |
| Windows Vista SP1의 Object Manager Filtering으로 할 수 있는 일 (0) | 2007/10/31 |
Windows Vista x64 에디션에서 드라이버 개발을 하다 보면 불편한 것이 한둘이 아닙니다.
그중의 하나가 바로 테스트용 드라이버를 로드하려면 반드시 드라이버 시그너쳐 확인 옵션을 부팅시에 죽여 줘야 한다는 것입니다.
사실 이전 버전의 윈도우즈에서 개발된 제품들 중에서 드라이버 싸인닝 이슈로 인해서 실행 되지 않는 경우가 많습니다.
Windows Vista x64 에디션에서는 드라이버를 로딩하기 위해서 디지탈 싸인이 꼭 필요합니다.
한때 3rd 파티 드라이버 중의 하나인 Atsiv를 사용하여 드라이버를 로딩할 수 있었던 적이 있습니다. 싸인이 안 된 어떤 드라이버들이라도 로드할 수 있었습니다. Kernel Mode Code Signing (KMCS) 정책에 위배하는 행위를 허용해 주는 일종의 백도어인 셈입니다. 이렇게 로딩된 드라이버는 enumDeviceDrivers() API로부터도 검출이 안됩니다.
Kernel Mode Code Signing (KMCS) 는 코드를 누가 짰는지, 드라이버를 누가 제공하는지를 알려 주는 방법입니다.
마이크로소프트에서는 이 드라이버에 대해서 다음과 같은 조치를 취했습니다.
2007년 8월 2일 Windows Defender의 시그너쳐에 추가됨
2007년 8월 2일 VeriSign에 의해서 인증서 취소
마이크로소프트 보안팀에서 조사 실시
마이크로소프트에서는 이러한 대응이 가능한 것이 KMCS의 효과라고 주장합니다. 즉, KMCS로 Atsiv의 제작자를 바로 파악할 수 있었고, 자사 제품에서 해당 드라이버를 블랙리스팅할 수 있었으니까요.
하지만 아무리 OS 제작사에서 이렇게 보안 장치를 구현해 놓아도 안일한 3rd 파티 개발자들이 백도어를 생산하는 이상 비슷한 취약점들은 앞으로 계속 나오지 않을까 생각합니다.
태터데스크 관리자


태터데스크 메시지
'엔지니어링' 카테고리의 다른 글
| Volume Shadow Copy란 무엇인가 (0) | 2008/03/17 |
|---|---|
| 비스타(Windows Vista)의 레지스트리 가상화 (0) | 2008/03/17 |
| Windows Vista x64 에디션의 드라이버 싸이닝 문제 (0) | 2008/03/17 |
| IRP_MJ_CLEANUP과 IRP_MJ_CLOSE의 차이점 (0) | 2008/03/12 |
| Windows Vista SP1의 Object Manager Filtering으로 할 수 있는 일 (0) | 2007/10/31 |
| Windows Vista SP1의 Object Manager Filtering (0) | 2007/10/30 |
