现代操作系统day10:基础概念

操作系统是怎样运行程序的?
加载程序:将磁盘(I/O)中的程序复制到主存
运行程序:将主存中的程序指令复制到处理器

问题:处理器的运行指令的速度远比主存复制数据的速度要快,但加快处理器的速度比加快主存的速度要更容易和更便宜
解决方法:处理器中添加高速缓存,用来存放处理器近期可能需要的信息

上下文切换:操作系统中的不同进程交错执行的机制
上下文:进程切换所需要的状态信息,例如PC、寄存器文件的当前值和主存的内容

虚拟存储器:

机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的每个字节都由一个唯一的数字来标识,称为地址。
地址从下往上,对应的分别是:
程序代码和数据:直接按照可执行的目标文件的内容初始化(知识点:链接和加载)
:调用malloc和free时,堆可以动态地扩展和收缩(知识点:管理虚拟存储器)
共享库:存放C标准库和数学库之类的共享库的代码和数据(知识点:动态链接)
:编译器用栈来实现函数调用(知识点:栈)
内核虚拟存储器:为内核保留的,不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数

文件:

文件就是字节序列,仅此而已。每个I/O设备都可以视为文件(知识点:Unix I/O)

字长

C语言中的数据类型字节数在32位机器和64位机器上是不一样的(char *,long int),因此需要考虑到可移植性,使得程序对不同的数据类型的确切大小不敏感

寻址

例如,假设一个类型为int的变量x,它的地址为0x100,也就是说,地址表达式&x的值为0
x100,那么,x的4个字节将被存储在存储器的0x100,0x101,0x101,0x103这4个位置。大多数机器都是最高有效字节排在最前面(也就是大端法)

猜你喜欢

转载自blog.csdn.net/jieyannn/article/details/104633053
今日推荐