SA20225377_邱世茂
Posted 超级茂茂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SA20225377_邱世茂相关的知识,希望对你有一定的参考价值。
计算机系统的工作原理
总结起来是计算机的“三大法宝”和操作系统的“两把宝剑”:
-
三大法宝:
-
存储程序计算机:采用的是冯诺依曼体系结构,指令和数据以二进制的形式存储在内存中,cpu不断从内存中取指令和数据,然后执行。
-
函数调用堆栈:在高级语言中,函数调用实现的机制是采用堆栈的机制,堆栈是高级语言实现的基础机制。每次函数调用的时候,把call指令的下一条指令的地址压入栈顶,然后设置cs:eip指向被调用的程序。
-
中断:中断机制让程序在操作系统中可以并发地执行。
-
-
两把宝剑:
-
中断上下文:用来返回到系统调用被触发的地方;
-
进程上下文:进程切换时的一些相关信息。
-
系统调用
系统调用的意义在于为用户态进程与硬件设备进行交互提供了一组接口。
系统的调用和API的区别在于API只是函数的定义,而系统调用是通过软中断向内核发出中断请求,API中可以封装一组或者多组系统调用,这样用户不用直接与系统调用打交道,而是通过API。
进程调度
调度器根据一定的调度算法,从就绪队列中拿出一个节点作为下一个要运行的新线程,将该线程的状态设置成TASK_RUNNING,之后通过函数switch_to将新线程的寄存器环境恢复,这样新线程便开始执行。
调度的过程需要时钟中断处理函数、调度器schedule和任务切换函数三个部分的配合。
中断管理
中断分为内部中断和外部中断,外部中断是指来自cpu外部的中断,内部中断是由软件主动发起的中断,具体可分为外部中断和异常。
中断处理的具体过程为:外部设备产生中断后,由外部设备的中断控制器代为接收,处理后将该中断的中断向量号发送到cpu,cpu收到一个外部中断向量号之后,用这个中断向量号在中断描述符表中查询对应的中断描述符,然后再去执行中断描述符中的中断处理程序。
中断返回指令是iret,从栈中弹出数据到各个寄存器,根据权级是否发生变化来判断是否恢复旧栈。
文件系统
文件系统就是操作系统中实现文件统一管理的一组软件、被管理的文件以及为实施文件管理所需要的一些数据结构的总称。
分析影响程序执行性能的因素
纵观linux系统的各个关键部分,可以发现操作系统操作系统的主要功能便是把所有的硬件组织起来的同时,和用户进行交互,于此同时进行资源的合理分配,其中资源的分配往往成为限制程序执行性能的因素。
1、硬件资源
cpu、内存、磁盘io和网络带宽
2、操作系统资源
磁盘分区大小、RAID设置和swap设置、文件的组织方式,比如文件的组织方式如果是FAT,则文件中所有的块是用链表的结构来组织,每个块的最后存储下一个块的地址,从而把每个块串起来,文件中的块可以分布到各个零散的空间,充分利用了磁盘空间,提升了存储效率,但是带来了很严重的性能问题,如果我要找一个文件的某一块,我需要从头到尾先找到头部,根据头部顺藤摸瓜找到我需要的那个块,其实涉及很多次磁盘io,效率非常低下。所以linux采用了inode的方式来组织文件,他将文件以索引的结构来组织,避免了访问某一个数据块的时候需要从头到尾把所有的数据块都遍历一遍的缺点。采用索引结构的文件系统,文件中的块依旧分散到零散的空间中,保留了磁盘高利用率的优点,同时为每一个块建立了索引表,所以当需要某个块的时候直接通过查表的方式快速定位到。显著地提升了性能,唯一的缺点是需要另外存储一张表,需要占用一定的内存空间,是以空间换时间的一种方式。
3、应用程序本身
最后应用程序本身的执行过程也会影响程序的执行性能,比如遵循时间局部性和空间局部性的程序往往能过得更高的执行性能。
以上是关于SA20225377_邱世茂的主要内容,如果未能解决你的问题,请参考以下文章