一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony內(nèi)核標準庫與Linux標準庫有何區(qū)別

鴻蒙系統(tǒng)HarmonyOS ? 來源:oschina ? 作者:恰飯君 ? 2020-10-21 14:41 ? 次閱讀

本文描述了 OpenHarmony 內(nèi)核承載的標準庫與 Linux 標準庫之間存在的關(guān)鍵差異。

進程

OpenHarmony 用戶態(tài)進程優(yōu)先級只支持靜態(tài)優(yōu)先級且用戶態(tài)可配置的優(yōu)先級范圍為10(最高優(yōu)先級)-31(最低優(yōu)先級)。

OpenHarmony 用戶態(tài)線程優(yōu)先級只支持靜態(tài)優(yōu)先級且用戶態(tài)可配置的優(yōu)先級范圍為0(最高優(yōu)先級)-31(最低優(yōu)先級)。

OpenHarmony 調(diào)度策略支持 SCHED_RR 和 SCHED_FIFO。

sched_yield() 為進程主動放棄 CPU;thrd_yield() 為線程主動放棄 CPU。

內(nèi)存

與 Linux mmap 的差異

mmap接口原型為:void *mmap (void *addr, size_t length, int prot, int flags, int fd, off_t offset)。

其中,參數(shù)fd的生命周期實現(xiàn)與Linux glibc存在差異。具體體現(xiàn)在,glibc在成功調(diào)用mmap進行映射后,可以立即釋放fd句柄。在OpenHarmony內(nèi)核中,不允許用戶在映射成功后立即關(guān)閉相關(guān)fd,只允許在取消映射munmap后再進行fd的close操作。如果用戶不進行fd的close操作,操作系統(tǒng)將在進程退出時對該fd進行回收。

代碼舉例

Linux目前支持的情況如下:

int main(int argc, char *argv[])
{
    int fd;
    void *addr = NULL;
    ...
    fd = open(argv[1], O_RDONLY);
    if (fd == -1){
        perror("open");
        exit(EXIT_FAILURE);
    }
    addr = mmap(NULL, length, PROT_READ, MAP_PRIVATE, fd, offset);
    if (addr == MAP_FAILED) {
        perror("mmap");
        exit(EXIT_FAILURE);
    }
    close(fd); /* close immediately, OpenHarmony do not support this way */ 
    ...
    exit(EXIT_SUCCESS);
}

OpenHarmony支持的情況如下:

int main(int argc, char *argv[])
{
    int fd;
    void *addr = NULL;
    ...
    fd = open(argv[1], O_RDONLY);
    if (fd == -1){
        perror("open");
        exit(EXIT_FAILURE);
    }
    addr = mmap(NULL, length, PROT_READ, MAP_PRIVATE, fd, offset);
    if (addr == MAP_FAILED) {
        perror("mmap");
        exit(EXIT_FAILURE);
    }
    ...
    munmap(addr, length);
    close(fd); /* close after munmap */
    exit(EXIT_SUCCESS);
}

文件系統(tǒng)

**系統(tǒng)目錄:**用戶無法對其進行修改,或是設備掛載。包含/dev,/proc,/app,/bin,/data,/etc,/lib,/system,/usr目錄。

用戶目錄:用戶可以在該目錄下進行文件創(chuàng)建、讀寫,但不能進行設備掛載。用戶目錄指/storage目錄。

除系統(tǒng)目錄與用戶目錄之外,用戶可以自行創(chuàng)建文件夾進行設備的掛載。但是要注意,已掛載的文件夾及其子文件夾不允許重復或者嵌套掛載,非空文件夾不允許掛載。

信號

信號默認行為不支持STOP、CONTINUE、COREDUMP功能。

無法通過信號喚醒正在睡眠狀態(tài)(舉例:進程調(diào)用sleep函數(shù)進入睡眠)的進程。原因:信號機制無喚醒功能,當且僅當進程被CPU調(diào)度運行時才能處理信號內(nèi)容。

進程退出后會發(fā)送SIGCHLD給父進程,發(fā)送動作無法取消。

信號僅支持1-30號信號,接收方收到多次同一信號,僅執(zhí)行一次回調(diào)函數(shù)。

Time

OpenHarmony當前時間精度以tick計算,系統(tǒng)默認10ms/tick。sleep、timeout系列函數(shù)時間誤差<=20ms。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11011

    瀏覽量

    215245
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11420

    瀏覽量

    212361
  • OpenHarmony
    +關(guān)注

    關(guān)注

    26

    文章

    3804

    瀏覽量

    17890
收藏 人收藏

    評論

    相關(guān)推薦

    stm32用hal標準什么區(qū)別

    stm32用hal標準什么區(qū)別
    發(fā)表于 07-20 08:20

    HAL標準的原理區(qū)別

    HAL的學習HAL標準的原理區(qū)別串口通信實驗包含的文件區(qū)別具體代碼
    發(fā)表于 07-29 08:48

    標準和HAL區(qū)別

    ,程序癱瘓了,所以今天咱們來看看標準和HAL區(qū)別,各個他的優(yōu)點在哪里。
    發(fā)表于 08-04 08:22

    CMSIS標準層次關(guān)系

    1、CMSIS標準層次關(guān)系基于Context系列芯片采用的內(nèi)核都是相同的,區(qū)別主要為核外的片上外設的差異,而這些差異卻導致軟件在同內(nèi)核、
    發(fā)表于 08-13 06:37

    STM32標準和HAL哪些不同

    STM32標準和HAL哪些不同?標準和HAL
    發(fā)表于 10-21 07:44

    STM32 HAL標準區(qū)別有哪些

    STM32的開發(fā)方式哪幾種?怎樣去安裝HAL固件呢?STM32 HAL標準
    發(fā)表于 10-25 07:49

    HAL標準哪些區(qū)別

    什么是HAL標準又是什么?HAL標準
    發(fā)表于 10-26 06:54

    請問STM32 HAL標準區(qū)別是什么?

    請問STM32 HAL標準區(qū)別是什么?
    發(fā)表于 11-25 08:43

    STM32F103C8T6標準的USART2是怎樣發(fā)送程序的

    STM32F103C8T6標準和STM32F4標準區(qū)
    發(fā)表于 12-13 06:12

    OpenHarmony內(nèi)核學習[1]--單獨編譯OpenHarmony標準系統(tǒng)內(nèi)核

    OpenHarmony標準系統(tǒng)類設備(參考內(nèi)存≥128MiB),OpenHarmony選擇Linux內(nèi)核作為
    發(fā)表于 02-03 10:46

    請問標準外設和HAL區(qū)別是什么?

    標準外設和HAL區(qū)別是什么?
    發(fā)表于 10-23 08:01

    STM32 HAL標準區(qū)別

    ??相比較早幾年使用標準開發(fā)來講,最近幾年HAL的使用是越來越多,那么我們開發(fā)應當使用哪一種呢,本文著重介紹常用的幾種開發(fā)方式及相互之間的區(qū)別,白貓也好、黑貓也好,抓到耗子就是好貓
    的頭像 發(fā)表于 03-22 09:13 ?1.6w次閱讀

    總結(jié)移植三方OpenHarmony的經(jīng)驗

    三方主要是基于標準 Linux 系統(tǒng)的 c/c++ 開源,所以三方的移植工作,首先是在標準
    的頭像 發(fā)表于 05-07 15:52 ?6870次閱讀

    STM32 HAL的功能和使用方法 STM32 HAL標準區(qū)別

    和可維護性,從而節(jié)省開發(fā)成本和時間。STM32 HAL是STM32系列芯片的HAL,由ST公司提供和維護。下面將介紹STM32 HAL的功能、使用方法以及與標準
    發(fā)表于 08-08 18:21 ?5832次閱讀

    HAL標準區(qū)別 HAL與CMSIS的關(guān)系

    在嵌入式系統(tǒng)開發(fā)中,HAL(硬件抽象層)標準是兩種常用的軟件,它們在功能和使用場景上有所不同。 1. 標準
    的頭像 發(fā)表于 12-02 14:02 ?2663次閱讀