内存管理

来源:互联网 发布:python urllib2 post 编辑:程序博客网 时间:2024/06/01 23:26

关于操作系统,有两条基本的思考线路:
1.can do something.
2.do something better.
学习内存管理这一章也是如此。
首先最基本的肯定是要思考,操作系统运行起来后,肯定有系统进程要运行,后面还有用户进程要运行,而这些进程的代码都是放到内存中运行的,于是,直观的来看,内存分为用户区和系统区。这样就完成了do sth.再后来,为了能够让用户能运行更多的进程,即内存能同时放入更多的进程,于是就提出了关于提高内存利用率的技术。在我们提高内存利用率的同时呢,我们又很自然的应该考虑到各个进程程序代码之间的独立性问题,即“存储保护”,不同的进程之间,如果没有特别的需要,不能越界访问其他进程的代码,比如我们以前写代码就遇到过诸如“访问地址0X00….非法”、“非法地址等问题。但是有的时候呢,我们又需要一些数据进行共享,比如A,B,C,D进程都需要使用打印机,它们程序当中都有一段使用打印机的代码,于是这也是个问题啊,需要被解决,这就是“存储共享”的问题。还有诸如“重定位”的问题也是一样,很自然的被提出,需要被解决,比如说使用数组arr[],访问或者修改arr[0]的值,0就是逻辑地址啊,至于内存中的实际地址,程序员不用去管的,程序运行起来的时候,你修改arr[0]的值,“重定位”技术帮你解决。,还有就是arr[0]的位置也不是一直不变,可能变化的,因为进程可能被挂起,可能其他进程占有了之前进程在内存中的位置,很多外挂也是通过修改游戏运行时内存中的数据来实现的,比如某个单机游戏,但是要找到这个游戏中的数据比如说金币,在内存中的位置是不容易的,这里就不展开了,常用工具是spy++等。操作系统学习其实不难,它就是个管理者而已。
两条线:
1.can do sth.
2.do sth better.

0 0
原创粉丝点击