课程总结报告

一、总结要求

根据本课程所学内容总结梳理出一个精简的Linux系统概念模型,最大程度统摄整顿本课程及相关的知识信息,模型应该是逻辑上可以运转的、自洽的,并举例某一两个具体例子(比如读写文件、分配内存、使用I/O驱动某个硬件等)纳入模型中验证模型。,

谈谈您对课程的心得体会,改进建议等。

二、Linux系统概念模型

Linux的系统层次结构包括用户空间和内核空间,用户空间包含了用户应用程序、C函数库等;内核空间包括系统调用,内核,以及与平台架构相关的代码。

Linux内核的主要组件包括系统调用接口、进程管理、内存管理、文件系统、网络堆栈、设备驱动程序和硬件架构代码。

结合此次课程理解Linux系统概念模型,以下内容为我对此课程学习到的东西的总结。

三、进程管理相关

进程创建:

 

 进程调度:

Linux进程调度采用的是最高优先权调度。

 

 

Counter 子为父的一半

rt_priority

实时进程的优先级,可通过系统调用改变

priority

进程静态优先级,给出进程每次获取cpu后可使用的时间(按jitty计算)

Counter

表示进程当前还可运行多久

进程开始运行时被赋为priority值,以后,每隔一个tick(时钟中断)递减1,减到0时引起新一轮调度。

重新调度将从runqueue队列中选出运行运行权值最大的就绪进程获得cpu

创建一个新的进程时,子进程会继承父进程的一半剩余时间片

Linux的进程调度是基于优先级的调度

Linux的进程分为普通进程和实时进程,在基于优先级的算法下实时进程的优先级高于普通进程。

Linux中进程的优先级是动态的,调度程序周期性的调整他们的优先级,避免进程饥饿

 

四、中断

当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存当前进程的上下文,以便在再次执行该进程时,能够必得到切换时的状态执行下去。

LINUX中,当前进程上下文均保存在进程的任务数据结构中。在发生中断时,内核就在被中断进程的上下文中,在内核态下执行中断服务例程。但同时会保留所有需要用到的资源,以便中继服务结束时能恢复被中断进程的执行。

普通进程可以被中断或异常处理程序打断

异常处理程序可以被中断程序打断

中断程序只可能被其他的中断程序打断

中断:

      1)  将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。

      2)  CPSR复制到相应的SPSR中。

      3)  根据异常类型,强制设置CPSR的运行模式位。

      4)   强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。

恢复:

1)   将连接寄存器LR的值减去相应的偏移量后送到PC中。

2)   SPSR复制回CPSR中。

3)   若在进入异常处理时设置了中断禁止位,要在此清除

流程

1,若有必要,进入核心态

2,在内核态堆栈保存上下文(用户态/核心态)

3,调用asm_do_IRQ #处理中断

4,恢复上下文

5,若有必要,返回用户态

五、文件系统

 

文件系统就是把你硬盘上数据按照一定格式组织成一棵树。数据块对应名称。删了它就相当于把硬盘格式化了。

根文件系统就是出了内核以外,所有的系统文件存储的地方。之所以成为根,是因为有根才能成生长成树,是其它文件的最终挂载点。

我们要明白  文件系统和内核是完全独立的两个部分,它是内核启动时所 mount 的第一个文件系统,里面有内核启动所必须的数据,不然就退出启动。

 

文件系统这种机制有利于用户和操作系统的交互。数据块对应名称。尽管内核是 Linux 核心,但文件却是用户与操作系统交互所采用的主要工具,尤其是 LINUX

根文件系统是Linux系统的安装点,应该包括支持Linux系统正常运行的基本内容,包含系统使用的软件和库,以及所有用来为用户提供构架和用户使用的应用软件。

Linux内核在运行期必须要用到的存储代码体系,与内核同时存在,只在内核运行时才存于内存中。根文件系统必须能够提供Linux内核启动过程中要加载的模块

 六、设备驱动

对设备的用户级访问往往要通过位于/dev目录下的特殊设备文件。内核把对这些文件操作映射到对驱动程序代码的调用上面。
大多数硬件设备都在/dev目录中有一个对应的设备文件,网络设备除外。在/dev中的每个文件都有与之相关的主设备号和一个次设备号。内核用这些设备号把对一个设备文件的引用映射到相应的驱动程序上。主设备号标明与文件相关的驱动程序(换句话说是设备类型)。次设备号常常是指定某种给定设备类型的特定实例,次设备号有时被称为单元号。
设备文件分两种类型:
块设备文件:
一个块设备文件每次读取或者写入一块数据(一组字节,通常是521的倍数),我们熟知的磁盘就是块设备,在/dev中对应的设备文件就是块设备文件。块设备文件在用ls -l查看时文件类型为b。
字符设备文件:
字符设备每次读取或者写入一个字节。磁盘和磁带可以是块设备也可以是字符设备,而终端和打印机不行。字符设备文件在用ls -l查看时文件类型为c。
在Linux下,一般不需要手动创建设备文件,因为在Linux下设备文件的创建有专门的udev系统来管理,当系统有新的设备出现(或者消失),会动态地管理设备文件的创建和删除。守护进程udevd监听内核传来的有关设备状态变化的消息。根据/etc/udev 和/lib/udev两个目录的配置信息,在找到设备或者断开设备的时候,udevd能够自动采取相应措施。在默认情况下,它只创建/dev里的设备文件。手动创建设备文件用mknod命令来创建。

 

posted @ 2020-07-09 18:46  你扎哥儿  阅读(196)  评论(0)    收藏  举报