谁能够详细介绍下MAC系统的内核

谁能够详细介绍下MAC系统的内核,第1张

Mac OS X系统的内核是混合内核,称之为XNU。 XNU的核心是Mach,BSD层建立在Mach之上。它们都在相同的地址空间中,并且具有与单核相同的高效率。

混合内核:

混合内核希望结合单核和微内核的优势。核心底层服务(包括调度,进程通信和虚拟内存)包含在核心位置,就像微内核一样。对于此核心之外的服务,内核状态与此核心位于相同的内存空间中。

XNU马赫:

马赫和BSD有自己的责任分工,所以让我们说马赫有这些核心责任。

进程和线程管理:我们通常使用的POSIX线程和NSThread与Mach层线程一一对应。 POSIX线程是线程的BSD层的更高级抽象。

虚拟内存分配和管理。

分配和调度CPU等物理设备。

例外:Mach在现有消息传递机制上实现异常处理机制。以下是应用程序级开发人员的详细介绍。如何做Mach异常捕获,可以用它来做一些崩溃信息的收集。其他崩溃收集文章可以在这里找到。

如果要执行mach异常捕获,则需要注册一个异常端口,该端口对当前任务的所有线程都有效。如果要定位单个线程,可以使用thread_set_exception_ports注册自己的异常端口。

发生异常时,首先将异常抛出到线程的异常端口,然后尝试抛出任务的异常端口。当捕获异常时,可以做一些自己的工作,例如当前的堆栈集合。

扩展资料:

HFS +文件系统解析:

除了允许用户稳定存储文件的目标之外,文件系统是各种 *** 作系统功能的基础。 MacOSX的每个主要版本都增加了数百个新功能,其中许多功能严重依赖于文件系统实现。 MacOSX 10.3提供FileVault来加密用户文件,因此用户的主目录存储在HFS +文件系统加密图像中。

参考资料:百度百科-Mac OS

1. DAC(Discretionary Access Control,自主访问控制)

① DAC是传统的Linux的访问控制方式,DAC可以对文件、文件夹、共享资源等进行访问控制。

② 在DAC这种模型中,文件客体的所有者(或者管理员)负责管理访问控制。

③ DAC使用了ACL(Access Control List,访问控制列表)来给非管理者用户提供不同的权限,而root用户对文件系统有完全自由的控制权。

2. MAC(Mandatory Access Control,强制访问控制)

① SELinux在内核中使用MAC检查 *** 作是否允许。

② 在MAC这种模型中,系统管理员管理负责访问控制,用户不能直接改变强制访问控制属性。

③MAC可以定义所有的进程(称为主体)对系统的其他部分(文件、设备、socket、端口和其它进程等,称为客体)进行 *** 作的权限或许可。

3. DAC和MAC的其它区别

① DAC的主体是真实有效的用户和组ID,MAC的主体是安全上下文,两者的UID是各自独立的。

② DAC的访问控制模式是rwxrwxrwx,MAC的访问控制模式是user:role:type。

本文基于 RockPI 4A 单板 Debian 系统 Linux4.4 内核介绍下睡眠唤醒( suspend/resume )的一些调试方法。

1、关闭串口睡眠

在Linux内核睡眠过程中,会先调用 suspend_console() 函数使串口进入睡眠状态,这样会导致后续设备驱动的睡眠过程不可见。可以在boot启动参数中增加 no_console_suspend 参数,显示设备驱动睡眠日志。

2、修改串口日志等级

修改串口日志打印等级,显示更多调试信息。

3、打开设备睡眠唤醒时间

设置 pm_print_times 参数,可以显示设备驱动睡眠唤醒时间,方便调试时查看哪个函数处理占用时间过长。

在调试Linux内核睡眠唤醒功能时,可以使用 RTC 做唤醒源,在系统睡眠5秒后,自动唤醒系统。

在 arch/arm64/configs/rockchip_linux_defconfig 文件中配置宏 CONFIG_PM_TEST_SUSPEND 。

唤醒日志如下:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8384081.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存