鸿蒙内核标准库与linux标准库的差异,复杂问题简单说

本文探讨了OpenHarmony内核与Linux在进程、内存管理、mmap接口、文件系统、信号和时间方面的区别。OpenHarmony中进程和线程优先级仅支持静态,mmap接口在释放fd上有不同规定,信号不支持STOP等功能,时间精度以tick计算,可能导致最多20ms误差。
摘要由CSDN通过智能技术生成

鸿蒙内核标准库与linux标准库的差异

本文描述了 OpenHarmony 内核承载的标准库与 Linux 标准库之间存在的关键差异。

进程

  1. OpenHarmony 用户态进程优先级只支持静态优先级且用户态可配置的优先级范围为10(最高优先级)-31(最低优先级)。
  2. OpenHarmony 用户态线程优先级只支持静态优先级且用户态可配置的优先级范围为0(最高优先级)-31(最低优先级)。
  3. OpenHarmony 调度策略支持 SCHED_RR 和 SCHED_FIFO。
  4. sched_yield() 为进程主动放弃 CPU;thrd_yield() 为线程主动放弃 CPU。

内存

与 Linux mmap 的差异

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

其中,参数fd的生命周期实现与Linux glibc存在差异。具体体现在,glibc在成功调用mmap进行映射后,可以立即释放fd句柄。在OpenHarmony内核中,不允许用户在映射成功后立即关闭相关fd,只允许在取消映射munmap后再进行fd的close操作。如果用户不进行fd的close操作,操作系统将在进程退出时对该fd进行回收。

代码举例

Linux目前支持的情况如下:

int main(int argc, char *argv[])
{    int fd;
    void *addr = NULL;
    ...    fd = open
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值