
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 。
唤醒日志如下:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)