DE102019108266A1 - Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit - Google Patents

Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit Download PDF

Info

Publication number
DE102019108266A1
DE102019108266A1 DE102019108266.8A DE102019108266A DE102019108266A1 DE 102019108266 A1 DE102019108266 A1 DE 102019108266A1 DE 102019108266 A DE102019108266 A DE 102019108266A DE 102019108266 A1 DE102019108266 A1 DE 102019108266A1
Authority
DE
Germany
Prior art keywords
function
address
segment
deprivileged
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019108266.8A
Other languages
English (en)
Inventor
Vadim Sukhomlinov
Kshitij Doshi
Michael LeMay
Dmitry Yurievich Babokin
Areg Melik-Adamyan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019108266A1 publication Critical patent/DE102019108266A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Ausführungsformen betreffen Techniken zum Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll, und Definieren zugänglicher Adressenbereiche für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin es der zweiten Funktion gestattet ist, im deprivilegierten Betriebsmodus zuzugreifen. Ausführungsformen umfassen Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist, und Einleiten der Ausführung der zweiten Funktion in dem deprivilegierten Betriebsmodus.

Description

  • TECHNISCHES GEBIET
  • Hier beschriebene Ausführungsformen betreffen allgemein Techniken zum Bereitstellen von Isolation auf Funktionsebene mit auf Fähigkeit basierender Sicherheit in einem deprivilegierten Betriebsmodus.
  • STAND DER TECHNIK
  • Das Gebiet der Computersicherheit ist in der heutigen vernetzten Umgebung immer wichtiger geworden. Angreifer können böswillige Software benutzen, die eine Datenverarbeitungsvorrichtung infiziert und bewirkt, dass sie böswillige Aktionen ausführt, wie etwa Stehlen sensibler Informationen von einem Unternehmen oder Individuum, das dem Hostcomputer zugeordnet ist, Verbreitung an andere Hostcomputer, Hilfe bei Distributed-Denial-of-Service-Attacken, Aussenden von Spam oder böswilligen E-Mails von dem Hostcomputer usw. Daher bleiben signifikante administrative Herausforderungen zum Schutz von Computern und Computernetzwerken vor böswilliger und unbeabsichtigter Ausnutzung durch böswillige Software und Angreifer.
  • Figurenliste
    • 1 zeigt eine beispielhafte Ausführungsform einer Vorrichtung.
    • 2 zeigt ein Beispiel für eine Anweisungssequenz.
    • 3 zeigt ein Beispiel für einen Logikfluss.
    • 4 zeigt ein Beispiel für ein System.
    • 5 zeigt ein Beispiel für einen zweiten Logikfluss.
    • 6 zeigt ein Beispiel für eine erste Datenverarbeitungsarchitektur.
    • 7 zeigt eine beispielhafte Ausführungsform einer Vorrichtung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hier besprochene Ausführungsformen können in Systemen angewandt werden, die das Teilen von Hardware-Datenverarbeitungsressourcen unter Kunden ermöglichen, wie etwa Cloud-Datenverarbeitung, FaaS (Function as a Service) usw. Diese Systeme, die Ressourcen teilen, benötigen eine Weise zum Abgrenzen von Aktionen und Verhindern von Arbeitslastwechselwirkung zwischen Kunden, um Sicherheit und Privatsphäre zu bewahren. Zu abgegrenzten Aktionen kann Beliebiges gehören, das im Voraus begrenzt (eingegrenzt) werden muss - dies gilt gewöhnlich für Code, der durch Isolation eingeschlossen wird - zum Beispiel mit Sandkästen, virtuellen Maschinen usw. Obwohl es Verfahren gibt, die dieses Problem angehen, wie etwa virtuelle Maschinen, Prozesse, Namenräume für Container und verwaltete Laufzeiten, gibt es Probleme mit Herauffahrzeiten, Aufruf-Leistungsfähigkeit und/oder Speicheroverhead, wodurch die Anwendbarkeit und Dichte von Einsätzen begrenzt wird. Einige Anwendungen wie NFV (Network Functions Virtualization) erfordern Latenz im Nanosekunden- bis Mikrosekundenbereich, während typische FaaS-Implementierungen von heute zu einer Latenz von mehreren 10 Millisekunden für den Aufruf führen würden. Der Abfragemodus, der typischerweise in solchen Anwendungen verwendet wird, hat eine andere Menge von Problemen - Dichte und Speicheroverhead in Verbindung mit Isolation - VM und Container erfordern immer noch viel Speicher - von einigen MB bis GB, wodurch die Anzahl der Instanzen auf einem Server begrenzt wird, und die Abfragemodus-Ausführung funktioniert nicht gut mit Übersubskription. Dagegen ist der Ansatz des Laufs bis zum Abschluss entweder nur mit einer einzigen Anwendung anwendbar, aufgrund von geteiltem Speicherplatz zwischen Funktionsaufrufen, oder er hat bei Abbildung auf das FaaS-Modell mit guter Isolation hohe Latenz. Im Extremfall erreicht, wenn alle Anwendungen in Funktionen zerlegt werden (darunter OS-, Plattform- und Infrastrukturdienste), die sowohl lokal als auch entfernt laufen, die Anforderungs-Leistungsfähigkeit hunderte Millionen Aufrufe pro Sekunde pro Server - was heutzutage nur für nativen Code und CALL-Anweisung erreichbar ist.
  • FaaS-Verwendung wächst mit einer enormen Rate (bis 2021 7-10 x, laut http://blog.spotinst.com/2017/05/01/spotinsts-ceotakeouts-serverlessconf-2017/), und existierende Implementierungen erzeugen eine Anzahl von Problemen. Zum Beispiel erfordern aktuelle Lösungen typischerweise, dass Entwickler den Quellcode freigeben. Das Freigeben von Quellcode oder irgendeines nachkonstruierbaren Formats verursacht, dass einem Anwendungsanbieter ein gewisses Risiko des Leckens von geistigem Eigentum (IP) an Dienstanbieter und die Öffentlichkeit entsteht. Selbst wenn der Dienstanbieter den Quellcode schützt, kann er ihn jedoch in einem getrennten Container entsenden, wodurch eine andere Menge von Problemen entsteht, z.B. Ressourcen belastet und die Latenz vergrößert werden. Diese vorbekannten Implementierungen erschweren somit die Verwendung von FaaS in Implementierungen mit niedriger Latenz, wie etwa Netzwerkpaket-Verarbeitungsanwendungen, z.B. wenn Paketdaten als Parameter an eine Funktion geleitet werden, aufgrund von Leistungsfähigkeitseinbußen sicherer Isolation sehr. Vorbekannte Systeme verursachen auch einen Verlust an Effizienz aufgrund der Notwendigkeit, eine etwaige Ausführungszeit einzurichten, z.B. Kompilierung, Übersetzung und Verifikation, und zum Einrichten von Isolation.
  • Hier besprochene Ausführungsformen gehen die oben beschriebenen Probleme an, indem eine Ausführungsumgebung bereitgestellt wird, die Ausführung von Funktionen erlaubt, die in nativen Code kompiliert werden, während Sicherheits-Sandkästen implementiert werden. Außerdem ist die hier beschriebene Isolation/Sicherheit auf Funktionsebene in vielfältigen Anwendungen anwendbar - von einer Cloud mit dem FaaS-Modell bis zu leichter Isolation für Zuverlässigkeit und Sicherheit in Anwendungen des Internet of Things (IoT). Ausführungsformen sind nicht auf diese Beispiele beschränkt.
  • Verschiedene Ausführungsformen können allgemein die Ermöglichung eines deprivilegierten Betriebsmodus betreffen, der durch Benutzerebenen-Anwendungen konfigurierbar ist. Bei Ausführungsformen kann eine Funktion unter Benutzung des deprivilegierten Betriebsmodus vollständig eingegrenzt und mit beschränkten Fähigkeiten ausgeführt werden. Der deprivilegierte Betriebsmodus begrenzt die Verwendung von Systemaufrufen und Anweisungen, die Kontextwechsel und Programmfehler verursachen, z.B. CALL FAR, MOV zu einem Segmentregister usw. Stattdessen werden diese potentiell ‚gefährlichen‘ Anweisungen durch die Benutzerebenen-Anwendung gehandhabt. Die Benutzerebenen-Anwendung kann zum Beispiel Emulation von Systemaufrufen bereitstellen und/oder Ausführung verhindern. Außerdem wird ein zusätzlicher Mechanismus für legitime externe Aufrufe durch deprivilegierte Funktionen bereitgestellt, z.B. Infrastrukturdienste, Verkettung von Funktion zu Funktion usw. Ein Beispiel für einen externen Aufruf wäre eine Liste von ‚System‘-Funktionen, die durch den Aufrufer dem Aufgerufenen exponiert wird, die der Aufgerufene verwenden kann, um auf der dem Aufrufer erlaubten Ebene mit der Betriebsumgebung in Interaktion zu treten. Dies ist eines der Verfahren zur Implementierung des auf Fähigkeit basierenden Modells. Spezifische Beispiele können Zeit, Betriebskontext, Speicherzuteilung, Laden/Speichern von Daten oder Kontext usw. sein. Ausführungsformen stellen Verbesserungen des existierenden Systems bereit, wie etwa Fähigkeiten (erlaubte Anweisungen/Aufrufe), die durch die Aufruferfunktion für den aufgerufenen Code oder die aufgerufene Funktion definiert sind, durchgesetzter Adressenschutz mit Verwendung von Seitengenehmigungen mit Schutzschlüssel- bzw. PKEY-Durchsetzung von zusätzlichen Seitenattributen und Segmentregistern und durch den Aufrufer implementierte Programmfehlerbehandlungs-/Emulationsfunktionalität. Hier besprochene Ausführungsformen stellen außerdem effiziente Isolation auf Funktionsebene bereit, im Gegensatz zu vorbekannten Systemen, die Isolation auf Prozess- oder Virtuellmaschinenebene bereitstellen.
  • Es wird nun auf die Zeichnungen Bezug genommen, in denen durchweg gleiche Bezugszahlen verwendet werden, um gleiche Elemente zu bezeichnen. In der folgenden Beschreibung werden zur Erläuterung zahlreiche spezifische Einzelheiten skizziert, um ein umfassendes Verständnis dieser zu gewährleisten. Es ist jedoch ersichtlich, dass die neuartigen Ausführungsformen ohne diese spezifischen Details praktiziert werden können. In anderen Fällen werden wohlbekannte Strukturen und Vorrichtungen in Blockdarstellungsform gezeigt, um ihre Beschreibung zu erleichtern. Die Absicht ist, alle Modifikationen, Äquivalente und Alternativen, die mit dem beanspruchten Gegenstand vereinbar sind, abzudecken.
  • 1 zeigt eine beispielhafte Ausführungsform einer Vorrichtung 100, in der Aspekte der vorliegenden Offenbarung verwendet werden können. Bei verschiedenen Ausführungsformen kann die Vorrichtung 100 als eine beliebige Art von Datenverarbeitungsvorrichtung realisiert sein, darunter eine persönliche Datenverarbeitung, ein Desktop-Computer, ein Tablet-Computer, ein Netbook-Computer, ein Notebook-Computer, ein Laptop-Computer, ein Server, eine Serverfarm, ein Blade-Server oder eine beliebige andere Art von Server usw. Bei einigen Ausführungsformen kann die Vorrichtung 100 eine Kommunikationsstation, eine Mobilstation, eine fortschrittliche Station, ein Client, eine Plattform, eine drahtlose Kommunikationsvorrichtung, ein Mobilcomputer, eine Set-Top-Box, ein Handheld-Computer, eine Handheld-Vorrichtung, eine PDA-Vorrichtung (Personal Digital Assistant), eine Handheld-PDA-Vorrichtung, ein Netbook, ein Mobiltelefon, ein Smartphone, ein zellulares Mobiltelefon usw. sein. Ausführungsformen sind auf diese Weise nicht beschränkt.
  • Die Vorrichtung 100 kann eine Anzahl von Vorrichtungen, Systemen, Komponenten, Schaltkreisen und Infrastruktur umfassen, um Isolation auf Funktionsebene bereitzustellen, und einen deprivilegierten Betriebsmodus zu ermöglichen, wie etwa die in 1 dargestellten. Man beachte, dass die Vorrichtung 100 zusätzliche Komponenten umfassen kann, die aber der Klarheit halber nicht gezeigt sind. Bei Ausführungsformen umfasst die Vorrichtung 100 Speicher 105 und eine Verarbeitungseinheit (CPU) 116 zum Verarbeiten von Daten und Informationen, um Isolation auf Funktionsebene zu ermöglichen, z.B. beim Tätigen von Funktionsaufrufen, von einer Funktion zu einer anderen Funktion.
  • Die CPU 116, die einen oder mehrere Kerne zum Verarbeiten von Informationen für die Vorrichtung 100 umfassen kann. Die CPU 116 kann eine oder mehrere von beliebigen Arten von Rechenelement sein, darunter, aber ohne Beschränkung darauf, ein Mikroprozessor, ein Prozessor, eine Zentralverarbeitungseinheit, eine digitale Signalverarbeitungseinheit, ein Zweikernprozessor, ein Mobilvorrichtungsprozessor, ein Desktop-Prozessor, ein Einzelkernprozessor, eine SoC-Vorrichtung (System auf einem Chip), ein CISC-Mikroprozessor (Complex Instruction Set Computing), ein RISC-Mikroprozessor (Reduced Instruction Set), ein VLIW-Mikroprozessor (Very Long Instruction Word) oder eine beliebige andere Art von Prozessor oder Verarbeitungsschaltung auf einem einzelnen Chip oder einer integrierten Schaltung. Bei einigen Ausführungsformen kann die CPU 116 über ein oder mehrere Verbindungselemente mit den anderen Elementen des Datenverarbeitungssystems verbunden sein und mit ihnen kommunizieren, wie etwa durch einen oder mehrere Busse, Steuerleitungen und Datenleitungen.
  • Die CPU 116 kann auch eine Anzahl von Subelementen umfassen, wie etwa Verarbeitungsschaltkreise 118, Speicher (nicht gezeigt), Schnittstellen (nicht gezeigt), Register, einschließlich Segmentregister 120, und so weiter. Die Segmentregister 120 umfassen das Datensegment- bzw. DS-Register 122, ein Codesegment- bzw. CS-Register 124, ein Stapelsegment- bzw. SS-Register 126, ein Extrasegment- bzw. ES-Register 128, das GS-Register 130 und das FS-Register 132. Das CS-Register 124 speichert die Startadresse eines Codesegments mit für ein Softwareprogramm (eine Funktion) auszuführenden Anweisungen. Das DS-Register 122 speichert die Startadresse des Datensegments, das Daten, Konstanten und einen Arbeitsbereich für eine Funktion enthält. Das SS-Register 126 umfasst die Startadresse eines Stapels, und der Stapel umfasst typischerweise Daten und Rückgabeadressenfunktionen oder Routinen. Das ES-Register 128, das GS-Register 130 und das FS-Register 132 sind zusätzliche Segmentregister, die keine speziell entworfene Hardware aufweisen.
  • Die Vorrichtung 100 kann auch Tabellen 131 umfassen, mit denen die CPU 116 Eigenschaften von Speicherbereichen des Speichers 105 definieren kann. Die Tabellen 131 sind Datenstrukturen, die im Speicher 105 gespeichert werden können. Die Tabellen 131 umfassen zum Beispiel eine GDT (Global Descriptor Table) 133, die eine Datenstruktur ist, mit der die Eigenschaften der verschiedenen Speicherbereiche definiert werden, die während der Programmausführung benutzt werden, z.B. Segmentdeskriptoren, darunter die Basisadresse, die Größe und Zugangsprivilegien wie Ausführbarkeit und Beschreibbarkeit. Diese Speicherbereiche sind Segmente, z.B. die Codesegmente, die Datensegmente und die Stapelsegmente, wie in 2 dargestellt. Die Tabellen 133 umfassen außerdem eine LDT (Local Descriptor Table) 125, die Deskriptoren für Speichersegmente enthält, die für spezifische Softwareprogramme und Funktionen privat sind. Bei Ausführungsformen umfassen die GDT 133 und eine LDT 135 jeweils 8192 Einträge als Deskriptoren oder 16384 kombinierte Einträge und spezifische Einträge können im 32-Bit-Modus bis zu 64 Bit Daten und im 64-Bit-Modus 128 Bit aufweisen. Die GDT 133 wird typischerweise im Systemraum (nicht gezeigt) des Speichers 105 gespeichert, und die LDT 135 kann im Systemraum oder Benutzerraum 109 gespeichert werden.
  • Bei Ausführungsformen gehen Speicherzugriffe, die ein Programm durchführen kann, durch ein Segment. Zum Referenzieren eines Segments muss ein Softwareprogramm oder eine Funktion seinen Index in der GDT 133 oder der LDT 135 verwenden. Wie erwähnt wird der Index als Segmentselektor oder kurz Selektor bezeichnet. Der Selektor wird in ein Segmentregister 120 zur Verwendung geladen. Das Laden eines Selektors in ein Segmentregister 120 liest automatisch die GDT 133 oder die LDT 135 und speichert die Eigenschaften des Segments in der CPU 116 selbst. Bei Ausführungsformen können die Tabellen 131 (GDT 133 und/oder LDT 135) mit den Segmentregistern 120 benutzt werden, um zugängliche Bereiche (Isolation) in den Segmenten bereitzustellen, wenn ein deprivilegierter Funktionsaufruf durchgeführt wird, wie nachfolgend ausführlicher besprochen wird.
  • Bei Ausführungsformen umfasst die Vorrichtung 100 Speicher 105, der über ein oder mehrere Verbindungselemente mit der CPU 116 gekoppelt ist. Der Speicher 105 kann Informationen und Daten für die CPU 116 zum Ausführen von Verarbeitung für die Vorrichtung 101 speichern. Bei Ausführungsformen umfasst der Speicher 105 ‚Haupt‘-Speicher, der als flüchtiger Speicher implementiert ist. Der Speicher 105 umfasst auch virtuellen Speicher, z.B. den Speicher, der durch ein Betriebssystem bereitgestellt und gesteuert wird, der auf den ‚Haupt‘-Speicher abgebildet wird. Der virtuelle Speicher kann in flüchtigem Speicher, nichtflüchtigem Speicher und einer Kombination davon implementiert werden. Bei Ausführungsformen kann der Speicher 105 Informationen und Daten für ein Betriebssystem (Kernel/OS-Raum) und Softwareprogramme (Benutzerraum 109) zum Betrieb speichern. Zum Beispiel kann der Benutzerraum 109 ein Block des Speichers sein, der von Softwareprogrammen verwendet werden kann, um Informationen und Daten zu speichern, wenn sie durch die CPU 116 ausgeführt werden. Bei Ausführungsformen kann der Benutzerraum 109 in zusätzliche Adressenräume 107-1 bis 107-x aufgeteilt werden, wobei x eine beliebige positive ganze Zahl sein kann, die jeweils durch ein Softwareprogramm zur Ausführung assoziiert und benutzt werden können. Spezieller kann jeder der Adressenräume 107 Zuteilungen eines oder mehrerer eines Codesegments, eines Datensegments und eines Stapelsegments für das Softwareprogramm umfassen. Die Adressenräume 107 können durch das Betriebssystem zugeteilt werden und definieren einen Bereich diskreter Adressen, die jeweils einer logischen oder physischen Entität entsprechen können, wie etwa einer Speicherzelle, einem Plattensektor und so weiter, und können einem oder mehreren Softwareprogrammen zugeordnet sein.
  • Bei Ausführungsformen kann ein Funktionen enthaltendes Softwareprogramm andere Funktionen anderer Softwareprogramme benutzen oder aufrufen. In einigen Fällen können sich diese Softwareprogramme in verschiedenen Adressenräumen 107 befinden, z.B. in dem Adressenraum 107-1 und dem Adressenraum 107-2, und mit verschiedenen Privilegebenen arbeiten. Somit kann eine Aufruferfunktion mit einem ersten zugeteilten oder zugeordneten Adressenraum 107-1 eine Aufgerufenenfunktion mit einem zweiten zugeteilten oder zugeordneten Adressenraum 107-2 mit einer anderen Privilegebene aufrufen. In anderen Fällen können Funktionsaufrufe zwischen Funktionen erfolgen, die denselben Adressenraum 107 benutzen, z.B. kann eine Aufruferfunktion eine Aufgerufenenfunktion in der Adresse 107-1 aufrufen.
  • Um Sicherheit bereitzustellen, z.B. zu verhindern, dass eine Funktion einen Sprung zu böswilligem Code durchführt, betreffen Ausführungsformen das Isolieren der Funktionen und das Behandeln von Versuchen, ‚gefährliche‘ Anweisungen auszuführen. In einem Beispiel kann die Funktion (Aufrufer) eine Far-Call-Anweisung und ein Call-Gate benutzen, um die andere Funktion, z.B. eine Aufgerufenenfunktion in dem anderen Adressenraum, „aufzurufen“. Die Verwendung einer Far-Call-Anweisung kann begrenzte Isolation zwischen der Aufrufer- und Aufgerufenenfunktion bereitstellen, indem Grenzen an dem Codesegment des Adressenraums der Aufgerufenenfunktion definiert sind, wodurch Ausführung außerhalb der Aufgerufenenfunktion verhindert und Stapelwechsel unterstützt wird.
  • Bei Ausführungsformen können eines oder mehrere der Segmentregister 120 benutzt werden, um zum Beispiel Isolation bereitzustellen. Die Aufruferfunktion kann das Datensegment- bzw. DS-Segmentregister 122 mit einem der erstellten Einträge in der GDT 133 oder LDT 135 laden, um den einer aufgerufenen Funktion verfügbaren Adressenbereich zu begrenzen, und das ES-/FS-/GS-Register 128/130/132 kann verwendet werden, um Zugang zu Tabellen bereitzustellen, die Adressen von Rückruffunktionen und Programmfehler-Handlern enthalten, mit denen die aufgerufene Funktion mit der Aufrufer-/Laufzeitumgebung in Interaktion treten kann. Eine Programmfehler-Handler-Adresse kann an einem definierten Ort sein, zum Beispiel bei ES:0000000, was sich auf den Eintrittspunkt des Programmfehler-Handlers mit implizitem CS-Wert des Aufrufers bezieht. Außerdem können Seitenschutzschlüssel verwendet werden, um kritische Datenstrukturen der Aufruferfunktion zu schützen. Dieser Ansatz gewährleistet jedoch begrenzte Isolationen zwischen aufgerufenen Funktionen.
  • Hier besprochene Ausführungsformen können zusätzliche Isolation zwischen den aufgerufenen Funktionen über Hardware- und/oder Softwaremodifikationen ermöglichen, z.B. Änderungen an Call- und Return-Anweisungen. Spezieller umfassen Ausführungsformen eine Erweiterung eines existierenden Anweisungssatzes zur Implementierung eines modifizierten Call-Return-Paars. Das modifizierte Paar kann ein CALL_DEPRIVILEGED und RET_DEPRIVILEGED sein, mit denen ein Benutzer oder Programmierer den deprivilegierten Betriebsmodus aufrufen kann. Man beachte, dass diese Namen nicht auf beschränkende Weise zu deuten sind und besprochene Ausführungsformen für funktional äquivalente Anweisungen gelten, die andere Namen aufweisen können.
  • 2 zeigt ein mögliches Beispiel für einen Sequenzfluss 200 einer Aufruffunktion (Call-Funktion), die einem Aufruferadressenraum 207-1 zugeordnet ist, wodurch ein CALL_DEPRIVILEGED an eine Aufgerufenenfunktion aktiviert wird, die einem anderen Adressenraum 207-2 zugeordnet ist. Man beachte, dass der Aufruferadressenraum 207-1 und der Aufgerufenenadressenraum 207-2 im selben Adressenraum 207 liegen können, jedoch vom Standpunkt der jeweiligen Funktionen aus gesehen. Zum Beispiel kann die Aufruferfunktion einen Teil des Adressenraums 207 zugeteilt bekommen, der durch den Aufruferadressenraum 207-1 definiert wird, und die Aufgerufenenfunktion kann einen Teil des Adressenraums 207 zugeteilt bekommen, der durch den Aufgerufenenadressenraum 207-2 definiert wird, wie in 2 dargestellt.
  • Der Aufruferadressenraum 207-1 umfasst ein Codesegment 202-1, ein Datensegment 204-1 und ein Stapelsegment 206-1, und der Aufgerufenenadressenraum 207-2 umfasst ähnlich ein Codesegment 202-2, ein Datensegment 204-2 und ein Stapelsegment 206-2. Jede der Funktionen kann definierten Bereichen des Speichers innerhalb ihrer jeweiligen Adressenräume zugeordnet sein. Zum Beispiel umfasst die Aufruferfunktion einen Codesegmentbereich 208-1, einen Datensegmentbereich 210-1 und einen Stapelsegmentbereich 212-1. Die Aufgerufenenfunktion umfasst einen Codesegmentbereich 208-2, einen Datensegmentbereich 210-2 und ein Stapelsegment 212-2. Man beachte, dass die Stapelsegmentbereiche 212 Vorinstanzen-Stapelbereiche sein können und sich in dem Datensegment 204 und dem Stapelsegment 206 befinden können. Wie in 2 dargestellt, gibt eine Funktion eines Softwareprogramms eine CALL_DEPRIVILEGED-Anweisung aus, und wenn die Funktion zurückkehrt, ist die Adresse, an die sie zurückkehrt, speziell codiert, um eine RETURN_PRIVILEGED-Operation zu bewirken. Der Stapel der aufgerufenen Funktion (Stapelbereich 212-2) ist von dem Stapel (212-1) des aufrufenden Threads getrennt, und eine Rückkehradresse mit speziellem Wert wie etwa 0x00 kann auf den Stapel in dem Stapelbereich 212-2 geschoben werden. Wenn die aufgerufene Funktion ausgeführt wird, wird somit ein gewöhnliches Rückkehren als ein normales Rückkehren ausgeführt, und nur die Rückkehr, die mit CALL_DEPRIVILEGED übereinstimmt, triggert die RETURN_PRIVILEGED-Operation.
  • Bei Ausführungsformen kann die CPU 116 eine Anzahl von Operationen ausführen, um die CALL_DEPRIVILEGED-Anweisung auszuführen, um Isolation auf Funktionsebene sicherzustellen und im deprivilegierten Modus zu arbeiten. In einem Beispiel ist die CALL_DEPRIVILIGED-Anweisung eine Erweiterung oder Modifikation der Anweisung CALL FAR und von Segmentdeskriptoren, die eine niedrigere Privilegebene benutzen, z.B. die Privilegebene 4 oder ‚deprivilegiert‘. Der niedrigere deprivilegierte Betriebsmodus umfasst mehrere Beschränkungen, wie etwa Verbieten von Systemaufrufen und Verbieten von CALL FARs auf existierende Privilegebenen 3-0, wobei die Privilegebene 3 eine niedrigere privilegierte Ebene und die Privilegebene 0 eine höhere privilegierte Ebene ist. Die CPU 116 unterscheidet in der Privilegebene 3 vier verschiedene Zugangsrechte für Speicherseiten. Außerdem können Systemdatenstrukturen vollständig geschützt werden. Auf der Privilegebene 0 erlaubt die CPU 116 Lese- und Schreibzugriff auf alle auf Speicher abgebildeten Seiten. Zum Beispiel besteht kein Schutz vor Verfälschung der Systemtabellen oder des Codesegments.
  • Bei Ausführungsformen kann die Funktion CALL_DEPRIVILEGED aktivieren, und die CPU kann eine Anzahl von Tasks ausführen, darunter Laden eines Programmfehler-Handlers, Ermöglichen der Durchsetzung von Schutzschlüsseln, Lastgrenzen für Segmentregister, Konfigurieren eines Taktzählers, Schwenken auf einen neuen Stapel (Aufgerufenenstapel) und Wechsel zur Aufgerufenenfunktion. Bei Ausführungsformen kann die CPU 116 den Programmfehler-Handler für Systemaufrufe, „gefährliche Anweisungen“ wie Verschiebung zum Segmentregister (CALL/JMP FAR) konfigurieren, und um Programmfehler von vordefinierten Orten aus (Segmentdeskriptor, durch einige der Register definierte Adresse usw.) zu erzeugen. Andere ‚gefährliche‘ Anweisungen oder Aktionen wären die Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, das Laden von Segmentregistern, SGDT/LGDT, SIDT/LIDT und andere Anweisungen würden einen Programmfehler verursachen, der durch den Funktionsaufrufer-Programmfehler-Handler behandelt wird.
  • Die CPU 116 kann Schutzschlüssel durchsetzen, die in der aufgerufenen Adresse definiert sind. Alle Zugriffe auf das Codesegment 202-2, das Datensegment 204-2 und das Stapelsegment 204-2 der Aufgerufenenfunktion finden somit nur mit durchgesetzten Schutzschlüsseln statt. Es wird verhindert, dass die Aufgerufenenfunktion Schutzschlüsselbit in der aufgerufenen Adresse ändert. Schutzschlüssel (PKEY) verwenden den Umstand, dass in einem 64-Bit-Adressierungsmodus nicht alle Bit verwendet werden. Die PKEY sind eine neue Verwendung für sechs hohe Bit einer Adresse zum Definieren eines granulareren Zugriffs auf Seiten, so dass dieselbe Seite abhängig von dem Wert dieser Hoch-Bit verschiedene Zulassungen aufweisen kann. Zum Beispiel kann ein Wert dieser 6 Bit, z.B. 000000b, definieren, dass diese Seite eine Lese-Schreib-Datenseite ist, der Wert 000001b kann die Seite als eine Nur-Lese-Seite definieren, und der Wert 000010b kann definieren, dass kein Zugriff erlaubt ist. Alle diese verschiedenen Zulassungen können auf dieselbe Seite mit derselben linearen Adresse angewandt werden, und es wird kein Aliasing verwendet. Da diese Zulassungen anwendungsdefiniert sind und durch die Anwendung gesteuert werden können, begrenzt die CPU 116 Steuerung im deprivilegierten Modus. Die CPU 116 begrenzt Steuerung durch die Anwendung durch Durchsetzen desselben Werts wie durch den Aufrufer einer zu verwendenden Funktion definiert, wobei Versuche der aufgerufenen Funktion, diese Werte zu ändern, ignoriert werden und eine spezifische Menge von Zulassungen durchgesetzt wird. Als ein Beispiel kann der Aufrufer eine spezielle Sicht seines Adressenraums erzeugen, wobei alle kritischen Datenstrukturen für die aufgerufene Funktion entweder nur lesbar oder nicht zugänglich sind, während auf diejenigen, die zugänglich sind, im selben Adressenraum zugegriffen werden kann, und kein Kontextwechsel notwendig ist.
  • Ferner lädt die CPU 116 Grenzen für die Segmentregister 120 aus den Tabellen LDT 135 oder GDT 133, wenn ein Deskriptor gegeben ist, der ein Index in einer der jeweiligen Tabellen ist. Die Grenzen in Kombination mit den Schutzschlüsseln verhindern Zugriff auf das Codesegment 202-2, das Datensegment 204-2 und das Stapelsegment 206-2 außerhalb erlaubter Regionen, z.B. des CS-Bereichs 208-2, des DS-Bereichs 210-2 und des SS-Bereichs 212-2. Um die Grenzen zu implementieren, interpretiert die CPU die ‚Basis‘-Adresse in den Einträgen der GDT 133 oder LDT 135, die in Segmentdeskriptoren geladen werden, als eine minimal mögliche zugängliche Adresse (untere Schranke) im Aufrufer-Adressenraum 207-1, statt als Basisadresse in dem Segment, wenn die CALL_DEPRIVELEGED-Anweisung ausgeführt wird. Dies soll einen einzigen Adressenraum zwischen Aufrufer und Aufgerufenem bewahren, um den Austausch von Parametern zu vereinfachen. Wie bereits erwähnt kann ein einziger Adressenraum für die Aufruferfunktion, z.B. der Aufrufer-Adressenraum 207-1, und die Aufgerufenenfunktion, z.B. der AufgerufenenAdressenraum 207-2, betrachtet vom Standpunkt der jeweiligen Funktionen, verwendet werden. Zum Beispiel kann die CPU 116 Segmentregister benutzen, um Basisadressenwerte für die Segmente zu speichern, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist. In einem Beispiel kann die CPU 116 einen ersten Basisadressenwert in einem ES-Register 128 speichern, um eine untere Grenze eines Zugangsbereichs des Datensegments (untere Grenze des DS-Bereichs 210-2) zu setzen, einen zweiten Basisadressenwert in einem FS-Register 132 speichern, um eine zweite untere Grenze eines zweiten Adressenbereichs des Codesegments (untere Grenze des CS-Bereichs 208-2) zu setzen, und einen dritten Basisadressenwert in einem GS-Register 130 speichern, um eine dritte untere Grenze einer dritten Adresse des Stapelsegments (untere Grenze des SS-Bereichs 212-2) zu setzen. Ausführungsformen sind nicht auf dieses Beispiel begrenzt. Bei einigen Ausführungsformen können ein oder mehrere der Segmentregister (ES, GS und FS) anderen Segmenten (CS, DS und SS) zugeordnet werden als dem in dem Beispiel bereitgestellten. Außerdem und bei einigen Ausführungsformen Speichern eines vierten Basisadressenwerts in einem ES-Register, um eine vierte untere Grenze einer vierten Adresse des Datensegments zu setzen, Speichern eines fünften Basisadressenwerts in einem FS-Register, um eine fünfte untere Grenze einer fünften Adresse des Datensegments zu setzen, und Speichern eines sechsten Basisadressenwerts in einem GS-Register, um eine sechste untere Grenze einer sechsten Adresse des Datensegments zu setzen.
  • In Systemen und wie zuvor besprochen wird das DS-Segment 204 für Datenzugriff für eine Funktion verwendet, das CS-Segment 202 wird für Code verwendet und das SS-Segment 206 ist für den Stapel, obwohl sich in einigen Fällen der Stapel im DS-Segment 204 befinden kann. Bei einigen Ausführungsformen kann die Vorgabekonfiguration für die Segmente für den deprivilegierten Betriebsmodus umdefiniert werden. Zum Beispiel können das ES-, FS- und GS-Segment für Daten, Code und Stapel verwendet werden. Diese Segmente können durch die Aufruferfunktion mit Betriebssystemunterstützung konfiguriert werden, um Segmentdeskriptoren in einer Deskriptortabelle (LDT 135 und/oder GDT 133 bereitzustellen und geeignete Selektoren zurückzugeben. Wenn die Anwendung anfordert, Werte in den Tabellen LDT 135 oder GDT 133 zu modifizieren, z.B. ein Systemaufruf modify_ldt() in Linux, stellt das Betriebssystem sicher, dass durch die Anwendung für diese Deskriptoren bereitgestellte Einstellungen korrekte Privilegebenen aufweisen und sich nicht auf Speicher außerhalb des Prozessadressenraums beziehen. Die Segmentgrenzen, die in einem Adressenraum des Aufrufers konfiguriert sind, verhindern, dass deprivilegierter Code beim Teilen desselben Adressenraums entkommt.
  • Grenzen für das CS-Segment können jedoch bedeuten, dass jede dynamische Laufzeitausführung (wie dynamisch gelinkte libc) außerhalb der Grenzen liegt und einen Programmfehler verursacht, der durch den Aufrufer-Programmfehler-Handler behandelt wird. Die Aufruferfunktion kann eine Sandkastenimplementierung der Laufzeit bereitstellen.
  • Segmentregisterselektoren werden erweitert zur Segmentcodierung, die nur einen zugänglichen Bereich definiert, während die Basis dieselbe wie für die Aufruferfunktion ist, oder anders ausgedrückt die Basis nicht zu der Adresse hinzugefügt wird, aber Zugriff auf die Adresse unterhalb der Basis einen Bereichsgrenzen-Programmfehler verursacht. Ferner kann Segmentsemantik in jedem Datensegment mit einer Kennung für das Codesegment, das auf es zugreifen kann, erweitert werden. Somit kann für jedes Nachrichtenobjekt, das exklusiv jeweils einer einzigen Funktion zugänglich sein muss, ein getrenntes Segment zu einem Zeitpunkt definiert und in der GDT gespeichert werden. Wenn eine Anweisung versucht, den Segmentdeskriptor zu laden, wird zusätzlich zu den gewöhnlichen Prüfungen der CS-Selektor für die Anweisung mit dem autorisierten CS-Selektor in dem Datensegmentdeskriptor verglichen. In einem Beispiel wird eine neue Anweisung definiert, um es einer Funktion mit einem zum Zugriff auf das Segment autorisierten CS-Selektor zu gestatten, Eigentümerschaft dieses Segments auf eine bestimmte andere Funktion mit einem designierten CS-Selektor zu übertragen.
  • Die Anweisung führt die Segmentdeskriptoraktualisierung durch, ohne eine Aktivierung privilegierter Software zu erfordern. Privilegierte Software kann eine Tabelle konstruieren, in der jeder Eintrag einen Quellen-CS-Selektor auf einen Ziel-CS-Selektor abbildet, um zu spezifizieren, dass die dem Quellen-CS-Selektor zugeordnete Funktion dafür autorisiert ist, Eigentümerschaft eines oder mehrerer Datensegmente an die dem Ziel-CS-Selektor zugeordnete Funktion zu übertragen, indem die Anweisung entsprechend zum Aktualisieren der spezifizierten Datensegmentdeskriptoren verwendet wird. Wenn die Anweisung aktiviert wird, um Eigentümerschaft eines Datensegments zu übertragen, und entweder der aktuelle CS-Selektor in dem Datensegmentdeskriptor nicht spezifiziert ist oder die aktuelle Funktion durch die Tabelle nicht dafür autorisiert ist, die angeforderte Deskriptoraktualisierung durchzuführen, kann ein Programmfehler oder ein Abbruch der virtuellen Maschine (VM) erzeugt werden. Dies hilft dabei, es privilegierter Software zu ermöglichen, zu steuern, welche Funktionen miteinander kommunizieren können, ohne zu erfordern, dass die privilegierte Software aktiviert wird, um jede Deskriptoraktualisierung durchzuführen. Auf die Tabelle könnte ein modellspezifisches Register, ein Steuerregister, eine Virtuellmaschinen-Steuerstruktur usw. zeigen. Die privilegierte Software könnte den Zugriff auf die Tabelle an eine vertrauenswürdige Funktion delegieren, indem die Tabelle in Speicher gespeichert wird, der der vertrauenswürdigen Funktion zugänglich ist. Die Anweisung kann einen Index in der Autorisierungstabelle spezifizieren, um das Overhead des Durchsuchens der gesamten Tabelle nach einem passenden Eintrag zu vermeiden. Die privilegierte Software kann jede Funktion über die entsprechenden Indizes zur Verwendung für verschiedene Ziel-CS-Selektoren informieren.
  • Die Anweisung kann auch die aktuellen Inhalte der Datensegmentregister prüfen, um etwaige mit einem Selektor zu identifizieren, der auf den für den Deskriptor, der modifiziert wird, passt. Wenn eine Übereinstimmung gefunden wird, kann ein Programmfehler erzeugt werden, oder das Segmentregister kann gelöscht werden, um Verwendung eines abgestandenen Segmentdeskriptorwerts zu vermeiden. Es kann notwendig sein, für jeden logischen Prozessor eine andere GDT zu verwenden, wenn eine einzelne Funktion gleichzeitig auf mehreren logischen Prozessoren ausgeführt werden kann, da andernfalls ein anderer logischer Prozessor als der die Anweisung ausführende immer noch einen abgestandenen Deskriptorwert verwenden kann.
  • Bei Ausführungsformen konfiguriert die CPU 116 auch einen Taktzähler, um eine Zeitgrenze für Ausführung zu setzen. Spezieller aktiviert die CPU 116, Kopie des aktuellen Werts des Zeitstempelzählers (TSC), einen Taktzähler, um einen Wert, z.B. einen Startwert, in Richtung eines Zeitgrenzenwerts zu zählen, wenn sie sich im deprivilegierten Betriebsmodus befindet. In einem Beispiel kann der Startwert 0 und der Zeitgrenzenwert 100 sein, und der Takt kann in Millisekunden zählen. Wenn der Takt den Zeitgrenzenwert erreicht, z.B. eine Zeitüberschreitung auftritt, bewirkt die CPU 116 einen Programmfehler.
  • Bei Ausführungsformen schwenkt die CPU 116 auch auf einen neuen Stapel, z.B. in dem Stapelbereich 212-2, wofür der Schreibzugriff durch die Änderung des Schutzschlüssels ermöglicht wird (entweder Änderung der Zulassung pro Schutzschlüsseln zugeordneter Seite oder Ändern des Schlüssels auf einen anderen Wert, der andere Zulassungen für dieselbe Seite definiert). Auf diesem neuen Stapel wird ein Call-Frame mit einem speziellen Wert als Rückkehradresse, z.B. 0x00, 0x00000 usw., platziert. Als Alternative kann ein Wert auf dem Stapel ignoriert werden, wenn eine spezielle Anweisung für RET DEPRIVILIGED verwendet wird, wie RET FAR, die sich von einer regulären RET-Anweisung zwischen Funktionen unterscheidet. Wenn CALL_DEPRIVILEGED aktiviert wird, wechselt die CPU 116 in die Aufgerufenenfunktion. Alle Flüsse der Steuerung in dem Hauptteil der Aufgerufenenfunktion schreiten normal voran, aber jeder Aufruf außerhalb der Aufgerufenenfunktion, der nicht in einem erlaubten Aufruf in die Benutzeranwendung fortschreitet, erzeugt automatisch einen Programmfehler, der durch den Programmfehler-Handler behandelt wird.
  • Bei Ausführungsformen kann CALL_DEPRIVILEGED codiert werden, ohne dass ein anderer Opcode hinzugefügt werden muss. Zum Beispiel kann die CALL_DEPRIVILEGED-Anweisung CALL FAR wiederverwenden, aber eine spezifische Segmentdeskriptoradresse bereitstellen, oder ein Präfix für die normale CALL-Anweisung hinzufügen (wie LOCK CALL oder REP CALL oder CS: CALL). Zum Beispiel kann die CALL_DEPRIVILIGED-Anweisung die Semantik von CALL FAR erweitern, indem das Datensegment und das Stapelsegment gespeichert werden, das Datensegmentregister und das Stapelsegmentregister geladen werden und die Privilegebene (CPL) auf eine niedrigere Ebene, z.B. CPL=4, gesetzt wird, um einen deprivilegierten Betriebsmodus anzugeben. Ähnlich würde die Semantik von RET umdefiniert werden, indem DS- und SS-Änderungen für die RET_DEPRIVILEGED-Anweisung umgekehrt werden.
  • Bei Ausführungsformen kann die den Programmfehler-Handler enthaltende CPU 116 jedes Auftreten des Systemaufrufs, des Programmfehlers, der gefährlichen Anweisung usw. während der Ausführung von deprivilegiertem Code behandeln. Der Programmfehler-Handler empfängt Details des Programmfehlers und implementiert/emuliert entweder das Verhalten der Anweisung oder bricht die Ausführung der Funktion ab. Zum Beispiel kann der Programmfehler-Handler syscall für erlaubte Systemfunktionen ‚weiterleiten‘ und die Ausführung fortsetzen. Es können spezifische Aufrufkonventionen definiert werden. Zum Beispiel können VMEXIT-Codes zum Definieren von Typen von Programmfehlern erweitert werden, und die RET_EXTERNAL-Anweisung kann verwendet werden, um die Ausführung fortzusetzen oder den Stapel zu säubern und die Ausführung der Aufruferfunktion fortzusetzen, wie etwa RET_DEPRIVILIGED.
  • Bei Ausführungsformen kann die CPU 116 auch vernestete Aufrufe behandeln. Im deprivilegierten Betriebsmodus werden, während der deprivilegierte Code ausgeführt wird, Modifikation von Segmentregistern 120, Deskriptortabellen 131 usw. verboten ist, vernestete Aufrufe nicht direkt unterstützt. Die CPU 116 kann die vernesteten Aufrufe jedoch mittels Emulation behandeln und ermöglichen. In einem Beispiel würden Aufrufe an Funktionen von einem einzigen Ort kommen, z.B. einem FaaS-Router, und die CPU 116 würde ‚CALL EXTERNAL‘ verwenden, um Aufrufe von Funktion zu Funktion durchzuführen. ‚CALL EXTERNAL‘ dient zum Implementieren eines Rückrufs von einer deprivilegierten Funktion zur Laufzeitumgebung für Dienstfunktionen, die typischerweise durch Systemaufrufe bereitgestellt werden, z.B. Speicherzuteilungen, E/A-Operationen usw. Der Aufrufer konfiguriert eine Liste von Eintrittspunkten für Funktionen, die in dediziertem Speicherbereich verwendet werden können, worauf sich eines der Segmentregister ES/FS/GS oder andere Register oder bekannte Speicherstellen beziehen.
  • Die CPU 116 kann auch die umgekehrte Anweisung ‚RET DEPRIVILEGED‘ verarbeiten, die entweder explizit getriggert oder implizit durch die CPU 116 getriggert werden kann, wenn ein RET zu einer Spezialwertadresse, z.B. der „0“-Adresse, angetroffen wird. Ähnlich wie die CALL_DEPRIVILEGED-Anweisung kann die RET_DEPRIVILEGED-Anweisung mit einem Präfix wie ‚REP RET‘ oder ‚CS: RET‘ oder anderen Varianten codiert werden. Beim Verarbeiten der umgekehrten Anweisung gibt die CPU 116 die Steuerung an die nächste Anweisung nach der CALL_DEPRIVILEGED-Anweisung in der Aufruferfunktion unter Verwendung einer Adresse aus den Stapeln des Aufrufers zurück, was beim Stapelwechsel mit dem Aufruf zu einem ‚Schattenstapel‘ wird. Wenn Stapelwechsel nicht erwünscht ist, kann eine ordnungsgemäße eine Rückkehradresse in dem in der CPU implementierten dedizierten ‚Schattenstapel‘ platziert werden, wie ‚Return Stack Buffer‘, was dazu dient, die Rückkehradresse für RET-Anweisungen zu erhalten, oder eine andere dedizierte Struktur. Die Adresse ist die nächste Adresse nach der Adresse, die der CALL_DEPRIVILEGED-Anweisung zugeordnet ist. Die CPU 116 kann in das herkömmliche Ausführungsmodell wechseln und den Stapel zum ursprünglichen Stapel schwenken, z.B. von der Stapelregion 212-2 auf die Stapelregion 212-1. Die RET _DEPRIVILIGED-Anweisung kann im Fall der Verwendung eines speziellen Werts auf dem Stapel zur Unterscheidung zwischen einem regulären RET und RET DEPRIVILIGED als eine RET-Anweisung codiert werden, oder es wird nicht erwartet, dass die aufgerufene Funktion Aufrufe anderer Funktionen als unter Verwendung von CALL_EXTERNAL durchführt. Dies wird Doppelverwendungsfunktionen ermöglichen und Binärkompatibilität sicherstellen, vorausgesetzt, dass, wenn sie aufgerufen werden, wenn sie im herkömmlichen Modus ausgeführt werden, die Doppelverwendungsfunktionen als reguläre Funktionen funktionieren.
  • Bei Ausführungsformen kann die CPU 116 auch eine CALL_EXTERNAL-Anweisung verarbeiten, die von einem Programmierer in einem Softwareprogramm benutzt werden kann. Spezieller umfasst eine abgegrenzte Aktion oder Funktion eine CALL_EXTERNAL-Anweisung, um Aufrufe in ihre Betriebsumgebung (Laufzeit) für Dienste wie Zuteilung von Speicher, E/A-Operationen, Zugreifen auf Ereignisse usw. im deprivilegierten Betrieb durchzuführen. Die CALL_EXTERNAL-Anweisung verwendet einen Funktionsindex als Parameter, so dass nur eine Anzahl erlaubter Aufrufe durchgeführt werden kann. Die CALL_EXTERNAL-Anweisung kann durch Wiederverwendung von Codierung der existierenden SYSCALL- oder VMCALL-Anweisungen implementiert werden und weist eine umdefinierte Semantik auf, statt als ‚gefährliche Anweisung‘ einen Programmfehler zu produzieren und eine neue Funktionalität von CALL_EXTERNAL im deprivilegierten Betriebsmodus bereitzustellen. Außerdem bewirkt die CALL_EXTERNAL-Anweisung einen Programmfehler mit vordefiniertem Code, was der Aufruferfunktion erlaubt, angeforderte Funktionalität bereitzustellen.
  • Ähnlich kann die CPU 116 eine RET-EXTERNAL-Anweisung verarbeiten, die in einem Softwareprogramm benutzt wird. Bei Ausführungsformen wird die RET EXTERNAL-Anweisung von dem durch die Aufruferfunktion implementierten Programmfehler-Handler verwendet, um die Kontrolle nach Programmfehler oder CALL_EXTERNAL an die deprivilegierte Funktion zurückzugeben. Die CPU 116 transferiert nach der Anweisung, die den Programmfehler verursacht hat, die Kontrolle an die nächste Anweisung.
  • 3 zeigt eine beispielhafte Ausführungsform eines Logikflusses 300. Der Logikfluss 300 kann einige oder alle der durch eine oder mehrere hier beschriebene Ausführungsformen ausgeführten Operationen repräsentieren. Zum Beispiel kann der Logikfluss 300 Operationen darstellen, die durch die Vorrichtung 100 und die CPU 116 ausgeführt werden.
  • In Block 302 umfassen Ausführungsformen Detektieren einer Aufrufanweisung von einer ersten Funktion an eine zweite Anweisung. Bei Ausführungsformen kann der Aufruf an die zweite Anweisung erfolgen, die einem anderen Adressenraum als die Aufruferfunktion zugeordnet ist und eine andere Privilegebene aufweist. In einem Beispiel bestimmt die CPU 116, dass eine CALL_DEPRIVILEGED-Anweisung aktiviert wird. Die CALL_DEPRIVILEGED-Anweisung kann eine neue Anweisung mit einem neuen Opcode sein oder kann codiert werden, ohne einen anderen Opcode hinzufügen zu müssen. Zum Beispiel kann die CALL_DEPRIVILEGED-Anweisung CALL FAR wiederverwenden, aber eine spezifische Segmentdeskriptoradresse bereitstellen oder ein Präfix für die normale CALL-Anweisung hinzufügen (wie LOCK CALL oder REP CALL oder CS: CALL). Zum Beispiel kann die CALL DEPRIVILIGED-Anweisung die Semantik von CALL FAR erweitern, und die CPU 116 kann den Aufruf detektieren.
  • In Block 304 kann die CPU 116 einen Programmfehler-Handler für die Aufruferfunktion laden, um Programmfehler zu behandeln, die auftreten, während die Aufgerufenenfunktion ausgeführt wird. Bei Ausführungsformen kann die CPU 116 den Programmfehler-Handler für Systemaufrufe, „gefährliche Anweisungen“ wie Verschiebung ins Segmentregister (CALL/JMP FAR) laden, und Programmfehler von vordefinierten Orten aus erzeugen (Segmentdeskriptor, durch einige der Register definierte Adresse usw.).
  • In Block 306 kann die CPU 116 bestimmen, ob PKEY zu benutzen sind. In einigen Fällen können PKEY nicht benutzt werden und es werden Seitenzulassungen verwendet, z.B. wenn sie nicht auf einem System verfügbar oder durch ein System konfiguriert sind. In diesen Fällen kann der Logikfluss 300 zu Block 308 übergehen. In anderen Fällen können PKEY jedoch verwendet werden und sie können in Block 307 konfiguriert werden. In einem Beispiel kann die CPU 116 PKEY zur Benutzung in Block 307 auf der Basis der PKEY bestimmen, die als Teil der Seitenzulassungen in Block 307 konfiguriert werden.
  • In Block 308 setzt die CPU 116 Grenzen für die Segmente und setzt diese durch. Bei Ausführungsformen interpretiert die CPU 116, um die Grenzen zu implementieren, die ‚Basis‘-Adresse der CALL_DEPRIVELEGED-Anweisung und Segmentdeskriptoren als minimal mögliche zugängliche Adresse (untere Grenze) im Aufruferadressenraum für jedes des Codesegments, des Datensegments und des Stapelsegments, statt als Basisadresse im Segment.
  • Die CPU 116 setzt in Block 310 einen Taktzähler (und initiiert ihn), um die Ausführung eine Zeitgrenze überschreiten zu lassen, wenn der Zähler einen Zeitgrenzenwert erreicht. Spezieller aktiviert die CPU 116 einen Taktzähler, um einen Wert, z.B. einen Startwert, in Richtung eines Zeitgrenzenwerts zu zählen, wenn sie sich im deprivilegierten Betriebsmodus befindet und die Aufgerufenenfunktion ausgeführt wird. Wenn der Takt den Zeitgrenzenwert erreicht, z.B. eine Zeitüberschreitung auftritt, bewirkt die CPU 116 einen Programmfehler.
  • In Block 312 wechselt die CPU 116 Stapel. Spezieller schwenkt die CPU 116 zu einem neuen Stapel, der sich in einem in den Segmenten spezifizierten Bereich von Adressen befindet. Außerdem wird ein spezieller Wert, z.B. 0x00, 0x00000 usw. auf dem neuen Stapel platziert. Ferner wechselt die CPU 116 in die Aufgerufenenfunktion. In Block 314 führt die CPU 116 die Funktion, z.B. eine oder mehrere Anweisungen für die Funktion, aus.
  • Die CPU 116, die den Programmfehler-Handler enthält, kann die für die Funktion ausgeführten Anweisungen überwachen. Ferner und in Block 316 kann die den Programmfehler-Handler enthaltende CPU 116 bestimmen, ob versucht wird, eine ‚gefährliche‘ Anweisung auszuführen. Wenn in Block 116 keine gefährliche Anweisung detektiert wird, kann die CPU 116 einen Schutzschlüssel aus der aufgerufenen Adresse in der Anweisung bestimmen und Schutzschlüssel durchsetzen, die in der aufgerufenen Adresse definiert sind, wenn Schutzschlüssel in dem optionalen Block 317 benutzt werden. Alle Zugriffe auf das Codesegment 202-2, das Datensegment 204-2 und das Stapelsegment 204-2 der Aufgerufenenfunktion finden somit nur mit durchgesetzten Schutzschlüsseln statt. Außerdem wird verhindert, dass die Aufgerufenenfunktion Schutzschlüsselbit in der aufgerufenen Adresse ändert. Wenn die CPU 116 in Block 316 eine gefährliche Anweisung detektiert oder in Block 317 die CPU 116 bestimmt, dass ein Schutzschlüssel nicht mit einem Wert übereinstimmt, der einer Seite oder Region zugewiesen ist, auf die versucht wird, zuzugreifen, kann die CPU 116 in Block 320 einen Programmfehler bewirken und/oder die Ausführung an die Aufruferfunktion zurückgeben. Die CPU 116 kann gültige Zugriffsversuche, die passende Schutzschlüssel und Werte aufweisen, in Block 317 gestatten.
  • Bei Ausführungsformen kann der Logikfluss 300 in Block 320 bestimmen, ob eine Funktion bis zum Abschluss weiter ausgeführt werden kann. In Block 320 kann die CPU 116 bestimmen, ob die Funktion abgeschlossen ist, z.B. irgendwelche Anweisungen verbleiben. Wenn dem so ist, kann die Funktion mit der Ausführung in Block 314 fortfahren. Die CPU 116 kann jedoch bestimmen, dass die Funktion abgeschlossen ist, und/oder den speziellen Wert auf dem Stapel detektieren und die Kontrolle an die Aufruferfunktion in Block 322 zurückgeben. Die CPU 116 kann die Kontrolle zurückgeben und zu den Segmenten für die Aufruferfunktion zurückschwenken.
  • Bezüglich 4 zeigt eine Blockdarstellung ein beispielhaftes Datenverarbeitungssystem 400, das in eine Laufzeitumgebung 404 integriert ist, und eine Prozessor- und Speicheranordnung 402. Die Prozessor- und Speicheranordnung 402 repräsentiert eine große Vielfalt von Prozessor- und Speicheranordnungen, darunter, aber ohne Beschränkung darauf, Anordnungen mit Einzel- oder Mehrkernprozessoren verschiedener Ausführungsgeschwindigkeiten und Stromverbrauche und Speicher verschiedener Architekturen mit einer oder mehreren Ebenen von Caches und von verschiedenen Typen wie dynamischem Direktzugriff, Flash usw. Bei verschiedenen Ausführungsformen kann der Prozessor 412 dafür ausgelegt werden, Verarbeitungsfunktionen für das Betriebssystem 414 bereitzustellen. Außerdem kann die Prozessor- und Speicheranordnung 402 mindestens einen Prozessor 414 umfassen. Der Prozessor 414 kann zum Beispiel eine CPU, einen Einzel- oder Mehrkernmikroprozessor, wie etwa die CPU 116 oder dergleichen, umfassen. Ferner kann das OS 414 Speicherressourcen verwalten, Task-Ausführung einteilen und so weiter.
  • Um Interaktion mit dem zugrundeliegenden System zu unterstützen, kann die Prozessor- und Speicheranordnung 402 mehrere Bibliotheken 416 umfassen. Die s Bibliotheken 416 können ausgelegt sein zum Bereitstellen von Aufrufen zwischen Anwendungen mit Benutzercode 440 und/oder deprivilegiertem Code 445 und dem OS 414. Die Bibliotheken 116 können auch verschiedene Plattform-Betriebsfunktionen bereitstellen, wie etwa Dateispeicherung und Eingabe-/Ausgabeoperationen. Die Laufzeitumgebung 404 kann einen Lader zum Laden von Code umfassen, der über die Compilewerkzeuge 432 und/oder durch ein anderes Datenverarbeitungssystem kompiliert werden kann.
  • Bei Ausführungsformen können in die Prozessor- und Speicheranordnung 402 Anwendungen oder Software geladen sein, darunter Benutzercode 440 und deprivilegiert. Die Anwendung repräsentiert einen großen Umfang von Anwendungen. Beispiele für eine Anwendung wären, aber ohne Beschränkung darauf, persönlicher Assistent, Produktivität oder Anwendungen für soziale Vernetzung wie Kalender, Textverarbeitung, Tabellenkalkulation, Twitter, Facebook und andere oder generische Anwendungsagenten wie ein Browser.
  • Bei Ausführungsformen kann in der Laufzeitumgebung 404 über den Prozessor 412 eine Anwendung ausgeführt werden, die Benutzercode 440 aufweist. Der Prozessor 412 kann jede Anweisung des Benutzercodes 440 ausführen, einschließlich Behandlung eines Aufrufs eines anderen Codes. In dem dargestellten Beispiel kann der Benutzercode 440 eine CALL_DEPRIVILEGED-Anweisung zum Aufrufen des deprivilegierten Codes 445 umfassen. Der Prozessor 412 kann den Aufruf wie zuvor in dem Logikfluss 300 besprochen ausführen, einschließlich Laden eines Programmfehler-Handlers, Durchsetzen von Schutzschlüsseln, Einstellen von Segmentregiongrenzen und so weiter. Der deprivilegierte Code 445 kann einen deprivilegierten Betriebsmodus betreiben, z.B. CPL4. Der deprivilegierte Code 445 kann ausgeführt werden, bis ein spezieller Wert auf dem Stapel des deprivilegierten Codes 445 detektiert wird und eine Rückkehr getriggert wird. Zum Beispiel kann der Prozessor 412 eine RET DEPRIVILEGED-Anweisung ausführen und zu der nächsten Anweisung nach der CALL_DEPRIVILEGED-Anweisung zurückkehren.
  • 5 zeigt eine beispielhafte Ausführungsform eines zweiten Logikflusses 500. Der Logikfluss 400 kann die durch eine oder mehrere hier beschriebene Ausführungsformen ausgeführten Operationen ganz oder teilweise repräsentieren. Zum Beispiel kann der Logikfluss 500 Operationen veranschaulichen, die durch die Vorrichtung 100 und die CPU 116 und das Datenverarbeitungssystem 400 und den Prozessor 412 ausgeführt werden.
  • Der Logikfluss 500 umfasst Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet. Bei Ausführungsformen ruft die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus auf. Zum Beispiel kann die erste Funktion im Benutzerraum arbeiten und kann eine zugeordnete Adresse im Speicher zum Verarbeiten von Daten aufweisen. Die erste Funktion kann eine Anzahl von Anweisungen umfassen, einschließlich einer Aufrufanweisung, die eine CALL_DEPRIVILEGED-Anweisung sein kann, um Anweisungen der zweiten Funktion einzuleiten. Die zweite Funktion kann eine andere Privilegebene und einen anderen Teil des zugeteilten Adressenraums aufweisen. Außerdem kann die zweite Funktion in einem deprivilegierten Betriebsmodus arbeiten. Wie bereits besprochen kann die CALL_DEPRIVILEGED-Anweisung einen neuen Opcode oder einen aktuellen Opcode (FAR CALL) mit anderer Semantik benutzen.
  • In Block 510 umfasst der Logikfluss 500 Definieren von zugänglichen Adressenbereichen für Segmente des Adressenraums für die zweite Funktion. Bei Ausführungsformen soll jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen, in dem der zweiten Funktion gestattet wird, im deprivilegierten Betriebsmodus zuzugreifen. Spezieller kann die zweite Funktion unter Verwendung definierter Regionen im Codesegment, Datensegment und Stapelsegment auf der Basis von Informationen in der aufgerufenen Adresse arbeiten. Wenn die zweite Funktion versucht, aus einer dieser Regionen herauszuspringen oder sich hinauszubewegen, kann der Programmfehler-Handler einen Programmfehler bewirken.
  • In Block 515 umfasst der Logikfluss 500 Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist. Ferner und in Block 525 umfasst der Logikfluss 500 Einleitung der Ausführung der zweiten Funktion im deprivilegierten Betriebsmodus. Die Anweisungen der zweiten Funktion können arbeiten, bis der spezielle Wert detektiert wird und die Kontrolle an die erste Funktion zurückgegeben wird.
  • 6 zeigt eine Ausführungsform einer beispielhaften Datenverarbeitungsarchitektur 600, die zur Implementierung verschiedener zuvor beschriebener Ausführungsformen geeignet ist. Bei einer Ausführungsform kann die Datenverarbeitungsarchitektur 600 die Vorrichtung 100, das System 400 und/oder die Vorrichtung 700 umfassen oder als Teil dieser implementiert sein.
  • So wie sie in der vorliegenden Anmeldung verwendet werden, sollen sich die Ausdrücke „System“ und „Komponente“ auf eine computerbezogene Entität beziehen, entweder Hardware, eine Kombination von Hardware und Software, Software oder Software in Ausführung, wofür Beispiele durch die beispielhafte Datenverarbeitungsarchitektur 600 bereitgestellt werden. Zum Beispiel kann eine Komponente, aber ohne Beschränkung darauf, ein Prozess, der auf einem Prozessor läuft, ein Prozessor, eine Festplatte, mehrere Speicherungslaufwerke (eines optischen und/oder magnetischen Speicherungsmediums), ein Objekt, eine ausführbare Datei, ein Ausführungs-Thread, ein Programm und/oder ein Computer sein. Zur Veranschaulichung können sowohl eine auf einem Server laufende Anwendung als auch der Server eine Komponente sein. Eine oder mehrere Komponenten können in einem Prozess und/oder Thread der Ausführung residieren, und eine Komponente kann auf einem Computer lokalisiert und/oder zwischen zwei oder mehr Computern verteilt sein. Ferner können Komponenten durch verschiedene Arten von Kommunikationsmedien kommunikativ miteinander gekoppelt sein, um Operationen zu koordinieren. Die Koordination kann unidirektionalen oder bidirektionalen Austausch von Informationen beinhalten. Zum Beispiel können die Komponenten Informationen in Form von Signalen übermitteln, die über die Kommunikationsmedien übermittelt werden. Die Informationen können als Signale implementiert werden, die an verschiedene Signalleitungen vergeben werden. Bei solchen Vergaben ist jede Nachricht ein Signal. Weitere Ausführungsformen können als Alternative jedoch Datennachrichten verwenden. Solche Datennachrichten können über verschiedene Verbindungen gesendet werden. Beispielhafte Verbindungen umfassen parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
  • Die Datenverarbeitungsarchitektur 600 umfasst verschiedene gewöhnliche Datenverarbeitungselemente, wie etwa einen oder mehrere Prozessoren, Mehrkernprozessoren, Coprozessoren, Speichereinheiten, Chipsätze, Steuerungen, Peripheriegeräte, Schnittstellen, Oszillatoren, Timingvorrichtungen, Videokarten, Audiokarten, Komponenten für Multimedia-Eingabe/Ausgabe(E/A), Stromversorgungen und so weiter. Die Ausführungsformen sind jedoch nicht auf die Implementierung durch die Datenverarbeitungsarchitektur 600 beschränkt.
  • Wie in 6 gezeigt, umfasst die Datenverarbeitungsarchitektur 600 eine Verarbeitungseinheit 604, einen Systemspeicher 606 und einen Systembus 608. Bei der Verarbeitungseinheit 604 kann es sich um beliebige verschiedener im Handel erhältlicher Prozessoren handeln.
  • Der Systembus 608 stellt eine Schnittstelle für Systemkomponenten bereit, darunter, aber ohne Beschränkung darauf, der Systemspeicher 606 für die Verarbeitungseinheit 604. Der Systembus 608 kann eine beliebige von mehreren Arten von Busstruktur sein, die unter Verwendung beliebiger von vielfältigen im Handel erhältlichen Busarchitekturen ferner an einen Speicherbus (mit oder ohne einen Speichercontroller), einen Peripheriebus und einen lokalen Bus angeschlossen sein können. Schnittstellenadapter können über eine Steckplatzarchitektur an den Systembus 608 angeschlossen sein. Beispielhafte Steckplatzarchitekturen wären ohne Beschränkung AGP (Accelerated Graphics Port), Card Bus, (E)ISA ((Extended) Industry Standard Architecture), MCA (Micro Channel Architecture), NuBus, PCI(X) (Peripheral Component Interconnect (Extended)), PCI Express, PCMCIA (Personal Computer Memory Card International Association) und dergleichen.
  • Die Datenverarbeitungsarchitektur 600 kann verschiedene Herstellungsartikel umfassen oder implementieren. Ein Herstellungsartikel kann ein computerlesbares Speicherungsmedium zum Speichern von Logik umfassen. Beispiele für ein computerlesbares Speicherungsmedium wären beliebige greifbare Medien, die elektronische Daten speichern können, darunter flüchtiger Speicher oder nichtflüchtiger Speicher, wechselbarer oder nicht wechselbarer Speicher, löschbarer oder nicht löschbarer Speicher, beschreibbarer oder neu beschreibbarer Speicher und so weiter. Beispiele für Logik wären ausführbare Computerprogrammanweisungen, die unter Verwendung einer beliebigen geeigneten Art von Code implementiert werden, wie etwa Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code, objektorientierter Code, visueller Code und dergleichen. Ausführungsformen können auch mindestens teilweise als Anweisungen implementiert werden, die in einem nichttransitorischen computerlesbaren Medium enthalten sind oder sich darauf befinden, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können, um Ausführung der hier beschriebenen Operationen zu ermöglichen.
  • Der Systemspeicher 606 kann verschiedene Arten von computerlesbaren Speicherungsmedien in Form von einer oder mehreren schnelleren Speichereinheiten umfassen, wie etwa ROM (Festwertspeicher), RAM (Direktzugriffsspeicher), DRAM (dynamischer RAM), DDRAM (Double-Data-Rate DRAM), SDRAM (Synchronous DRAM), SRAM (statischer RAM), PROM (programmierbarer ROM), EPROM (löschbarer programmierbarer ROM), EEPROM (elektrisch löschbarer programmierbarer ROM), Flash-Speicher, Polymerspeicher wie ferroelektrischer Polymerspeicher, ovonischer Speicher, Phasenänderungs- oder ferroelektrischer Speicher, SONOS-Speicher (Silizium-Oxid-Nitrid-Oxid-Silizium), magnetische oder optische Karten, ein Array von Vorrichtungen wie RAID-Laufwerke (Redundant Array of Independent Disks), Halbleiter-Speichervorrichtungen (z.B. USB-Speicher), Halbleiterlaufwerke (SSD) und eine beliebige andere Art von zum Speichern von Informationen geeigneten Speicherungsmedien. Bei der in 6 gezeigten dargestellten Ausführungsform kann der Systemspeicher 606 nichtflüchtigen Speicher 610 und/oder flüchtigen Speicher 612 umfassen. In dem nichtflüchtigen Speicher 610 kann ein BIOS (Basic Input/Output System) gespeichert werden.
  • Der Computer 602 kann verschiedene Arten von computerlesbaren Speicherungsmedien in Form von einer oder mehreren langsameren Speichereinheiten umfassen, darunter ein internes (oder externes) Festplattenlaufwerk (HDD) 614, ein magnetisches Diskettenlaufwerk (FDD) 616 zum Lesen eines wechselbaren magnetischen Datenträgers 618 oder zum Beschreiben dieses und ein optisches Datenträgerlaufwerk 620 zum Lesen aus einem wechselbaren optischen Datenträger 622 (z.B. einer CD-ROM oder DVD) oder Beschreiben dieser. Das HDD 614, FDD 616 und das optische Datenträgerlaufwerk 620 können durch eine HDD-Schnittstelle 624, eine FDD-Schnittstelle 626 bzw. eine optische Laufwerkschnittstelle 628 mit dem Systembus 608 verbunden werden. Die HDD-Schnittstelle 624 für Implementierungen mit externem Laufwerk kann die Schnittstellentechnologien USB (Universal Serial Bus) und/oder IEEE 1394 umfassen.
  • Die Laufwerke und zugeordneten computerlesbaren Medien stellen flüchtige und/oder nichtflüchtige Speicherung von Daten, Datenstrukturen, computerausführbaren Anweisungen und so weiter bereit. Zum Beispiel kann in den Laufwerken und Speichereinheiten 610, 612 eine Anzahl von Programmmodulen gespeichert werden, darunter ein Betriebssystem 630, ein oder mehrere Anwendungsprogramme 632, andere Programmmodule 634 und Programmdaten 636. Bei einer Ausführungsform können das eine oder die mehreren Anwendungsprogramme 632, die anderen Programmmodule 634 und die Programmdaten 636 zum Beispiel die verschiedenen Anwendungen und/oder Komponenten des Systems 700 umfassen.
  • Mittels einer oder mehrerer verdrahteter/drahtloser Eingabevorrichtungen, zum Beispiel einer Tastatur 638 und einer Zeigevorrichtung, wie etwa einer Maus 640, kann ein Benutzer Befehle und Informationen in den Computer 602 eingeben. Andere Eingabevorrichtungen wären Mikrofone, Infrarot- bzw. IR-Fernbedienungen, Hochfrequenz- bzw. HF-Fernbedienungen, Spiel-Pads, Stylus-Stifte, Kartenleser, Dongles, Fingerabdruckleser, Handschuhe, Graphik-Tablets, Joysticks, Tastaturen, Netzhautleser, Berührungsschirme (z.B. kapazitiv, resistiv usw.), Trackballs, Trackpads, Sensoren, Stifte und dergleichen. Diese und andere Eingabevorrichtungen sind oft mittels einer Eingabevorrichtungsschnittstelle 642, die mit dem Systembus 608 gekoppelt ist, mit der Verarbeitungseinheit 604 verbunden, können aber durch andere Schnittstellen, wie etwa einen parallelen Port, einen seriellen Port gemäß IEEE 1394, einen Spielport, einen USB-Port, eine IR-Schnittstelle und so weiter verbunden sein.
  • Ein Monitor 644 oder eine andere Art von Anzeigevorrichtung ist auch über eine Schnittstelle, wie etwa einen Videoadapter 646, mit dem Systembus 608 verbunden. Der Monitor 644 kann sich innerhalb oder außerhalb des Computers 602 befinden. Zusätzlich zu dem Monitor 644 umfasst ein Computer typischerweise andere Peripherie-Ausgabevorrichtungen, wie etwa Lautsprecher, Drucker und so weiter.
  • Der Computer 602 kann unter Verwendung logischer Verbindungen über verdrahtete und/oder drahtlose Kommunikation mit einem oder mehreren entfernten Computern, wie etwa einem entfernten Computer 648, in einer vernetzten Umgebung arbeiten. Der entfernte Computer 648 kann eine Workstation, ein Servercomputer, ein Router, ein Personal Computer, ein tragbarer Computer, ein mikroprozessorgestütztes Unterhaltungsgerät, eine Peer-Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten sein und umfasst typischerweise viele oder alle der relativ zu dem Computer 602 beschriebenen Elemente, obwohl der Kürze halber nur eine Speicher-/Speicherungsvorrichtung 650 dargestellt ist. Die abgebildeten logischen Verbindungen umfassen verdrahtete/drahtlose Konnektivität mit einem lokalen Netzwerk (LAN) 652 und/oder größeren Netzwerken, zum Beispiel einem großflächigen Netzwerk (WAN) 654. Solche LAN- und WAN-Vernetzungsumgebungen sind in Büros und Firmen überall anzutreffen und ermöglichen unternehmensweite Computernetzwerke, wie etwa Intranets, die alle an ein globales Kommunikationsnetzwerk, z.B. das Internet, angeschlossen sein können.
  • Wenn er in einer LAN-Vernetzungsumgebung verwendet wird, ist der Computer 602 mittels einer verdrahteten und/oder drahtlosen Kommunikationsnetzwerkschnittstelle oder eines Adapters 656 mit dem LAN 652 verbunden. Der Adapter 656 kann verdrahtete und/oder drahtlose Kommunikation mit dem LAN 652 ermöglichen, wozu auch ein darauf angeordneter drahtloser Zugangspunkt gehören kann, um mit der drahtlosen Funktionalität des Adapters 656 zu kommunizieren.
  • Bei Verwendung in einer WAN-Vernetzungsumgebung kann der Computer 602 ein Modem 658 umfassen oder ist mit einem Kommunikationsserver im WAN 654 verbunden oder weist andere Mittel zur Herstellung von Kommunikation über das WAN 654 auf, wie etwa mittels des Internet. Das Modem 658, das intern oder extern und eine verdrahtete und/oder drahtlose Vorrichtung sein kann, verbindet sich über die Eingabevorrichtungsschnittstelle 642 mit dem Systembus 608. In einer vernetzten Umgebung können relativ zu dem Computer 602 abgebildete Programmmodule oder Teile davon in der entfernten Speicher-/Speicherungsvorrichtung 650 gespeichert sein. Es versteht sich, dass die gezeigten Netzwerkverbindungen beispielhaft sind und andere Mittel zum Herstellen einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Der Computer 602 ist betreibbar, um unter Verwendung der Familie IEEE 602 von Standards mit verdrahteten und drahtlosen Vorrichtungen oder Entitäten zu kommunizieren, wie etwa drahtlosen Vorrichtungen, die wirksam in drahtloser Kommunikation angeordnet sind (z.B. IEEE 602.11-Funkmodulationstechniken). Dazu gehören unter anderem mindestens die drahtlosen Technologien WiFi (oder Wireless Fidelity), WiMAX und Bluetooth™. Somit kann die Kommunikation eine vordefinierte Struktur wie bei einem herkömmlichen Netzwerk sein oder einfach eine Ad-Hoc-Kommunikation zwischen mindestens zwei Vorrichtungen. WiFi-Netzwerke verwenden Funktechnologien, die als IEEE 602.118 (a, b, g, n usw.) bezeichnet werden, um sichere, zuverlässige und schnelle drahtlose Konnektivität bereitzustellen. Ein WiFi-Netzwerk kann verwendet werden, um Computer miteinander, mit dem Internet und mit verdrahteten Netzwerken (die IEEE 602.3-bezogene Medien und Funktionen verwenden) zu verbinden.
  • Die verschiedenen Elemente der Vorrichtungen, die zuvor mit Bezug auf 1-5 beschrieben wurden, können verschiedene Hardwareelemente, Softwareelemente oder eine Kombination beider umfassen. Beispiele für Hardwareelemente wären Vorrichtungen, Logikvorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Prozessoren, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, ASIC (anwendungsspezifische integrierte Schaltungen), PLD (programmierbare Logikvorrichtungen), DSP (digitale Signalprozessoren), FPGA (Field Programmable Gate Array), Speichereinheiten, Logikgatter, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter. Beispiele für Softwareelemente wären Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Softwareentwicklungsprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, API (Anwendungsprogrammschnittstellen), Anweisungssätze, Datenverarbeitungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon. Die Bestimmung, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann jedoch abhängig von einer beliebigen Anzahl von Faktoren unterschiedlich sein, wie etwa der gewünschten Rechengeschwindigkeit, Energiepegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und andere Entwurfs- oder Leistungsfähigkeitsbeschränkungen, so wie sie für eine gegebene Implementierung erwünscht sind.
  • 7 zeigt eine Ausführungsform eines Systems 700. Bei verschiedenen Ausführungsformen kann das System 700 ein System oder eine Architektur repräsentieren, das bzw. die für Verwendung mit einer oder mehreren hier beschriebenen Ausführungsformen, wie etwa der Vorrichtung 100, geeignet ist.
  • Wie in 7 gezeigt, kann das System 700 mehrere Elemente umfassen. Ein oder mehrere Elemente können unter Verwendung von einer oder mehreren Schaltungen, Komponenten, Registern, Prozessoren, Software-Subroutinen, Modulen oder einer beliebigen Kombination davon implementiert werden, so wie es für eine gegebene Menge von Entwurfs- oder Leistungsfähigkeitsbeschränkungen erwünscht ist. Obwohl 7 als Beispiele eine begrenzte Anzahl von Elementen in einer bestimmten Topologie zeigt; ist ersichtlich, dass Elemente in einer beliebigen geeigneten Topologie in dem System 700 verwendet werden können, so wie es für eine gegebene Implementierung erwünscht ist. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Bei verschiedenen Ausführungsformen kann das System 700 eine Datenverarbeitungsvorrichtung 705 umfassen, bei der es sich um eine beliebige Art von Computer- oder Verarbeitungsvorrichtung handeln kann, darunter ein Personal Computer, ein Desktop-Computer, ein Tablet-Computer, ein Netbook-Computer, ein Notebook-Computer, ein Laptop-Computer, ein Server, eine Serverfarm, ein Blade-Server oder eine beliebige andere Art von Server und so weiter.
  • Beispiele für eine Datenverarbeitungsvorrichtung wären auch Computer, die dafür ausgelegt sind, von einer Person getragen zu werden, wie etwa ein Handgelenkcomputer, Fingercomputer, Ringcomputer, Brillencomputer, Gürtelschnallencomputer, Armbandcomputer, Schuhcomputer, Bekleidungscomputer und andere Wearable-Computer. Bei Ausführungsformen kann zum Beispiel eine mobile Datenverarbeitungsvorrichtung als ein Smartphone implementiert sein, das in der Lage ist, Computeranwendungen sowie Sprachkommunikation und/oder Datenkommunikation auszuführen. Obwohl einige Ausführungsformen als Beispiel mit einer mobilen Datenverarbeitungsvorrichtung beschrieben werden können, die als Smartphone implementiert ist, versteht sich, dass andere Ausführungsformen auch unter Verwendung von anderen drahtlosen mobilen Datenverarbeitungsvorrichtungen implementiert werden können. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsvorrichtung 705 eine Prozessorschaltung 702 umfassen. Die Prozessorschaltung 702 kann unter Verwendung von beliebigen Prozessor- oder Logikvorrichtungen implementiert werden. Bei der Verarbeitungsschaltung 702 kann es sich um eines oder mehrere einer beliebigen Art von Rechenelement handeln, wie etwa, aber ohne Beschränkung darauf, einen Mikroprozessor, einen Prozessor, eine Zentralverarbeitungseinheit, eine digitale Signalverarbeitungseinheit, einen Zweikernprozessor, einen Mobilvorrichtungsprozessor, einen Desktop-Prozessor, einen Einzelkernprozessor, eine SoC-Vorrichtung (System auf einem Chip), einen CISC-Mikroprozessor (Complex Instruction Set Computing), einen RISC-Mikroprozessor (Reduced Instruction Set), einen VLIW-Mikroprozessor (Very Long Instruction Word) oder eine beliebige andere Art von Prozessor- oder Verarbeitungsschaltung auf einem einzigen Chip oder einer integrierten Schaltung. Die Verarbeitungsschaltung 702 kann über ein Verbindungselement 743, wie etwa einen oder mehrere Busse, Steuerleitungen und Datenleitungen, mit den anderen Elementen des Datenverarbeitungssystems verbunden sein und mit ihnen kommunizieren.
  • Bei einer Ausführungsform kann die Datenverarbeitungsvorrichtung 705 eine Speichereinheit 704 zur Kopplung mit der Prozessorschaltung 702 umfassen. Die Speichereinheit 704 kann über einen Kommunikationsbus 753 mit der Prozessorschaltung 702 gekoppelt sein, oder durch einen dedizierten Kommunikationsbus zwischen der Prozessorschaltung 702 und der Speichereinheit 704, so wie es für eine gegebene Implementierung erwünscht ist. Die Speichereinheit 04 kann unter Verwendung beliebiger maschinenlesbarer oder computerlesbarer Medien mit der Fähigkeit zum Speichern von Daten implementiert werden, darunter sowohl flüchtiger als auch nichtflüchtiger Speicher. Bei einigen Ausführungsformen kann das maschinenlesbare oder computerlesbare Medium ein nichttransitorisches Medium umfassen. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Die Datenverarbeitungsvorrichtung 705 kann bei verschiedenen Ausführungsformen eine Graphikverarbeitungseinheit (GPU) 706 umfassen. Die GPU 706 kann eine beliebige Verarbeitungseinheit, Logik oder Schaltkreise, optimiert zum Ausführen von graphikbezogenen Operationen, sowie die Videodecoder-Engines und die Einzelbildkorrelations-Engines umfassen. Die GPU 706 kann zur Wiedergabe von zweidimensionalen (2D-) und/oder dreidimensionalen (3D-) Bildern für verschiedene Anwendungen wie Videospiele, Graphiken, CAD (Computer Aided Design), Simulations- und Visualisierungswerkzeuge, Bildgebung usw. verwendet werden. Verschiedene Ausführungsformen sind auf diese Weise nicht beschränkt; die GPU 706 kann eine beliebige Art von Graphikdaten verarbeiten, wie etwa Bilder, Videos, Programme, Animation, 3D, 2D, Objektbilder und so weiter.
  • Bei einigen Ausführungsformen kann die Datenverarbeitungsvorrichtung 705 eine Anzeigesteuerung 708 umfassen. Die Anzeigesteuerung 708 kann eine beliebige Art von Prozessor, Steuerung, Schaltung, Logik und so weiter zum Verarbeiten von Graphikinformationen und Anzeigen der Graphikinformationen sein. Die Anzeigesteuerung 708 kann Graphikinformationen von einem oder mehreren Puffern empfangen oder abrufen. Nach dem Verarbeiten der Informationen kann die Anzeigesteuerung 708 die Graphikinformationen zu einer Anzeige senden.
  • Bei verschiedenen Ausführungsformen kann das System 700 einen Sendeempfänger 744 umfassen. Der Sendeempfänger 744 kann ein oder mehrere Funkgeräte umfassen, die Signale unter Verwendung von verschiedenen geeigneten drahtlosen Kommunikationstechniken senden und empfangen können. Solche Techniken können Kommunikation über ein oder mehrere drahtlose Netzwerke beinhalten. Beispielhafte drahtlose Netzwerke umfassen (aber ohne Beschränkung darauf) drahtlose lokale Netzwerke (WLAN), drahtlose persönliche Netzwerke (WPAN), drahtlose städtische Netzwerke (WMAN), Mobilfunknetze und Satellitennetze. Bei der Kommunikation über solche Netzwerke kann der Sendeempfänger 744 gemäß einem oder mehreren anwendbaren Standards in beliebiger Version arbeiten. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsvorrichtung 705 eine Anzeige 745 umfassen. Die Anzeige 745 kann eine beliebige Anzeigevorrichtung darstellen, die Informationen anzeigen kann, die von der Prozessorschaltung 702, der Graphikverarbeitungseinheit 706 und der Anzeigesteuerung 708 empfangen werden.
  • Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsvorrichtung 705 Speicherung 746 umfassen. Die Speicherung 746 kann als eine nichtflüchtige Speicherungsvorrichtung implementiert sein, wie etwa, aber ohne Beschränkung darauf, ein magnetisches Datenträgerlaufwerk, ein optisches Datenträgerlaufwerk, ein Bandlaufwerk, eine interne Speicherungsvorrichtung, eine angeschlossene Speicherungsvorrichtung, Flash-Speicher, batteriegesichterten SDRAM (synchronen DRAM) und/oder eine netzwerkzugängliche Speicherungsvorrichtung. Bei Ausführungsformen kann die Speicherung 746 Technologie zur Erhöhung der Speicherungsleistungsfähigkeit mit erweitertem Schutz für wertvolle digitale Medien umfassen, wenn zum Beispiel mehrere Festplatten vorliegen. Weitere Beispiele für die Speicherung 746 wären eine Festplatte, eine Diskette, CD-ROM (Compact Disk Read Only Memory), CD-R (Compact Disk Recordable), CD-RW (Compact Disk Rewritable), ein optischer Datenträger, magnetische Medien, magnetooptische Medien, wechselbare Speicherkarten oder Datenträger, verschiedene Arten von DVD-Vorrichtungen, eine Bandvorrichtung, eine Kassettenvorrichtung oder dergleichen. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Bei verschiedenen Ausführungsformen kann die Datenverarbeitungsvorrichtung 705 einen oder mehrere E/A-Adapter 747 umfassen. Beispiele für E/A-Adapter 747 wären USB-Ports/-Adapter (Universal Serial Bus), Firewire-Ports/-Adapter gemäß IEEE 1374 und so weiter. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Die ausführliche Offenbarung geht nun dazu über, Beispiele bereitzustellen, die weitere Ausführungsformen betreffen. Die nachfolgenden Beispiele 1 bis 27 sollen beispielhaft und nicht beschränkend sein.
  • In einem ersten Beispiel können Ausführungsformen Folgendes umfassen: einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Speicher zum Speichern von Anweisungen und mit dem Speicher gekoppelte Verarbeitungsschaltkreise, wobei die Verarbeitungsschaltkreise betreibbar sind, um die Anweisungen auszuführen, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll, Definieren zugänglicher Adressenbereiche für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin der zweiten Funktion Zugriff im deprivilegierten Betriebsmodus gestattet wird, Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist, und Einleiten der Ausführung der zweiten Funktion im deprivilegierten Betriebsmodus.
  • In einem zweiten Beispiel und als Erweiterung des ersten Beispiels können Ausführungsformen Folgendes umfassen: einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen zum Detektieren des Abschlusses der Ausführung der zweiten Funktion, Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse, Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist, und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  • In einem dritten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen zum Bestimmen der Rückkehradresse zum Rückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird, umfassen.
  • In einem vierten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen umfassen zum Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens eine der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  • In einem fünften Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen umfassen zum Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion, Bewirken eines Programmfehlers und Durchführen des Zurückgebens der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  • In einem sechsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen umfassen zum Bestimmen eines Schutzschlüssels, der in einer aufgerufenen Adresse der zweiten Funktion definiert ist, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  • In einem siebten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen umfassen zum Aufrufen eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus und Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  • In einem achten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen umfassen zum Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  • In einem neunten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System, Mittel zum und so weiter mit Verarbeitungsschaltkreisen umfassen zum Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs des Datensegments, Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs des Codesegments und Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse des Stapelsegments.
  • In einem zehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen einen Apparat, eine Vorrichtung, ein System und so weiter mit Verarbeitungsschaltkreisen umfassen für eine Netzwerkschnittstelle, die mit dem Speicher und den Verarbeitungsschaltkreisen gekoppelt ist, wobei die Netzwerkschnittstelle Informationen übermitteln, z.B. FaaS-Funktionalität bereitstellen soll.
  • In einem elften Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Detektieren des Abschlusses der Ausführung der zweiten Funktion, Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse, Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist, und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  • In einem zwölften Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Bestimmen der Rückkehradresse zum Zurückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird.
  • In einem dreizehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens einer der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  • In einem vierzehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion; Bewirken eines Programmfehlers und Ausführen von Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  • In einem fünfzehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Bestimmen eines in einer aufgerufenen Adresse der zweiten Funktion definierten Schutzschlüssels, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  • In einem sechzehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Aktivieren eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus und Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  • In einem siebzehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  • In einem achtzehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein computerimplementiertes Verfahren umfassen, das Folgendes umfasst: Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs eines Datensegments, Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs eines Codesegments und Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse eines Stapelsegments.
  • In einem neunzehnten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll, Definieren von zugänglichen Adressenbereichen für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin der zweiten Funktion gestattet ist, im deprivilegierten Betriebsmodus zuzugreifen, Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist, und Einleiten der Ausführung der zweiten Funktion in dem deprivilegierten Betriebsmodus.
  • In einem zwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren des Abschlusses der Ausführung der zweiten Funktion, Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse, Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist, und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  • In einem einundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Bestimmen der Rückkehradresse zum Zurückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird.
  • In einem zweiundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Bestimmen eines in einer aufgerufenen Adresse der zweiten Funktion definierten Schutzschlüssels, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  • In einem dreiundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Aktivieren eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus und Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  • In einem vierundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  • In einem fünfundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs eines Datensegments, Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs eines Codesegments und Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse eines Stapelsegments.
  • In einem sechsundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens eine der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  • In einem siebenundzwanzigsten Beispiel und als Erweiterung beliebiger der vorherigen Beispiele können Ausführungsformen ein nichttransitorisches computerlesbares Speicherungsmedium umfassen, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion; Bewirken eines Programmfehlers und Ausführen von Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  • In einem achtundzwanzigsten Beispiel und als Erweiterung beliebiger vorheriger Beispiele können Ausführungsformen Verarbeitungsschaltkreise umfassen zum Konstruieren einer Tabelle, die Einträge umfasst, wobei jeder Eintrag einen Quellencodesegment- bzw. Quellen-CS-Selektor auf einem Ziel-CS-Selektor abbildet, um zu spezifizieren, dass die dem Quellen-CS-Selektor zugeordnete erste Funktion autorisiert ist, die Eigentümerschaft eines oder mehrerer Datensegmente an die dem Ziel-CS-Selektor zugeordnete zweite Funktion zu transferieren.
  • Einige Ausführungsformen können unter Verwendung des Ausdrucks „einer Ausführungsform“ oder „eine Ausführungsform“, zusammen mit ihren Ableitungen, beschrieben werden. Diese Ausdrücke bedeuten, dass ein Merkmal, eine Struktur oder ein Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform enthalten ist. Das Erscheinen der Phrase „bei einer Ausführungsform“ an verschiedenen Stellen in der Patentschrift bezieht sich nicht unbedingt immer auf dieselbe Ausführungsform. Ferner können einige Ausführungsformen unter Verwendung des Ausdrucks „gekoppelt“ und „verbunden“, zusammen mit ihren Ableitungen, beschrieben werden. Diese Ausdrücke sind nicht unbedingt als einander synonym gedacht. Zum Beispiel können einige Ausführungsformen unter Verwendung der Ausdrücke „verbunden“ und/oder „gekoppelt“ beschrieben werden, um anzugeben, dass sich zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander befinden. Der Ausdruck „gekoppelt“ kann jedoch auch bedeuten, dass sich zwei oder mehr Elemente nicht in direktem Kontakt miteinander befinden, aber dennoch miteinander kooperieren oder interagieren.
  • Es wird betont, dass die Zusammenfassung der Offenbarung bereitgestellt wird, um es einem Leser zu erlauben, schnell die Beschaffenheit der technischen Offenbarung zu bestimmen. Sie wird mit dem Verständnis eingereicht, dass sie nicht zur Deutung oder Beschränkung des Schutzumfangs oder der Bedeutung der Ansprüche verwendet wird. Außerdem ist in der obigen ausführlichen Beschreibung ersichtlich, dass verschiedene Merkmale zur Straffung der Offenbarung zu einer einzigen Ausführungsform gruppiert sind. Dieses Offenbarungsverfahren ist nicht als Absicht widerspiegelnd zu deuten, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch angeführt sind. Wie die folgenden Ansprüche widerspiegeln, ist stattdessen erfindungsgemäßer Gegenstand in weniger als allen Merkmalen einer einzigen offenbarten Ausführungsform begründet. Die folgenden Ansprüche werden dementsprechend hiermit in die ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich als getrennte Ausführungsform steht. In den angefügten Ansprüchen werden die Ausdrücke „einschließlich“ und „in dem“ als umgangssprachliche Äquivalente der jeweiligen Ausdrücke „umfassend“ bzw. „wobei“ gebraucht. Außerdem werden die Ausdrücke „erstes“, „zweites“, „drittes“ und so weiter lediglich als Bezeichnungen verwendet und sollen ihren Objekten keinerlei numerische Anforderungen auferlegen.
  • Das oben Beschriebene umfasst Beispiele für die offenbarte Architektur. Es ist natürlich nicht möglich, jede denkbare Kombination von Komponenten und/oder Methodologien zu beschreiben, aber für Durchschnittsfachleute ist erkennbar, dass viele weitere Kombinationen und Permutationen möglich sind. Dementsprechend soll die neuartige Architektur alle solchen Abänderungen, Modifikationen und Varianten abdecken, die in den Gedanken und Schutzumfang der angefügten Ansprüche fallen.

Claims (37)

  1. Vorrichtung zur Ermöglichung von sicherem Funktionsaufruf, umfassend: Speicher zum Speichern von Anweisungen; und mit dem Speicher gekoppelte Verarbeitungsschaltkreise, wobei die Verarbeitungsschaltkreise betreibbar sind, um die Anweisungen auszuführen, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll; Definieren zugänglicher Adressenbereiche für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin es der zweiten Funktion gestattet ist, im deprivilegierten Betriebsmodus zuzugreifen; Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist; und Einleiten der Ausführung der zweiten Funktion in dem deprivilegierten Betriebsmodus.
  2. Vorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Detektieren des Abschlusses der Ausführung der zweiten Funktion; Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse; Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist; und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  3. Vorrichtung nach Anspruch 2, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Bestimmen der Rückkehradresse zum Zurückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird.
  4. Vorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens eine der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  5. Vorrichtung nach Anspruch 4, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion; Bewirken eines Programmfehlers; und Ausführen einer Rückgabe der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  6. Vorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Bestimmen eines in einer aufgerufenen Adresse der zweiten Funktion definierten Schutzschlüssels, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  7. Vorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Aktivieren eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus; und Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  8. Vorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltkreise zu Folgendem dienen: Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  9. Vorrichtung nach Anspruch 1, wobei der Speicher zum Speichern der Segmente dient, wobei die Segmente ein Datensegment, ein Codesegment und ein Stapelsegment umfassen, und die Verarbeitungsschaltkreise zu Folgendem dienen: Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs des Datensegments, Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs des Codesegments und Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse des Stapelsegments.
  10. Computerimplementiertes Verfahren zum Ermöglichen von sicherem Funktionsaufruf, umfassend: Detektieren, dass eine erste Funktion, die einem Adressenraum zugeordnet ist, eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll; Definieren zugänglicher Adressenbereiche für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin es der zweiten Funktion gestattet ist, im deprivilegierten Betriebsmodus zuzugreifen; Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist; und Einleiten der Ausführung der zweiten Funktion in dem deprivilegierten Betriebsmodus.
  11. Computerimplementiertes Verfahren nach Anspruch 10, umfassend: Detektieren des Abschlusses der Ausführung der zweiten Funktion; Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse; Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist; und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  12. Computerimplementiertes Verfahren nach Anspruch 11, umfassend: Bestimmen der Rückkehradresse zum Zurückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird.
  13. Computerimplementiertes Verfahren nach Anspruch 10, umfassend: Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens eine der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  14. Computerimplementiertes Verfahren nach Anspruch 13, umfassend: Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion; Bewirken eines Programmfehlers; und Ausführen einer Rückgabe der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  15. Computerimplementiertes Verfahren nach Anspruch 10, umfassend: Bestimmen eines in einer aufgerufenen Adresse der zweiten Funktion definierten Schutzschlüssels, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  16. Computerimplementiertes Verfahren nach Anspruch 10, umfassend: Aktivieren eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus; und Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  17. Computerimplementiertes Verfahren nach Anspruch 10, umfassend: Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  18. Computerimplementiertes Verfahren nach Anspruch 10, umfassend: Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs eines Datensegments, Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs eines Codesegments und Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse eines Stapelsegments.
  19. Nichttransitorisches computerlesbares Speicherungsmedium, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll; Definieren zugänglicher Adressenbereiche für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin es der zweiten Funktion gestattet ist, im deprivilegierten Betriebsmodus zuzugreifen; Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist; und Einleiten der Ausführung der zweiten Funktion in dem deprivilegierten Betriebsmodus.
  20. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 19, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren des Abschlusses der Ausführung der zweiten Funktion; Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse; Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist; und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  21. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 20, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Bestimmen der Rückkehradresse zum Zurückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird.
  22. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 19, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Bestimmen eines in einer aufgerufenen Adresse der zweiten Funktion definierten Schutzschlüssels, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  23. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 19, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum: Aktivieren eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus; und Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  24. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 19, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  25. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 19, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs eines Datensegments, Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs eines Codesegments und Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse eines Stapelsegments.
  26. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 19, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens eine der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  27. Nichttransitorisches computerlesbares Speicherungsmedium nach Anspruch 26, das mehrere Anweisungen umfasst, die, wenn sie ausgeführt werden, Verarbeitungsschaltkreise befähigen zum Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion; Bewirken eines Programmfehlers; und Ausführen einer Rückgabe der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  28. Apparat, umfassend: Mittel zum Detektieren einer ersten Funktion, die einem Adressenraum zugeordnet ist, die eine Aufrufanweisung an eine zweite Funktion in dem Adressenraum einleitet, wobei die erste Funktion die zweite Funktion in einem deprivilegierten Betriebsmodus aufrufen soll; Mittel zum Definieren zugänglicher Adressenbereiche für Segmente des Adressenraums für die zweite Funktion, wobei jedes Segment einen anderen Adressenbereich in dem Adressenraum aufweisen soll, worin es der zweiten Funktion gestattet ist, im deprivilegierten Betriebsmodus zuzugreifen; Mittel zum Wechseln zu dem Stapel, der dem zweiten Adressenraum und der zweiten Funktion zugeordnet ist; und Mittel zum Einleiten der Ausführung der zweiten Funktion in dem deprivilegierten Betriebsmodus.
  29. Vorrichtung nach Anspruch 28, umfassend: Detektieren des Abschlusses der Ausführung der zweiten Funktion; Zurückgeben der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung auf der Basis einer Rückkehradresse; und Wechseln zu einem Stapel in dem Adressenraum, der der ersten Funktion zugeordnet ist; und Wechseln von dem deprivilegierten Betriebsmodus zu einem normalen Betriebsmodus.
  30. Vorrichtung nach Anspruch 29, umfassend: Mittel zum Bestimmen der Rückkehradresse zum Zurückgeben der Kontrolle an die erste Funktion auf der Basis eines speziellen Werts, der auf einem der zweiten Funktion zugeordneten zweiten Stapel platziert wird.
  31. Vorrichtung nach Anspruch 28, umfassend: Mittel zum Einleiten eines Programmfehler-Handlers zum Behandeln von Systemaufrufanweisungen, die durch die zweite Funktion im deprivilegierten Betriebsmodus eingeleitet werden, wobei die Systemaufrufanweisungen mindestens eine der Anweisungen SYSCALL, VMCALL, CALL FAR, JMP FAR, einer Ladesegmentregisteranweisung und einer Menge von Operationen zum Manipulieren von als privilegiert definierten Systemparametern umfassen.
  32. Vorrichtung nach Anspruch 28, umfassend: Mittel zum Detektieren einer Aktivierung einer der Systemaufrufanweisungen durch die zweite Funktion; Mittel zum Bewirken eines Programmfehlers; und Mittel zum Ausführen einer Rückgabe der Kontrolle an die erste Funktion zur Ausführung einer nächsten Anweisung nach der Aufrufanweisung und/oder Bewirken eines Programmfehlers durch einen Programmfehler-Handler.
  33. Vorrichtung nach Anspruch 28, umfassend: Mittel zum Bestimmen eines in einer aufgerufenen Adresse der zweiten Funktion definierten Schutzschlüssels, um zu verhindern, dass die zweite Funktion ein Bit außerhalb eines zulässigen Teils des Adressenraums modifiziert und/oder außerhalb des zweiten Adressenraums der zweiten Funktion springt.
  34. Vorrichtung nach Anspruch 28, umfassend: Mittel zum Aktivieren eines Taktzählers zum Zählen eines Werts in Richtung eines Zeitgrenzenwerts im deprivilegierten Betriebsmodus; und Mittel zum Bewirken eines Programmfehlers, wenn der Wert gleich dem Zeitgrenzenwert ist.
  35. Vorrichtung nach Anspruch 28, umfassend: Mittel zum Benutzen von Segmentregistern zum Speichern von Basisadressenwerten für die Segmente, wobei jeder Basisadressenwert eine untere Grenze eines zugänglichen Bereichs eines Segments ist.
  36. Vorrichtung nach Anspruch 28, umfassend: Mittel zum Speichern eines ersten Basisadressenwerts in einem erweiterten Segment- bzw. ES-Register zum Setzen einer unteren Grenze eines Zugangsbereichs eines Datensegments, Mittel zum Speichern eines zweiten Basisadressenwerts in einem FS-Register zum Setzen einer zweiten unteren Grenze eines zweiten Adressenbereichs eines Codesegments und Mittel zum Speichern eines dritten Basisadressenwerts in einem GS-Register zum Setzen einer dritten unteren Grenze einer dritten Adresse eines Stapelsegments.
  37. Vorrichtung nach Anspruch 1, umfassend: eine mit dem Speicher und den Verarbeitungsschaltkreisen gekoppelte Netzwerkschnittstelle, wobei die Netzwerkschnittstelle Informationen übermitteln soll.
DE102019108266.8A 2018-06-29 2019-03-29 Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit Pending DE102019108266A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/024,089 2018-06-29
US16/024,089 US11171983B2 (en) 2018-06-29 2018-06-29 Techniques to provide function-level isolation with capability-based security

Publications (1)

Publication Number Publication Date
DE102019108266A1 true DE102019108266A1 (de) 2020-01-02

Family

ID=65230071

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019108266.8A Pending DE102019108266A1 (de) 2018-06-29 2019-03-29 Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit

Country Status (3)

Country Link
US (1) US11171983B2 (de)
CN (1) CN110659101A (de)
DE (1) DE102019108266A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9846574B2 (en) 2014-12-19 2017-12-19 Signalfx, Inc. Representing result data streams based on execution of data stream language programs
US10394692B2 (en) * 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
KR20210076882A (ko) 2018-11-08 2021-06-24 인텔 코포레이션 서비스형 함수(faas) 시스템 향상
WO2020104772A1 (en) * 2018-11-19 2020-05-28 Secure Micro Ltd Computer implemented method
US11237859B2 (en) * 2018-11-28 2022-02-01 Red Hat Israel, Ltd. Securing virtual machines in computer systems
CN110007984B (zh) * 2019-04-02 2022-07-15 思必驰科技股份有限公司 基于Xtensa DSP的函数调用关系回溯方法及系统
US11263316B2 (en) 2019-08-20 2022-03-01 Irdeto B.V. Securing software routines
GB2589895B (en) * 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
US11409555B2 (en) * 2020-03-12 2022-08-09 At&T Intellectual Property I, L.P. Application deployment in multi-cloud environment
US20220197678A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Apparatus and method for secure instruction set execution, emulation, monitoring, and prevention
US11144978B1 (en) * 2021-02-25 2021-10-12 Mythical, Inc. Systems and methods to support custom bundling of virtual items within an online game
US12020059B2 (en) * 2021-08-30 2024-06-25 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2258112A5 (de) * 1973-11-30 1975-08-08 Honeywell Bull Soc Ind
US3916385A (en) * 1973-12-12 1975-10-28 Honeywell Inf Systems Ring checking hardware
US5680582A (en) * 1991-12-20 1997-10-21 Microsoft Corporation Method for heap coalescing where blocks do not cross page of segment boundaries
US5418956A (en) * 1992-02-26 1995-05-23 Microsoft Corporation Method and system for avoiding selector loads
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7301541B2 (en) * 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5948097A (en) * 1996-08-29 1999-09-07 Intel Corporation Method and apparatus for changing privilege levels in a computer system without use of a call gate
US5950221A (en) * 1997-02-06 1999-09-07 Microsoft Corporation Variably-sized kernel memory stacks
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
ATE467171T1 (de) * 1998-08-24 2010-05-15 Microunity Systems Eng System mit breiter operandenarchitektur und verfahren
US6385727B1 (en) * 1998-09-25 2002-05-07 Hughes Electronics Corporation Apparatus for providing a secure processing environment
US6646195B1 (en) * 2000-04-12 2003-11-11 Microsoft Corporation Kernel-mode audio processing modules
US6961631B1 (en) * 2000-04-12 2005-11-01 Microsoft Corporation Extensible kernel-mode audio processing architecture
US7100028B2 (en) * 2000-08-09 2006-08-29 Advanced Micro Devices, Inc. Multiple entry points for system call instructions
US6895508B1 (en) * 2000-09-07 2005-05-17 International Business Machines Corporation Stack memory protection
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
TWI241481B (en) * 2002-06-25 2005-10-11 Lite On Technology Corp Repeated burning method of flash memory program
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7076637B2 (en) * 2003-10-29 2006-07-11 Qualcomm Inc. System for providing transitions between operating modes of a device
US7120794B2 (en) * 2003-10-29 2006-10-10 Qualcomm Inc. System for invoking a privileged function in a device
US7478388B1 (en) * 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US20060218425A1 (en) * 2005-02-25 2006-09-28 Zhimin Ding Integrated microcontroller and memory with secure interface between system program and user operating system and application
US7665143B2 (en) * 2005-05-16 2010-02-16 Microsoft Corporation Creating secure process objects
US7945958B2 (en) * 2005-06-07 2011-05-17 Vmware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
US7506096B1 (en) * 2005-10-06 2009-03-17 Parallels Software International, Inc. Memory segment emulation model for virtual machine
US7681000B2 (en) * 2006-07-10 2010-03-16 Silverbrook Research Pty Ltd System for protecting sensitive data from user code in register window architecture
US7950002B2 (en) * 2006-10-02 2011-05-24 International Business Machines Corporation Testing a software product by initiating a breakpoint and executing a probe routine
US8205218B1 (en) * 2007-06-29 2012-06-19 Emc Corporation Data storage system having common software environment
US7950022B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Techniques for use with device drivers in a common software environment
US7950025B1 (en) * 2007-06-29 2011-05-24 Emc Corporation Common software environment
US8359602B2 (en) * 2008-02-21 2013-01-22 Ca, Inc. Method and system for task switching with inline execution
GB0813833D0 (en) * 2008-07-29 2008-09-03 Transitive Ltd Apparatus and method for handling page protection faults in a computing system
US8775836B2 (en) * 2010-12-23 2014-07-08 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
US8973158B2 (en) * 2011-07-20 2015-03-03 Microsoft Technology Licensing Llc Trust level activation
US9477834B2 (en) * 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US8850577B2 (en) * 2012-07-24 2014-09-30 Adobe Systems Incorporated Method and apparatus for preventing an IDT-based security sandbox from causing a kernel panic when using a call gate
RU2514141C1 (ru) * 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
CN105408911A (zh) * 2013-08-28 2016-03-16 英特尔公司 硬件和软件执行概况分析
US9465936B2 (en) * 2013-11-06 2016-10-11 Bitdefender IPR Management Ltd. Systems and methods for detecting return-oriented programming (ROP) exploits
WO2015113052A1 (en) * 2014-01-27 2015-07-30 Webroot Inc. Detecting and preventing execution of software exploits
US9934067B2 (en) * 2014-01-30 2018-04-03 Vmware, Inc. Synchronous user space function execution from a kernel context
US20170083701A1 (en) * 2015-09-17 2017-03-23 OnSystem Logic, LLC Using Assured Calling Sequences in Micro-Sandboxes
US10169137B2 (en) * 2015-11-18 2019-01-01 International Business Machines Corporation Dynamically detecting and interrupting excessive execution time
FR3047587B1 (fr) * 2016-02-10 2023-01-13 Dolphin Integration Sa Dispositif de traitement muni d'un mode d'acces a des donnees sensibles.

Also Published As

Publication number Publication date
CN110659101A (zh) 2020-01-07
US20190044971A1 (en) 2019-02-07
US11171983B2 (en) 2021-11-09

Similar Documents

Publication Publication Date Title
DE102019108266A1 (de) Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit
CN108959932B (zh) 用于可信执行环境的安全芯片存储器的技术
EP3185128B1 (de) Gpu-virtualisierung
CN108363920B (zh) 用于容器的系统调用策略
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
CN105431858B (zh) 安全特权等级执行和访问保护
US9218302B2 (en) Page table management
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112020000280B4 (de) Transparente interpretation von gastbefehlen in einer sicheren virtuellen maschinenumgebung
US9195827B2 (en) Defensive techniques to increase computer security
DE112011102876T5 (de) Ressourcenverwaltungs- und Sicherheitssystem
US10831915B2 (en) Method and system for isolating application data access
DE102020127800A1 (de) Ein-chip-system und verfahren zu dessen betrieb
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
US10331591B2 (en) Logical-to-physical block mapping inside the disk controller: accessing data objects without operating system intervention
DE112020000285T5 (de) Programmunterbrechungen für Seiten-Import/-Export
US10628611B2 (en) Exclusive execution environment within a system-on-a-chip computing system
DE102018115504A1 (de) Techniken zum Bereitstellen von Schutz vor Zugriff auf gemeinsam verwendeten virtuellen Speicher
US20190334919A1 (en) Flexible resource access control
CN106708631B (zh) 共享内存属性修改方法及其系统
US11586727B2 (en) Systems and methods for preventing kernel stalling attacks
CN108241801B (zh) 处理系统调用的方法和装置