标签:交互 电源管理 故障 执行 允许 add nbsp 变化 nal
一、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)进程控制块:进程控制块PCB是名字为task_struct的数据结构,它称为任务结构体。当一个进程被创建时,系统就为该进程建立一个 task_struct任务结构体。当进程运行结束时,系统撤消该进程的任务结构体。进程的任务结构体是进程存在的唯一标志。
(2)进程上下文:把系统提供给进程的处于动态变化的运行环境总和称为进程上下文。
(3)进程栈:linux系统为每个用户进程分配了两个栈:用户栈和内核栈。内核进程只有内核栈,没有用户栈。
(4)进程链表:为了对给定类型的进程进行有效的搜索,内核维护了几个进程链表。一般进程链表是双向链表。
(5)进程的状态:运行态、可运行态、等待态、暂停态、僵死态。
首先,任何进程都是源于开机后构建的0号进程,它是所有进程的祖先。开机时构建0号进程的过程成为初始化。除此之外,所有其他进程的初始化都是通过do_fork复制?进程的?式初始化的。1号和2号进程的创建是start_kernel初始化到最后由rest_ init通过kernel_thread创建了两个内核线程:?个是kernel_init,最终把?户态的进程init给启动起来,是所有?户进程的祖先;另?个是kthreadd内核线程,kthreadd内核线程是所有内核线程的祖先,负责管理所有内核线程。_do_fork的大体执行过程是把当前进程的描述符等相关进程资源复制?份,从?产??个?进程,并根据?进程的需要对复制的进程描述符做?些修改,然后把创建好的?进程放?运?队列。
进程的切换主要通过切换页全局目录以安装一个新的地址空间,然后切换改变内核态堆栈和硬件上下文。
进程调度主要发生在以下的情况下:
(1)进程状态发生变化
(2)当前进程时间片用完
(3)进程从系统调用返回到用户态
(4)中断处理后,进程返回到用户态
3.中断管理
硬件产生的中断可被称为硬中断(hardirp),执行中断指令(int)产生的中断为软中断。
Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。
当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。
硬中断是可屏蔽的,软中断不可屏蔽。硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
Linux分为以下几个定时器
可以通过设备文件对其编程
内核通过0x70和0x71两个端口访问RTC
在Linux系统分析这门课程中,通过内核源代码和知识点结合的方式学习Linux,在实验中通过自己动手运行和调试内核,知晓了操作系统内核的结构和设计原理,一个操作系统是如何运作起来的,系统的各个功能之间是如何分工协作的,这让课程不仅仅是停留在理论阶段,学完之后加深了对操作系统的理解。
课程建议:
如果孟老师能够把代码截图在ppt上,听课效果就会好很多。
标签:交互 电源管理 故障 执行 允许 add nbsp 变化 nal
原文地址:https://www.cnblogs.com/hgsheng/p/13275395.html