<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          鴻蒙標(biāo)準(zhǔn)庫與 Linux 標(biāo)準(zhǔn)庫有什么區(qū)別?

          共 1875字,需瀏覽 4分鐘

           ·

          2021-01-26 18:22

          與Linux標(biāo)準(zhǔn)庫的差異

          本章節(jié)描述了OpenHarmony內(nèi)核承載的標(biāo)準(zhǔn)庫與Linux標(biāo)準(zhǔn)庫之間存在的關(guān)鍵差異。更多差異詳見C庫API文檔說明。

          進程

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

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

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

          4. 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)目錄:用戶無法對其進行修改,或是設(shè)備掛載。包含/dev,/proc,/app,/bin,/data,/etc,/lib,/system,/usr目錄。

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

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

          信號

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

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

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

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

          Time

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


          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美 在线 综合 | 就去操逼伊人 | 18禁国产精品久久久久 | 青色亚洲 | 中文字幕在线官网 |