Corey: an operating system for many cores
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

#. 由于内核为了保护更多的数据，因此锁的竞争随着核数的增加变得日益严峻。共享数据
   和锁的竞争开销，核间的TLB invalidation的开销让内核成为瓶颈。

#. 主要的思想是避免在多核机器上做成本较高的操作。程序应该控制所有的共享，这里有
   两层含义：

   - 内核只使用本地的数据结构
   - 内核暴露接口给用户态来让用户权衡收益和共享开销。

   这样做的结果就是程序能定制处理器和共享内存的使用，来实现极致性能。内核默认
   不在核间共享数据，但是如果应用程序需要共享数据时，内核具备这种能力。Adress
   trees可以控制哪些页表条目时核私有的，哪些时可以共享的。操作前者没有什么竞争，
   而且也极少有核间的TLB Invalidations,  操作后者可以在lazily contruct时减少
   soft page fault。内核可以让应用程序指定运行在哪个核上，减少竞争，通过共享内存
   来实现IPC，避免陷入到内核态。


    
