NTP 서버 구성 및 클라이언트 연결

2010.09.10 15:49 | Posted by 로멘틱가이
Windows의 ntp적용은 time.windows.com으로 1차적으로 동기화 되어 있습니다.
하지만 사내의 서버들에 따로 동기화 서버를 구성하고자 하는 경우에는 아래와 같이 적용하면됩니다.

<Windows 2000>
Server 구성
1. registry 프로그램 실행 (시작 -> 실행 -> regedit (or regedit32)
2. registry 키 값 변경     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32Time\Parameters
항목 : LocalNTP
유형 : DWORD
값 : 1
3. NTP 서비스 재시작
  - 중지 : net stop w32time
  - 기동 : net start w32time
                or
  - 시작 -> 실행 -> services.msc
    Window Time 서비스 restart
Client 구성
1. NTP time 서버 설정 확인
net time /querysntp
2. NTP time 서버 설정
net time /setsntp:<timeserver_ip>
3. NTP 서비스 재시작
  - 중지 : net stop w32time
  - 기동 : net start w32time
                or
  - 시작 -> 실행 -> services.msc
    Window Time 서비스 restart
4. 동기화 상태점검
w32tm -once
 
<Windows 2003>
서버구성
1. registry 프로그램 실행 (시작 -> 실행 -> regedit (or regedit32)
2. registry 키 값 변경
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32Time\TimeProviders\NtpServer
항목 : Enabled
유형 : DWORD
값 : 1

항목 : InputProvider
유형 : DWORD
값 : 1 
4. NTP 서비스 재시작
  - 중지 : net stop w32time
  - 기동 : net start w32time
                or
  - 시작 -> 실행 -> services.msc
    Window Time 서비스 restart
Client 구성
1. NTP Time 서버 설정 확인
net time /querysntp
2. NTP Time 서버 설정
w32tm /config /syncfromflags:manual/manualpeerlist:<timeserver_ip> /update
w32tm /resync (시간동기화 즉시 적용시 실행하는 명령어)
3. NTP 서비스 재시작
  - 중지 : net stop w32time
  - 기동 : net start w32time
                or
  - 시작 -> 실행 -> services.msc
    Window Time 서비스 restart
4. 동기화 상태점검
w32tm /monitor
ps. NTP 서비스가 사용하는 포트는 UDP 123Port 이므로 Windows 방화벽 사용시나 외부 방화벽 사용 시 해당 Port를 양방향으로 열어줘야합니다.

ps1. event Log 에서 NTP Sycn 확인은 593, 50,38,47,29 ID를 살펴보시기 바랍니다.

ps2. 한국 표준시간 서버는 아래와 같습니다.
time.bora.net 203.248.240.140
time.nuri.net 211.115.104.21
time.kornet.net 211.48.62.132

메모리 체크 관련 툴

2010.03.06 22:39 | Posted by 로멘틱가이
1. Pooltag.txt

rem
rem    Pooltag.txt
rem
rem    This file lists the tags used for pool allocations by kernel mode components
rem    and drivers.
rem
rem    The file has the following format:
rem       <PoolTag> - <binary-name> - <Description>
rem
rem    Pooltag.txt is installed with Debugging Tools for Windows (in %windbg%\triage)
rem    and with the Windows DDK (in %winddk%\tools\other\platform\poolmon, where
rem    platform is amd64, i386, or ia64).
rem
AdSv - vmsrvc.sys   - Virtual Machines Additions Service
ARPC - atmarpc.sys  - ATM ARP Client
ATMU - atmuni.sys   - ATM UNI Call Manager
Atom - <unknown>    - Atom Tables

위의 내용은 C:\Program Files\Debugging Tools for Windows (x86)\triage 에 위치한 pooltag.txt에 있는 내용이다.
해당 파일에는 각 Pooltag , 파일명, 설명이 잘 나와있다.
혹시나 특정 파일 오류가 발견되는 경우 해당 파일을 참조하면되며 해당 파일은 Windbg를 설치하면 그곳에 나와있다.

2. msinfo32.exe
[그림 1] msinfo32

해당 툴 실행 후
시스템 요약 ->소프트웨어 환경의 각 내용을 선택하면 위와 같이 각각의 내용에 대해 확인할 수 있다.
이 내용은 Pooltag.txt의 내용과 동일하며 그룹별로 확인할 수 있으므로 필요시 찾아보면 된다.

3. Verifier

해당 툴은 해당 컴에 깔려있는 드라이버 중 MS에서 인증받지 못한 Driver들의 목록이 나와있다.
해당 드라이버들은 인증되지 않은 드라이브이기 때문에 MS에서도 해당 드라이브 정상 유무에 대해 검증해주지 않으므로 이슈가 있는 서버의 경우 확인하는 것이 좋다.

시작 -> 실행 -> verifier
[그림 2] verifier 처음 실행 화면

[그림 3] verifier Standard 실행 시

[그림 4] unsigned 드라이버 목록

위와 같이 간단하게 확인할 수 있으므로 이슈 서버에 대해 확인할 때 참고하면 좋은 툴인거 같다.

4. gflags.exe, poolmon.exe

poolmon.exe는 현재 메모리 풀에서 사용하는 리스트를 확인할 수 있다.
해당 툴을 사용하기 위해서는 gflags.exe에 enable pool tags 항목을 체크한 후 리부팅을 해야한다.
[그림 5] gflags.exe

pool tagging은 pooltags.txt에 나와있던 pool tag랑 같은 의미이다.
해당 체크박스에 체크를 하면 각각의 pool tag별 값들을 가져오기 때문에 해당 체크를 적용해야하는 것이다.

[그림 6] poolmon

poolmon은 각각의 pooltag에 얼마의 값들이 할당되어있는지를 알 수 있다.
nonpage, page별로 구분이 되어 있으며 확인방법은 다음과 같다.

 ACPI Nonp         15 (   0)        15 (   0)        0       0 (     0)      0
맨앞의 ACPI항목은 Pool-tag이므로 위에서 설명힌 pooltags.txt에서 해당 내용을 찾아보면
ACPI - acpi.sys     - ACPI
ACPI에 할당되어 사용되는 공간이라는 것을 알 수 있다.
이와 같이 meomry dump 파일 분석시에만 확인할 수 있는 내용을 실시간으로 확인할 수 있으므로
paged pool or non-paged pool 메모리가 풀로 사용중이라는 메시지가 뜨면 poolmon을 통해 어떤 프로세스가 과점하고 있는지 확인하여 조치를 취해주면 된다.



Windows Default 속성

2009.04.13 09:43 | Posted by 로멘틱가이
해당 내용은 대부분의 사람이 알고 있으나
모르는 경우 설정에 문제가 생길 수 있을거 같습니다.

윈도우의 공유폴더 및 소유자 속성의 경우
거부가 허용보다 우선순위를 가지고 있습니다.

예를 들어 A라는 유저에 대해 공유폴더 B에 대해 모든 권한을 허용하였으나
B 폴더에 A라는 유저에 대해 Write 권한이 거부되어 있다면

해당 폴더에 Write할 수 없습니다.

공유폴더를 통해 내부망 공유를 하는 경우 권한 설정에 참고 바랍니다.

hyper-v 관련 내용 정리

2009.04.10 12:31 | Posted by 로멘틱가이

hyper-v 관련 정리 자료입니다.

1. Hardware need

    - CPU 64 Bit 지원(Intel VT 기능 지원)

    - 미국 벤더 말로는 그외에 하드웨어 특이사항 없다고 함

(아래 하드웨어 필요 내역 확인 바람)

Component

Requirement

Processor

Minimum: An x64 processor with Hardware-assisted virtualization. This is available in processors that include a virtualization option; specifically, Intel VT or AMD Virtualization.

Hardware Data Execution Protection (DEP) must be available and be enabled. Specifically, you must enable Intel XD bit (execute disable bit) or AMD NX bit (no execute bit).

Recommended: 2 GHz or faster

Memory

Minimum: 1 GB RAM; Recommended: 2+ GB RAM

Maximum (64-bit systems): 32 GB

Available Disk Space

Minimum: 10 GB; Recommended: 40 GB or greater

Note: Computers with more than 16 GB of RAM will require more disk space for paging, hibernation, and dump files

Network Adapters

Minimum: 1; Recommended: 2 or more

Drive

DVD-ROM drive

Display

Super-VGA (800 × 600) or higher-resolution monitor

Other

Keyboard and Microsoft Mouse or compatible pointing device

Internet access (fees may apply)

Active Directory highly recommended

Remote Management

Hyper-V Server requires a second system for remote management running:

Windows Server 2008 with the Hyper-V Manager MMC

Windows Vista SP1 with the Hyper-V Manager MMC

Microsoft System Center Virtual Machine Manager


2. CPU Cycle

    - 통역이 정확한 통역을 못해서 약간 내용이 틀릴 수 있음

    - CPU 할당에 대해서는 자동으로 CPU 필요량을 할당하게 되어지며

      실제 툴에서 CPU 선택하는 내용은 Physical 내용 or 필요 CPU를 보여주기 위한 factor


3.System Console

    - System Console 의 경우 Box 단위의 라이센스

    - 모니터링 툴과 연동되어 System Console에 Dynamic 자원 할당 가능

    - 해당 툴은 vmware 의 Guest OS도 올려서 관리 가능


4. P2V

    - 기존 vmware와 틀리게 P2V가 간단함

    - 관리툴에서 해당 버튼을 누르면 서버에 agent가 설치된 후 해당 서버를 빠르게 이미지화 시킨다고 함

    - 현재 팀에 hyper-v 테스트 서버가 없으므로 향후 UC 서버가 입고되어 설치되어지면 해당 기능 테스트 후 공유 예정


5.  Microsoft Assessment and Planning (MAP) Toolkit

    - http://technet.microsoft.com/en-us/library/bb977556.aspx

    - 해당 툴은 hyper-v로 해당 서버를 옮길 수 있는지 에 대해 검사를 해주는 툴임

    - 해당 기능 지원하면서 다양한 report를 지원하므로 일반 서버 관리에 도입 시 어떤 효과가 있는지 테스트 예정

      테스트 후 windows 관리에 도움이 된다고 판단 시 전체 서버에 도입하도록 진행 예정


6. Hyper-v R2 기능 추가

    1) Live Migration

        - vmware 의 vmotion과 동일 기술

        - 기존 Hyper-v의 Quick Migration 기능이 변경된 것이며 기존 Quick Migration이 디스크를 통해서 migration 되는 부분이

          많은 불편을 낳아 수정된 기능

    2) 디스크 핫 플러그

        - 디스크를 추가할때 기존에는 이미지를 다운한 후 디스크를 추가해야 보였으나 향후 핫플로그로 가능합니다

           (vmware에서도 다운이 필요했는데 이 점은 많이 개선된 사항입니다.)


    3) core parking

        - 전력 소비를 줄이는 개념으로 core가 사용하지 않는 경우 전력을 사용하지 않게 막는 기능입니다.

          (core 당 60W를 사용한다고 하니 실제 전력 비용 절감이 어떻게 되는지는 알아봐야하나 현재 추세인 Green IT에 부합되는 기능인듯

            합니다.)

    4) Second Level Address Translation (SLAT) 지원

        - 일종의 논리적 슬롯입니다. hyper-v에서 논리적으로 중간 드라이브를 만드는 개념입니다.

TAG hyper-v, R2, window

예약된 작업 등록

2008.12.04 21:02 | Posted by 로멘틱가이
예약된 작업 등록 방법

예약된 작업에 등록하게 위해서는 다음  class를 사용해야 한다.

ScheduledJob Class
uint32 Create(
  [in]            string Command,
  [in]            datetime StartTime,
  [in, optional]  boolean RunRepeatedly,
  [in, optional]  uint32 DaysOfWeek,
  [in, optional]  uint32 DaysOfMonth,
  [in, optional]  boolean InteractWithDesktop,
  [out]           uint32 JobId
);
1) Command
- 예약된 작업에서 수행할 Command(notepad의 경우 notepad.exe)
2) StartTime
- "YYYYMMDDHHMMSS.MMMMMM(+-)OOO",
  앞의 YYYYMMDDHHMMSS - 년월일시간분초
  (+-)OOO - Starttime 일반적인 LocalTime이 아니라 UTC Time임
3) RunRepeatedly
- 반복 수행 여부
4) DaysOfWeek
- 반복할 요일
  (1:월 2:화 3:수 4:목 5:금 6:토 7:일)
5) DaysOfMonth
- 한달에 어느 날 반복할 것인지
  (1:1일 2:2일 4:3일 - 계속 2배씩)
6) JobId
- Job No

Return Value
Return code Description

0

The request is accepted.

1

The request is not supported.

2

The user does not have the necessary access.

8

Interactive process.

9

The directory path to the service executable file cannot be found.

21

Invalid parameters have been passed to the service.

22

The account that this service runs under is invalid or lacks the permissions to run the service.

(MS 사이트 발췌)

위의 내용은 Class 값이다.
실제로 Vbscript 사용할 수 없다.

그럼 실제로 Vbscript에서는 어떻게 사용해야 할까?
다음과 같이 해당 Class를 오픈한 후 Create를 하면된다.
ex)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create _
    ("Notepad.exe", "********012500.000000-420", _
        True , 4, , True, JobId) 
If errJobCreated <> 0 Then
Wscript.Echo "Error on task creation"
Else
Wscript.Echo "Task created"
End If
(해당 자료는 MS 사이트에서 퍼옴)
1. Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
해당 ScheduledJob을 가져온다.

2. errJobCreated = objNewJob.Create _
    ("Notepad.exe", "********012500.000000-420", _
        True , 4, , True, JobId)

해당 Class에 대해 새로운 잡을 Create(즉 등록) 한다.

Create의 매개변수는 다음과 같다.
1. Execute 구문
2. 시간
3. 반복여부
4. 요일(위와 동일)
6. JobID

위의 예제의 경우 매주 목요일 1시 25분에 notepad를 실행하게 됩니다.
예약된 작업은 유닉스의 Crontab과 같은 기능을 하므로 많은 사용을 하게 되지만
제어판 - 예약된 작업에서 등록을 하기는 힘드므로 여러대의 서버들에
자동화를 하기 위해서 많이 사용할거 같다.

msdn에서 상세한 내용을 못찾아서 고생을 하여 해당 내용을 공유한다.

IIS 로그 저장 장소

2008.08.07 18:06 | Posted by 로멘틱가이
IIS 로그 저장 장소

IIS 로그가 쌓이는 저장 장소는 다음과 같다.
C:\WINDOWS\system32\LogFiles

Tip. 예약된 작업에 해당 로그파일에 대해 삭제 주기를 걸어 파일시스템을 관리할 수 있다.

MBSA(Microsoft Baseline Security Analyzer)

2007.12.20 11:42 | Posted by 로멘틱가이

MBSA(Microsoft Baseline Security Analyzer)

해당 툴은 MS에서 개발된 취약성 분석 툴이다.
다음 사이트에서 받을 수 있다.

http://www.microsoft.com/technet/security/tools/mbsa1/default.mspx

처음 설치를 하면 다음과 같은 화면이 뜬다.

사용자 삽입 이미지

위의 항목 중 처음 항목을 선택하면 해당 컴퓨터에서 스캔을 할 수 있는 화면이 나온다.

사용자 삽입 이미지

위의 항목에 컴퓨터의 주소를 넣으면 검사가 가능하다.
(IP주소에 IP를 넣으면 다른 컴퓨터의 검색도 가능하다.)
사용자 삽입 이미지


위와 같이 검색을 하게 된다.
다음과 같은 결과값이 나오게 된다.
사용자 삽입 이미지

해당 내용의 hyper link를 클릭하면 자세한 내용을 볼 수도 있으며
해당 툴을 사용하면 해당 컴퓨터의 취약성에 대해 한눈에 볼 수 있다.

Windows 명령어(네트워크)

2007.12.17 12:10 | Posted by 로멘틱가이

Windows 명령어(네트워크)

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\hp>ipconfig

Windows IP Configuration


Ethernet adapter 로컬 영역 연결:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 59.29.224.62
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 59.29.224.254

C:\Documents and Settings\hp>netstat

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    gwan14:1208            211.234.239.92:5004    ESTABLISHED

C:\Documents and Settings\hp>netstat -nr

Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 04 23 22 9e 59 ...... Intel(R) PRO/100 VE Network Connection - 패킷 스
케줄러 미니 포트
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0    59.29.224.254    59.29.224.62       20
      59.29.224.0    255.255.255.0     59.29.224.62    59.29.224.62       20
     59.29.224.62  255.255.255.255        127.0.0.1       127.0.0.1       20
   59.255.255.255  255.255.255.255     59.29.224.62    59.29.224.62       20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
        224.0.0.0        240.0.0.0     59.29.224.62    59.29.224.62       20
  255.255.255.255  255.255.255.255     59.29.224.62    59.29.224.62       1
Default Gateway:     59.29.224.254
===========================================================================
Persistent Routes:
  None

C:\Documents and Settings\hp>rout print
'rout'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

C:\Documents and Settings\hp>route print
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 04 23 22 9e 59 ...... Intel(R) PRO/100 VE Network Connection - 패킷 스
케줄러 미니 포트
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0    59.29.224.254    59.29.224.62       20
      59.29.224.0    255.255.255.0     59.29.224.62    59.29.224.62       20
     59.29.224.62  255.255.255.255        127.0.0.1       127.0.0.1       20
   59.255.255.255  255.255.255.255     59.29.224.62    59.29.224.62       20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
        224.0.0.0        240.0.0.0     59.29.224.62    59.29.224.62       20
  255.255.255.255  255.255.255.255     59.29.224.62    59.29.224.62       1
Default Gateway:     59.29.224.254
===========================================================================
Persistent Routes:
  None

C:\Documents and Settings\hp>nbtstat

Displays protocol statistics and current TCP/IP connections using NBT
(NetBIOS over TCP/IP).

NBTSTAT [ [-a RemoteName] [-A IP address] [-c] [-n]
        [-r] [-R] [-RR] [-s] [-S] [interval] ]

  -a   (adapter status) Lists the remote machine's name table given its name
  -A   (Adapter status) Lists the remote machine's name table given its
                        IP address.
  -c   (cache)          Lists NBT's cache of remote [machine] names and their IP
 addresses
  -n   (names)          Lists local NetBIOS names.
  -r   (resolved)       Lists names resolved by broadcast and via WINS
  -R   (Reload)         Purges and reloads the remote cache name table
  -S   (Sessions)       Lists sessions table with the destination IP addresses
  -s   (sessions)       Lists sessions table converting destination IP
                        addresses to computer NETBIOS names.
  -RR  (ReleaseRefresh) Sends Name Release packets to WINS and then, starts Refr
esh

  RemoteName   Remote host machine name.
  IP address   Dotted decimal representation of the IP address.
  interval     Redisplays selected statistics, pausing interval seconds
               between each display. Press Ctrl+C to stop redisplaying
               statistics.


C:\Documents and Settings\hp>nbtstat -c

로컬 영역 연결:
Node IpAddress: [59.29.224.62] Scope Id: []

                  NetBIOS Remote Cache Name Table

        Name              Type       Host Address    Life [sec]
    ------------------------------------------------------------
    GA03           <20>  UNIQUE          59.29.224.15        415

C:\Documents and Settings\hp>tracert www.daum.net

Tracing route to daumtop.daum.akadns.net [222.231.51.77]
over a maximum of 30 hops:

  1     1 ms    <1 ms     1 ms  59.29.224.254
  2    <1 ms     1 ms    <1 ms  211.192.200.241
  3    <1 ms     1 ms    <1 ms  221.148.210.181
  4    <1 ms    <1 ms    <1 ms  211.38.8.65
  5     1 ms     1 ms     1 ms  121.138.225.33
  6     1 ms    <1 ms    <1 ms  222.106.186.25
  7     2 ms     1 ms     1 ms  59.18.54.1
  8     1 ms     1 ms     1 ms  59.18.54.2
  9     2 ms     2 ms     2 ms  203.233.35.225
 10     2 ms     2 ms     2 ms  210.92.194.38
 11     2 ms    14 ms     2 ms  211.233.55.22
 12     *     211.172.248.202  reports: Destination net unreachable.

Trace complete.

C:\Documents and Settings\hp>nslookup
Default Server:  kns.kornet.net
Address:  168.126.63.1

> www.hp.co.kr
Server:  kns.kornet.net
Address:  168.126.63.1

Non-authoritative answer:
Name:    hp.co.kr
Address:  16.130.128.245
Aliases:  www.hp.co.kr

> exit

C:\Documents and Settings\hp>net
이 명령에 대한 구문:


NET [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
      HELPMSG | LOCALGROUP | NAME | PAUSE | PRINT | SEND | SESSION |
      SHARE | START | STATISTICS | STOP | TIME | USE | USER | VIEW ]


C:\Documents and Settings\hp>net accounts
만료 시간이 지난 얼마 후에 강제 로그오프하시겠습니까?:     아님
최소 암호 사용 기간 (일):                                  2
최대 암호 사용 기간 (일):                                  42
최소 암호 길이:                                            8
암호 기록 개수:                                            24
잠금 임계값:                                               5
잠금 기간 (분):                                            30
잠금 관찰 창 (분):                                         30
컴퓨터 역할:                                               WORKSTATION
명령을 잘 실행했습니다.


C:\Documents and Settings\hp>net view
서버 이름            설명

-------------------------------------------------------------------------------
\\CLIENT-SERVICE0
\\DO00
\\DO02
\\DO03
\\DO05
\\DO08
\\DO09
\\GA00
\\GA03
\\GA07
\\GA08
\\GA09
\\GENERIX-지니
\\GWAN14               oh00
\\GWAN17               oh00
\\GWAN18               oh00
\\HAN19
\\HANINS               KumIns
\\HP-YV94SP7HOKY4
\\HPE14TEST
\\HPMETIS
\\HSSO
\\IS
\\KREDUTEST2K3
\\KWAN03               oh00
\\KWAN07               oh00
\\KWAN08               oh00
\\KWAN09               oh00
\\KWAN10               oh00
\\MAINCOM
\\OH10                 oh00
\\SOK03
\\SUL02                sul02
명령을 잘 실행했습니다.


C:\Documents and Settings\hp>net user

\\GWAN14에 대한 사용자 계정

-------------------------------------------------------------------------------
Administrator            ASPNET                   Guest
HelpAssistant            hp                       IUSR_HP-RBF9C1WGLUW2
IWAM_HP-RBF9C1WGLUW2     SUPPORT_388945a0         VUSR_HP-RBF9C1WGL
명령을 잘 실행했습니다.


C:\Documents and Settings\hp>net share

공유 이름   리소스                        설명

-------------------------------------------------------------------------------
ADMIN$       C:\WINDOWS                      Remote Admin
wwwroot$     c:\inetpub\wwwroot              웹 프로젝트에 대한 파일 공유...
C$           C:\                             Default share
IPC$                                         Remote IPC
명령을 잘 실행했습니다.


C:\Documents and Settings\hp>doskey

C:\Documents and Settings\hp>doskey /history
ipconfig
netstat
netstat -nr
rout print
route print
nbtstat
nbtstat -c
tracert www.daum.net
nslookup
net
net accounts
net view
net user
net share
doskey
doskey /history

C:\Documents and Settings\hp>

DPC란 무엇인가?~

2007.11.19 15:49 | Posted by 로멘틱가이
DPC(Deferred Procedure call) 및 디스패치(Dispatch)

앞에서 알아본 APC와 마찬가지로 DPC도 또한 소프트웨어 인터럽트이다.
DPC를 이해하기 위해선 Dispatch에 대해 알아야한다.

Dispatch란~?
Dispatch는 한 스레드의 실행이 길어져서 스케줄링을 다시 해야하는데,
자발적인 대기상태 전환이나 종료가 안되는 경우 스케쥴링을 다시 하여 스레드 실행을
조절하는 것을 의미한다.

DPC란~?
현재 Thrad가 수행중에 IRQL상에 더 높은 인터럽트가 발생하면 현재 수행중인 Thread를 저장하고
해당 인터럽트를 실행한다.

이와같이 하드웨어 인터럽트 서비스를 적절하게 제공하기 위해 함께 동작하는 장치 인터럽트를
제어할때 사용한다.

그런데 이런 인터럽트도 여러 Thread로 나뉠 수 있다. 그리고 개중에는 중요하거나 우선 처리 않되도 되는 경우가 있을 수 있다. 이럴 경우 DPC를 이요하게 된다.

사용자 삽입 이미지
Internal에는 다음과 같이 설명 되어 있다.

1. 인터럽트가 발생한다.
2. 발생한 인터럽트가 IRQL이 높은 경우 현 상태 저장하고 IDT(향후 설며예정)을 참조하여 ISR을 실행한다.
3. ISR이 동작하면서 CPU의 IRQL을 올린다.
4. 실행되는 Thread가 덜 중요할 경우 해당 Thread를 DPC 큐에 넣는다.
5. ISR이 종료되면 IRQL이 DPC 레벨로 낮아진다.( 즉 DPC가 default라는걸 알 수 있다.)
6. DPC의 인터럽트들을 실행하고 큐의 모든 객체를 실행한 다음 원래 Thread로 복귀한다.

그렇다면 IRQL에서의 우선순위 조정은 어떻게 되는 것인가.
앞에서 그것에 대해 헷갈렸지만 DPC항목에서 우린 쉽게 알 수 있다.

즉 하드웨어 인터럽트가 발생하면 모든 스레드는 DPC 큐에 저장되어진다.
즉 하드웨어 인터럽트가 소프트웨어 인터럽트에 항상 우선순위가 높다는 것을 알 수 있다.

소프트웨어 인터럽트 안에서는 DPC가 APC보다 우선순위가 앞서는데 그 이유는
APC가 커널 인터럽트이지만 DPC에 저장되어 있는 인터럽트들도 어차피 기존에 수행되던
커널 인터럽트라는 것이다. 같은 커널 인터럽트면 어떤걸 먼저 수행하겠는가?~

이 질문에 당연히 먼저 수행하던 인터럽트라는 답이 나온다.
즉 DPC가 APC보다 앞서는 이유는 위와 같이 결정된다.

그렇다면 지연 인터럽트에 대해 굳이 설명할 필요가 없다.
DPC안에서 Dispatch되는 것에 따라 수행 순서가 결정되어지기 때문이다.

APC란 무엇인가?

2007.11.19 14:09 | Posted by 로멘틱가이

APC(Asynchronous procedure call) 인터럽트

저번 시간에 IRQL에 대해 학습해 보았다.
IRQL의 분포에 대해 보면 하드웨어 소프트웨어 그리고 passive 모드로 크게 구분할 수 있다.
복습겸 해서 3가지 모드에 대해 알아보겠다.

하드웨어 : 일반적인 하드웨어 요청에 의한 인터럽트이다(마우스. 키보드 등이 대표적 경우)
소프트웨어 : APC DPC로 구성되어 있음
Passive : 일반적인 프로그램 수행

그중 APC는 소프트웨어에 존재한다.
그럼 해당 인터럽트가 어떤 내용인지 알아보도록 하겠다.

Internal 책의 내용을 빌려 설명하면
APC는 스레드가 같은 하나의 수행할 job에 대한 대기열로 볼 수 있고,
커널이 이 APC 루틴을 수행한다.
즉, 스레드의 실행은 APC의 실행으로 보면 된다.
APC들은 APC 개체라고부르는 커널 제어 개체를 통해 설명되는데,
실행을 기다리는 APC들은 커널이 관리하는 APC 대기열에 상주한다.

먼저 실행부 (Process 나 메모리 스레드 I/O 보안 등을 관리 ntoskernl.exe)는
커널 모드 APC들을 사용하여 운영체제 작업이 특정 스레드의 컨텍스트에 있는
주소 공간 내에서 완료 되도록 수행된다. 즉 인터럽트를 일으킬 수 있는 시스템
서비스의 실행 정지 및 스레드간 메모리상에서 비동기 I/O지원 등을 제공한다.

장치드라이버들은 I/O 작업을 위해서 사용한다.

사용자 모드 APC는 패시브 모드에서 실행된다.

즉 일반 프로그램이 실행되다가 긴급하게 커널 프로그램이 구동해야하는 경우에
잠시 일반 프로그램을 process wait단계에 두고 커널 프로그램을 구동하게 한다.
커널 프로그램은 갯수에 따라 APC 대기열에 상주하며 그 안에서의 우선순위를 가지고
처리를 기다리며 해당 처리가 완료되어 지면 다시 기존 프로그램이 수행되게 된다.

스레드의 수행공간은 커널과 사용자로 나뉘어지기 때문에
사용자보다는 커널의 우선순위를 높일수 밖에 없다.(리부팅 되지 않기 위해서는)

이런 경우 APC Interrupt를 사용하여 긴급한 커널 프로세스 부터 처리되어진다.



이전 1 2 다음