张骋sa12226140
个人觉得操作系统就是一个系统资源和任务分配调度的指挥官,它主要提供以下6个功能:
1.
应用程序管理
2.
I/O设备管理
3.
设备驱动程序
4.
显存管理
5.
CPU管理
6.
其他硬件管理
操作系统须要提供实现多种用途、以更复杂的形式与用户进行交互、满足随时间而改变的需求三大功能,简单来说就分为两个管理系统的软件和硬件资源、为应用程序提供稳定一致的环境让应用程序来处理硬件。
操作系统工作的基础:储存程序计算机、堆栈(函数调用堆栈)机制和中断机制;
储存计算机概念,是指把程序和数据一起储存,“存储程序”原理,是将按照特定问题编撰的程序储存在计算机中,之后按储存器中的储存程序的首地址执行程序的第一条,之后就根据该程序的规定其他指令,直到程序结束执行。
栈(操作系统):由编译器手动分配释放,储存函数的参数值,局部变量的值等。其操作方法类似于数据结构中的栈
栈使用的是,
她们一般都是被调用时处于储存空间中,调用完毕立刻释放
堆(操作系统):通常由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方法倒是类似于数组。
堆则是储存在中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象能够被回收)。所以调用那些对象的速率要相对来得低一些
堆(数据结构):堆可以被看成是一棵树,如:堆排序
栈(数据结构):一种后进先出的的数据结构
函数通过堆栈的特点,可以便捷的实现函数调用、中断等操作,这对实时多任务操作系统来说,是至关重要的机制。
中断:指当出现须要时红帽子linux,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立刻处理的情况,此时,CPU暂时终止程序的执行转而处理这个新的情况的过程就称作中断。
对于一个实时多任务操作系统来说,中断是必须的linux系统实验,它是计算机可以更好更快借助有限的系统资源解决系统响应速率和运行效率的一种控制技术。实现了实时响应和系统调度两个功能。
在操作系统工作的基础之上,请您阐述操作系统(内核)是怎样工作,宏观概述结合关键点的微观(CS:EIP、EBP/ESP等的变化)剖析。
内核linux系统实验,是一个操作系统的核心。它负责管理系统的进程、
如今让我们从一个比较高的高度来考量一下GNU/Linux操作系统的体系结构。您可以从两个层次上来考虑操作系统,如图2所示。
最前面是用户(或应用程序)空间。这是用户应用程序执行的地方。用户空间之下是内核空间,Linux内核正是坐落这儿。
GNUCLibrary(glibc)也在这儿。它提供了联接内核的系统调用插口,还提供了在用户空间应用程序和内核之间进行转换的机制。这点十分重要,由于内核和用户空间的应用程序使用的是不同的保护地址空间。每位用户空间的进程都使用自己的虚拟地址空间,而内核则占用单独的地址空间。
Linux内核可以进一步界定成3
层。最前面是系统调用插口,它实现了一些基本的功能,比如read和write。系统调用插口之下是内核代码,可以更精确地定义为独立于体系结构的内核代码。这种代码是
Linux所支持的所有处理器体系结构所通用的。在这种代码之下是依赖于体系结构的代码,构成了一般称为
BSP(Board
SupportPackage)的部份。这种代码用作给定体系结构的处理器和特定于平台的代码。
内核基本功能为,为系统提供了:系统调用插口、内存管理、虚拟文件系统、内存管理、网络堆栈、设备驱动等功能。
esp是栈表针,是CPU机制决定的,push、pop指令会手动调整esp的值
又由于函数的参数和局部变量,虽然是与步入函数那时的esp相关的,但因为esp在函数运行中会不停的变,
因而保存当前esp到一个ebp中保持不变,后续用ebp来访问参数和局部变量就很清楚。
并且还方易于调试器剖析函数调用过程中的堆栈情况。
这个ebp也不是必须的,实际esp似乎不停在变,但具体变化编译器是可以编译其估算下来的,因而直接使用esp来访问局部变量和参数也是可行的。gcc有个编译参数
-fomit-frame-pointer就是干这个事的
CS:EIP总是指向下一条命令linux怎么查看系统版本,在不同的条件下也有不同的用法:
次序执行:CS:EIP保存的是地址连续的下一条指令
跳转/分支:按照程序须要作更改
函数调用:保存当前CS:EIP值压入堆栈,之后存入须要跳转的程序指令地址。
函数返回:从堆栈拿回要返回的地址存入CS:EIP中,执行地址完成返回。