操作系统
ShannonChenCHN opened this issue · 5 comments
ShannonChenCHN commented
- 种类
- Linux
- macOS
- iOS
- watchOS
- tvOS
- Windows
- Android
- 方向
- CPU 管理、分时操作
- 内存管理、分段、分页
- 进程管理、线程调度
- 文件系统
- 网络通讯
- 用户界面
- 驱动程序
ShannonChenCHN commented
延伸阅读
- 进程间通信 (OSX/iOS)
- 书籍
- 《程序员的自我修养——链接、装载与库》
- 《操作系统》
- NT vs.UNIX: Is One Substantially Better
- Mac OS X 背后的故事(作者:王越)
- iOS Memory Deep Dive
- macOS 内核之内存占用信息
ShannonChenCHN commented
堆和栈的区别
1. 栈内存(stack)
栈是用来存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,是由系统自动分配的(所以不需要程序员手动管理),一般速度较快;存储地址是连续且存在有限栈容量,会出现溢出现象。
2. 堆内存(heap)
堆是由程序员手动分配释放的,通过malloc和new等动态申请内存的语句使用,也需要用户手动回收(或可能在程序结束时OS自动回收,在 iOS 中有 autoreleasepool 会自动释放对象),而对于面向对象程序来说,new出来的任何对象,无论是对象内部的成员变量,局部变量,类变量,他们指向的对象都存储在堆内存中(但指针本身存在栈中),一般速度较栈慢;存储地址通常是链式的,内存较大不会溢出。
参考
ShannonChenCHN commented
ShannonChenCHN commented