<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=NeXTSTEPDRIVERKIT%3AChapter2_5</id>
	<title>NeXTSTEPDRIVERKIT:Chapter2 5 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=NeXTSTEPDRIVERKIT%3AChapter2_5"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=NeXTSTEPDRIVERKIT:Chapter2_5&amp;action=history"/>
	<updated>2026-05-02T12:54:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=NeXTSTEPDRIVERKIT:Chapter2_5&amp;diff=5479&amp;oldid=prev</id>
		<title>Onionmixer: NeXTSTEP DRIVER KIT 커널 수준 드라이버의 스레드 내용 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=NeXTSTEPDRIVERKIT:Chapter2_5&amp;diff=5479&amp;oldid=prev"/>
		<updated>2017-10-10T08:21:29Z</updated>

		<summary type="html">&lt;p&gt;NeXTSTEP DRIVER KIT 커널 수준 드라이버의 스레드 내용 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;Threads in Kernel-Level Drivers&lt;br /&gt;
&lt;br /&gt;
==커널 수준 드라이버의 스레드(Threads in Kernel-Level Drivers)==&lt;br /&gt;
&lt;br /&gt;
In a user-level driver, every thread the driver creates executes in the driver&amp;#039;s own task, as shown in Figure 2-1. There&amp;#039;s no way for any driver code to execute in any other task; neither the kernel nor any task besides the driver&amp;#039;s own task ever executes the driver&amp;#039;s code. Kernel-level drivers aren&amp;#039;t so simple, however--and the Driver Kit currently supports only kernel-level drivers.&amp;lt;BR&amp;gt;&lt;br /&gt;
사용자 수준 드라이버에서 드라이버가 생성하는 모든 스레드는 그림 2-1 과 같이 드라이버 자체 태스크에서 실행됩니다.&lt;br /&gt;
드라이버 코드가 다른 태스크에서 실행될 수 있는 방법은 없습니다. 드라이버 자체의 태스크 외에 (그 어떤 외부의)커널이나 태스크도 드라이버 코드를 실행하지 않습니다. 커널 레벨 드라이버는 그렇게 간단하지 않지만, 현재의 Driver Kit 은 커널 레벨 드라이버만 지원합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All kernel-level device drivers run in the kernel&amp;#039;s memory address space, but unlike user-level drivers, their threads aren&amp;#039;t all in the same task. A loaded kernel driver might run in a thread in the kernel task created especially for the driver. (A kernel task is a task that shares the kernel&amp;#039;s address space but not the kernel&amp;#039;s IPC space.) Additional threads created by kernel-level drivers execute as part of another kernel task, the &amp;#039;&amp;#039;kernel I/O task&amp;#039;&amp;#039;. Figure 2-1 shows the relationship between kernel-level driver threads and the kernel I/O task.&amp;lt;BR&amp;gt;&lt;br /&gt;
모든 커널 수준 장치 드라이버는 커널의 메모리 주소 공간에서 실행되지만, 사용자 수준 드라이버와는 다르게 해당 스레드가 모두 동일한 태스크에 존재하는것은 아닙니다. 로드 된 커널 드라이버는 특히 드라이버 용으로 작성된 커널 태스크의 스레드에서 실행될 수 있습니다. (커널 작업은 커널의 주소 공간을 공유하지만 커널의 IPC 공간은 공유하지 않는 작업) 커널 수준 드라이버에 의해 생성된 추가 스레드는 또다른 커널 작업의 일부인&amp;#039;&amp;#039;kernel I/O task&amp;#039;&amp;#039; 로 실행됩니다. 그림 2-1 에서는 커널 수준 드라이버 스레드와 커널 I/O 작업 간의 관계를 보여줍니다.&lt;br /&gt;
&lt;br /&gt;
[[image:NeXTSTEPDRIVERKIT_04.png|none|thumb|Figure 2-1. Threads in User-Level and Kernel-Level Drivers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A complication for kernel-level drivers is that their code can execute in threads that don&amp;#039;t belong to the driver. For example, the kernel invokes a network driver&amp;#039;s outputPacket:address: method whenever the driver should transmit a packet. This method executes in whatever context the invoker of the method is in, not in the context of any of the driver&amp;#039;s threads. Another example of executing in a nondriver thread is that drivers with UNIX entry points operate in the calling user process&amp;#039;s context.&amp;lt;BR&amp;gt;&lt;br /&gt;
커널 수준 드라이버의 복잡성은 코드가 드라이버에 속하지 않는 스레드에서 실행될 수 있다는 것에서 비롯됩니다. 예를 들어, 커널은 드라이버가 패킷을 전송할 때마다 네트워크 드라이버의 outputPacket:address: 메소드를 호출합니다. 이 메서드는 드라이버의 스레드 컨텍스트가 아니라 메서드의 호출자가 있는 컨텍스트에서 실행됩니다. 비 드라이버 스레드(nondriver thread)에서 실행하는 또 다른 예제는 UNIX 진입 지점이있는 드라이버가 호출 사용자 프로세스의 컨텍스트에서 작동한다는 것입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, if a method or function isn&amp;#039;t always called directly by an I/O thread (or by functions or methods that are called directly by the I/O thread) and the documentation doesn&amp;#039;t say that the method is called in the context of the kernel I/O task, you should assume that the method or function has been called by an unknown thread in an unknown task.&amp;lt;BR&amp;gt;&lt;br /&gt;
일반적으로 메서드 또는 함수가 I/O 스레드 (또는 I/O 스레드에 의해 직접 호출되는 함수 또는 메서드)에 의해 직접 호출되는 것은 아니며, 문서에서 해당 메서드가 호출되었다고 하지는 않으며, 커널 입출력 태스크의 컨텍스트에서 알 수 없는 태스크의 알 수 없는 스레드가 메소드 또는 함수를 호출했다고 가정해야 합니다.&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>