本文描述了 OpenHarmony 内核承载的标准库与 Linux 标准库之间存在的关键差异。
进程
- OpenHarmony 用户态进程优先级只支持静态优先级且用户态可配置的优先级范围为10(最高优先级)-31(最低优先级)。
- OpenHarmony 用户态线程优先级只支持静态优先级且用户态可配置的优先级范围为0(最高优先级)-31(最低优先级)。
- OpenHarmony 调度策略支持 SCHED_RR 和 SCHED_FIFO。
- 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