关于操作系统内存储器读写保护的一个疑问,很迷惑

关于操作系统内存读写保护的一个疑问,很迷惑。
我写入一个只读的地址(例如代码段),系统会报错,程序退出。操作系统会维护一个表来说明哪些地址可写,哪些可读,哪些可执行。

问题是: 
OS如何"检查"每个mov指令写入的地方是否可写? 

写入操作,例如windows+vc,会编译成一个简单的mov指令。如果每次运行mov指令之前,操作系统都要查表检查一下,目标地址是不是被读写保护了,那么这岂不是要求操作系统检查一个指令流中的每条指令,效率也太低了吧。

这个保护机制到底是如何"高效率"地检查呢?

------解决方案--------------------
没搞过这么高深的,顶一下。关注下高人如何解决。
------解决方案--------------------
某一段地址是受系统保护的,比较的时候,只需要判断16进制数的前几位,很快的