课程学习总结

 一、linux模型

 Linux系统一般有4个主要部分

内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

 

 

1.linux内核 

内核(Kernal)是整个操作系统的核心,管理着整个计算机的软硬件资源。内核控制整个计算机的运行,提供相应的硬件驱动程序、网络接口程序,并管理所有程序的执行。内核提供的都是操作系统最基本的功能。

linux内核源代码主要是用C语言编写的,linux内核采用比较模块化的结构,主要模块包括存储管理、进程管理、文件系统管理、设备管理和驱动、网络通信和系统调用等。

 

2.linux  shell

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上,shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。shell还有自己的编程语言用于命令编辑,它允许用户编写由shell命令组成的程序。shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。

3.linux文件结构

文件结构是文件存放在磁盘等存储设备上的组织方法,主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。


4.linux应用程序

标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、XWindow、办公套件、Internet工具和数据库等。

二.Linux内核

内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

       Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图:

课程学习总结_第1张图片

2. linux进程管理

2.1 进程相关概念

进程是系统进行资源分配和调度的一个独立单位。
(1)进程控制块:进程控制块PCB是名字为task_struct的数据结构,它称为任务结构体。当一个进程被创建时,系统就为该进程建立一个 task_struct任务结构体。当进程运行结束时,系统撤消该进程的任务结构体。进程的任务结构体是进程存在的唯一标志。
(2)进程上下文:把系统提供给进程的处于动态变化的运行环境总和称为进程上下文。
(3)进程栈:linux系统为每个用户进程分配了两个栈:用户栈和内核栈。内核进程只有内核栈,没有用户栈。
(4)进程链表:为了对给定类型的进程进行有效的搜索,内核维护了几个进程链表。一般进程链表是双向链表。
(5)进程的状态:运行态、可运行态、等待态、暂停态、僵死态。

2.2 进程的创建

首先,任何进程都是源于开机后构建的0号进程,它是所有进程的祖先。开机时构建0号进程的过程成为初始化。除此之外,所有其他进程的初始化都是通过do_fork复制⽗进程的⽅式初始化的。1号和2号进程的创建是start_kernel初始化到最后由rest_ init通过kernel_thread创建了两个内核线程:⼀个是kernel_init,最终把⽤户态的进程init给启动起来,是所有⽤户进程的祖先;另⼀个是kthreadd内核线程,kthreadd内核线程是所有内核线程的祖先,负责管理所有内核线程。_do_fork的大体执行过程是把当前进程的描述符等相关进程资源复制⼀份,从⽽产⽣⼀个⼦进程,并根据⼦进程的需要对复制的进程描述符做⼀些修改,然后把创建好的⼦进程放⼊运⾏队列。

2.3 进程的切换和调度

进程的切换主要通过切换页全局目录以安装一个新的地址空间,然后切换改变内核态堆栈和硬件上下文。
进程调度主要发生在以下的情况下:
(1)进程状态发生变化
(2)当前进程时间片用完
(3)进程从系统调用返回到用户态
(4)中断处理后,进程返回到用户态

3.中断管理

中断可分为两大类: 异常和中断 
异常又分为 故障(Fault)
陷阱(Trap)
,它们的共同特点是既不使用中断控制器,又不能被屏蔽(异常其实是CPU发出的中断信号)。
中断又分为 外部可屏蔽中断(INTR)外部非屏蔽中断(NMI),所有I/O设备产生的中断请求(IRQ)均引起屏蔽中断,而紧急的事件(如硬件故障)引起的故障产生非屏蔽中断。
课程学习总结_第2张图片

硬件产生的中断可被称为硬中断(hardirp),执行中断指令(int)产生的中断为软中断。

Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。  
当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。

硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。

硬中断是可屏蔽的,软中断不可屏蔽。硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。

 4.时间管理

Linux分为以下几个定时器

 实时时钟Real time clock,RTC
 时间戳计数器Time stamp counter,TSC
 可编程间隔定时器Programmable interval timer, PIT n CPU本地定时器
 高精度事件定时器
 ACPI电源管理定时器 

 

Linux本身只使用RTC获得时间和日期 n 对应的设备文件为/dev/rtc

 可以通过设备文件对其编程

 内核通过0x70和0x71两个端口访问RTC 

 

5.设备驱动

驱动是应用软件和硬件的桥梁
它使得应用软件只需要调用系统软件的应用编程接口(API)就可让硬件去完成要求的工作。 
三.Linux课程总结

  在Linux系统分析这门课程中,通过内核源代码和知识点结合的方式学习Linux,在实验中通过自己动手运行和调试内核,知晓了操作系统内核的结构和设计原理,一个操作系统是如何运作起来的,系统的各个功能之间是如何分工协作的,这让课程不仅仅是停留在理论阶段,学完之后加深了对操作系统的理解。

      课程建议:

      如果孟老师能够把代码截图在ppt上,听课效果就会好很多。

你可能感兴趣的:(课程学习总结)