1. 计算机系统
- OS特征 :并发 /共享(互斥访问,共享访问) /虚拟- 空分复用(内存),时分复用(CPU时间片) / 异步
- CPU状态 : 核心态-保护/用户态->通过中断/异常访管指令访问核心态
- 内核:计时/时间片调度/中断机制/原语-设备驱动控制/数据结构及处理
- 体系结构:大内核/微内核
2. 进程管理
- 进程: CPU分配资源的单位 vs 线程是CPU独立调度的单位,进程由程序段,数据段,PCB(进程控制块)组成,运行状态包括就绪、执行、阻塞。
- 进程通信
- 共享存储
- 消息: 消息缓冲区
- 管道(单双工)
- 进程同步
- 软件实现
- 硬件: 中断/硬件指令(swap/TestAndSet)
- 信号量 wait-signal
- 作业调度算法: 先来先服务/ 短作业优先/优先级调度/时间片,多级反馈队列算法: 多个就绪队列,时间长的自动排到下一优先级队尾
- 死锁: 多个进程竞争同一资源产生互相等待,既得不到被其他进程占用的资源,也不释放自己已经占据的资源。产生的4个必要条件及检测解决(略)
3. 内存管理(MMU)
- 解决OS空分复用中内存访问防护与定位:利用映射单元,通过基址和界限寄存器,保证程序不能引用低于基址和高于界限的的存储空间。
- 内存地址转换: 逻辑地址向物理地址转换
- 虚拟内存管理:把程序所需存储空间分成若干页或段
- 分页式(通过硬件机制实现,一页默认4K)
- 分段式(将程序划分为多段, 每个段都从0开始,由段号+段内地址构成,方便通过段号实现信息共享和保护动态链接等)
- 段页式 缺页中断: 访问时不在内存中,暂停当前线程,载入内存,即缺页中断处理。
4. 文件管理(略)
5. IO外设
管理控制 (从低到高,对CPU的干扰占用逐级降低)
- 程序控制
- 中断驱动
- DMA方式
- 通道控制方式
问答
- malloc是真正分配物理内存吗?
不是。malloc分配的是虚拟地址空间, 通过进程页表映射到物理空间,第一次使用该内存时分配物理空间。 - free会真正收回物理内存吗?
不一定。 free()空间 >128K时(依实现此阈值不同) unmap返还给OS当<128K时,使用sbrk回收,并且只有当堆顶总空间>128k,才会还给OS。所以free后内存并不一定还给OS。在系统中可以看到VSZ:申请的虚拟地址空间大小,RSS是实际分配内存的大小。