Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 3건
  개체의 구분 
작성일시 : 2007.11.28 10:54 | 분류 : Windows Server/Kernel | 태그 : executive object, internals, kernel object, object, Windows, 실행부 개체, 커널 개체

개체는 실행부 개체 (executive object) 와 커널 개체 (kernel object) 의 두 종류로 분류 된다.

실행부 개체 : 프로세스 관리자, 메모리 관리자, I/O 시스템 등...
커널 개체 : Windows 커널에 의해 구현된 개체 집합으로 실행부 내에서만 생성되고 사용된다. 커널 개체들은 실행부 개체들이 만드는 동기화와 같은 기본적인 기능들을 제공하기때문에 실제 커널 개체들은 실행부 개체 안에 포함된다.

  개체 관리자 
작성일시 : 2007.11.28 10:48 | 분류 : Windows Server/Kernel | 태그 : internals, Object Manager, Windows, 개체 관리자

Windows 는 개체 모델을 통해 실행부에서 구현된 다양한 내부 서비스들에 일관성과 보안 액세스를 제공한다.

개체 관리자 : 개체의 생성, 삭제, 보호, 추적 을 담당한다.

 
WinObj을 통한 개체 관리자 탐색

- 시스템 리소스 사용에 대한 공통의 통일 된 메카니즘 제공
- C2 보안 컴플라이언스를 획득하도록 운영체제에서 한 위치로 개체 보안을 격리
(Isolate object protection to one location in the operating system so that C2 security compliance can be achieved)
- 프로세스들이 이 개체를 사용하는 데 대한 책임 처리 메카니즘을 제공하여 시스템 리소스의 사용을 제한할 수 있게함
(Provide a mechanism to charge processes for their use of objects so that limits can be placed on the usage of system resources)
- 장치, 파일, 파일 시스템의 디렉터리, 독립적인 개체들의 집합과 같이 존제하는 개체들을 쉽게 통합할 수 있는 개체 이름 부여 스키마 구축
(Establish an object-naming scheme that can readily incorporate existing objects, such as the devices, files, and directories of a file system, or other independent collections of objects)
- 부모 프로세스로 부터 리소스들을 상속하기 위한 프로세스의 기능 및 대소문자 구분 파일 이름 생성과 같은 다양한 운영체제 환경 지원
- 개체 보존에 대한 일관된 규칙 수립
(that is, for keeping an object available until all processes have finished using it)

  3장 - 1 (interrupt) 세미나 후기 
작성일시 : 2007.11.15 09:17 | 분류 : Windows Server/Kernel | 태그 : 3장, internals, interrupt

사전 지식이 없었던 만큼 정말 어려웠던 내용이 였습니다.
고생 많으셨습니다.
별로 아는 것도 없으면서 수업을 진행하니 어려움이 많네요...^^

4회 Windows internals 세미나

[수업 내용]

http://maystyle.tistory.com/entry/지루한-인터럽트-한방에-알아보자

[진행]
민성

[참석]
준상, 동조, 민우형님, 준규선배, 조현정 과장님

[진도] 
p140 ~ p170

[교제 내용]
전체적으로 살펴 본다면 이렇게 정리 될 수 있습니다.

Windows 는 IRQL 이라는 자체적인 우선 순위를 통해 인터럽트 혹은 여러가지 발생 가능한 요청 사항을 수행하게 됩니다.

이때 상위 레벨의 IRQL을 갖는 인터럽트가 수행된다면, 하위 레벨의 Thread는 컨텍스트 스위칭이 되면서 하위의 모든 IRQL 레벨은 마스킹 되게 됩니다.

그렇다면 프로그램들이 수행 될때 어떻게 IRQL을 이용하는지 설명하겠습니다.
만약 IRQL이 없고 그냥 평등하게 Thread가 수행되게 된다 라고 가정하게 되고 Memory Access 나 Hard Disk Access가 필요하게 되면 어떻게 될까요?

당연히 Access를 통해 Data를 로드하는 시점에서 해당 Thread는 멈춰야 합니다. 이를 보장하기 위해 보통 사용자 Thread가 수행되는 Passive 레벨 윗단에 APC라는 Memory를 Access 하기 위한 인터럽트를 두고 해당 인터럽트 발생시 유저 Thread는 실행을 멈추고, APC 단의 Thread 수행을 기다리게 됩니다. 이를 통해 한 Thread가 커널단... 즉 실제 memory 나 paging memory에 접근하는 로직을 수행할 수 있습니다.

그리고 윗단 DPC 이상은 예를 들면 IO 및 인터럽트가 발생하는 레벨인데, 이전에 설명했듯이 특정 IO가 발생할 경우 HAL은 해당 IO의 IRQL을 결정해 주고,  해당 IRQL에 맞춰 CPU는 인터럽트를 처리합니다. 그렇다면 DPC/Dispatch 는 뭘까요?

책에서 보듯이 해당 레벨은 소프트웨어적으로 발생하는 인터럽트입니다.
제가 설명드렸다 시피 IDT 테이블에는 연관되 일어나는 여러 인터럽트들이 정의 되어 있을 수 있습니다. 이때 한 인터럽트가 완전히 수행 될때 까지 다음 인터럽트가 기다린다거나, 조금 늦게 수행 되도 되는 인터럽트가 존제 한다거나, 기타 Thread의 수행 시간이 너무 길어질 경우 CPU의 점유 현상이 나타나고 이를 방지 하기 위해 일단 늦게 수행되도 괜찮은 경우 DPC 큐에 넣어 수행을 지연시킵니다. 그리고 윗단의 인터럽트가 종료 되면 DPC레벨에서 해당 인터럽트를 꺼내 수행하게 됩니다.

 Prev   1   Next