码迷,mamicode.com
首页 > 系统相关 > 详细

linux课程总结

时间:2020-07-09 20:55:52      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:数据结构   后台   不同   执行文件   交互式   获取   主板   范围   全局   

1. Linux系统如何启动

Linux系统开机首先运行BootLoader,然后由BootLoader引导启动内核,由内核检查和初始化硬件设备,载入设备的驱动程序模块,安装root文件系统,然后内核将启动一个名为init的进程。在Init运行完成并启动其它必要的后续进程后,系统开始运行,引导过程结束。init进程启动时需要读取inittab配置文件,该文件确定init在系统启动和关机时的工作特性。

2. Linux的中断处理流程

中断的概念:中断是指CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。分为外部中断(硬件中断)和内部中断(异常)。

中断处理过程由三部分组成

  1. 准备部分,其基本功能是保护现场,对于非向量中断方式则需要确定中断源,最后开放中断,允许更高级的中断请求打断低级的中断服务程序
  2. 处理部分,即真正执行具体的为某个中断源服务的中断服务程序
  3. 结束部分,首先是关中断,以防止在恢复现场过程中被新的中断请求打断,接着恢复现场,然后开放中断,以便返回原来的程序后可响应其它的中断请求,中断服务程序的最后一条指令一定是中断返回指令

中断上下文切换

  1. CPU关键上下文切换,比如中断信号、中断指令、iret中断返回指令
  2. 保存现场和恢复现场,中断处理程序的头部和尾部

3. 系统调用

用户态和内核态

Linux操作系统的体系架构分为用户态和内核态。计算机的硬件资源是有限的,为了减少有限资源的访问和使用冲突,CPU和操作系统必须提供一些机制对用户程序进行权限划分。现代的CPU一般都有几种不同的指令执行级别,就是什么样的程序执行什么样的指令是有权限的。在高的执行级别下,代码可以执行特权指令,访问任意内存,这时CPU的执行级别对应的就是内核态,所有的指令包括特权指令都可以执行。相应的,在用户态,代码能够掌握的范围会受到限制。

系统调用

系统调用是一种特殊的中断,中断分为外部中断和内部中断,内部中断又称为异常,异常又分为故障和陷阱。系统调用就是利用陷阱这种软件中断方式主动从用户态进入内核态。一般来说,从用户态进行内核态由中断触发,可能是硬件中断,在用户态进度执行时,硬件中断信号到来,进入内核态,就会执行这个中断对应的中断服务例程。也可能是用户态程序执行过程中,调用了一个系统调用,陷入内核态,叫做陷阱

系统调用的功能和特性

  1. 把用户从底层的硬件编程中解放出来。操作系统为我们管理硬件,用户态进程不用直接与硬件打交道
  2. 极大的提高系统的安全性。如果用户态进程直接与硬件设备打交道,会产生安全隐患,可能引起系统崩溃
  3. 使用户程序具有可移植性,用户程序与具体的硬件已经解耦合并用接口代替了,不会有紧密的关系,便于在不同系统间移植

4. 进程调度

进程的分类

  1. 批处理进程 :此类进程不需要人机交互,在后台运行,需要占用大量的系统资源,但是能忍受响应延迟,如编译器
  2. 交互式进程 : 此类进程有大量的人机交互,因此进程不断地处于睡眠状态,等待用户输入,典型的应用比如编译器Vim.此类进程对系统响应时间要求较高,否则用户会感觉系统反应迟缓
  3. 实时进程 : 实时进程对调度延迟的要求最高,这些进程往往执行非常重要的操作,要求立即响应并执行 。比如视频播放软件

进程的状态

  1. 运行态
  2. 可运行态
  3. 等待态
  4. 暂停态
  5. 僵死态

技术图片

进程的创建

  1. Frok,Vfork和clone系统调用创建新进程
  2. exec系统调用执行一个新程序
  3. exit系统调用终止进程(进程也可以因收到信号而终止)

进程的撤销

撤销时机

  • 主动撤销:执行完代码,通知内核释放进程的资源
  • 被动:内核有选择地强迫进程死掉
    • 当进程接收到一个不能处理或忽视的信号时
    • 当内核代表进程在运行时,在内核态产生一个不可恢复的CPU异常

撤销过程分为

  • 进程终止:释放进程占有的大部分资源
    • do_exit()
  • 进程删除:彻底删除进程的所有数据结构

进程删除

  • 父进程调用wait()类系统调用检查子进程是否终止
  • 若子进程包含终止代号,则父进程通过release()释放僵死进程的描述符

进程同程序的比较

  1. 程序时指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
  2. 程序可以作为一种软件资料长期存在,而进程是有一定生命期的,程序时永久的,进程是暂时的
  3. 进程更能真实地描述开发,而程序不能
  4. 进程是由PCB、程序段和数据段三部分组成
  5. 进程具有创建其它进程的功能,而程序没有
  6. 同一程序同时运行于若干个数据集上,它将属于若干个不同的进程。也就是说同一程序可以对应多个进程

进程调度的功能

  1. 记录系统中所有进程的执行情况
  2. 选择占有处理机的进程
  3. 进行进程上下文切换。一个进程的上下文包括进程状态、有关变量和数据机构的值、机器寄存器的值和PCB以及有关程序、数据等

进程调度的时机

  1. 进程状态发生变化时
  2. 当前进程时间片用完
  3. 进程从系统调用返回用户态
  4. 中断处理后,进程返回到用户态

为何要进程调度

  1. 非剥夺方式
  2. 剥夺方式:优先权原则,短进程,优先原则,时间片原则

技术图片

技术图片

active:活动进程
expired:过去进程

对交互进程和批处理进程的分别处理

  1. 为提高交互进程的性能,用完时间片的活动批处理进程总是变成过期进程
  2. 用完时间片的活动交互进程通常仍然是活动进程,调度程序重填时间片把它留在活动进程集合中
  3. 如果最老的过期进程等待了很长时间,或者过期进程比交互进程的优先级高,调度程序把用完时间片的活动交互进程移到过期进程集合中

实时进程

  1. 实时进程的动态优先级范围1-99
  2. 实时进程总是被当做活动进程
  3. 调度程序总是让优先级高的进程运行
  4. 几个进程优先级相同,调度程序选择第一个出现在本地CPU的运行队列相应链表中的进程运行
  5. 实时进程运行的过程中 ,禁止低优先级进程的执行

Linux进程调度策略

  1. linux的进程调度是基于优先级的调度。进程的优先级是动态的,避免了进程饥饿
  2. linux的进程分普通进程和实时进程,实时进程的优先级高于普通进程。
  3. 普通进程采用普通进程的时间片轮转算法
  4. 实时进程采用实时进程的先进先出或实时进程的时间片轮转算法

进程上下文切换

进程切换:为了控制进程的执行,内核必须有能力挂起正在CPU上运行的进程,并恢复执行以前挂起的某个进程

进程的CPU上下文:在恢复一个进程执行之前,内核必须确保每个寄存器装入了挂起进程时的值。进程恢复执行前必须装入寄存区的一组数据,称为进程的CPU上下文。

硬件上下文:进程恢复执行前必须装入寄存器的一组数据

从本质上说每个进程切换由两部分组成

  1. 切换页全局目录以安装一个新的地址空间
  2. 切换内核态堆栈和硬件上下文

5. 文件系统

文件系统是计算机组织、存取和保存信息的重要手段。

按照文件的数据形式分为:

  1. 源文件
  2. 目标文件
  3. 可执行文件

文件控制块

VFS

可以将VFS看成是一种通用文件系统,它位于应用程序和具体文件系统之间,提供了一层通用的接口,在必要时依赖具体的文件系统

VFS支持的文件系统类型

  1. 基于磁盘的文件系统
  2. 网络文件系统
  3. 特殊文件系统

技术图片

Open操作

所谓打开文件实质上是在进程与文件之间建立连接,而打开文件描述符唯一标识着这个连接。

应用程序对open()的调用将引起内核调用服务例程sys_open()函数,该函数接受的参数为:要打开文件的路径名和访问模式等。该系统调用成功后将返回一个文件描述符,也就是文件对象指针的一个索引,系统调用不成功时返回-1.

6. Linux上的时钟以及如何实现

Linux上有两种时钟,一个是由主板电池驱动的RTC时钟,另一种是内核时钟,有软件来根据时间中断进行计数。内核时钟在系统关机时不存在,操作系统启东时读取RTC时间进行同步,并在系统关机时将时间写会RTC

计时体系结构中的关键数据结构和变量

xtime是从系统中取得的时间,一般是从某一历史时刻开始到现在的时间,即操作系统上显示的时期,它的精度很微妙

jiffies是记录着从开机到现在总共的时钟中断次数。jiffies取决于系统的频率,单位是Hz,是周期的倒数,周期一般是一秒钟中断产生的次数。Linux系统时钟频率是一个常数HZ来决定的,通常HZ==100,精度为10ms。
内核一般通过Jiffies的值来获取当前时间。尽管该数值表示的是自上次系统启动到当前时间间隔,但因为驱动程序的生命期只限于系统的运行期,所以也是可行的。驱动程序利用Jiffies的当前值来计算不同事件间的时间间隔。硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率。

linux课程总结

标签:数据结构   后台   不同   执行文件   交互式   获取   主板   范围   全局   

原文地址:https://www.cnblogs.com/ustczxc/p/13276069.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!