当前位置: 首页 > Linux

电脑系统漫游-操作系统

时间:2023-04-06 21:09:31 Linux

操作系统可以看作是介于应用程序和硬件之间的一层软件,应用程序对硬件的所有操作都必须经过操作系统。操作系统功能:1.保护硬件不被失控的应用程序滥用2.为应用程序提供简单一致的机制来控制复杂且差异巨大的底层硬件设备操作系统通过三个抽象(进程、虚拟内存、文件)实现以上两个功能3.进程是处理器、内存和I/O设备的抽象表示4.虚拟内存是内存和磁盘I/O设备的抽象表示5.文件是I/O设备进程进程的抽象是操作系统对正在运行的程序的抽象,为程序提供一种错觉,使程序看起来独占使用内存、处理器和I/O设备,即程序的数据和代码似乎是内存中唯一的对象。多个进程可以在一个系统上同时运行,但每个进程似乎都在独占使用硬件。这是通过并发运行来实现的,也就是一个程序的指令与另一个程序的指令交错,从而实现不同进程的切换。在现代系统中,一个进程实际上由多个称为线程的执行单元组成,每个执行单元都运行在进程内,共享相同的代码和全局数据。多线程运行大大提高了程序运行的效率。虚拟内存虚拟内存是对进程的一种抽象,为进程提供一种错觉,使进程看起来好像是在独占使用内存。因此,每个进程看到的是同一块内存,称为虚拟地址空间。下图是linux的虚拟地址空间。在图中,地址从下到上递增。下面我们从最低地址开始,逐步介绍各个地址1.代码区和数据区。直接根据可执行目标文件、内存程序代码和数据的内容进行初始化。2.堆(运行时堆)。不同于数据代码区的固定大小,当调用malloc和free的C标准库函数时,堆可以在运行时动态扩展和收缩。3.共享库。存放C标准库、数学库等共享库代码和数据的区域。4.堆栈(用户堆栈)。和堆一样,它也可以在运行时动态扩展和收缩。编译器用它来实现函数调用,函数调用时栈增长,函数返回时栈收缩。5.内核虚拟内存。内核是操作系统代码的一部分,驻留在主内存中并存储在这里。程序不能读取这个区域的数据,也不能调用这个区域的函数。相反,读取数据和调用函数的程序必须通过调用内核来执行。文件是I/O设备的抽象,并将I/O设备视为字节序列。这样输入输出都是通过调用函数读取文件来实现的。阿姆达尔定律改进过程的一般原则:当系统的某一部分被加速时,对系统整体性能的影响取决于这部分的重要性和加速程度;为了显着加速一个系统,需要提高系统运行时间的很大一部分的速度新的执行时间:跟随公众号,让我们一起努力