49:
317:(KMDF) model continues to allow development of kernel-mode device drivers, but attempts to provide standard implementations of functions that are known to cause problems, including cancellation of I/O operations, power management, and plug and play device support.
945:
There is a lack of effective kernel vulnerability detection tools, especially for closed-source OSes such as
Microsoft Windows where the source code of the device drivers is mostly not public (open source) and the drivers often also have many privileges.
219:
may simply have two functions for "send data" and "receive data". At a lower level, a device driver implementing these functions would communicate to the particular serial port controller installed on a user's computer. The commands needed to control a
697:
host. Instead of enabling the guest operating system to dialog with hardware, virtual device drivers take the opposite role and emulates a piece of hardware, so that the guest operating system and its drivers running inside a
1797:
1766:
1889:
1670:
271:
who work for hardware-development companies. This is because they have better information than most outsiders about the design of their hardware. Moreover, it was traditionally considered in the hardware
702:
can have the illusion of accessing real hardware. Attempts by the guest operating system to access the hardware are routed to the virtual device driver in the host operating system as e.g.,
215:
that use it. Programmers can write higher-level application code independently of whatever specific hardware the end-user is using. For example, a high-level application for interacting with a
1858:
1301:
1981:
375:.ko files can contain loadable device drivers. The advantage of loadable device drivers is that they can be loaded only when necessary and then unloaded, thus saving kernel memory.
196:
in the driver, the driver issues commands to the device (drives it). Once the device sends data back to the driver, the driver may invoke routines in the original calling program.
450:. The primary benefit of running a driver in user mode is improved stability, since a poorly written user-mode device driver cannot crash the system by overwriting kernel memory.
1360:
2011:
918:
A PCI device has often an ID pair for the main chip of the device, and also a subsystem ID pair that identifies the vendor, which may be different from the chip manufacturer.
1920:
1828:
1950:
1789:
1758:
1400:
291:. In such cases, it is important that the hardware manufacturer provide information on how the device communicates. Although this information can instead be learned by
1881:
1660:
1159:
284:(PDD) is implemented by the device vendor. However, in recent years, non-vendors have written numerous device drivers for proprietary devices, mainly for use with
281:
277:
2075:
1339:
1567:
1197:
1735:
1850:
1120:
1637:
2259:
1525:
An improved
Gigabaud Link Module (GLM) is provided for performing bi-directional data transfers between a host device and a serial transfer medium.
926:
Devices often have a large number of diverse and customized device drivers running in their operating system (OS) kernel and often contain various
1293:
301:
has attempted to reduce system instability due to poorly written device drivers by creating a new framework for driver development, called
1973:
2206:
949:
Such vulnerabilities also exist in drivers in laptops, drivers for WiFi and bluetooth, gaming/graphics drivers, and drivers in printers.
753:
211:
The main purpose of device drivers is to provide abstraction by acting as a translator between a hardware device and the applications or
2041:
1222:
1017:); whether they are hardware supported or language based; whether they are more an open mechanism or a binding policy; and many more.
677:
Virtual device drivers represent a particular variant of device drivers. They are used to emulate a hardware device, particularly in
2003:
1545:
669:
So choosing and installing the correct device drivers for given hardware is often a key component of computer system configuration.
244:
function. Because drivers require low-level access to hardware functions in order to operate, drivers typically operate in a highly
2105:
1912:
1038:
915:
each. The vendor ID identifies the vendor of the device. The device ID identifies a specific device from that manufacturer/vendor.
1820:
1005:
The mechanisms or policies provided by the kernel can be classified according to several criteria, including: static (enforced at
313:
for communicating with their devices—as user-mode drivers. If such drivers malfunction, they do not cause system instability. The
1942:
181:
and other computer programs to access hardware functions without needing to know precise details about the hardware being used.
854:
458:
Because of the diversity of modern hardware and operating systems, drivers operate in many different environments. Drivers may
399:, will typically run device drivers with the same privilege as all other kernel objects. By contrast, a system designed around
1392:
54:
2535:
2506:
1277:
996:
248:
environment and can cause system operational issues if something goes wrong. In contrast, most user-level software on modern
1509:
1693:
1620:
Talebi, Seyed
Mohammadjavad Seyed; Tavakoli, Hamid; Zhang, Hang; Zhang, Zheng; Sani, Ardalan Amiri; Qian, Zhiyun (2018).
1143:
1370:
53:
2097:
Huang, Yongzhe; Narayanan, Vikram; Detweiler, David; Huang, Kaiming; Tan, Gang; Jaeger, Trent; Burtsev, Anton (2022).
1703:
1631:
1467:
1333:
1252:
1191:
1153:
1010:
864:
1422:
2310:
2254:
2064:
1323:
240:
Writing a device driver requires an in-depth understanding of how the hardware and the software works for a given
2229:
2199:
1759:"How Microsoft blocks vulnerable and malicious drivers in Defender, third-party security tools and in Windows 11"
942:(BYOVD) uses signed, old drivers that contain flaws that allow hackers to insert malicious code into the kernel.
778:
442:
processors, switching between rings imposes a performance penalty, a factor that operating system developers and
342:, or as user-mode drivers (for certain types of devices where kernel interfaces exist, such as for USB devices).
980:
957:
2731:
2422:
2320:
1181:
574:
540:
229:
71:
55:
17:
2700:
2249:
2234:
2069:
2164:
2147:
Swift 2005, p.29 quote: "isolation, resource control, decision verification (checking), and error recovery."
987:
An important consideration in the design of a kernel is the support it provides for protection from faults (
2295:
2280:
2239:
1727:
1083:
822:
647:
459:
314:
132:
2461:
2408:
1621:
1112:
961:
935:
2736:
2476:
2315:
2192:
842:
784:
306:
1444:
Drivers for the HP (previously Compaq) Smart Array controllers which provide hardware RAID capability.
2511:
2330:
2290:
2285:
2244:
931:
835:
588:
388:
302:
276:'s interest to guarantee that their clients can use their hardware in an optimum way. Typically, the
1495:
583:
as used for short-distance and low-rate wireless communication in home automation, (such as example
2554:
2441:
2305:
1599:
972:
892:
886:
446:
consider when creating drivers for devices which are preferred to be run with low latency, such as
359:
52:
2721:
2300:
898:
Dynax Driver
Framework (dxd) – C++ open source cross-platform driver framework for KMDF and IOKit
876:
870:
768:
718:
620:
309:(UMDF) that encourages development of certain types of drivers—primarily those that implement a
2726:
2688:
2627:
2516:
2496:
2445:
2403:
1058:
447:
383:
Depending on the operating system, device drivers may be permitted to run at various different
339:
310:
387:. The choice of which level of privilege the drivers are in is largely decided by the type of
2471:
2437:
2339:
2275:
2033:
1013:); pre-emptive or post-detection; according to the protection principles they satisfy (e.g.,
580:
503:
384:
245:
170:
407:, will place drivers as processes independent from the kernel but that use it for essential
2668:
2642:
1218:
1073:
848:
584:
552:
285:
252:
can be stopped without greatly affecting the rest of the system. Even drivers executing in
713:
Virtual devices may also operate in a non-virtualized environment. For example, a virtual
8:
2637:
2589:
2466:
2159:
1537:
1145:
Information
Storage and Management: Storing, Managing, and Protecting Digital Information
292:
2179:
2098:
1457:
2574:
2481:
2174:
1882:"Vulnerabilities that could allow undectable infections affect 70 Lenovo laptop models"
1483:
241:
199:
Drivers are hardware dependent and operating-system-specific. They usually provide the
430:
The most common mechanism for segregating memory into various privilege levels is via
2683:
2632:
2564:
2521:
2362:
1699:
1627:
1463:
1366:
1329:
1273:
1248:
1187:
1149:
1028:
992:
965:
953:
686:
632:
Using another lower-level device driver (e.g. file system drivers using disk drivers)
518:
443:
392:
365:
268:
264:
257:
174:
101:
81:
31:
203:
handling required for any necessary asynchronous time-dependent hardware interface.
2663:
2215:
1014:
690:
524:
466:
351:
288:
249:
212:
178:
154:
146:
125:
96:
40:
30:
This article is about device drivers for hardware. For other software drivers, see
2169:
2607:
2569:
2540:
1790:"No fix in sight for mile-wide loophole plaguing a key Windows defense for years"
1513:
1068:
1000:
988:
722:
714:
699:
678:
510:
439:
431:
355:
1695:
Digtool: A {Virtualization-Based} Framework for
Detecting Kernel Vulnerabilities
706:. The virtual device driver can also send simulated processor-level events like
2693:
2617:
2579:
2451:
1078:
1043:
880:
569:
514:
471:
2065:"Automatic device driver isolation protects against bugs in operating systems"
952:
A group of security researchers considers the lack of isolation as one of the
411:
functionalities and to pass messages between user programs and each other. On
2715:
2602:
2559:
2352:
1247:(3rd. ed.). Upper Saddle River, NJ: Pearson Pretence Hall. p. 256.
1048:
826:
741:
703:
564:
496:
476:
416:
347:
1510:"US Patent 5969841 - Gigabaud link module with received power detect signal"
1268:
Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark; Solomon, David (2017).
2486:
1665:
1033:
1006:
968:
927:
858:
730:
492:
408:
396:
335:
331:
273:
260:. These factors make it more difficult and dangerous to diagnose problems.
185:
106:
2141:
1974:"Installing gaming drivers might leave your PC vulnerable to cyberattacks"
1661:"How a Microsoft blunder opened millions of PCs to potent malware attacks"
2612:
2594:
2377:
2367:
2357:
1432:
1427:
559:
536:
400:
216:
189:
118:
86:
1623:
Charm: Facilitating
Dynamic Analysis of Device Drivers of Mobile Systems
1568:"What are DCH drivers and why do you need to know about them? | Dell US"
346:
includes a list of the devices in Linux, including ttyS (terminal), lp (
1913:"You're going to want to update your Wi-Fi and Bluetooth drivers today"
660:
635:
Simulating work with hardware, while doing something entirely different
626:
486:
481:
424:
412:
320:
221:
193:
158:
295:, this is much more difficult with hardware than it is with software.
2549:
2456:
2382:
2347:
1851:"Windows 10 Security Alert: Vulnerabilities Found in Over 40 Drivers"
1297:
707:
528:
420:
298:
253:
200:
166:
76:
2184:
995:). These two aspects are usually not clearly distinguished, and the
2678:
2132:
1943:"Wireless 'BlueBorne' Attacks Target Billions of Bluetooth Devices"
1267:
1053:
873:(SANE) – a public-domain interface to raster-image scanner-hardware
334:
environments, programmers can build device drivers as parts of the
188:
or communications subsystem to which the hardware connects. When a
162:
1353:
2673:
2372:
1821:""Bring Your Own Vulnerable Driver" Attacks Are Breaking Windows"
1462:. IBM International Technical Support Organization. p. 207.
1063:
908:
809:
soc: SPARC Storage Array (SSA) controllers and the control device
643:
Allowing the operating system direct access to hardware resources
343:
2123:
1728:"Closed Source vs. Open Source Hardware Drivers: Why It Matters"
228:
serial port converter, but each hardware-specific device driver
2004:"HP patches vulnerable driver lurking in printers for 16 years"
596:
592:
532:
736:
There are several variants of virtual device drivers, such as
2622:
1652:
964:
framework to protect operating system kernels, primarily the
774:
726:
653:
404:
372:
324:
232:
these details into the same (or similar) software interface.
2096:
1365:. Technical Publications Pune. January 2008. pp. 5–8.
1088:
912:
759:
602:
548:
544:
391:
an operating system uses. An operating system which uses a
368:
280:(LDD) is written by the operating system vendor, while the
225:
1272:(Seventh ed.). Redmond, Washington: Microsoft Press.
764:
RAIDs: CCISS (Compaq
Command Interface for SCSI-3 Support)
659:
Implementing a language, sometimes quite high-level (e.g.
224:
are much different from the commands needed to control an
2658:
737:
694:
682:
609:
Common levels of abstraction for device drivers include:
506:
435:
1619:
1591:
797:
isp: Differential SCSI controllers and the SunSwift card
652:
Implementing an interface for non-driver software (e.g.
1294:"Introduction to the User-Mode Driver Framework (UMDF)"
806:
sf: soc+ or social Fiber
Channel Arbitrated Loop (FCAL)
579:
Radio frequency communication transceiver adapters for
323:
has an open-source framework for developing drivers on
1141:
911:
or USB is identified by two IDs which consist of two
825:(WDDM) – the graphic display driver architecture for
2165:
Linux
Hardware Compatibility Lists and Linux Drivers
803:
scsi: Small Computer Serial Interface (SCSI) devices
729:. A good example for virtual device drivers can be
419:, it is common for device drivers to run in either
1692:Pan, Jianfeng; Yan, Guanglu; Fan, Xiaocao (2017).
1393:"What are Device Drivers and why do we need them?"
1219:"MAKEDEV — Linux Command — Unix Command"
867:(ALSA) – the standard Linux sound-driver interface
812:social: Serial optical controllers for FCAL (soc+)
263:The task of writing drivers thus usually falls to
184:A driver communicates with the device through the
1242:
999:in the kernel design leads to the rejection of a
895:(UDI) – a cross-platform driver interface project
800:glm: (Gigabaud Link Module) UltraSCSI controllers
2713:
1325:Understanding Computers 2009: Today and Tomorrow
157:that operates or controls a particular type of
51:
1321:
1183:Writing device drivers: tutorial and reference
1179:
787:descriptions of commonly used device drivers:
2200:
350:), hd (disk), loop, and sound (these include
126:
2099:"KSplit: Automating Device Driver Isolation"
1245:Operating Systems, Design and Implementation
1243:Tanenbaum, Andrew; Woodhull, Albert (2006).
841:Declarative Componentized Hardware (DCH) -
2207:
2193:
2170:Understanding Modern Device Drivers(Linux)
1756:
1456:Russell, Steve; et al. (2003-10-21).
133:
119:
1971:
1691:
1592:"dxd - dynax driver framework: Main Page"
672:
1039:Device driver synthesis and verification
889:(ODI) – network card API similar to NDIS
625:Using some higher-level interface (e.g.
1455:
971:which, according to them, gets ~80,000
794:hme: Fast (10/100 Mbit/s) Ethernet
14:
2714:
2111:from the original on 15 September 2022
2078:from the original on 15 September 2022
2044:from the original on 15 September 2022
1972:Spadafora, Anthony (12 January 2022).
1910:
1879:
1787:
1658:
1538:"Unified Audio Model (Windows CE 5.0)"
1403:from the original on November 20, 2016
1107:
1105:
981:Kernel (operating system) § Protection
855:Network Driver Interface Specification
747:
434:. On many systems, such as those with
27:Software interface to attached devices
2214:
2188:
1818:
1123:from the original on 13 February 2021
1001:hierarchical structure for protection
883:for IBM OS/2 and Microsoft Windows NT
575:Digital terrestrial television tuners
2014:from the original on 5 November 2022
1984:from the original on 5 November 2022
1953:from the original on 5 November 2022
1923:from the original on 5 November 2022
1892:from the original on 5 November 2022
1861:from the original on 5 November 2022
1831:from the original on 5 November 2022
1800:from the original on 5 November 2022
1769:from the original on 5 November 2022
1738:from the original on 5 November 2022
1725:
1673:from the original on 8 November 2022
1640:from the original on 5 November 2022
495:of various sorts—in particular, for
256:can crash a system if the device is
1565:
1362:Computer Peripherals and Interfaces
1102:
558:Implementing support for different
378:
24:
2062:
47:
25:
2748:
2153:
1911:Ridley, Jacob (9 February 2022).
1757:Branscombe, Mary (7 April 2022).
1512:. PatentStorm LLC. Archived from
991:) and from malicious behaviours (
865:Advanced Linux Sound Architecture
681:environments, for example when a
2311:Object-oriented operating system
979:This section is an excerpt from
940:Bring Your Own Vulnerable Driver
2090:
2056:
2034:"Fine-grained kernel isolation"
2026:
1996:
1965:
1935:
1904:
1873:
1843:
1812:
1781:
1750:
1719:
1685:
1659:Goodin, Dan (14 October 2022).
1613:
1602:from the original on 2016-05-29
1584:
1559:
1548:from the original on 2017-06-22
1530:
1502:
1449:
1415:
1385:
1342:from the original on 2021-06-09
1304:from the original on 2010-01-07
1225:from the original on 2009-04-30
1221:. Linux.about.com. 2009-09-11.
1200:from the original on 2021-01-26
1162:from the original on 2021-02-13
1142:EMC Education Services (2010).
779:Direct Rendering Infrastructure
581:wireless personal area networks
453:
169:. A driver provides a software
2321:Supercomputer operating system
1788:Goodin, Dan (5 October 2022).
1315:
1286:
1261:
1236:
1211:
1173:
1135:
902:
791:fas: Fast/wide SCSI controller
235:
13:
1:
2070:Pennsylvania State University
1726:King, Bertel (18 June 2022).
1096:
619:Writing to or reading from a
2296:Just enough operating system
2281:Distributed operating system
1880:Goodin, Dan (13 July 2022).
1359:
1113:"What is all device driver?"
1084:Replicant (operating system)
997:adoption of this distinction
823:Windows Display Driver Model
509:buses of various sorts (for
315:Kernel-Mode Driver Framework
7:
2409:User space and kernel space
2160:Windows Hardware Dev Center
1542:Microsoft Developer Network
1021:
934:, making them a target for
921:
444:embedded software engineers
10:
2753:
2316:Real-time operating system
2175:BinaryDriverHowto, Ubuntu.
1459:Abbreviations and acronyms
1009:) or dynamic (enforced at
978:
843:Universal Windows Platform
710:into the virtual machine.
693:is run on, for example, a
585:Bluetooth Low Energy (BLE)
307:User-Mode Driver Framework
206:
29:
2651:
2588:
2534:
2512:Multilevel feedback queue
2507:Fixed-priority preemptive
2495:
2430:
2421:
2391:
2338:
2329:
2291:Hobbyist operating system
2286:Embedded operating system
2268:
2222:
1270:Windows Internals, Part 1
1148:. John Wiley & Sons.
836:Windows Driver Foundation
832:Unified Audio Model (UAM)
689:computer or when a guest
338:, separately as loadable
303:Windows Driver Frameworks
2555:General protection fault
2306:Network operating system
2260:User features comparison
893:Uniform Driver Interface
887:Open Data-Link Interface
2301:Mobile operating system
2038:mars-research.github.io
1322:Deborah Morley (2009).
1180:Burke, Timothy (1995).
877:Installable File System
871:Scanner Access Now Easy
816:
719:virtual private network
621:device control register
448:network interface cards
2404:Loadable kernel module
1431:. 2010. Archived from
1059:Loadable kernel module
975:/year to its drivers.
754:Graphics device driver
673:Virtual device drivers
311:message-based protocol
282:Physical Device Driver
258:erroneously programmed
161:that is attached to a
58:
2732:Computing terminology
2472:Process control block
2438:Computer multitasking
2276:Disk operating system
305:(WDF). This includes
278:Logical Device Driver
145:In the context of an
57:
2643:Virtual tape library
2235:Forensic engineering
2180:Linux Drivers Source
2129:Wulf 1974 pp.337–345
1698:. pp. 149–165.
1626:. pp. 291–307.
1328:. Cengage Learning.
1074:Open-source hardware
857:(NDIS) – a standard
849:Windows Driver Model
725:device is used with
685:program is run on a
616:Interfacing directly
286:free and open source
2652:Supporting concepts
2638:Virtual file system
1819:Davenport, Corbin.
748:Open source drivers
293:reverse engineering
2575:Segmentation fault
2423:Process management
2072:via techxplore.com
1399:. April 17, 2015.
960:, and published a
721:, while a virtual
646:Implementing only
415:, a system with a
327:, called I/O Kit.
269:computer engineers
265:software engineers
192:program invokes a
177:devices, enabling
72:Process management
59:
2737:Windows NT kernel
2709:
2708:
2565:Memory protection
2536:Memory management
2530:
2529:
2522:Shortest job next
2417:
2416:
2216:Operating systems
1279:978-0-7356-8418-8
1186:. Digital Press.
1029:Driver (software)
687:Microsoft Windows
499:on modern systems
393:monolithic kernel
366:Microsoft Windows
289:operating systems
250:operating systems
213:operating systems
179:operating systems
143:
142:
82:Memory management
41:Operating systems
32:Driver (software)
16:(Redirected from
2744:
2664:Computer network
2428:
2427:
2336:
2335:
2209:
2202:
2195:
2186:
2185:
2148:
2145:
2139:
2136:
2130:
2127:
2121:
2120:
2118:
2116:
2110:
2103:
2094:
2088:
2087:
2085:
2083:
2060:
2054:
2053:
2051:
2049:
2030:
2024:
2023:
2021:
2019:
2000:
1994:
1993:
1991:
1989:
1969:
1963:
1962:
1960:
1958:
1939:
1933:
1932:
1930:
1928:
1908:
1902:
1901:
1899:
1897:
1877:
1871:
1870:
1868:
1866:
1855:BleepingComputer
1847:
1841:
1840:
1838:
1836:
1816:
1810:
1809:
1807:
1805:
1785:
1779:
1778:
1776:
1774:
1754:
1748:
1747:
1745:
1743:
1723:
1717:
1716:
1714:
1712:
1689:
1683:
1682:
1680:
1678:
1656:
1650:
1649:
1647:
1645:
1617:
1611:
1610:
1608:
1607:
1588:
1582:
1581:
1579:
1578:
1563:
1557:
1556:
1554:
1553:
1534:
1528:
1527:
1522:
1521:
1506:
1500:
1499:
1493:
1489:
1487:
1479:
1477:
1476:
1453:
1447:
1446:
1441:
1440:
1419:
1413:
1412:
1410:
1408:
1389:
1383:
1382:
1380:
1379:
1357:
1351:
1350:
1348:
1347:
1319:
1313:
1312:
1310:
1309:
1290:
1284:
1283:
1265:
1259:
1258:
1240:
1234:
1233:
1231:
1230:
1215:
1209:
1208:
1206:
1205:
1177:
1171:
1170:
1168:
1167:
1139:
1133:
1132:
1130:
1128:
1109:
1091:(userspace /dev)
907:A device on the
691:operating system
527:devices such as
525:Computer storage
511:pointing devices
432:protection rings
385:privilege levels
379:Privilege levels
155:computer program
147:operating system
135:
128:
121:
50:
37:
36:
21:
2752:
2751:
2747:
2746:
2745:
2743:
2742:
2741:
2712:
2711:
2710:
2705:
2647:
2608:Defragmentation
2593:
2584:
2570:Protection ring
2539:
2526:
2498:
2491:
2413:
2387:
2325:
2264:
2218:
2213:
2156:
2151:
2146:
2142:
2137:
2133:
2128:
2124:
2114:
2112:
2108:
2101:
2095:
2091:
2081:
2079:
2061:
2057:
2047:
2045:
2032:
2031:
2027:
2017:
2015:
2002:
2001:
1997:
1987:
1985:
1970:
1966:
1956:
1954:
1941:
1940:
1936:
1926:
1924:
1909:
1905:
1895:
1893:
1878:
1874:
1864:
1862:
1849:
1848:
1844:
1834:
1832:
1817:
1813:
1803:
1801:
1786:
1782:
1772:
1770:
1755:
1751:
1741:
1739:
1724:
1720:
1710:
1708:
1706:
1690:
1686:
1676:
1674:
1657:
1653:
1643:
1641:
1634:
1618:
1614:
1605:
1603:
1590:
1589:
1585:
1576:
1574:
1564:
1560:
1551:
1549:
1536:
1535:
1531:
1519:
1517:
1508:
1507:
1503:
1491:
1490:
1481:
1480:
1474:
1472:
1470:
1454:
1450:
1438:
1436:
1421:
1420:
1416:
1406:
1404:
1391:
1390:
1386:
1377:
1375:
1373:
1358:
1354:
1345:
1343:
1336:
1320:
1316:
1307:
1305:
1292:
1291:
1287:
1280:
1266:
1262:
1255:
1241:
1237:
1228:
1226:
1217:
1216:
1212:
1203:
1201:
1194:
1178:
1174:
1165:
1163:
1156:
1140:
1136:
1126:
1124:
1111:
1110:
1103:
1099:
1094:
1069:Microcontroller
1024:
1019:
1018:
989:fault tolerance
984:
958:kernel security
932:vulnerabilities
924:
905:
819:
750:
717:is used with a
715:network adapter
700:virtual machine
675:
570:Digital cameras
456:
381:
238:
209:
139:
64:Common features
56:
48:
35:
28:
23:
22:
15:
12:
11:
5:
2750:
2740:
2739:
2734:
2729:
2724:
2722:Device drivers
2707:
2706:
2704:
2703:
2698:
2697:
2696:
2694:User interface
2691:
2681:
2676:
2671:
2666:
2661:
2655:
2653:
2649:
2648:
2646:
2645:
2640:
2635:
2630:
2625:
2620:
2618:File attribute
2615:
2610:
2605:
2599:
2597:
2586:
2585:
2583:
2582:
2580:Virtual memory
2577:
2572:
2567:
2562:
2557:
2552:
2546:
2544:
2532:
2531:
2528:
2527:
2525:
2524:
2519:
2514:
2509:
2503:
2501:
2493:
2492:
2490:
2489:
2484:
2479:
2474:
2469:
2464:
2459:
2454:
2452:Context switch
2449:
2434:
2432:
2425:
2419:
2418:
2415:
2414:
2412:
2411:
2406:
2401:
2395:
2393:
2389:
2388:
2386:
2385:
2380:
2375:
2370:
2365:
2360:
2355:
2350:
2344:
2342:
2333:
2327:
2326:
2324:
2323:
2318:
2313:
2308:
2303:
2298:
2293:
2288:
2283:
2278:
2272:
2270:
2266:
2265:
2263:
2262:
2257:
2252:
2247:
2242:
2237:
2232:
2226:
2224:
2220:
2219:
2212:
2211:
2204:
2197:
2189:
2183:
2182:
2177:
2172:
2167:
2162:
2155:
2154:External links
2152:
2150:
2149:
2140:
2131:
2122:
2089:
2063:Fetzer, Mary.
2055:
2025:
1995:
1964:
1947:threatpost.com
1934:
1903:
1872:
1842:
1811:
1780:
1749:
1718:
1704:
1684:
1651:
1632:
1612:
1583:
1558:
1529:
1501:
1468:
1448:
1414:
1384:
1372:978-8184314748
1371:
1352:
1334:
1314:
1300:. 2006-10-10.
1285:
1278:
1260:
1253:
1235:
1210:
1192:
1172:
1154:
1134:
1119:. TechTarget.
1100:
1098:
1095:
1093:
1092:
1086:
1081:
1079:Printer driver
1076:
1071:
1066:
1061:
1056:
1051:
1046:
1044:Driver wrapper
1041:
1036:
1031:
1025:
1023:
1020:
985:
977:
923:
920:
904:
901:
900:
899:
896:
890:
884:
881:filesystem API
874:
868:
862:
852:
846:
839:
833:
830:
818:
815:
814:
813:
810:
807:
804:
801:
798:
795:
792:
782:
781:
771:
765:
762:
756:
749:
746:
704:function calls
679:virtualization
674:
671:
667:
666:
665:
664:
657:
650:
644:
640:For software:
638:
637:
636:
633:
630:
623:
617:
613:For hardware:
607:
606:
600:
577:
572:
567:
565:Image scanners
562:
556:
522:
500:
489:
484:
479:
474:
472:Video adapters
469:
455:
452:
395:, such as the
380:
377:
362:, and audio).
237:
234:
208:
205:
141:
140:
138:
137:
130:
123:
115:
112:
111:
110:
109:
104:
99:
94:
92:Device drivers
89:
84:
79:
74:
66:
65:
61:
60:
44:
43:
26:
18:Device drivers
9:
6:
4:
3:
2:
2749:
2738:
2735:
2733:
2730:
2728:
2727:Linux drivers
2725:
2723:
2720:
2719:
2717:
2702:
2699:
2695:
2692:
2690:
2687:
2686:
2685:
2682:
2680:
2677:
2675:
2672:
2670:
2667:
2665:
2662:
2660:
2657:
2656:
2654:
2650:
2644:
2641:
2639:
2636:
2634:
2631:
2629:
2626:
2624:
2621:
2619:
2616:
2614:
2611:
2609:
2606:
2604:
2601:
2600:
2598:
2596:
2591:
2587:
2581:
2578:
2576:
2573:
2571:
2568:
2566:
2563:
2561:
2560:Memory paging
2558:
2556:
2553:
2551:
2548:
2547:
2545:
2542:
2537:
2533:
2523:
2520:
2518:
2515:
2513:
2510:
2508:
2505:
2504:
2502:
2500:
2494:
2488:
2485:
2483:
2480:
2478:
2475:
2473:
2470:
2468:
2465:
2463:
2460:
2458:
2455:
2453:
2450:
2447:
2443:
2439:
2436:
2435:
2433:
2429:
2426:
2424:
2420:
2410:
2407:
2405:
2402:
2400:
2399:Device driver
2397:
2396:
2394:
2390:
2384:
2381:
2379:
2376:
2374:
2371:
2369:
2366:
2364:
2361:
2359:
2356:
2354:
2351:
2349:
2346:
2345:
2343:
2341:
2340:Architectures
2337:
2334:
2332:
2328:
2322:
2319:
2317:
2314:
2312:
2309:
2307:
2304:
2302:
2299:
2297:
2294:
2292:
2289:
2287:
2284:
2282:
2279:
2277:
2274:
2273:
2271:
2267:
2261:
2258:
2256:
2253:
2251:
2248:
2246:
2243:
2241:
2238:
2236:
2233:
2231:
2228:
2227:
2225:
2221:
2217:
2210:
2205:
2203:
2198:
2196:
2191:
2190:
2187:
2181:
2178:
2176:
2173:
2171:
2168:
2166:
2163:
2161:
2158:
2157:
2144:
2135:
2126:
2107:
2100:
2093:
2077:
2073:
2071:
2066:
2059:
2043:
2039:
2035:
2029:
2013:
2009:
2005:
1999:
1983:
1979:
1975:
1968:
1952:
1948:
1944:
1938:
1922:
1918:
1914:
1907:
1891:
1887:
1883:
1876:
1860:
1856:
1852:
1846:
1830:
1826:
1822:
1815:
1799:
1795:
1791:
1784:
1768:
1764:
1760:
1753:
1737:
1733:
1729:
1722:
1707:
1705:9781931971409
1701:
1697:
1696:
1688:
1672:
1668:
1667:
1662:
1655:
1639:
1635:
1633:9781939133045
1629:
1625:
1624:
1616:
1601:
1597:
1593:
1587:
1573:
1569:
1562:
1547:
1543:
1539:
1533:
1526:
1516:on 2011-06-12
1515:
1511:
1505:
1497:
1485:
1471:
1469:0-7384-2684-9
1465:
1461:
1460:
1452:
1445:
1435:on 2010-08-21
1434:
1430:
1429:
1424:
1418:
1402:
1398:
1394:
1388:
1374:
1368:
1364:
1363:
1356:
1341:
1337:
1335:9780324830132
1331:
1327:
1326:
1318:
1303:
1299:
1295:
1289:
1281:
1275:
1271:
1264:
1256:
1254:0-13-142938-8
1250:
1246:
1239:
1224:
1220:
1214:
1199:
1195:
1193:9781555581411
1189:
1185:
1184:
1176:
1161:
1157:
1155:9780470618332
1151:
1147:
1146:
1138:
1122:
1118:
1114:
1108:
1106:
1101:
1090:
1087:
1085:
1082:
1080:
1077:
1075:
1072:
1070:
1067:
1065:
1062:
1060:
1057:
1055:
1052:
1050:
1049:Free software
1047:
1045:
1042:
1040:
1037:
1035:
1032:
1030:
1027:
1026:
1016:
1012:
1008:
1004:
1002:
998:
994:
990:
982:
976:
974:
970:
967:
963:
959:
955:
950:
947:
943:
941:
937:
933:
929:
919:
916:
914:
910:
897:
894:
891:
888:
885:
882:
878:
875:
872:
869:
866:
863:
860:
856:
853:
850:
847:
844:
840:
837:
834:
831:
828:
827:Windows Vista
824:
821:
820:
811:
808:
805:
802:
799:
796:
793:
790:
789:
788:
786:
780:
776:
772:
770:
766:
763:
761:
757:
755:
752:
751:
745:
743:
739:
734:
732:
728:
724:
720:
716:
711:
709:
705:
701:
696:
692:
688:
684:
680:
670:
662:
658:
655:
651:
649:
645:
642:
641:
639:
634:
631:
628:
624:
622:
618:
615:
614:
612:
611:
610:
604:
601:
598:
594:
590:
586:
582:
578:
576:
573:
571:
568:
566:
563:
561:
557:
554:
550:
546:
542:
538:
534:
530:
526:
523:
520:
516:
512:
508:
505:
501:
498:
497:bus mastering
494:
490:
488:
485:
483:
480:
478:
477:Network cards
475:
473:
470:
468:
465:
464:
463:
461:
451:
449:
445:
441:
437:
433:
428:
426:
422:
418:
417:hybrid kernel
414:
410:
406:
402:
398:
394:
390:
386:
376:
374:
370:
367:
363:
361:
357:
353:
349:
348:parallel port
345:
341:
337:
333:
328:
326:
322:
318:
316:
312:
308:
304:
300:
296:
294:
290:
287:
283:
279:
275:
270:
266:
261:
259:
255:
251:
247:
243:
233:
231:
227:
223:
218:
214:
204:
202:
197:
195:
191:
187:
182:
180:
176:
172:
168:
164:
160:
156:
152:
151:device driver
148:
136:
131:
129:
124:
122:
117:
116:
114:
113:
108:
105:
103:
100:
98:
95:
93:
90:
88:
85:
83:
80:
78:
75:
73:
70:
69:
68:
67:
63:
62:
46:
45:
42:
39:
38:
33:
19:
2595:file systems
2487:Time-sharing
2398:
2143:
2138:Denning 1976
2134:
2125:
2115:15 September
2113:. Retrieved
2092:
2082:15 September
2080:. Retrieved
2068:
2058:
2048:15 September
2046:. Retrieved
2037:
2028:
2016:. Retrieved
2007:
1998:
1986:. Retrieved
1977:
1967:
1955:. Retrieved
1946:
1937:
1925:. Retrieved
1916:
1906:
1894:. Retrieved
1886:Ars Technica
1885:
1875:
1863:. Retrieved
1854:
1845:
1833:. Retrieved
1824:
1814:
1802:. Retrieved
1794:Ars Technica
1793:
1783:
1771:. Retrieved
1763:TechRepublic
1762:
1752:
1740:. Retrieved
1731:
1721:
1709:. Retrieved
1694:
1687:
1675:. Retrieved
1666:Ars Technica
1664:
1654:
1642:. Retrieved
1622:
1615:
1604:. Retrieved
1596:dxd.dynax.at
1595:
1586:
1575:. Retrieved
1572:www.dell.com
1571:
1561:
1550:. Retrieved
1541:
1532:
1524:
1518:. Retrieved
1514:the original
1504:
1473:. Retrieved
1458:
1451:
1443:
1437:. Retrieved
1433:the original
1426:
1417:
1405:. Retrieved
1396:
1387:
1376:. Retrieved
1361:
1355:
1344:. Retrieved
1324:
1317:
1306:. Retrieved
1288:
1269:
1263:
1244:
1238:
1227:. Retrieved
1213:
1202:. Retrieved
1182:
1175:
1164:. Retrieved
1144:
1137:
1125:. Retrieved
1116:
1034:Class driver
1007:compile time
986:
969:Linux kernel
956:undermining
954:main factors
951:
948:
944:
939:
925:
917:
906:
859:network card
783:
744:, and VDDs.
735:
731:Daemon Tools
712:
676:
668:
608:
560:file systems
457:
454:Applications
429:
409:input-output
397:Linux kernel
382:
364:
329:
319:
297:
274:manufacturer
262:
239:
210:
198:
186:computer bus
183:
150:
144:
107:Input/output
91:
2613:Device file
2603:Boot loader
2517:Round-robin
2442:Cooperative
2378:Rump kernel
2368:Multikernel
2358:Microkernel
2255:Usage share
1825:How-To Geek
1492:|work=
1428:SourceForge
1397:drivers.com
903:Identifiers
537:floppy disk
487:PC chipsets
482:Sound cards
421:kernel-mode
401:microkernel
236:Development
217:serial port
87:File system
2716:Categories
2543:protection
2499:algorithms
2497:Scheduling
2446:Preemptive
2392:Components
2363:Monolithic
2230:Comparison
2018:5 November
1988:5 November
1957:5 November
1927:5 November
1896:5 November
1865:5 November
1835:5 November
1804:5 November
1773:5 November
1742:5 November
1711:5 November
1677:8 November
1644:5 November
1606:2016-09-19
1577:2020-10-29
1552:2016-09-19
1520:2009-09-08
1475:2011-08-14
1439:2010-08-11
1378:2016-05-03
1346:2020-11-10
1308:2008-03-04
1229:2009-09-17
1204:2016-08-05
1166:2020-11-10
1117:WhatIs.com
1097:References
966:monolithic
879:(IFS) – a
861:driver API
829:and later.
767:Scanners:
758:Printers:
708:interrupts
661:PostScript
648:primitives
627:Video BIOS
413:Windows NT
403:, such as
371:files and
246:privileged
222:16550 UART
97:Networking
77:Interrupts
2633:Partition
2550:Bus error
2477:Real-time
2457:Interrupt
2383:Unikernel
2348:Exokernel
1978:TechRadar
1566:Dell US.
1494:ignored (
1484:cite book
1407:March 19,
1298:Microsoft
962:isolation
529:hard disk
519:keyboards
504:bandwidth
460:interface
425:user-mode
356:sequencer
299:Microsoft
254:user mode
230:abstracts
201:interrupt
171:interface
167:automaton
2679:Live USB
2541:resource
2431:Concepts
2269:Variants
2250:Timeline
2106:Archived
2076:Archived
2042:Archived
2012:Archived
1982:Archived
1951:Archived
1921:Archived
1917:PC Gamer
1890:Archived
1859:Archived
1829:Archived
1798:Archived
1767:Archived
1736:Archived
1671:Archived
1638:Archived
1600:Archived
1546:Archived
1401:Archived
1340:Archived
1302:Archived
1223:Archived
1198:Archived
1160:Archived
1127:19 March
1121:Archived
1054:Firmware
1022:See also
1011:run time
993:security
936:exploits
922:Security
605:adapters
513:such as
467:Printers
242:platform
175:hardware
163:computer
102:Security
2674:Live CD
2628:Journal
2592:access,
2590:Storage
2467:Process
2373:vkernel
2240:History
2223:General
1423:"CCISS"
1064:Makedev
1015:Denning
973:commits
909:PCI bus
785:Solaris
773:Video:
539:buses (
521:, etc.)
344:Makedev
340:modules
207:Purpose
194:routine
190:calling
2482:Thread
2353:Hybrid
2331:Kernel
1702:
1630:
1466:
1369:
1332:
1276:
1251:
1190:
1152:
845:driver
597:Z-Wave
595:, and
593:Zigbee
589:Thread
535:, and
533:CD-ROM
491:Local
462:with:
389:kernel
336:kernel
159:device
2684:Shell
2623:Inode
2109:(PDF)
2102:(PDF)
2008:ZDNET
913:bytes
851:(WDM)
838:(WDF)
775:Vidix
727:iSCSI
654:TWAIN
493:buses
405:Minix
373:Linux
352:mixer
332:Linux
325:macOS
321:Apple
153:is a
2245:List
2117:2022
2084:2022
2050:2022
2020:2022
1990:2022
1959:2022
1929:2022
1898:2022
1867:2022
1837:2022
1806:2022
1775:2022
1744:2022
1713:2022
1700:ISBN
1679:2022
1646:2022
1628:ISBN
1496:help
1464:ISBN
1409:2018
1367:ISBN
1330:ISBN
1274:ISBN
1249:ISBN
1188:ISBN
1150:ISBN
1129:2018
1089:udev
930:and
928:bugs
817:APIs
769:SANE
760:CUPS
742:VLMs
738:VxDs
723:disk
603:IrDA
549:SCSI
545:SATA
515:mice
502:Low-
438:and
369:.sys
226:FTDI
149:, a
2701:PXE
2689:CLI
2669:HAL
2659:API
2462:IPC
1732:MUO
695:Xen
683:DOS
553:SAS
541:ATA
507:I/O
440:ARM
436:x86
423:or
360:dsp
330:In
267:or
173:to
165:or
2718::
2444:,
2104:.
2074:.
2067:.
2040:.
2036:.
2010:.
2006:.
1980:.
1976:.
1949:.
1945:.
1919:.
1915:.
1888:.
1884:.
1857:.
1853:.
1827:.
1823:.
1796:.
1792:.
1765:.
1761:.
1734:.
1730:.
1669:.
1663:.
1636:.
1598:.
1594:.
1570:.
1544:.
1540:.
1523:.
1488::
1486:}}
1482:{{
1442:.
1425:.
1395:.
1338:.
1296:.
1196:.
1158:.
1115:.
1104:^
1003:.
938:.
777:,
740:,
733:.
599:).
591:,
587:,
551:,
547:,
543:,
531:,
517:,
427:.
358:,
354:,
2538:,
2448:)
2440:(
2208:e
2201:t
2194:v
2119:.
2086:.
2052:.
2022:.
1992:.
1961:.
1931:.
1900:.
1869:.
1839:.
1808:.
1777:.
1746:.
1715:.
1681:.
1648:.
1609:.
1580:.
1555:.
1498:)
1478:.
1411:.
1381:.
1349:.
1311:.
1282:.
1257:.
1232:.
1207:.
1169:.
1131:.
983:.
663:)
656:)
629:)
555:)
134:e
127:t
120:v
34:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.