1- P4 hello world引发的一系列问题。
答案在哪里?
2- P14 内存不够(重点阅读)
程序直接访问物理内存引发的3个问题:
a- 地址空间不隔离。进程A和B运行在物理空间,进程A直接操作物理空间(操作的物理地址可能是进程B的进程空间),导致进程B运行异常。
解决方案:内存隔离。进程A、B运行与虚拟内存,虚拟内存和物理内存的映射由MMU决定。当A访问越界,产生中断,异常处理。
b- 程序置换效率低下。如果内存空间只有2G。其中程序A需要0.5G,程序B需要1G,程序C需要0.8G。那么同一时刻只能保证有连个程序运行,如果另一个程序运行,需要将其他程序换出到磁盘,效率低下。
解决方案:使用内存分页。程序分成以4M为大小的页,常使用的程序段方案内存中,不常使用的放在磁盘中。
c- 程序地址不定。 程序置换前,导致程序运行的物理地址不定。
解决方案:内存隔离。程序使用虚拟内存空间。
3- P27可重入
多线程均可访问,不加保护也不会产生异常的接口是可重入的。
简单来说,该接口中没有涉及到共享的资源。
4- P30 多线程内部情况
用户线程和内核线程的对应关系:操作系统 线程模型 用户级线程 内核级线程 混合线程 多对一模型 一对一模型 多对多模型
不理解点:
1- P26提到的信号量、互斥量等手段是对多线程间安全?多处理器间安全?多核间安全?多进程间安全?
2- P30 内核线程和用户线程的是一种什么概念?