JP2023532324A - プロセス実行方法および装置 - Google Patents

プロセス実行方法および装置 Download PDF

Info

Publication number
JP2023532324A
JP2023532324A JP2022581002A JP2022581002A JP2023532324A JP 2023532324 A JP2023532324 A JP 2023532324A JP 2022581002 A JP2022581002 A JP 2022581002A JP 2022581002 A JP2022581002 A JP 2022581002A JP 2023532324 A JP2023532324 A JP 2023532324A
Authority
JP
Japan
Prior art keywords
target process
kernel
functional safety
context
partition
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
JP2022581002A
Other languages
English (en)
Inventor
▲愛▼国 崔
▲哲▼ 陶
良 ▲デン▼
▲強▼▲東▼ 王
中平 ▲譚▼
建▲龍▼ 曹
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2023532324A publication Critical patent/JP2023532324A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/445Program loading or initiating
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local
    • 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/2149Restricted operating environment

Abstract

本出願は、プロセス実行方法であって、プロセス起動要求を受信するステップと、プロセス起動要求に基づいて、カーネル内でターゲットプロセスの実行可能ファイルを実行して、カーネル内のターゲットプロセスの実行をサポートする第1の実行機能データを取得するステップと、第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得するステップであって、機能安全パーティションおよびカーネルは、同じ特権層に配置される、ステップと、第2の実行機能データに基づいて、機能安全パーティション内でターゲットプロセスを実行するステップとを含む、プロセス実行方法を提供する。本出願の解決策では、機能安全パーティションとカーネルの両方は、カーネル層に配置される。このようにして、プロセス実行中に、カーネル層におけるサービスは、ユーザ層からカーネル層への切替えなしに呼び出され得る。このことは、特権層切替えによって引き起こされる性能オーバーヘッドを低減し、プロセッサおよび端末デバイスの性能を向上させる。

Description

本出願は、その全体が参照により本明細書に組み込まれる、2020年6月30日に中国国家知識産権局に出願された「PROCESS RUNNING METHOD AND APPARATUS」という名称の中国特許出願第202010616278.7号に基づく優先権を主張する。
本出願は、コンピュータ技術の分野に関し、詳細には、プロセス実行方法および装置に関する。
情報技術の発展およびチップ製造技術の向上とともに、組込みオペレーティングシステムが広く開発および適用されている。組込みオペレーティングシステムは、モノのインターネット、自動車エレクトロニクス、産業オートメーション、軍事および航空宇宙、ならびにリアルタイム性能および信頼性についての厳しい要件を有する他の分野に不可欠である。
リアルタイム性能および信頼性についての厳しい要件を有するアプリケーション(たとえば、自律運転)は、通常、データ駆動型アプリケーション、または頻繁に発生するイベントによってトリガされるアプリケーションである。一般に、このアプリケーションは、機能安全アプリケーションと呼ばれうる。機能安全アプリケーションと非機能安全アプリケーションのいずれも、通常、モノリシックカーネル(monolithic kernel)の組込みオペレーティングシステムに依存する。モノリシックカーネルの組込みオペレーティングシステムは、ユーザモード(user mode)およびカーネルモード(kernel mode)を含み、これらは、ユーザ層およびカーネル層、またはユーザ状態およびカーネル状態とも呼ばれうる。アプリケーションは、ユーザ層に配置され、カーネルは、カーネル層に配置される。カーネル層の特権レベルは、ユーザ層の特権レベルよりも高い。特権層の分離により、ユーザ層におけるアプリケーションのプロセスは、関数呼出しを使用することによってカーネルサービスに直接アクセスすることはできないが、ユーザ層からカーネル層に切り替えるためにシステムコール(syscall)を使用することによってモード切替えをトリガした後、カーネルサービスにアクセスする。
機能安全アプリケーションは、ユーザ層からカーネルモードに頻繁に切り替えるので、比較的高い性能オーバーヘッドが引き起こされる。
本出願の実施形態は、プロセス実行方法を提供する。機能安全アプリケーションのプロセスが実行されるとき、特権層切替えによって引き起こされる性能オーバーヘッドを低減するために、ユーザ層からカーネル層への頻繁な切替えが回避され得る。本出願の実施形態は、対応する装置をさらに提供する。
第1の態様によれば、本出願は、プロセス実行方法を提供し、プロセス実行方法は、プロセス起動要求を受信するステップであって、プロセス起動要求は、ターゲットプロセスを開始することを指示するために使用される、ステップと、プロセス起動要求に基づいて、カーネル内でターゲットプロセスの実行可能ファイルを実行して、カーネル内のターゲットプロセスの実行をサポートする第1の実行機能データ(running function data)を取得するステップと、第1の実行機能データを機能安全パーティション(functional safety partition)に移行させて、第2の実行機能データを取得するステップであって、機能安全パーティションおよびカーネルは、同じ特権層に配置される、ステップと、第2の実行機能データに基づいて、機能安全パーティション内でターゲットプロセスを実行するステップとを含む。可能な実装形態では、実行可能ファイルは、タグ情報を含み、タグ情報は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示すために使用される。
第1の態様では、方法は、端末デバイス、または端末デバイス内のコンピュータシステムに適用され得る。端末デバイスは、モバイルフォン、車載端末、自動運転装置(たとえば、自動運転車、自動運転船舶、または自動運転航空機)などであり得る。自動運転装置は、インテリジェント装置と呼ばれることもある。たとえば、自動運転車は、インテリジェントカーと呼ばれることがある。プロセスは、アプリケーションのプロセスであり得る。プロセス起動要求は、システム起動中にトリガされる要求であり得るか、またはユーザがアプリケーションを使用するとき、トリガされる要求であり得る。プロセス起動要求は、ターゲットプロセスの識別子を運んでもよく、またはターゲットプロセスに対応するアプリケーションの識別子を運んでもよい。このようにして、対応する実行可能ファイルは、プロセスの識別子、または対応するアプリケーションの識別子を使用することによって発見され得る。実行可能ファイルは、ファイルヘッダおよびバイナリ実行コードを含み、各プロセスは、対応する実行可能ファイルを有し、実行可能ファイルのスクリプトは、プロセスの識別子を含み得る。カーネル内でターゲットプロセスの実行可能ファイルを実行することは、カーネルの環境内で実行可能ファイルのバイナリ実行コードを実行することを意味する。実行可能ファイルのファイルヘッダは、タグ情報を含んでもよく、タグ情報は、文字列または値であり得る、特殊なタグデータのセグメントであり得る。機能安全パーティションは、データプレーン環境(data plane environment、DPE)とも呼ばれる。機能安全パーティションは、カーネル層において構成される。機能安全パーティションは、すべてのアプリケーションのプロセスを実行するために使用され得るか、または機能安全アプリケーションのプロセスを実行するために使用され得る。機能安全アプリケーションは、リアルタイム性能および信頼性についての厳しい要件を有するアプリケーション(たとえば、自動運転)であり、通常、データ駆動型アプリケーション、または頻繁なイベントによってトリガされるアプリケーションである。第1の実行機能データを機能安全パーティションに移行させることは、第1の実行機能データを機能安全パーティションの「排他的」な記憶空間に移行させることであり得る。機能安全パーティションとカーネルの両方がカーネル層に配置されることが、第1の態様から知られ得る。このようにして、プロセス実行中に、カーネル層におけるサービスは、ユーザ層からカーネル層への切替えなしに呼び出され得る。このことは、特権層切替えによって引き起こされる性能オーバーヘッドを低減し、プロセッサおよび端末デバイスの性能を向上させる。
第1の態様の可能な実装形態では、カーネルの物理リソースは、機能安全パーティションの物理リソースから分離される。
この可能な実装形態では、物理リソースは、プロセッサまたはプロセッサコアのコンピューティングリソース、メモリの記憶リソースなどを含み得る。カーネルは、第1の物理リソースに対応し、機能安全パーティションは、第2の物理リソースに対応する。カーネルは、第2の物理リソースを知覚せず、すなわち、カーネル内のプロセスは、第2の物理リソースにアクセスすることができない。同様に、機能安全パーティションは、第1の物理リソースを知覚せず、すなわち、機能安全パーティション内のプロセスは、第1の物理リソースにアクセスすることができない。カーネルと機能安全パーティションとの間の物理リソース分離は、カーネルおよび機能安全パーティションが互いから分離されることを保証する。このようにして、情報安全性リスクがカーネル内で生じる場合でも、機能安全パーティション内のデータの安全性を保証するために、機能安全パーティションは影響を受けない。加えて、カーネルおよび機能安全パーティションが互いから分離されるので、たとえば、アップグレードのために、機能安全アプリケーションのコードが変化するとき、カーネルの保全性を向上させるために、カーネルが修正される必要はない。
第1の態様の可能な実装形態では、第1の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第1の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第1の物理アドレスは、カーネルの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスであり、第2の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第2の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第2の物理アドレスは、機能安全パーティションの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスである。
この可能な実装形態では、第1の実行機能データおよび第2の実行機能データは、物理アドレスにおいてのみ異なる。第1の物理アドレスは、カーネルの物理アドレスであり、第2の物理アドレスは、機能安全パーティションの物理アドレスである。第1の物理アドレスは、カーネルの記憶リソースに対応し、第2の物理アドレスは、機能安全パーティションの記憶リソースに対応する。ターゲットプロセスのコンテキストは、ターゲットプロセスのデータセグメント、ヒープ、スタック、およびレジスタコンテキストのうちの少なくとも1つを含む。レジスタコンテキストは、レジスタ内のターゲットプロセスの値である。
第1の態様の可能な実装形態では、第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得するステップは、仮想アドレスを機能安全パーティションに移行させるために、仮想マシンマネージャをトリガし、仮想アドレスと第1の物理アドレスとの間のマッピング関係を除去し、仮想アドレスと第2の物理アドレスとの間のマッピング関係を確立するステップと、共有メモリを使用することによって、機能安全パーティションにターゲットプロセスのコンテキストを転送するステップであって、共有メモリは、カーネルおよび機能安全パーティションによって共有されるメモリである、ステップとを含む。
この可能な実装形態では、カーネル層およびユーザ層に加えて、そのようなアーキテクチャは、より高い特権レベルにおける特権層をさらに含み得る。ARMアーキテクチャでは、EL0が、ユーザ層を表すために通常使用され、EL1が、カーネル層を表すために使用され、EL2が、上位の特権層を表すために使用される。X86アーキテクチャでは、Ring3が、ユーザ層を表すために通常使用され、Ring2が、カーネル層を表すために使用され、Ring1が、上位の特権層を表すために使用される。仮想マシンマネージャは、上位の特権層、たとえば、EL2層またはRing1層に配置される。上位の特権層は、下位の特権層を管理することができる。したがって、仮想マシンマネージャは、カーネルおよび機能安全パーティションを管理することができる。カーネル内のターゲットプロセスのための仮想アドレス、第1の物理アドレス、および仮想アドレスと第1の物理アドレスとの間のマッピング関係を準備した後、仮想マシンマネージャは、機能安全パーティション内のターゲットプロセスの実行のための記憶リソースを準備するために、第2の物理アドレスを、機能安全パーティションの記憶リソース上でターゲットプロセスに割り当て、仮想アドレスと第1の物理アドレスとの間のマッピング関係を除去し、仮想アドレスと第2の物理アドレスとの間のマッピング関係を確立し得る。加えて、ターゲットプロセスのコンテキストは、カーネル内に記憶され、共有メモリを使用することによって、機能安全パーティションに転送され得る。このようにして、ターゲットプロセスは、機能安全パーティション内で実行され得る。この可能な実装形態では、機能安全パーティションとカーネルとの間のエコロジカルな互換性を実装するために、カーネルを修正することなしに、機能安全アプリケーションのプロセスが機能安全パーティション内で実行されることが保証され得る。
第1の態様の可能な実装形態では、方法は、ターゲットプロセスの実行可能ファイルがカーネル内で実行されるとき、カーネル内に第1のタスク構造を作成するステップであって、第1のタスク構造は、ターゲットプロセスのコンテキストを記憶するために使用される、ステップと、第1のタスク構造に指示値を追加するステップであって、指示値は、ターゲットプロセスが機能安全パーティション内で実行される必要があることを示す、ステップと、ターゲットプロセスが実行されるとき、指示値に基づいて、カーネルから機能安全パーティションに第1の通知を送信するステップであって、第1の通知は、機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される、ステップと、第1の通知に基づいて、第2のタスク構造を作成し、第2のタスク構造内にターゲットプロセスのコンテキストを記憶するステップとをさらに含む。他の可能な実装形態では、第1のタスク構造に指示値を追加するステップであって、指示値は、ターゲットプロセスが機能安全パーティション内で実行される必要があることを示す、ステップは、タグ情報に基づいて、第1のタスク構造に指示値を追加するステップであって、指示値は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示す、ステップを含む。
この可能な実装形態では、第1のタスク構造(task_struct)は、カーネル内にあり、かつターゲットプロセスのコンテキストを記憶するために使用される構造であり、テーブルの形式であり得るか、または他の形式であり得る。プロセスが開始されるとき、第1のタスク構造は、まずカーネルに作成される。概して、実行可能ファイルがタグ情報を含む場合、指示値は、第1の構造のアプリケーションフラグビット(DPE APP)上に設定される。たとえば、指示値は「1」に設定され得るか、またはもちろん、他の値に設定され得る。指示値は、ターゲットプロセスが機能安全パーティション内で実行される必要があるか、またはターゲットプロセスが機能安全アプリケーションのプロセスであることを示す。このようにして、ターゲットプロセスが実行されるとき、第1のタスク構造内の指示値が見られる場合、機能安全パーティション内に第2のタスク構造を作成することを指示するために、ターゲットプロセスが機能安全パーティション内で実行される必要があることが知られる。この可能な実装形態では、機能安全パーティションとカーネルとの間のエコロジカルな互換性が実装される。
第1の態様の可能な実装形態では、方法は、共有メモリから機能安全パーティションにターゲットプロセスのコンテキストを読み出すステップと、ターゲットプロセスのコンテキストに対して一貫性検査を行って、第1の検査値を取得するステップと、第1の検査値が第2の検査値と同じである場合、ターゲットプロセスのコンテキストがセキュアなデータであると決定するステップであって、第2の検査値は、ターゲットプロセスの初期構成コンテキストに対して一貫性検査を行うことによって取得された、信用できる値である、ステップとをさらに含む。
この可能な実装形態では、一貫性検査は、ターゲットプロセスのコンテキストが機能安全パーティションに入るとき、まず行われるので、ターゲットプロセスの安全性が保証され得るようになる。
第1の態様の可能な実装形態では、方法は、ターゲットプロセスが実行されるとき、機能安全パーティションのシステムコール命令が呼び出される場合、機能安全パーティションから共有メモリ内にシステムコール命令のコンテキストを記憶するステップと、機能安全パーティションからカーネルに第2の通知を送信するステップであって、第2の通知は、システムコールが発生することを示すために使用される、ステップと、共有メモリからシステムコール命令のコンテキストを読み出し、システムコール命令のコンテキストに基づいて、カーネルのシステムコール命令を呼び出して、システムコールを行って、システムコールの戻り値を取得するステップと、共有メモリを使用することによって、機能安全パーティションにシステムコールの戻り値を転送するステップとをさらに含む。
この可能な実装形態では、システムコール命令のコンテキストは、共有メモリを使用することによって、機能安全パーティションとカーネルとの間で転送され得る。このようにして、機能安全パーティションとカーネルとの間のエコロジカルな互換性を保証するために、機能安全パーティションのシステムコールは、カーネルのシステムコールプロセスを使用することによって実装され得る。
第1の態様の可能な実装形態では、方法は、共有メモリから機能安全パーティションにシステムコールの戻り値を読み出すステップと、システムコールの戻り値に対して一貫性検査を行って、第3の検査値を取得するステップと、第3の検査値が第4の検査値と同じである場合、システムコールの戻り値がセキュアなデータであると決定するステップであって、第4の検査値は、システムコールに対応する元のファイルに基づいて、一貫性検査を行うことによって取得された、信用できる値である、ステップとをさらに含む。
この可能な実装形態では、システムコールが発生するとき、一貫性検査は、機能安全パーティションに戻された戻り値に対してまず行われる必要がある。このようにして、機能安全パーティションの安全性が保証され得る。
第1の態様の可能な実装形態では、方法は、ターゲットプロセスが実行されるとき、ページフォールトが発生する場合、機能安全パーティションから共有メモリ内にページフォールトのコンテキストを記憶するステップと、機能安全パーティションからカーネルに第3の通知を送信するステップであって、第3の通知は、ページフォールトが発生することを示すために使用される、ステップと、共有メモリからページフォールトのコンテキストを読み出し、ページフォールトのコンテキストに基づいて、カーネル内でページフォールト処理機能を呼び出し、ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得するステップと、共有メモリを使用することによって、機能安全パーティションに処理結果を転送するステップとをさらに含む。
この可能な実装形態では、ページフォールトが発生するとき、ページフォールトのコンテキストが、機能安全パーティションとカーネルとの間で転送され得る。このようにして、機能安全パーティションとカーネルとの間のエコロジカルな互換性を保証するために、機能安全パーティションのページフォールトは、カーネルのページフォールト処理プロセスを使用することによって実装され得る。
第1の態様の可能な実装形態では、ページフォールト処理機能に基づいて、ページフォールト処理を行うステップは、ページフォールト処理機能を実行して、物理ページをターゲットプロセスに割り当て、物理ページのページテーブルを構成するステップと、仮想アドレスと第3の物理アドレスとの間のマッピング関係を確立するために、仮想マシンマネージャをトリガするステップであって、第3の物理アドレスは、物理ページのアドレスが第1の物理アドレスに追加された後に取得される、ステップと、物理ページのページテーブルに基づいて、ターゲットプロセスのページテーブル許可値を修正するステップであって、ページテーブル許可値は、ターゲットプロセスによって使用されることが許可されたページテーブルの範囲を示すために使用される、ステップとを含む。
この可能な実装形態では、ページフォールトが発生するとき、仮想マシンマネージャは、機能安全パーティションに対応する記憶リソースに物理ページを追加し、ページテーブルを修正する。このことはまた、ページフォールトが発生した後、ターゲットプロセスが正常に実行されることを保証することもできる。
第1の態様の可能な実装形態では、ターゲットプロセスは、スレッドおよびコルーチンを含み、スレッドは、カーネル内に作成され、機能安全パーティション内で実行され、コルーチンは、機能安全パーティション内に作成され、機能安全パーティション内で実行され、機能安全パーティションは、統合スケジューラ(unified scheduler)を含み、統合スケジューラは、スレッドおよびコルーチンを統合的にスケジュールするように構成される。
この可能な実装形態では、コルーチンは、マイクロスレッドである。従来の技術では、スレッドスケジューラは、スレッドをスケジュールするために使用され、コルーチンスケジューラは、コルーチンをスケジュールするために使用される。コルーチンがスケジュールされる必要があるとき、コルーチンは、その中にコルーチンが配置されるスレッドに最初に切り替えられる必要があり、次いで、スレッドは、スケジュールするためにコルーチンに切り替えられる。2レベル切替えが行われる必要があり、オーバーヘッドが比較的高い。加えて、カーネルが重度の干渉を受け、スケジューリング決定性が保証され得ない。しかしながら、この可能な実装形態では、統合スケジューラの統合スケジューリングを通して、2レベルスケジューリングが回避され、オーバーヘッドが低減される。加えて、統合スケジューラは、機能安全パーティション内に配置され、干渉を受けず、スケジューリング決定性が保証される。
第2の態様によれば、本出願は、プロセス実行方法を提供する。方法は、コンピュータシステムに適用され、コンピュータシステムは、第1の処理装置および第2の処理装置を含む。方法は、以下を含む。第1の処理装置は、プロセス起動要求を受信し、プロセス起動要求は、ターゲットプロセスを開始することを指示するために使用される。第1の処理装置は、プロセス起動要求に基づいて、カーネル内でターゲットプロセスの実行可能ファイルを実行して、カーネル内のターゲットプロセスの実行をサポートする第1の実行機能データを取得する。第1の処理装置は、第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得し、機能安全パーティションおよびカーネルは、同じ特権層に配置され、第2の機能データは、機能安全パーティション内でターゲットプロセスを実行するために使用される。可能な実装形態では、実行可能ファイルは、タグ情報を含み、タグ情報は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示すために使用される。
第2の態様では、第1の処理装置および第2の処理装置は、2つのプロセッサであり得るか、または2つのプロセッサコアであり得る。他の内容は、第1の態様における内容と同じである。他の内容については、第1の態様における対応する説明を参照されたい。
第2の態様の可能な実装形態では、カーネルの物理リソースは、機能安全パーティションの物理リソースから分離される。
第2の態様の可能な実装形態では、第1の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第1の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第1の物理アドレスは、カーネルの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスであり、第2の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第2の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第2の物理アドレスは、機能安全パーティションの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスである。
第2の態様の可能な実装形態では、第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得するステップは、以下を含む。第1の処理装置は、仮想アドレスを機能安全パーティションに移行させるために、仮想マシンマネージャをトリガし、仮想アドレスと第1の物理アドレスとの間のマッピング関係を除去し、仮想アドレスと第2の物理アドレスとの間のマッピング関係を確立する。第1の処理装置は、共有メモリを使用することによって、機能安全パーティションにターゲットプロセスのコンテキストを転送し、共有メモリは、カーネルおよび機能安全パーティションによって共有されるメモリである。
第2の態様の可能な実装形態では、方法は、以下をさらに含む。カーネル内でターゲットプロセスの実行可能ファイルを実行するとき、第1の処理装置は、カーネル内に第1のタスク構造を作成することであって、第1のタスク構造は、ターゲットプロセスのコンテキストを記憶するために使用される、作成すること、第1のタスク構造に指示値を追加することであって、指示値は、ターゲットプロセスが機能安全パーティション内で実行される必要があることを示す、追加すること、およびターゲットプロセスが実行されるとき、指示値に基づいて、カーネルから機能安全パーティションに第1の通知を送信することであって、第1の通知は、機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される、送信することを行う。他の可能な実装形態では、第1のタスク構造に指示値を追加するステップであって、指示値は、ターゲットプロセスが機能安全パーティション内で実行される必要があることを示す、ステップは、タグ情報に基づいて、第1のタスク構造に指示値を追加するステップであって、指示値は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示す、ステップを含む。
第2の態様の可能な実装形態では、方法は、以下をさらに含む。第1の処理装置は、第2の処理装置によって送信された第2の通知を受信することであって、第2の通知は、システムコールが発生することを示すために使用される、受信すること、共有メモリからシステムコール命令のコンテキストを読み出し、システムコール命令のコンテキストに基づいて、カーネルのシステムコール命令を呼び出して、システムコールを行って、システムコールの戻り値を取得すること、および共有メモリを使用することによって、機能安全パーティションにシステムコールの戻り値を転送することを行う。
第2の態様の可能な実装形態では、方法は、以下をさらに含む。第1の処理装置は、第2の処理装置によって送信された第3の通知を受信することであって、第3の通知は、ページフォールトが発生することを示すために使用される、受信すること、共有メモリからページフォールトのコンテキストを読み出し、ページフォールトのコンテキストに基づいて、カーネル内でページフォールト処理機能を呼び出し、ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得すること、および共有メモリを使用することによって、機能安全パーティションに処理結果を転送することを行う。
第2の態様の可能な実装形態では、ページフォールト処理機能に基づいて、ページフォールト処理を行うステップは、以下を含む。第1の処理装置は、ページフォールト処理機能を実行して、物理ページをターゲットプロセスに割り当て、物理ページのページテーブルを構成すること、仮想アドレスと第3の物理アドレスとの間のマッピング関係を確立するために、仮想マシンマネージャをトリガすることであって、第3の物理アドレスは、物理ページのアドレスが第1の物理アドレスに追加された後に取得される、トリガすること、および物理ページのページテーブルに基づいて、ターゲットプロセスのページテーブル許可値を修正することであって、ページテーブル許可値は、ターゲットプロセスによって使用されることが許可されたページテーブルの範囲を示すために使用される、修正することを行う。
第2の態様の可能な実装形態では、ターゲットプロセスは、スレッドおよびコルーチンを含み、スレッドは、カーネル内に作成され、機能安全パーティション内で実行され、コルーチンは、機能安全パーティション内に作成され、機能安全パーティション内で実行され、機能安全パーティションは、統合スケジューラを含み、統合スケジューラは、スレッドおよびコルーチンを統合的にスケジュールするように構成される。
第3の態様によれば、本出願は、プロセス実行方法を提供する。方法は、コンピュータシステムに適用され、コンピュータシステムは、第1の処理装置および第2の処理装置を含む。方法は、以下を含む。第2の処理装置は、第2の実行機能データを取得することであって、第2の実行機能データは、第1の実行機能データを機能安全パーティションに移行させることによって、第1の処理装置によって取得され、第1の実行機能データは、カーネル内でターゲットプロセスの実行可能ファイルを実行することによって、第1の処理装置によって取得され、かつカーネル内のターゲットプロセスの実行をサポートするデータであり、機能安全パーティションおよびカーネルは、同じ特権層に配置される、取得すること、ならびに第2の実行機能データに基づいて、機能安全パーティション内でターゲットプロセスを実行することを行う。
第3の態様では、第1の処理装置および第2の処理装置は、2つのプロセッサであり得るか、または2つのプロセッサコアであり得る。他の内容は、第1の態様における内容と同じである。他の内容については、第1の態様における対応する説明を参照されたい。
第2の態様の可能な実装形態では、カーネルの物理リソースは、機能安全パーティションの物理リソースから分離される。
第3の態様の可能な実装形態では、第1の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第1の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第1の物理アドレスは、カーネルの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスであり、第2の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第2の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第2の物理アドレスは、機能安全パーティションの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスである。
第3の態様の可能な実装形態では、方法は、以下をさらに含む。第2の処理装置は、第1の処理装置によって送信された第1の通知を受信することであって、第1の通知は、機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される、受信すること、および第1の通知に基づいて、第2のタスク構造を作成し、第2のタスク構造内にターゲットプロセスのコンテキストを記憶することを行う。
第3の態様の可能な実装形態では、方法は、以下をさらに含む。第2の処理装置は、共有メモリから機能安全パーティションにターゲットプロセスのコンテキストを読み出すこと、ターゲットプロセスのコンテキストに対して一貫性検査を行って、第1の検査値を取得すること、および第1の検査値が第2の検査値と同じである場合、ターゲットプロセスのコンテキストがセキュアなデータであると決定することであって、第2の検査値は、ターゲットプロセスの初期構成コンテキストに対して一貫性検査を行うことによって取得された、信用できる値である、決定することを行う。
第3の態様の可能な実装形態では、方法は、ターゲットプロセスが実行されるとき、機能安全パーティションのシステムコール命令が呼び出される場合、機能安全パーティションから共有メモリ内にシステムコール命令のコンテキストを記憶するステップと、機能安全パーティションからカーネルに第2の通知を送信するステップであって、第2の通知は、システムコールが発生することを示すために使用され、システムコール命令のコンテキストは、共有メモリからシステムコール命令のコンテキストを読み出し、システムコール命令のコンテキストに基づいて、カーネルのシステムコール命令を呼び出して、システムコールを行って、システムコールの戻り値を取得するために、第1の処理装置によって使用される、ステップと、共有メモリを使用することによって、機能安全パーティションにシステムコールの戻り値を転送するステップとをさらに含む。
第3の態様の可能な実装形態では、方法は、以下をさらに含む。第2の処理装置は、共有メモリから機能安全パーティションにシステムコールの戻り値を読み出すこと、システムコールの戻り値に対して一貫性検査を行って、第3の検査値を取得すること、および第3の検査値が第4の検査値と同じである場合、システムコールの戻り値がセキュアなデータであると決定することであって、第4の検査値は、システムコールに対応する元のファイルに基づいて、一貫性検査を行うことによって取得された、信用できる値である、決定することを行う。
第3の態様の可能な実装形態では、方法は、以下をさらに含む。ターゲットプロセスが実行されるとき、ページフォールトが発生する場合、第2の処理装置は、機能安全パーティションから共有メモリ内にページフォールトのコンテキストを記憶すること、機能安全パーティションからカーネルに第3の通知を送信することであって、第3の通知は、ページフォールトが発生することを示すために使用され、ページフォールトのコンテキストは、共有メモリからページフォールトのコンテキストを読み出し、ページフォールトのコンテキストに基づいて、カーネル内でページフォールト処理機能を呼び出し、ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得するために、第1の処理装置によって使用される、送信すること、および共有メモリを使用することによって、機能安全パーティションに処理結果を転送することを行う。
第3の態様の可能な実装形態では、ターゲットプロセスは、スレッドおよびコルーチンを含み、スレッドは、カーネル内に作成され、機能安全パーティション内で実行され、コルーチンは、機能安全パーティション内に作成され、機能安全パーティション内で実行され、機能安全パーティションは、統合スケジューラを含み、統合スケジューラは、スレッドおよびコルーチンを統合的にスケジュールするように構成される。
第4の態様によれば、本出願は、プロセス実行装置を提供する。プロセス実行装置は、第1の態様または第1の態様の可能な実装形態のうちのいずれか1つにおける方法を実施する機能を有する。機能は、ハードウェアによって実装され得るか、またはハードウェアが対応するソフトウェアを実行することによって実装され得る。ハードウェアまたはソフトウェアは、上記の機能に対応する1つまたは複数のモジュール、たとえば、受信ユニット、送信ユニット、第1の処理ユニット、第2の処理ユニット、および第3の処理ユニットを含む。第1の処理ユニット、第2の処理ユニット、および第3の処理ユニットは、あるいは、1つの処理ユニットまたは2つの処理ユニットによって実装され得る。
第5の態様によれば、本出願は、処理装置を提供する。処理装置は、第2の態様または第2の態様の可能な実装形態のうちのいずれか1つにおける方法を実施する機能を有する。機能は、ハードウェアによって実装され得るか、またはハードウェアが対応するソフトウェアを実行することによって実装され得る。ハードウェアまたはソフトウェアは、上記の機能に対応する1つまたは複数のモジュール、たとえば、受信ユニット、送信ユニット、第1の処理ユニット、および第2の処理ユニットを含む。第1の処理ユニットおよび第2の処理ユニットは、あるいは、1つの処理ユニットによって実装され得る。
第6の態様によれば、本出願は、処理装置を提供する。処理装置は、第3の態様または第3の態様の可能な実装形態のうちのいずれか1つにおける方法を実施する機能を有する。機能は、ハードウェアによって実装され得るか、またはハードウェアが対応するソフトウェアを実行することによって実装され得る。ハードウェアまたはソフトウェアは、上記の機能に対応する1つまたは複数のモジュール、たとえば、受信ユニット、送信ユニット、第1の処理ユニット、および第2の処理ユニットを含む。第1の処理ユニットおよび第2の処理ユニットは、あるいは、1つの処理ユニットによって実装され得る。
第7の態様によれば、本出願は、コンピュータデバイスを提供する。コンピュータデバイスは、端末デバイスであり得る。コンピュータデバイスは、少なくとも1つのプロセッサと、メモリと、入力/出力(input/output、I/O)インターフェースと、メモリ内に記憶され、プロセッサ上で実行され得る、コンピュータ実行可能命令とを含む。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第1の態様または第1の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第8の態様によれば、本出願は、コンピュータデバイスを提供する。コンピュータデバイスは、端末デバイスであり得る。コンピュータデバイスは、少なくとも1つのプロセッサと、メモリと、入力/出力(input/output、I/O)インターフェースと、メモリ内に記憶され、プロセッサ上で実行され得る、コンピュータ実行可能命令とを含む。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第2の態様または第2の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第9の態様によれば、本出願は、コンピュータデバイスを提供する。コンピュータデバイスは、端末デバイスであり得る。コンピュータデバイスは、少なくとも1つのプロセッサと、メモリと、入力/出力(input/output、I/O)インターフェースと、メモリ内に記憶され、プロセッサ上で実行され得る、コンピュータ実行可能命令とを含む。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第3の態様または第3の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第10の態様によれば、本出願は、1つまたは複数のコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第1の態様または第1の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第11の態様によれば、本出願は、1つまたは複数のコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第2の態様または第2の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第12の態様によれば、本出願は、1つまたは複数のコンピュータ実行可能命令を記憶するコンピュータ可読記憶媒体を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第3の態様または第3の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第13の態様によれば、本出願は、1つまたは複数のコンピュータ実行可能命令を記憶するコンピュータプログラム製品を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第1の態様または第1の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第14の態様によれば、本出願は、1つまたは複数のコンピュータ実行可能命令を記憶するコンピュータプログラム製品を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第2の態様または第2の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第15の態様によれば、本出願は、1つまたは複数のコンピュータ実行可能命令を記憶するコンピュータプログラム製品を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは、第3の態様または第3の態様の可能な実装形態のうちのいずれか1つにおける方法を行う。
第16の態様によれば、本出願は、チップシステムを提供する。チップシステムは、第1の態様または第1の態様の可能な実装形態のうちのいずれか1つにおける機能を実装するために、プロセス実行装置をサポートするように構成された、プロセッサを含む。可能な設計では、チップシステムは、メモリをさらに含み得る。メモリは、プロセス実行装置のために必要であるプログラム命令およびデータを記憶するように構成される。チップシステムは、チップを含み得るか、またはチップおよび他の個別構成要素を含み得る。
第17の態様によれば、本出願は、チップシステムを提供する。チップシステムは、第2の態様または第2の態様の可能な実装形態のうちのいずれか1つにおける機能を実装するために、プロセス実行装置をサポートするように構成された、プロセッサを含む。可能な設計では、チップシステムは、メモリをさらに含み得る。メモリは、プロセス実行装置のために必要であるプログラム命令およびデータを記憶するように構成される。チップシステムは、チップを含み得るか、またはチップおよび他の個別構成要素を含み得る。
第18の態様によれば、本出願は、チップシステムを提供する。チップシステムは、第3の態様または第3の態様の可能な実装形態のうちのいずれか1つにおける機能を実装するために、プロセス実行装置をサポートするように構成された、プロセッサを含む。可能な設計では、チップシステムは、メモリをさらに含み得る。メモリは、プロセス実行装置のために必要であるプログラム命令およびデータを記憶するように構成される。チップシステムは、チップを含み得るか、またはチップおよび他の個別構成要素を含み得る。
第4の態様から第18の態様、または第4の態様から第18の態様の可能な実装形態のうちのいずれか1つによってもたらされる技術的効果については、第1の態様または第1の態様の異なる可能な実装形態によってもたらされる技術的効果を参照されたい。詳細については本明細書で再度説明されない。
本出願の実施形態では、機能安全パーティションとカーネルの両方は、カーネル層に配置され、機能安全アプリケーションのプロセスは、機能安全パーティション内で実行される。このようにして、機能安全アプリケーションのプロセスが実行されるとき、カーネル層におけるサービスは、ユーザ層からカーネル層への切替えなしに呼び出され得る。このことは、特権層切替えによって引き起こされる性能オーバーヘッドを低減し、プロセッサおよび端末デバイスの性能を向上させる。
本出願の一実施形態による端末デバイスのシステムアーキテクチャの概略図である。 本出願の一実施形態による自動運転装置のアーキテクチャの概略図である。 本出願の一実施形態によるプロセス実行方法の一実施形態の概略図である。 本出願の一実施形態によるプロセス実行方法の他の実施形態の概略図である。 本出願の一実施形態によるプロセス実行方法の他の実施形態の概略図である。 本出願の一実施形態によるプロセス実行方法の他の実施形態の概略図である。 本出願の一実施形態によるプロセス実行方法の他の実施形態の概略図である。 本出願の一実施形態によるプロセス実行方法の他の実施形態の概略図である。 本出願の一実施形態によるシナリオの概略図である。 本出願の一実施形態によるプロセス実行装置の一実施形態の概略図である。 本出願の一実施形態によるコンピュータデバイスの構造の概略図である。 本出願の一実施形態によるコンピュータデバイスの他の構造の概略図である。
以下、添付の図面を参照しつつ、本出願の実施形態について説明する。説明される実施形態は、本出願の実施形態のすべてではなく、いくつかにすぎないことは明らかである。当業者は、技術の発展および新しいシナリオの出現に伴い、本出願の実施形態において提供される技術的解決策が同様の技術的問題にも適用可能であることを知り得る。
本出願の明細書、特許請求の範囲、および添付の図面では、「第1の」および「第2の」などの用語は、同様のものの間で区別するように意図されるが、必ずしも特定の順序または順番を示すとは限らない。そのような方法で使用されるデータは、適切な状況において互換性があるので、本明細書で説明される実施形態が、図示されるかまたは本明細書で説明される順序以外の順序で実装され得るようになることを理解されたい。加えて、「含む」および「有する」という用語、ならびに任意の他の変形態は、非排他的な包含をカバーするように意図される。たとえば、ステップまたはユニットの列挙を含むプロセス、方法、システム、製品、またはデバイスは、必ずしもそれらの明確に列挙されたステップまたはユニットに限定されるとは限らないが、明確に列挙されないか、あるいはそのようなプロセス、方法、製品、またはデバイスに固有でない、他のステップまたはユニットを含み得る。
本出願の実施形態は、ユーザ層からカーネル層への頻繁な切替えを回避し、それによって、特権層切替えによって引き起こされる性能オーバーヘッドを低減するような、アプリケーション実行方法を提供する。本出願の実施形態は、対応する装置をさらに提供する。詳細については、以下、個別に説明する。
本出願の実施形態の理解を容易にするために、以下、本出願の実施形態で使用されるいくつかの用語について説明する。
実行可能ファイルは、静的な概念である。実行可能ファイルは、いくつかの事前にコンパイルされた命令およびデータセットに関するファイルである。実行可能ファイルは、ファイルヘッダおよびバイナリ実行コードを含み、各プロセスは、対応する実行可能ファイルを有し、実行可能ファイルのスクリプトは、プロセスの識別子を含み得る。
プロセスは、動的な概念である。プロセスは、データセットについてのコンピュータ内のプログラムの実行アクティビティであり、システム内のリソース割り当ておよびスケジューリングのための基本単位である。
カーネルは、オペレーティングシステムの最も基本的な部分である。カーネルは、コンピュータハードウェアへのセキュアなアクセスを多数のアプリケーションに提供する、ソフトウェアの部分である。カーネルは、Linux(登録商標)カーネルであり得る。
機能安全パーティションは、データプレーン環境(data plane environment、DPE)とも呼ばれる。機能安全パーティションは、カーネル層において構成され、カーネルと同じ特権層に配置される。機能安全パーティションは、すべてのアプリケーションのプロセスを実行するために使用され得るか、または機能安全アプリケーションのプロセスを実行するために使用され得る。
機能安全アプリケーションは、リアルタイム性能および信頼性についての厳しい要件を有するアプリケーション(たとえば、自動運転)であり、通常、データ駆動型アプリケーション、または頻繁なイベントによってトリガされるアプリケーションである。
実行機能データは、プロセスの実行をサポートするデータであり、プロセスの仮想アドレスと、仮想アドレスと物理アドレスとの間のマッピング関係と、プロセスのコンテキストとを含む。
仮想アドレスは、論理アドレスとも呼ばれ、通常、オフセットによって表される。オペレーティングシステム内のすべてのプロセスによって共有される論理空間が、仮想アドレス空間全体として説明される場合、仮想アドレス空間全体は開始値を有し、ターゲットプロセスによって使用され得る仮想アドレス空間は、開始値およびオフセットを使用することによって決定され得る。
物理アドレスは、対応する記憶リソースのアドレスであり、物理アドレスもまた、オフセットによって表され得る。
プロセスのコンテキストは、プロセスのデータセグメント(data segment)、ヒープ(heap)、スタック(stack)、およびレジスタコンテキストのうちの少なくとも1つを含む。
レジスタコンテキストは、プロセス実行中にレジスタに書き込まれる値である。
タスク構造(task_struct)は、プロセスのコンテキストを記憶するために使用される構造であり、テーブルの形式であり得るか、または他の形式であり得る。
システムコール(system call):オペレーティングシステムの主要な機能は、ハードウェアリソースを管理し、アプリケーション開発者が、アプリケーションがより良い互換性を有するようにするための、良好な環境を提供することである。これらの目標を達成するために、カーネルは、あらかじめ設定された機能をもつ一連のマルチカーネル機能を提供し、一連のマルチカーネル機能は、システムコールと呼ばれるインターフェースのグループを通して、ユーザに提示される。システムコールは、カーネルにアプリケーションの要求を送り、必要とされた処理を完了するために、対応するカーネル機能を呼び出し、アプリケーションに処理結果を戻すために使用される。
ページフォールトは、ページフォールトによって引き起こされる例外である。
一貫性検査方法は、巡回冗長検査(cyclic redundancy check、CRC)であり得る。CRCは、誤り検出能力および誤り訂正能力をもつ、一般的な検査方法である。
本出願の実施形態において提供されるプロセス実行方法は、端末デバイス、または端末デバイス内のコンピュータシステムに適用され得る。端末デバイス(ユーザ機器(user equipment、UE)と呼ばれることもある)は、ワイヤレス受信および送信機能を有するデバイスであり、地上に配置されてもよく、たとえば、屋内もしくは屋外デバイス、ハンドヘルドデバイス、または車載デバイスであり得るか、あるいは水上(たとえば、汽船上)に配置され得るか、あるいは空中(たとえば、飛行機、気球、または衛星上)に配置され得る。端末は、モバイルフォン(mobile phone)、タブレットコンピュータ(pad)、ワイヤレス受信および送信機能を有するコンピュータ、仮想現実(virtual reality、VR)端末、拡張現実(augmented reality、AR)端末、産業用制御(industrial control)におけるワイヤレス端末、自動運転(self-driving)におけるワイヤレス端末、自動運転装置、遠隔医療(remote medical)におけるワイヤレス端末、スマートグリッド(smart grid)におけるワイヤレス端末、運輸安全性(transportation safety)におけるワイヤレス端末、スマートシティ(smart city)におけるワイヤレス端末、スマートホーム(smart home)におけるワイヤレス端末などであり得る。
端末デバイスは、図1に示すシステムアーキテクチャを参照して理解され得る。図1に示すように、端末デバイスは、ユーザ層と、カーネル層と、管理層と、ハードウェア層とを含む。
ユーザ層において、複数のアプリケーション(application、APP)があり得る。複数のアプリケーションは、機能安全アプリケーションおよび共通アプリケーションを含み得る。共通アプリケーションは、機能安全アプリケーションに対するものである。機能安全アプリケーション以外のアプリケーションは、共通アプリケーションと呼ばれうる。
カーネル層は、カーネルと、機能安全パーティションとを含む。共通アプリケーションのプロセスは、カーネル内で実行され、機能安全アプリケーションのプロセスは、機能安全パーティション内で実行される。機能安全パーティションとカーネルとの間のエコロジカルな互換性を保証するために、機能安全パーティションとカーネルとの間で対話が行われてもよく、カーネルは、いくつかの機能安全アプリケーションの動作を完了することを支援する。
管理層は、仮想マシンマネージャを含み得る。仮想マシンマネージャの特権は、カーネル層およびユーザ層の特権よりも高く、仮想マシンマネージャは、カーネル層の管理、たとえば、機能安全パーティションへの機能安全アプリケーションのプロセスの実行機能データの構成を行い得る。
異なるアーキテクチャでは、ユーザ層、カーネル層、および管理層の名称が、わずかに異なり得る。たとえば、ARMアーキテクチャでは、ユーザ層を表すためにEL0が通常使用され、カーネル層を表すためにEL1が使用され、上位の特権層を表すためにEL2が使用される。X86アーキテクチャでは、ユーザ層を表すために通常Ring3が使用され、カーネル層を表すためにRing2が使用され、上位の特権層を表すためにRing1が使用される。
ハードウェア層は、コンピューティングユニット、メモリ、および通信インターフェースなどのリソースを含む。ハードウェア層は、ユーザ層、カーネル層、および管理層が正常に機能するためのハードウェアリソースを提供するために使用される。
端末デバイスが、自動運転装置である場合、ハードウェア層は、レーダーおよびカメラなどのハードウェアをさらに含み得る。比較的多量の機能安全アプリケーションが自動運転分野に関与するので、以下、図2を参照しながら、本出願が自動運転装置100に適用される形態について説明する。
図2に示すように、自動運転装置100は、コンピュータシステム101と、ディスプレイ109と、入力デバイス117と、メディアトレイ(media tray)121と、トランシーバ123(無線通信信号を送信および/または受信し得る)と、センサー153と、カメラ155とを含む。コンピュータシステム101は、プロセッサ103を含み、プロセッサ103は、システムバス105に結合される。プロセッサ103は、1つまたは複数のプロセッサであり得、各プロセッサは、1つまたは複数のプロセッサコアを含み得る。コンピュータシステム101は、ディスプレイアダプタ(video adapter)107をさらに含み、ディスプレイアダプタ107は、ディスプレイ109を駆動してもよく、ディスプレイ109は、システムバス105に結合される。システムバス105は、バスブリッジ111を通して、入力/出力(I/O)バス113に結合される。I/Oインターフェース115は、I/Oバスに結合される。I/Oインターフェース115は、複数のI/Oデバイス、たとえば、入力デバイス117(キーボード、マウス、またはタッチスクリーンなど)、CD-ROMまたはマルチメディアインターフェースなどのメディアトレイ121、トランシーバ123、カメラ155(静的および動的デジタルビデオ画像をキャプチャすることができる)、および外部USBインターフェース125と通信する。任意選択で、I/Oインターフェース115に接続されたインターフェースは、USBインターフェースであり得る。
プロセッサ103は、縮小命令セットコンピューティング(「RISC」)プロセッサ、複合命令セットコンピューティング(「CISC」)プロセッサ、またはそれらの組合せを含む、任意の従来のプロセッサであり得る。任意選択で、プロセッサは、特定用途向け集積回路(「ASIC」)など、専用の装置であり得る。任意選択で、プロセッサ103は、ニューラルネットワーク処理ユニット(neural-network processing unit、NPU)、またはニューラルネットワーク処理ユニットおよび従来のプロセッサの組合せであり得る。任意選択で、ニューラルネットワーク処理ユニットは、プロセッサ103上に取り付けられる。
コンピュータシステム101は、ネットワークインターフェース129を通して、ソフトウェア展開サーバ149と通信し得る。ネットワークインターフェース129は、ネットワークアダプタなどのハードウェアネットワークインターフェースである。ネットワーク127は、インターネットなどの外部ネットワークであり得るか、またはイーサネットもしくは仮想プライベートネットワーク(VPN)などの内部ネットワークであり得る。任意選択で、ネットワーク127は、あるいは、Wi-Fiネットワークまたはセルラーネットワークなどのワイヤレスネットワークであり得る。
ハードドライブインターフェースは、システムバス105に結合される。ハードウェアドライブインターフェースは、ハードディスクドライブに接続される。システムメモリ135は、システムバス105に結合される。システムメモリ135内で実行しているデータは、オペレーティングシステム137およびアプリケーション143を含み得る。
オペレーティングシステム137は、機能安全パーティション(DPE)139と、カーネル(kernel)141とを含む。
カーネル141は、メモリ、ファイル、周辺デバイス、およびシステムリソースを管理するように構成される、オペレーティングシステム内の部分を含む。ハードウェアと直接対話するとき、オペレーティングシステムのカーネルは、通常、プロセスを実行し、プロセス間通信を提供し、CPUタイムスライス管理、割込み、メモリ管理、I/O管理などを提供する。
アプリケーション143は、自動運転関連プログラム147、たとえば、位置特定プログラム、プランニングプログラム、および知覚プログラムを含む。これらのプログラムに対応するアプリケーションは、すべて機能安全アプリケーションである。アプリケーション143は、ソフトウェア展開サーバ(deploying server)149のシステム上に存在し得る。一実施形態では、アプリケーション143が実行される必要があるとき、コンピュータシステム101は、ソフトウェア展開サーバ149からアプリケーション143をダウンロードし得る。
センサー153は、コンピュータシステム101に関連付けられる。センサー153は、コンピュータシステム101の周囲環境を検出するように構成される。たとえば、センサー153は、動物、自動車、障害物、および横断歩道を検出し得る。さらに、センサーは、動物、自動車、障害物、および横断歩道などの対象物の周囲環境、たとえば、動物の周囲に現れる他の動物など、動物の周囲環境、天候状態、および周囲環境の明るさを検出し得る。任意選択で、コンピュータシステム101が自動運転装置上に配置される場合、センサーは、カメラ、赤外線センサー、化学物質検出器、マイクロフォンなどであり得る。起動されているとき、センサー153は、あらかじめ設定された間隔で情報を検知し、リアルタイムまたはほぼリアルタイムでコンピュータシステム101のために、検知された情報を提供する。
コンピュータシステム101は、センサー153によって収集されたセンサーデータに基づいて、自動運転装置の運転ステータスを決定すること、運転ステータスおよび現在の運転タスクに基づいて、自動運転装置によって実行される必要がある運転動作を決定すること、ならびに制御システムに、運転動作に対応する制御命令を送信することを行うように構成される。自動運転装置の運転ステータスは、自動運転装置の運転状況、たとえば、ヘッド方向(head direction)、速度、位置、および加速度を含んでもよく、また、自動運転装置の周囲環境のステータス、たとえば、障害物の位置、他の車両の位置および速度、横断歩道の位置、または交通信号灯の信号も含み得る。コンピュータシステム101は、プロセッサ103によって実装される、タスク抽象化ネットワークおよび共有ポリシーネットワークを含み得る。具体的には、プロセッサ103は、現在の自動運転タスクを決定する。プロセッサ103は、特徴抽出のためにタスク抽象化ネットワークに自動運転タスクの経路履歴の少なくとも1つのグループを入力して、自動運転タスクの特徴を表すタスク特徴ベクトルを取得する。プロセッサ103は、センサー153によって収集されたセンサーデータに基づいて、自動運転装置の現在の運転ステータスを表すステータスベクトルを決定する。プロセッサ103は、タスク特徴ベクトルおよびステータスベクトルを、処理するために共有ポリシーネットワークに入力して、自動運転装置によって現在行われる必要がある運転動作を取得する。プロセッサ103は、制御システムを通して、運転動作を行う。プロセッサ103は、自動運転タスクが完了するまで、運転動作を決定しおよび行う上記のステップを繰り返す。
自動運転装置100は、自動車、トラック、オートバイ、バス、ボート、飛行機、ヘリコプター、芝刈り機、レクリエーション車両、遊び場自動運転装置、建築デバイス、トラム、ゴルフカート、列車、手押し車などであり得る。このことは、本出願のこの実施形態において特に限定されない。
上記の端末デバイスが自動運転装置であるか、他のデバイスであるかにかかわらず、オペレーティングシステムのカーネル層は、上記の機能安全パーティションを含む。
以下、添付の図面を参照しながら、本出願の実施形態において提供されるプロセス実行装置によって行われるプロセス実行方法について説明する。プロセス実行装置は、プロセッサシステムであり得る。プロセッサシステムは、1つまたは複数のプロセッサ、たとえば、図2におけるプロセッサ103を含む。プロセス実行装置は、カーネルおよび機能安全パーティションを管理し得る。
図3に示すように、本出願の実施形態において提供されるプロセス実行方法の一実施形態は、以下のステップを含む。
201: プロセス起動要求を受信し、プロセス起動要求は、ターゲットプロセスを開始することを指示するために使用される。
プロセス起動要求は、システム起動中にトリガされる要求であり得るか、またはユーザがアプリケーションを使用するとき、トリガされる要求であり得る。
202: プロセス起動要求に基づいて、カーネル内でターゲットプロセスの実行可能ファイルを実行して、カーネル内のターゲットプロセスの実行をサポートする第1の実行機能データを取得する。
プロセス起動要求は、ターゲットプロセスの識別子を運んでもよく、またはターゲットプロセスに対応するアプリケーションの識別子を運んでもよい。このようにして、対応する実行可能ファイルは、プロセスの識別子、または対応するアプリケーションの識別子を使用することによって発見され得る。
実行可能ファイルは、ファイルヘッダおよびバイナリ実行コードを含み、各プロセスは、対応する実行可能ファイルを有し、実行可能ファイルのスクリプトは、プロセスの識別子を含み得る。カーネル内でターゲットプロセスの実行可能ファイルを実行することは、カーネルの環境内で実行可能ファイルのバイナリ実行コードを実行することを意味する。
実行可能ファイルのファイルヘッダは、タグ情報を含んでもよく、タグ情報は、文字列または値であり得る、特殊なタグデータのセグメントであり得る。
第1の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第1の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第1の物理アドレスは、カーネルの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスである。
203: 第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得する。
タグ情報は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示すために使用され、機能安全パーティションおよびカーネルは、同じ特権層に配置される。
第2の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第2の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第2の物理アドレスは、機能安全パーティションの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスである。
可能な実装形態では、実行可能ファイルは、タグ情報を含み、実行可能ファイルがタグ情報を含む場合、第1の実行機能データが機能安全パーティションに移行されて、第2の実行機能データが取得される。タグ情報は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示すために使用される。
第1の実行機能データを機能安全パーティションに移行させることは、第1の実行機能データを機能安全パーティションの「排他的」な記憶空間に移行させることであり得る。
204: 第2の実行機能データに基づいて、機能安全パーティション内でターゲットプロセスを実行する。
本出願のこの実施形態では、機能安全パーティションとカーネルの両方は、カーネル層に配置される。このようにして、プロセス実行中に、カーネル層におけるサービスは、ユーザ層からカーネル層への切替えなしに呼び出され得る。このことは、特権層切替えによって引き起こされる性能オーバーヘッドを低減し、プロセッサおよび端末デバイスの性能を向上させる。
任意選択で、本出願のこの実施形態では、カーネルの物理リソースは、機能安全パーティションの物理リソースから分離される。物理リソース分離プロセスでは、カーネルと機能安全パーティションとの間の物理リソース分離を実装するために、異なる物理リソースが、仮想マシンマネージャの初期化中にカーネルおよび機能安全パーティションのために別個に構成され得る。物理リソースは、プロセッサまたはプロセッサコアのコンピューティングリソース、メモリの記憶リソースなどを含み得る。カーネルは、第1の物理リソースに対応し、機能安全パーティションは、第2の物理リソースに対応する。カーネルは、第2の物理リソースを知覚せず、すなわち、カーネル内のプロセスは、第2の物理リソースにアクセスすることができない。同様に、機能安全パーティションは、第1の物理リソースを知覚せず、すなわち、機能安全パーティション内のプロセスは、第1の物理リソースにアクセスすることができない。カーネルと機能安全パーティションとの間の物理リソース分離は、カーネルおよび機能安全パーティションが互いから分離されることを保証する。このようにして、情報安全性リスクがカーネル内で生じる場合でも、機能安全パーティション内のデータの安全性を保証するために、機能安全パーティションは影響を受けない。加えて、カーネルおよび機能安全パーティションが互いから分離されるので、たとえば、アップグレードのために、機能安全アプリケーションのコードが変化するとき、カーネルの保全性を向上させるために、カーネルが修正される必要はない。
本出願のこの実施形態において提供されるプロセス実行方法は、次の3つの態様を含んでもよく、すなわち、1.カーネル内でターゲットプロセスを開始する。2.ターゲットプロセスの実行機能データを機能安全パーティションに移行させる。3.機能安全パーティション内でターゲットプロセスを実行する。説明は、以下、個別に提供される。
1.カーネル内でターゲットプロセスを開始する。
カーネル内でターゲットプロセスを開始するプロセスは、図4を参照して理解され得る。図4に示すように、プロセスは、以下のステップを含む。
301: オペレーティングシステムが開始されるとき、またはターゲットプロセスに対応するターゲットアプリケーションがトリガされるとき、プロセス実行装置は、ターゲットプロセスの識別子と、実行可能ファイルのスクリプト中に含まれたプロセスの識別子とに基づいて、ターゲットプロセスの実行可能ファイルをロードする。
ターゲットプロセスの実行可能ファイルは、カーネルに対応するメモリにロードされ得る。
302: ターゲットプロセスの実行可能ファイルを実行するプロセスでは、プロセス実行装置は、カーネル内に第1のタスク構造(task_struct)を作成する。
第1のタスク構造は、ターゲットプロセスのコンテキストを記憶するために使用される。第1のタスク構造(task_struct)は、カーネル内にあり、かつターゲットプロセスのコンテキストを記憶するために使用される構造であり、テーブルの形式であり得るか、または他の形式であり得る。
303: 実行可能ファイルのファイルヘッダがタグ情報を含む場合、プロセス実行装置は、タグ情報に基づいて、第1のタスク構造に指示値を追加し、指示値は、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示す。
指示値は、第1のタスク構造内の機能安全アプリケーションのフラグビット(DPE APP)に追加され得る。指示値は「1」であり得るか、または他の値であり得る。指示値の特定の値は、本出願では限定されない。
図4に示すように、第1のタスク構造は、カーネル内に作成される。タスク構造内の機能安全アプリケーションのフラグビットの値が「1」であるとき、それは、ターゲットプロセスが機能安全アプリケーションのプロセスであることを示す。加えて、第1のタスク構造は、ターゲットプロセスのコンテキストをさらに記憶する。
304: ターゲットプロセスの実行可能ファイルを実行するプロセスでは、プロセス実行装置は、仮想アドレス空間からターゲットプロセスに仮想アドレスをさらに割り当て、カーネルの記憶リソースからターゲットプロセスに第1の物理アドレスを割り当て、仮想アドレスと第1の物理アドレスとの間のマッピング関係を確立する。
このようにして、ターゲットプロセスがカーネル内で実行される場合、仮想アドレスによって示される仮想アドレス空間、および第1の物理アドレスによって示される物理アドレス空間が使用されえ、ターゲットプロセスに関連する追加、削除、修正、またはクエリなどの関連動作は、ターゲットプロセスの対応する仮想アドレス空間および対応する物理アドレス空間を使用することによって行われ得る。
この実施形態では、ターゲットプロセスのコンテキストは、共有メモリを使用することによって、機能安全パーティションに転送され得る。このようにして、ターゲットプロセスは、機能安全パーティション内で実行され得る。機能安全パーティションとカーネルとの間のエコロジカルな互換性を実装するために、カーネルを修正することなしに、機能安全アプリケーションのプロセスが機能安全パーティション内で実行されることが保証され得る。加えて、機能安全パーティションの初期化中にターゲットプロセスの安全性をさらに保証するために、一貫性検査が、機能安全パーティション内でターゲットプロセスのコンテキストにおいてさらに行われ得る。
2.ターゲットプロセスの実行機能データを機能安全パーティションに移行させる。
実行機能データを移行させるプロセスは、図5を参照して理解され得る。図5に示すように、プロセスは、以下のステップを含む。
カーネルの物理リソースが、機能安全パーティションの物理リソースから分離されるので、共有メモリが、実行機能データを移行させるプロセスにおいて使用される必要がある。第1のエージェントモジュールは、カーネル内で構成され得、第2のエージェントモジュールは、機能安全パーティション内で構成され得る。第1のエージェントモジュールおよび第2のエージェントモジュールは、ソフトウェアによって実装され得る。プロセッサシステムは、対応するソフトウェアを実行することによって、カーネル内の第1のエージェントモジュールのエージェント機能と、機能安全パーティション内の第2のエージェントモジュールのエージェント機能とを実装し得る。
401: ターゲットプロセスが実行されるとき、指示値に基づいて、共有メモリ内にターゲットプロセスのコンテキストを記憶する。
402: カーネルから機能安全パーティションに第1の通知を送信し、第1の通知は、機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される。
カーネルと機能安全パーティションとの間の通知は、第1のエージェントモジュールおよび第2のエージェントモジュールを使用することによって送信され得る。図5に示すように、第1のエージェントモジュールは、第2のエージェントモジュールに第1の通知を送信する。
403: 第1の通知に基づいて、第2のタスク構造を作成する。
404: 共有メモリからターゲットプロセスのコンテキストを読み出し、ターゲットプロセスのコンテキストに対して一貫性検査を行って、第1の検査値を取得し、第1の検査値が第2の検査値と同じである場合、第2のタスク構造内にターゲットプロセスのコンテキストを記憶する。
第1の検査値が第2の検査値と同じである場合、ターゲットプロセスのコンテキストがセキュアなデータであると決定される。第2の検査値は、ターゲットプロセスの初期構成コンテキストに対して一貫性検査を行うことによって取得された、信用できる値である。
405: 第1のエージェントモジュールは、仮想アドレスを機能安全パーティションに移行させるために、仮想マシンマネージャをトリガし、仮想アドレスと第1の物理アドレスとの間のマッピング関係を除去する。
406: 第1のエージェントモジュールは、仮想アドレスと第2の物理アドレスとの間のマッピング関係を確立するために、仮想マシンマネージャをトリガする。
3.機能安全パーティション内でターゲットプロセスを実行する。
機能安全パーティション内でターゲットプロセスを実行するプロセスは、システムコール処理プロセスと、ページフォールト処理プロセスとを含み得る。説明は、以下別個に提供される。
(1)システムコール処理プロセス
システムコール処理プロセスは、図6Aを参照して理解され得る。図6Aに示すように、プロセスは、以下のステップを含み得る。
501: 第2のエージェントモジュールは、機能安全パーティション内でターゲットプロセスを実行し、機能安全パーティションのシステムコール命令を呼び出す。
502: 第2のエージェントモジュールは、機能安全パーティションから共有メモリ内にシステムコール命令のコンテキストを記憶する。
このステップは、第2のエージェントモジュールを使用することによって、共有メモリ内にシステムコール命令のコンテキストを記憶することであり得る。
503: 第2のエージェントモジュールは、機能安全パーティションからカーネルに第2の通知を送信し、第2の通知は、システムコールが発生することを示すために使用される。
504: 第1のエージェントモジュールは、共有メモリからシステムコール命令のコンテキストを読み出す。
505: 第1のエージェントモジュールは、システムコール命令のコンテキストに基づいて、カーネルのシステムコール命令を呼び出して、システムコールを行って、システムコールの戻り値を取得する。
506: 第1のエージェントモジュールは、共有メモリ内に戻り値を置く。
507: 第2のエージェントモジュールは、共有メモリから機能安全パーティションにシステムコールの戻り値を読み出し、システムコールの戻り値に対して一貫性検査を行って、第3の検査値を取得し、第3の検査値が第4の検査値と同じである場合、システムコールの戻り値がセキュアなデータであると決定し、第4の検査値は、システムコールに対応する元のファイルに基づいて、一貫性検査を行うことによって取得された、信用できる値である。
508: 第2のエージェントモジュールは、戻り値を使用して、機能安全パーティションのシステムコールプロセスを完了させる。
この実施形態では、システムコール命令のコンテキストは、共有メモリを使用することによって、機能安全パーティションとカーネルとの間で転送され得る。このようにして、機能安全パーティションとカーネルとの間のエコロジカルな互換性を保証するために、機能安全パーティションのシステムコールは、カーネルのシステムコールプロセスを使用することによって実装され得る。
(2)ページフォールト処理プロセス
ページフォールト処理プロセスは、図6Bを参照して理解され得る。図6Bに示すように、プロセスは、以下のステップを含み得る。
601: ページフォールトは、第2のエージェントモジュールが機能安全パーティション内でターゲットプロセスを実行するとき、発生する。
602: 第2のエージェントモジュールは、機能安全パーティションから共有メモリ内にページフォールトのコンテキストを記憶する。
このステップは、第2のエージェントモジュールを使用することによって、共有メモリ内にページフォールトのコンテキストを記憶することであり得る。
603: 第2のエージェントモジュールは、機能安全パーティションからカーネルに第3の通知を送信し、第3の通知は、ページフォールトが発生することを示すために使用される。
第2の通知は、第2のエージェントモジュールを使用することによって、第1のエージェントモジュールに送信され得る。
604: 第1のエージェントモジュールは、共有メモリからページフォールトのコンテキストを読み出す。
605: 第1のエージェントモジュールは、ページフォールトのコンテキストに基づいて、カーネル内でページフォールト処理機能を呼び出し、ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得する。
このステップは、以下を含む。第1のエージェントモジュールは、ページフォールト処理機能を実行して、物理ページをターゲットプロセスに割り当て、物理ページのページテーブルを構成すること、仮想アドレスと第3の物理アドレスとの間のマッピング関係を確立するために、仮想マシンマネージャをトリガすることであって、第3の物理アドレスは、物理ページのアドレスが第1の物理アドレスに追加された後に取得される、トリガすること、および物理ページのページテーブルに基づいて、ターゲットプロセスのページテーブル許可値を修正することであって、ページテーブル許可値は、ターゲットプロセスによって使用されることが許可されたページテーブルの範囲を示すために使用される、修正することを行う。このことは、ページフォールトが発生した後、ターゲットプロセスが正常に実行されることを保証することができる。
606: 第1のエージェントモジュールは、共有メモリに処理結果を書き込む。
607: 第2のエージェントモジュールは、共有メモリからページフォールトの処理結果を読み出し、処理結果を検査し、検査が成功する場合、実行を継続するために、ターゲットプロセスに処理結果を戻す。
このステップにおける検査プロセスは、ステップ507のものと同じであり、詳細については本明細書で再度説明されない。
608: 第2のエージェントモジュールは、処理結果を使用して、機能安全パーティションのページフォールト処理プロセスを完了させる。
この実施形態では、ページフォールトが発生するとき、ページフォールトのコンテキストが、機能安全パーティションとカーネルとの間で転送され得る。このようにして、機能安全パーティションとカーネルとの間のエコロジカルな互換性を保証するために、機能安全パーティションのページフォールトは、カーネルのページフォールト処理プロセスを使用することによって実装され得る。
加えて、上記の実施形態では、データ安全性をさらに保証するために、一貫性検査が戻り値または処理結果においてさらに行われ得る。
加えて、上記の実施形態におけるターゲットプロセスは、スレッドおよびコルーチンを含み得る。本出願のこの実施形態において提供される解決策では、スレッドおよびコルーチンは、統合的にスケジュールされ得る。プロセスは、図7を参照して理解され得る。図7に示すように、プロセスは、以下のステップを含み得る。
701: カーネル内のスレッドエンティティは、スレッドを作成する。
702: 機能安全パーティション内のコルーチンエンティティは、コルーチンを作成する。
コルーチンは、マイクロスレッドである。
703: 第1のエージェントモジュールおよび第2のエージェントモジュールを使用することによって、カーネルから機能安全パーティションにスレッドを転送する。
704: スレッドを統合スケジューラ内に置く。
機能安全パーティションは、統合スケジューラを含む。
705: コルーチンを統合スケジューラ内に置く。
統合スケジューラは、スレッドおよびコルーチンを統合的にスケジュールすることができる。
従来の技術では、スレッドスケジューラは、スレッドをスケジュールするために使用され、コルーチンスケジューラは、コルーチンをスケジュールするために使用される。コルーチンがスケジュールされる必要があるとき、コルーチンは、その中にコルーチンが配置されるスレッドに最初に切り替えられる必要があり、次いで、スレッドは、スケジュールするためにコルーチンに切り替えられる。2レベル切替えが行われる必要があり、オーバーヘッドが比較的高い。加えて、カーネルが重度の干渉を受け、スケジューリング決定性が保証され得ない。しかしながら、この可能な実装形態では、統合スケジューラの統合スケジューリングを通して、2レベルスケジューリングが回避され、オーバーヘッドが低減される。加えて、統合スケジューラは、機能安全パーティション内に配置され、干渉を受けず、スケジューリング決定性が保証される。
図3~図7における上記の複数の実施形態は、機能安全パーティション内のプロセスの開始からプロセスの実行までのプロセスについて説明している。以下では、一例として図8に示された自動運転車載プラットフォームにおいてマップシナリオを使用することによって、本出願の実施形態におけるプロセス実行方法についてさらに説明する。
図8に示すように、自動運転車載プラットフォームは、機能安全アプリケーションと、ミドルウェアと、オペレーティングシステムと、ハードウェア層とを含む。
機能安全アプリケーションは、マップエンジン(map engine)アプリケーションと、位置特定(localization)アプリケーションと、知覚(perception)アプリケーションと、予測(prediction)アプリケーションと、プランニング(planning)アプリケーションとを含み得る。
ミドルウェアは、様々な機能安全アプリケーションのプロセスを開始および実行するための対応する構成ファイルを含む。
オペレーティングシステムは、カーネルと、機能安全パーティションとを含む。
ハードウェア層は、コンピューティングユニット(computer unit)と、カメラ(camera)と、メモリ(memory)と、センサー(sensor)とを含む。コンピューティングユニットは、プロセッサであり得、センサーは、レーダー(lidar)を含み得る。
マップエンジンアプリケーションの機能を実装するために、行われることになるプロセスは、以下のステップを含む。
S1: マップエンジンアプリケーションのマップローディング要求に応答して、ミドルウェア内にマップファイルを読み出す。
マップエンジンアプリケーションのプロセスが開始された後、位置特定イベントが監視される。位置特定イベントが発生するとき、マップローディング要求が送信される。
位置特定イベントは、全地球測位システム(global positioning system、GPS)イベントであり得る。
S2: ミドルウェアは、マップローディング要求を処理し、GPSパラメータに基づいて、対応するマップファイルをメモリにロードし、機能安全パーティション内でmmapシステムコールをトリガする。
S3: 機能安全パーティションは、エージェント(たとえば、上記の実施形態における第2のエージェントモジュール)および共有メモリを使用することによって、カーネルにmmapシステムコールのコンテキストを転送する。
S4: カーネルは、mmapシステムコール要求を処理し、ファイルシステムを使用することによって、読み出し専用メモリセグメント内のマップファイルを読み出す。
S5: カーネルは、マップファイルを機能安全パーティション内のマップエンジンアプリケーションのアドレス空間にマップし、機能安全パーティションに戻り値を転送する。
S6: 機能安全パーティション内のエージェント(たとえば、上記の実施形態における第2のエージェントモジュール)は、マップ経路に基づいて、一貫性検査値を取得し、メモリ内のマップファイルの一貫性チェック値を計算し、比較を通して、2つの一貫性検査値が一致することを発見するとき、検査が成功すると決定し、ミドルウェアに戻り値を転送する。
S7: システムコール処理が完了した後、ミドルウェアは、マップ読込み成功イベントを送信し、マップエンジンは、読込みのためのコールバックを行う。
このシナリオでは、システムコールがプロセス実行のために行われる一例が、説明のために使用されている。他の関連するプロセス実行プロセス(たとえば、ページフォールト)もまた、上記の実施形態、および図8におけるシナリオのプロセスにおける説明を参照して理解され得る。
概して、アプリケーション実行装置は、ステップ201~204、ステップ301~304、ステップ401~406、ステップ501~507、ステップ601~607、ステップ701~705、および上記のシナリオ例におけるS1からS7までのプロセスを行い得る。カーネルの物理リソースは、機能安全パーティションの物理リソースから分離される。したがって、カーネルが第1の処理装置によって管理され、機能安全パーティションが第2の処理装置によって管理される場合、第1の処理装置および第2の処理装置の観点から、ステップ201~203は、第1の処理装置によって行われ得、ステップ204は、第2の処理装置によって実行される。ステップ301、302、303、および304は、第1の処理装置によって行われ得る。ステップ401および402は、第1の処理装置によって行われ得、ステップ403および404は、第2の処理装置によって行われ得、ステップ405および406は、第1の処理装置によって行われ得る。ステップ501および502は、第2の処理装置によって行われ得、ステップ503、504、および505は、第1の処理装置によって行われ得、ステップ506および507は、第2の処理装置によって行われ得る。ステップ601および602は、第2の処理装置によって行われ得、ステップ603、604、605、および606は、第1の処理装置によって行われ得、ステップ607は、第2の処理装置によって行われ得る。ステップ701および703は、第1の処理装置によって行われ得、ステップ702、704、および705は、第2の処理装置によって行われ得る。第1の処理装置および第2の処理装置は、端末デバイス中に含まれる。
上記では、本出願の実施形態において提供されるプロセス実行方法について説明している。以下、添付の図面を参照しながら、本出願の実施形態において提供されるプロセス実行装置について説明する。
図9に示すように、本出願の実施形態において提供されるプロセス実行装置80の一実施形態は、受信ユニット801と、第1の処理ユニット802と、第2の処理ユニット803と、第3の処理ユニット804と、送信ユニット805とを含む。
受信ユニット801は、プロセス起動要求を受信することであって、プロセス起動要求は、ターゲットプロセスを開始することを指示するために使用される、受信することを行うように構成される。
第1の処理ユニット802は、受信ユニット801によって受信されたプロセス起動要求に基づいて、カーネル内でターゲットプロセスの実行可能ファイルを実行して、カーネル内のターゲットプロセスの実行をサポートする第1の実行機能データを取得するように構成される。
第2の処理ユニット803は、第1の処理ユニット802によって取得された第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得することであって、機能安全パーティションおよびカーネルは、同じ特権層に配置される、取得することを行うように構成される。
第3の処理ユニット804は、第2の処理ユニット803によって取得された第2の実行機能データに基づいて、機能安全パーティション内でターゲットプロセスを実行するように構成される。
本出願のこの実施形態において提供される解決策では、機能安全パーティションとカーネルの両方は、カーネル層に配置される。このようにして、プロセス実行中に、カーネル層におけるサービスは、ユーザ層からカーネル層への切替えなしに呼び出され得る。このことは、特権層切替えによって引き起こされる性能オーバーヘッドを低減し、プロセッサおよび端末デバイスの性能を向上させる。
任意選択で、第1の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第1の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第1の物理アドレスは、カーネルの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスであり、第2の実行機能データは、ターゲットプロセスの仮想アドレスと、仮想アドレスと第2の物理アドレスとの間のマッピング関係と、ターゲットプロセスのコンテキストとを含み、第2の物理アドレスは、機能安全パーティションの記憶リソースにおけるターゲットプロセスに割り当てられた物理アドレスである。
任意選択で、第2の処理ユニット803は、仮想アドレスを機能安全パーティションに移行させるために、仮想マシンマネージャをトリガし、仮想アドレスと第1の物理アドレスとの間のマッピング関係を除去し、仮想アドレスと第2の物理アドレスとの間のマッピング関係を確立すること、ならびに共有メモリを使用することによって、機能安全パーティションにターゲットプロセスのコンテキストを転送することであって、共有メモリは、カーネルおよび機能安全パーティションによって共有されるメモリである、転送することを行うように構成される。
任意選択で、第1の処理ユニット802は、カーネル内でターゲットプロセスの実行可能ファイルを実行するとき、カーネル内に第1のタスク構造を作成することであって、第1のタスク構造は、ターゲットプロセスのコンテキストを記憶するために使用される、作成すること、および第1のタスク構造に指示値を追加することであって、指示値は、ターゲットプロセスが機能安全パーティション内で実行される必要があることを示す、追加することを行うようにさらに構成される。
送信ユニット805は、ターゲットプロセスが実行されるとき、指示値に基づいて、カーネルから機能安全パーティションに第1の通知を送信することであって、第1の通知は、機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される、送信することを行うように構成される。
第3の処理ユニット804は、第1の通知に基づいて、第2のタスク構造を作成し、第2のタスク構造内にターゲットプロセスのコンテキストを記憶するように構成される。
任意選択で、第3の処理ユニット804は、共有メモリから機能安全パーティションにターゲットプロセスのコンテキストを読み出すこと、ターゲットプロセスのコンテキストに対して一貫性検査を行って、第1の検査値を取得すること、および第1の検査値が第2の検査値と同じである場合、ターゲットプロセスのコンテキストがセキュアなデータであると決定することであって、第2の検査値は、ターゲットプロセスの初期構成コンテキストに対して一貫性検査を行うことによって取得された、信用できる値である、決定することを行うようにさらに構成される。
任意選択で、第3の処理ユニット804は、ターゲットプロセスが実行されるとき、機能安全パーティションのシステムコール命令が呼び出される場合、機能安全パーティションから共有メモリ内にシステムコール命令のコンテキストを記憶するように構成される。
送信ユニット805は、機能安全パーティションからカーネルに第2の通知を送信することであって、第2の通知は、システムコールが発生することを示すために使用される、送信することを行うように構成される。
第2の処理ユニット803は、共有メモリからシステムコール命令のコンテキストを読み出し、システムコール命令のコンテキストに基づいて、カーネルのシステムコール命令を呼び出して、システムコールを行って、システムコールの戻り値を取得すること、および共有メモリを使用することによって、機能安全パーティションにシステムコールの戻り値を転送することを行うようにさらに構成される。
任意選択で、第3の処理ユニット804は、共有メモリから機能安全パーティションにシステムコールの戻り値を読み出すこと、システムコールの戻り値に対して一貫性検査を行って、第3の検査値を取得すること、および第3の検査値が第4の検査値と同じである場合、システムコールの戻り値がセキュアなデータであると決定することであって、第4の検査値は、システムコールに対応する元のファイルに基づいて、一貫性検査を行うことによって取得された、信用できる値である、決定することを行うようにさらに構成される。
任意選択で、第3の処理ユニット804は、ターゲットプロセスが実行されるとき、ページフォールトが発生する場合、機能安全パーティションから共有メモリ内にページフォールトのコンテキストを記憶するようにさらに構成される。
送信ユニット805は、機能安全パーティションからカーネルに第3の通知を送信することであって、第3の通知は、ページフォールトが発生することを示すために使用される、送信することを行うように構成される。
第2の処理ユニット803は、共有メモリからページフォールトのコンテキストを読み出し、ページフォールトのコンテキストに基づいて、カーネル内でページフォールト処理機能を呼び出し、ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得すること、および共有メモリを使用することによって、機能安全パーティションに処理結果を転送することを行うようにさらに構成される。
送信ユニット805は、第1の送信ユニット、第2の送信ユニット、または第3の送信ユニットであり得ることに留意されたい。第1の処理ユニット802、第2の処理ユニット803、および第3の処理ユニット804は、あるいは、1つの処理ユニットまたは2つの処理ユニットによって実装され得る。機能実行装置が、端末デバイス、または端末デバイス内のコンピュータシステムである場合、第1の処理ユニット802および第2の処理ユニット803は、第1の処理装置中に含まれ得る。第1の処理装置は、プロセッサまたはプロセッサコアによって実装され得る。第3の処理ユニット804は、第2の処理装置中に含まれ得る。第2の処理装置は、他のプロセッサまたはプロセッサコアによって実装され得る。第1の処理装置および第2の処理装置は、それぞれの独立した受信ユニットおよび送信ユニットを有し得る。このようにして、カーネルのコンピューティングリソースは、機能安全パーティションのコンピューティングリソースから分離されることが保証され得る。
プロセス実行装置80は、プロセス実行方法の上記の実施形態を参照して理解され得、詳細については本明細書で再度説明されない。
図10は、本出願の一実施形態によるコンピュータデバイス90の可能な論理構造の概略図である。コンピュータデバイスは、上記の実施形態において説明された端末デバイスであり得る。コンピュータデバイス90は、プロセッサシステム901と、通信インターフェース902と、メモリ903と、バス904とを含む。プロセッサシステム901は、第1のプロセッサと第2のプロセッサとを含み得る。第1のプロセッサはカーネルに対応し、第2のプロセッサは機能安全パーティションに対応する。プロセッサシステムがプロセッサである場合、第1のプロセッサはプロセッサコアであり、第2のプロセッサは他のプロセッサコアである。メモリ903は、第1のメモリと第2のメモリとを含み得る。第1のメモリはカーネルに対応し、第2のメモリは機能安全パーティションに対応する。プロセッサシステム901、通信インターフェース902、およびメモリ903は、バス904を使用することによって互いに接続される。本出願のこの実施形態では、プロセッサシステム901は、コンピュータデバイス90のアクションを制御および管理するように構成される。たとえば、プロセッサシステム901は、図3におけるステップ202~204、図4におけるステップ301~304、図5におけるステップ401~406、図6Aにおけるステップ501~507、および図6Bにおけるステップ601~607、および図7におけるステップ701~705、ならびに/または本明細書で説明される技術のために使用される他のプロセスを行うように構成される。第1のプロセッサおよび第2のプロセッサによって行われる具体的なステップは、第1の処理装置および第2の処理装置によって行われる上記のステップを参照して理解され得る。通信インターフェース902は、通信を行うために、コンピュータデバイス90をサポートするように構成される。メモリ903は、コンピュータデバイス90のプログラムコードおよびデータを記憶するように構成される。
プロセッサシステム901は、中央処理ユニットシステム、汎用プロセッサシステム、デジタル信号プロセッサシステム、特定用途向け集積回路、フィールドプログラマブルゲートアレイもしくは他のプログラマブル論理デバイス、トランジスタ論理デバイス、ハードウェア構成要素、またはそれらの任意の組合せであり得る。プロセッサシステムは、本出願で開示される内容に関して説明される様々な例示的な論理ブロック、モジュール、および回路を実装または実行し得る。あるいは、プロセッサシステムは、コンピューティング機能を実装するプロセッサシステムの組合せ、たとえば、1つもしくは複数のマイクロプロセッサシステムの組合せ、またはデジタル信号プロセッサシステムおよびマイクロプロセッサシステムの組合せであり得る。バス904は、周辺構成要素相互接続(Peripheral Component Interconnect、PCI)バス、または拡張業界標準アーキテクチャ(Extended Industry Standard Architecture、EISA)バスなどであり得る。バスは、アドレスバス、データバス、制御バスなどに分類され得る。表現を容易にするために、ただ1本の太線が図10においてバスを表すために使用されるが、このことは、ただ1つのバス、またはただ1つのタイプのバスがあることを意味しない。
図11は、本出願の一実施形態によるコンピュータデバイス1000の可能な論理構造の概略図である。コンピュータデバイスは、上記の実施形態において説明された端末デバイスであり得る。コンピュータデバイス1000は、ハードウェア層1001と、仮想マシン(virtual machine、VM)層1002とを含む。VM層は、1つまたは複数のVMを含み得る。ハードウェア層1001は、VMの実行をサポートするために、VMのためのハードウェアリソースを提供する。VMの機能、および本出願に関連するプロセスは、図1~図8における対応する説明を参照して理解され得る。ハードウェア層1001は、プロセッサ、通信インターフェース、およびメモリなどのハードウェアリソースを含む。
本出願の他の実施形態は、コンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は、コンピュータ実行可能命令を記憶する。デバイスの少なくとも1つのプロセッサが、コンピュータ実行可能命令を実行するとき、デバイスは、図1~図8における実施形態において説明されたプロセス実行方法を行う。
本出願の他の実施形態は、コンピュータプログラム製品をさらに提供する。コンピュータプログラム製品は、コンピュータ実行可能命令を含み、コンピュータ実行可能命令は、コンピュータ可読記憶媒体に記憶されている。デバイスの少なくとも1つのプロセッサは、コンピュータ可読記憶媒体からコンピュータ実行可能命令を読み出しみ得る。少なくとも1つのプロセッサが、コンピュータ実行可能命令を実行するとき、デバイスは、図1~図8における実施形態において説明されたプロセス実行方法を行う。
本出願の他の実施形態は、チップシステムをさらに提供する。チップシステムは、図1~図8における実施形態において説明されたプロセス実行方法を実施するために、プロセス実行装置をサポートするように構成された、プロセッサを含む。可能な設計では、チップシステムは、メモリをさらに含み得る。メモリは、プロセス実行装置のために必要であるプログラム命令およびデータを記憶するように構成される。チップシステムは、チップを含み得るか、またはチップおよび他の個別構成要素を含み得る。
当業者は、本明細書で開示される実施形態において説明された例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェア、またはコンピュータソフトウェアと電子ハードウェアとの組合せによって実装され得ることを認識し得る。機能がハードウェアによって行われるか、またはソフトウェアによって行われるかは、技術的解決策の特定の適用例および設計制約に依存する。当業者は、特定の適用例ごとに、説明された機能を実装するために異なる方法を使用し得るが、その実装形態が本出願の実施形態の範囲を超えるものと見なされるべきではない。
当業者は、好都合で簡単な説明の目的で、上記のシステム、装置、およびユニットの詳細な作業プロセスについては、上記の方法実施形態における対応するプロセスを参照されたいことを、明確に理解し得る。詳細については本明細書で再度説明されない。
本出願の実施形態において提供されたいくつかの実施形態では、開示されたシステム、装置、および方法が、他の様式で実装され得ることを理解されたい。たとえば、説明された装置実施形態は、一例にすぎない。たとえば、ユニットへの分割は、論理機能分割にすぎず、実際の実装では他の分割であり得る。たとえば、複数のユニットまたは構成要素が、他のシステムに結合もしくは統合され得るか、またはいくつかの特徴は、無視され得るか、もしくは行われないことがある。加えて、表示または説明された相互結合または直接結合または通信接続は、いくつかのインターフェースを使用することによって実装され得る。装置またはユニット間の間接結合または通信接続は、電子的、機械的、または他の形態において実装され得る。
別個の部分として説明されたユニットは、物理的に別個であってもそうでなくてもよく、ユニットとして表示された部分は、物理ユニットであってもそうでなくてもよく、言い換えれば、1つの位置に配置され得るか、または複数のネットワークユニット上に分散され得る。ユニットの一部または全部は、実施形態の解決策の目的を達成するために、実際の要件に基づいて選択され得る。
加えて、本出願の実施形態における機能ユニットは、1つの処理ユニットに統合され得るか、またはユニットの各々が物理的に単独で存在し得るか、または2つ以上のユニットが1つのユニットに統合される。
機能が、ソフトウェア機能ユニットの形態で実装され、独立した製品として販売または使用されるとき、機能は、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づいて、本質的に本出願の実施形態の技術的解決策、または従来の技術に寄与する部分、または技術的解決策のうちのいくつかは、ソフトウェア製品の形態で実装され得る。コンピュータソフトウェア製品は、記憶媒体に記憶され、本出願の実施形態において説明された方法実施形態のステップのすべてまたは一部を行うように、コンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイスなどであり得る)に命令するためのいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。
80 プロセス実行装置
90、1000 コンピュータデバイス
100 自動運転装置
101 コンピュータシステム
103 プロセッサ
105 システムバス
107 ディスプレイアダプタ
109 ディスプレイ
111 バスブリッジ
113 入力/出力(I/O)バス
115 I/Oインターフェース
117 入力デバイス
121 メディアトレイ
123 トランシーバ
125 外部USBインターフェース
127 ネットワーク
129 ネットワークインターフェース
135 システムメモリ
137 オペレーティングシステム
139 機能安全パーティション(DPE)
141 カーネル
143 アプリケーション
147 自動運転関連プログラム
149 ソフトウェア展開サーバ
153 センサー
155 カメラ
801 受信ユニット
802 第1の処理ユニット
803 第2の処理ユニット
804 第3の処理ユニット
805 送信ユニット
901 プロセッサシステム
902 通信インターフェース
903 メモリ
904 バス
1001 ハードウェア層
1002 仮想マシン層
3の態様の可能な実装形態では、カーネルの物理リソースは、機能安全パーティションの物理リソースから分離される。
ハードドライブインターフェース131は、システムバス105に結合される。ハードドライブインターフェース131は、ハードディスクドライブに接続される。システムメモリ135は、システムバス105に結合される。システムメモリ135内で実行しているデータは、オペレーティングシステム137およびアプリケーション143を含み得る。
3の通知は、第2のエージェントモジュールを使用することによって、第1のエージェントモジュールに送信され得る。

Claims (20)

  1. プロセス実行方法であって、
    プロセス起動要求を受信するステップであって、前記プロセス起動要求は、ターゲットプロセスを開始することを指示するために使用される、ステップと、
    前記プロセス起動要求に基づいて、カーネル内で前記ターゲットプロセスの実行可能ファイルを実行して、前記カーネル内の前記ターゲットプロセスの実行をサポートする第1の実行機能データを取得するステップと、
    前記第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得するステップであって、前記機能安全パーティションおよび前記カーネルは、同じ特権層に配置される、ステップと、
    前記第2の実行機能データに基づいて、前記機能安全パーティション内で前記ターゲットプロセスを実行するステップと
    を含むプロセス実行方法。
  2. 前記第1の実行機能データは、前記ターゲットプロセスの仮想アドレスと、前記仮想アドレスと第1の物理アドレスとの間のマッピング関係と、前記ターゲットプロセスのコンテキストとを含み、前記第1の物理アドレスは、前記カーネルの記憶リソースにおける前記ターゲットプロセスに割り当てられた物理アドレスであり、
    前記第2の実行機能データは、前記ターゲットプロセスの前記仮想アドレスと、前記仮想アドレスと第2の物理アドレスとの間のマッピング関係と、前記ターゲットプロセスの前記コンテキストとを含み、前記第2の物理アドレスは、前記機能安全パーティションの記憶リソースにおける前記ターゲットプロセスに割り当てられた物理アドレスである、請求項1に記載の方法。
  3. 前記第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得する前記ステップは、
    前記仮想アドレスを前記機能安全パーティションに移行させるために、仮想マシンマネージャをトリガし、前記仮想アドレスと前記第1の物理アドレスとの間の前記マッピング関係を除去し、前記仮想アドレスと前記第2の物理アドレスとの間の前記マッピング関係を確立するステップと、
    共有メモリを使用することによって、前記機能安全パーティションに前記ターゲットプロセスの前記コンテキストを転送するステップであって、前記共有メモリは、前記カーネルおよび前記機能安全パーティションによって共有されるメモリである、ステップと
    を含む、請求項2に記載の方法。
  4. 前記方法は、
    前記ターゲットプロセスの前記実行可能ファイルが前記カーネル内で実行されるとき、前記カーネル内に第1のタスク構造を作成するステップであって、前記第1のタスク構造は、前記ターゲットプロセスの前記コンテキストを記憶するために使用される、ステップと、
    前記第1のタスク構造に指示値を追加するステップであって、前記指示値は、前記ターゲットプロセスが前記機能安全パーティション内で実行される必要があることを示す、ステップと、
    前記ターゲットプロセスが実行されるとき、前記指示値に基づいて、前記カーネルから前記機能安全パーティションに第1の通知を送信するステップであって、前記第1の通知は、前記機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される、ステップと、
    前記第1の通知に基づいて、前記第2のタスク構造を作成し、前記第2のタスク構造内に前記ターゲットプロセスの前記コンテキストを記憶するステップと
    をさらに含む、請求項3に記載の方法。
  5. 前記方法は、
    前記共有メモリから前記機能安全パーティションに前記ターゲットプロセスの前記コンテキストを読み出すステップと、
    前記ターゲットプロセスの前記コンテキストに対して一貫性検査を行って、第1の検査値を取得するステップと、
    前記第1の検査値が第2の検査値と同じである場合、前記ターゲットプロセスの前記コンテキストがセキュアなデータであると決定するステップであって、前記第2の検査値は、前記ターゲットプロセスの初期構成コンテキストに対して一貫性検査を行うことによって取得された、信用できる値である、ステップと
    をさらに含む、請求項3または4に記載の方法。
  6. 前記方法は、
    前記ターゲットプロセスが実行されるとき、前記機能安全パーティションのシステムコール命令が呼び出される場合、前記機能安全パーティションから前記共有メモリ内に前記システムコール命令のコンテキストを記憶するステップと、
    前記機能安全パーティションから前記カーネルに第2の通知を送信するステップであって、前記第2の通知は、システムコールが発生することを示すために使用される、ステップと、
    前記共有メモリから前記システムコール命令の前記コンテキストを読み出し、前記システムコール命令の前記コンテキストに基づいて、前記カーネルのシステムコール命令を呼び出して、システムコールを行って、前記システムコールの戻り値を取得するステップと、
    前記共有メモリを使用することによって、前記機能安全パーティションに前記システムコールの前記戻り値を転送するステップと
    をさらに含む、請求項3から5のいずれか一項に記載の方法。
  7. 前記方法は、
    前記共有メモリから前記機能安全パーティションに前記システムコールの前記戻り値を読み出すステップと、
    前記システムコールの前記戻り値に対して一貫性検査を行って、第3の検査値を取得するステップと、
    前記第3の検査値が第4の検査値と同じである場合、前記システムコールの前記戻り値がセキュアなデータであると決定するステップであって、前記第4の検査値は、前記システムコールに対応する元のファイルに基づいて、一貫性検査を行うことによって取得された、信用できる値である、ステップと
    をさらに含む、請求項6に記載の方法。
  8. 前記方法は、
    前記ターゲットプロセスが実行されるとき、ページフォールトが発生する場合、前記機能安全パーティションから前記共有メモリ内に前記ページフォールトのコンテキストを記憶するステップと、
    前記機能安全パーティションから前記カーネルに第3の通知を送信するステップであって、前記第3の通知は、ページフォールトが発生することを示すために使用される、ステップと、
    前記共有メモリから前記ページフォールトの前記コンテキストを読み出し、前記ページフォールトの前記コンテキストに基づいて、前記カーネル内でページフォールト処理機能を呼び出し、前記ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得するステップと、
    前記共有メモリを使用することによって、前記機能安全パーティションに前記処理結果を転送するステップと
    をさらに含む、請求項3から6のいずれか一項に記載の方法。
  9. 前記ターゲットプロセスは、スレッドおよびコルーチンを含み、前記スレッドは、前記カーネル内に作成され、前記機能安全パーティション内で実行され、前記コルーチンは、前記機能安全パーティション内に作成され、前記機能安全パーティション内で実行され、
    前記機能安全パーティションは、統合スケジューラを含み、前記統合スケジューラは、前記スレッドおよび前記コルーチンを統合的にスケジュールするように構成される、請求項1から8のいずれか一項に記載の方法。
  10. プロセス実行装置であって、
    プロセス起動要求を受信することであって、前記プロセス起動要求は、ターゲットプロセスを開始することを指示するために使用される、受信することを行うように構成された、受信ユニットと、
    前記受信ユニットによって受信された前記プロセス起動要求に基づいて、カーネル内で前記ターゲットプロセスの実行可能ファイルを実行して、前記カーネル内の前記ターゲットプロセスの実行をサポートする第1の実行機能データを取得するように構成された、第1の処理ユニットと、
    前記第1の処理ユニットによって取得された前記第1の実行機能データを機能安全パーティションに移行させて、第2の実行機能データを取得することであって、前記機能安全パーティションおよび前記カーネルは、同じ特権層に配置される、取得することを行うように構成された、第2の処理ユニットと、
    前記第2の処理ユニットによって取得された前記第2の実行機能データに基づいて、前記機能安全パーティション内で前記ターゲットプロセスを実行するように構成された、第3の処理ユニットと
    を含むプロセス実行装置。
  11. 前記第1の実行機能データは、前記ターゲットプロセスの仮想アドレスと、前記仮想アドレスと第1の物理アドレスとの間のマッピング関係と、前記ターゲットプロセスのコンテキストとを含み、前記第1の物理アドレスは、前記カーネルの記憶リソースにおける前記ターゲットプロセスに割り当てられた物理アドレスであり、
    前記第2の実行機能データは、前記ターゲットプロセスの前記仮想アドレスと、前記仮想アドレスと第2の物理アドレスとの間のマッピング関係と、前記ターゲットプロセスの前記コンテキストとを含み、前記第2の物理アドレスは、前記機能安全パーティションの記憶リソースにおける前記ターゲットプロセスに割り当てられた物理アドレスである、請求項10に記載の装置。
  12. 前記第2の処理ユニットは、前記仮想アドレスを前記機能安全パーティションに移行させるために、仮想マシンマネージャをトリガし、前記仮想アドレスと前記第1の物理アドレスとの間の前記マッピング関係を除去し、前記仮想アドレスと前記第2の物理アドレスとの間の前記マッピング関係を確立すること、ならびに共有メモリを使用することによって、前記機能安全パーティションに前記ターゲットプロセスの前記コンテキストを転送することであって、前記共有メモリは、前記カーネルおよび前記機能安全パーティションによって共有されるメモリである、転送することを行うように構成される、請求項11に記載の装置。
  13. 前記装置は、第1の送信ユニットをさらに含み、
    前記第1の処理ユニットは、前記カーネル内で前記ターゲットプロセスの前記実行可能ファイルを実行するとき、前記カーネル内に第1のタスク構造を作成することであって、前記第1のタスク構造は、前記ターゲットプロセスの前記コンテキストを記憶するために使用される、作成すること、および前記第1のタスク構造に指示値を追加することであって、前記指示値は、前記ターゲットプロセスが前記機能安全パーティション内で実行される必要があることを示す、追加することを行うようにさらに構成され、
    前記第1の送信ユニットは、前記ターゲットプロセスが実行されるとき、前記指示値に基づいて、前記カーネルから前記機能安全パーティションに第1の通知を送信することであって、前記第1の通知は、前記機能安全パーティション内に第2のタスク構造を作成することを指示するために使用される、送信することを行うように構成され、
    前記第3の処理ユニットは、前記第1の通知に基づいて、前記第2のタスク構造を作成し、前記第2のタスク構造内に前記ターゲットプロセスの前記コンテキストを記憶するように構成される、請求項12に記載の装置。
  14. 前記第3の処理ユニットは、前記共有メモリから前記機能安全パーティションに前記ターゲットプロセスの前記コンテキストを読み出すこと、前記ターゲットプロセスの前記コンテキストに対して一貫性検査を行って、第1の検査値を取得すること、および前記第1の検査値が第2の検査値と同じである場合、前記ターゲットプロセスの前記コンテキストがセキュアなデータであると決定することであって、前記第2の検査値は、前記ターゲットプロセスの初期構成コンテキストに対して一貫性検査を行うことによって取得された、信用できる値である、決定することを行うようにさらに構成される、請求項12または13に記載の装置。
  15. 前記装置は、第2の送信ユニットをさらに含み、
    前記第3の処理ユニットは、前記ターゲットプロセスが実行されるとき、前記機能安全パーティションのシステムコール命令が呼び出される場合、前記機能安全パーティションから前記共有メモリ内に前記システムコール命令のコンテキストを記憶するように構成され、
    前記第2の送信ユニットは、前記機能安全パーティションから前記カーネルに第2の通知を送信することであって、前記第2の通知は、システムコールが発生することを示すために使用される、送信することを行うように構成され、
    前記第2の処理ユニットは、前記共有メモリから前記システムコール命令の前記コンテキストを読み出し、前記システムコール命令の前記コンテキストに基づいて、前記カーネルのシステムコール命令を呼び出して、システムコールを行って、前記システムコールの戻り値を取得すること、および前記共有メモリを使用することによって、前記機能安全パーティションに前記システムコールの前記戻り値を転送することを行うようにさらに構成される、請求項12から14のいずれか一項に記載の装置。
  16. 前記第3の処理ユニットは、前記共有メモリから前記機能安全パーティションに前記システムコールの前記戻り値を読み出すこと、前記システムコールの前記戻り値に対して一貫性検査を行って、第3の検査値を取得すること、および前記第3の検査値が第4の検査値と同じである場合、前記システムコールの前記戻り値がセキュアなデータであると決定することであって、前記第4の検査値は、前記システムコールに対応する元のファイルに基づいて、一貫性検査を行うことによって取得された、信用できる値である、決定することを行うようにさらに構成される、請求項15に記載の装置。
  17. 前記装置は、第3の送信ユニットをさらに含み、
    前記第3の処理ユニットは、前記ターゲットプロセスが実行されるとき、ページフォールトが発生する場合、前記機能安全パーティションから前記共有メモリ内に前記ページフォールトのコンテキストを記憶するようにさらに構成され、
    前記第3の送信ユニットは、前記機能安全パーティションから前記カーネルに第3の通知を送信することであって、前記第3の通知は、ページフォールトが発生することを示すために使用される、送信することを行うように構成され、
    前記第2の処理ユニットは、前記共有メモリから前記ページフォールトの前記コンテキストを読み出し、前記ページフォールトの前記コンテキストに基づいて、前記カーネル内でページフォールト処理機能を呼び出し、前記ページフォールト処理機能に基づいて、ページフォールト処理を行って、処理結果を取得すること、および前記共有メモリを使用することによって、前記機能安全パーティションに前記処理結果を転送することを行うようにさらに構成される、請求項12から16のいずれか一項に記載の装置。
  18. プロセッサと、コンピュータプログラムを記憶するコンピュータ可読記憶媒体とを含む、コンピューティングデバイスであって、
    前記プロセッサは、前記コンピュータ可読記憶媒体に結合され、前記コンピュータプログラムが前記プロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法が実施される、コンピューティングデバイス。
  19. コンピュータ可読記憶媒体であって、コンピュータプログラムを記憶し、前記コンピュータプログラムがプロセッサによって実行されると、請求項1から9のいずれか一項に記載の方法が実施される、コンピュータ可読記憶媒体。
  20. プロセッサを含む、チップシステムであって、前記プロセッサは、請求項1から9のいずれか一項に記載の方法を行うために呼び出される、チップシステム。
JP2022581002A 2020-06-30 2021-05-26 プロセス実行方法および装置 Pending JP2023532324A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010616278.7 2020-06-30
CN202010616278.7A CN113867828A (zh) 2020-06-30 2020-06-30 一种运行进程的方法及装置
PCT/CN2021/095905 WO2022001506A1 (zh) 2020-06-30 2021-05-26 一种运行进程的方法及装置

Publications (1)

Publication Number Publication Date
JP2023532324A true JP2023532324A (ja) 2023-07-27

Family

ID=78981558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022581002A Pending JP2023532324A (ja) 2020-06-30 2021-05-26 プロセス実行方法および装置

Country Status (5)

Country Link
US (1) US20230146364A1 (ja)
EP (1) EP4160399A4 (ja)
JP (1) JP2023532324A (ja)
CN (1) CN113867828A (ja)
WO (1) WO2022001506A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116204458A (zh) * 2021-11-30 2023-06-02 华为技术有限公司 一种运行进程的方法及装置
CN116775234A (zh) * 2022-03-11 2023-09-19 华为技术有限公司 一种进程的执行状态切换方法及装置
CN115081033B (zh) * 2022-07-20 2022-11-11 南方电网数字电网研究院有限公司 一种数字配电网边缘计算装置业务安全隔离方法
CN116450207A (zh) * 2023-06-14 2023-07-18 北京鉴智科技有限公司 自动驾驶感知处理方法、装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349355B1 (en) * 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
US7721298B2 (en) * 2004-12-03 2010-05-18 Microsoft Corporation Operating system performance
CN104102535B (zh) * 2013-04-01 2018-10-02 华为技术有限公司 进程迁移方法和可迁移操作系统
CN104216862B (zh) * 2013-05-29 2017-08-04 华为技术有限公司 一种用户进程与系统服务之间的通信方法、装置
CN103324887B (zh) * 2013-07-05 2016-12-28 百度在线网络技术(北京)有限公司 移动终端的安全防御装置、方法和移动终端
CN108959916B (zh) * 2017-05-22 2022-01-14 华为技术有限公司 用于访问安全世界的方法、装置和系统
US10824466B2 (en) * 2018-09-26 2020-11-03 International Business Machines Corporation Container migration
CN110597640A (zh) * 2019-08-29 2019-12-20 深圳市优必选科技股份有限公司 进程间的数据传输方法、装置、终端及计算机存储介质

Also Published As

Publication number Publication date
WO2022001506A1 (zh) 2022-01-06
EP4160399A4 (en) 2023-10-25
CN113867828A (zh) 2021-12-31
EP4160399A1 (en) 2023-04-05
US20230146364A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
JP2023532324A (ja) プロセス実行方法および装置
EP3195176B1 (en) Trusted execution environment extensible computing device interface
US9547346B2 (en) Context agent injection using virtual machine introspection
US9092356B2 (en) Executing a kernel device driver as a user space process
US11385903B2 (en) Firmware update patch
CN112035272A (zh) 进程间通信的方法、装置以及计算机设备
CN113939805A (zh) 一种进程间通信的方法及系统
EP4155949A1 (en) Method and apparatus for isolating kernel from task
JP2021532495A (ja) 仮想マシン・メモリの安全なアクセス
Van't Hof et al. Androne: Virtual drone computing in the cloud
CN113010265A (zh) Pod的调度方法、调度器、存储插件及系统
US11836475B2 (en) Electronic control unit, software update method, software update program product and electronic control system
CN111382450A (zh) 安全可靠的虚拟化域特定硬件加速器
US20230185595A1 (en) Method for realizing live migration, chip, board, and storage medium
US20230342503A1 (en) Security Isolation Apparatus and Method
US20220261489A1 (en) Capability management method and computer device
Karthik et al. Hypervisor based approach for integrated cockpit solutions
WO2023098536A1 (zh) 一种运行进程的方法及装置
Zhang et al. Porting an autosar-compliant operating system to a high performance embedded platform
WO2020028509A1 (en) Method and apparatus for software isolation and security utilizing multi-soc orchestration
WO2023020069A1 (zh) 虚拟机管理方法及相关系统、存储介质
CN112368680A (zh) 基本运行环境
US20220171612A1 (en) Electronic control unit, software update method, software update program product and electronic control system
US20240036941A1 (en) Vehicle-mounted computer, computer execution method, and computer program
WO2024023204A1 (en) Isolation of applications by a kernel

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240301