Linux课程总结分析

一、 冯·诺依曼体系结构

冯·诺依曼的核心就是存储程序计算机,程序与数据都以二进制的形式存储在存储器中。计算机的三大法宝为:程序存储计算机、中断、函数调用堆栈。

 

二、 Linux系统

Linux系统包含一个操作系统所必须的四个功能:进程管理、内存管理、设备管理、文件系统。

Linux系统一般由内核、shell、文件系统和应用程序组成。Linux内核主要由C和汇编语言编写,理解Linux语言需要良好的汇编语言以及内嵌汇编的基础,Linux汇编命令采用AT&T格式。

 

 

 

 

 

三、 系统调用

在中断出现之前,计算机只能依次执行程序,进行批处理操作。中断的出现使得计算机得以实现并发。用户态程序一般通过中断的形式进入内核态。

区分用户态、内核态的是CPU和操作系统对用户权限进行划分,目的是为了减少有限资源的访问和使用冲突,同时也确保了系统的稳定性(限制程序员的操作权限)。

系统调用是一种特殊的中断,用户程序通过API(若API内部封装系统调用例程)触发系统调用,执行系统调用内核函数。

 

 

 

 

四、 进程描述与创建

进程管理是操作系统的三大管理功能之一。

Linux中,进程描述符由数据结构struct task_struct表示,每个进程都有一个独特的pid标识。Linux中进程的状态TASK_RUNNING根据是否控制CPU判定是就绪态还是运行态,终止进程TASK_ZOMBIE又称为僵尸进程。

 

 

 

 

进程管理采用了循环双向链表的数据结构struct list_head tasks。进程的父子关系、兄弟关系也都由双向链表表示。

 

 

 

 

通过fork系统调用创建子进程,除了0号进程的初始化由硬编码固定,其余进程都是复制的父进程,再修改相应部分(写时复制)。

 

五、 ELF目标文件、编译、装载和链接

ELF文件的主体是各种section,典型的有.text代码节、.data数据节、.bss节。还有描述节属性的信息,以及ELF Header。

 

 

 

ELF文件有三类:可重定位文件、可执行文件、共享目标文件。

源文件到一个可执行文件的转换过程为:预处理(删除注释、宏定义等)、编译(检查代码语法、规范性等)、汇编、链接。

链接分为静态链接和动态链接,动态链接又分为装载时链接和运行时链接。

 

六、 进程调度

Linux内核通过schedule函数实现进程调度,schedule函数负责在运行队列中选择一个进程,然后将其切换到CPU上,调用一次schedule就是切换一次进程。

       进程调度策略:SCHED_FIFO先进先出、SCHED_NORMAL时间片轮转、CFS完全公平调度策略,根据已占用CPU的时长调整优先级和时间片。

 

七、 文件系统

Linux采用树状结构,最上层是根目录。Linux中的文件类型分为常规文件、目录文件、设备文件、管道文件、链接文件。

Linux除了支持Ext2文件系统外,还支持其他的文件系统。所以引入了虚拟文件系统(VFS),用户不再关注各种类型的文件系统的实现细节,而使用系统提供的统一的、抽象的、虚拟的文件系统界面。

 

八、 设备驱动

设备驱动程序是一个软件层,该软件层使硬件响应预定义好的编程接口,我们已经熟悉了这种接口,它由一组控制设备的VFS函数(open,read,lseek,ioctl等)组成,这些函数实际实现由设备驱动程序全权负责。

 

九、 影响应用程序性能表现的因素

1、 磁盘I/O

磁盘读写的速度远慢于内存的读写速度,系统运行如果需要等待磁盘I/O的完成,将会耗费大量的时间。

 

2、 内存的命中率

内存的命中与否会导致是否发生缺页中断,从而导致大量的时间被用于处理缺页中断。

 

3、 CPU的占用率

依赖于进程的调度策略,以及对CPU是否是可抢占的。计算机资源有限,要提高资源利用率,就要使CPU尽可能的处于被占用状态。

 

posted @ 2021-05-18 14:37  快活呀  阅读(171)  评论(0)    收藏  举报