ShannonChenCHN/iOSDevLevelingUp

操作系统

ShannonChenCHN opened this issue · 5 comments

  • 种类
  • 方向
    • CPU 管理、分时操作
    • 内存管理、分段、分页
    • 进程管理、线程调度
    • 文件系统
    • 网络通讯
    • 用户界面
    • 驱动程序

延伸阅读

堆和栈的区别

1. 栈内存(stack)

栈是用来存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,是由系统自动分配的(所以不需要程序员手动管理),一般速度较快;存储地址是连续且存在有限栈容量,会出现溢出现象。

2. 堆内存(heap)

堆是由程序员手动分配释放的,通过malloc和new等动态申请内存的语句使用,也需要用户手动回收(或可能在程序结束时OS自动回收,在 iOS 中有 autoreleasepool 会自动释放对象),而对于面向对象程序来说,new出来的任何对象,无论是对象内部的成员变量,局部变量,类变量,他们指向的对象都存储在堆内存中(但指针本身存在栈中),一般速度较栈慢;存储地址通常是链式的,内存较大不会溢出。

参考