Linux运维

linux内核网易云课堂

这学期选了孟老师的《Linux内核分析》这门课,在学习之前听说这门课很难,通过也不是很容易,但我还是选了这门课。课程不容易学,含金量才会大,才会有收获。现在,学习这门课已经两个月了,我的收获很大,特别是以前接触《计算机组成原理》,《操作系统》这两门课时遇到的很难理解的地方,通过孟老师的Linux内核讲解,使我对以前的盲点有了豁然开朗的感觉。我感觉孟老师开始的网上课堂很不错,有种另辟蹊径的感觉,课程内容上传到云课堂上,一方面可以节约课堂上讲授时间,将更多的时间放在答疑方面,另一方面通过新型的授课方式,方便学生课后温习、回顾、吸收、理解。——絮雨清风。

linux内核网易云课堂

Linux 内核Android的核心系统服务基于Linux 2.6内核,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。并且改过Linux内核,针对手机进行了专门的优化,主要是电源管理和进程调度方面。Linux核心层也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务,所以只开发应用程序不需要过多了解这一层。

《Linux内核设计与实现》 这本书恰到好处,即讲清楚了内核实现的要点,又不会通篇源码。 这本书重点关注「第 3 章进程管理」、「第 5 章系统调用」、「第12章内存管理」、「第13章虚拟文件系统」、「第 15 章进程地址空间」。

进程调度:计算机内均配备有一个或多个CPU(中央处理单元),以执行程序指令。与其他UNIX系统一样,Linux属于抢占式多任务操作系统。“多任务”意指多个进程(即运行中的程序)可同时驻留于内存,且每个进程都能获得对CPU的使用权。“抢占”则是指一组规则。这组规则控制着哪些进程获得对CPU的使用,以及每个进程能使用多长时间,这两者都由内核进程调度程序(而非进程本身)决定。内存管理:以一二十年前的标准来看,如今计算机的内存容量可谓相当可观,但软件的规模也保持了相应地增长,故而物理内存(RAM)仍然属于有限资源,内核必须以公平、高效地方式在进程间共享这一资源。与大多数现代操作系统一样,Linux也采用了虚拟内存管理机制(6.4节),这项技术主要具有以下两方面的优势。进程与进程之间、进程与内核之间彼此隔离,因此一个进程无法读取或修改内核或其他进程的内存内容。只需将进程的一部分保持在内存中,这不但降低了每个进程对内存的需求量,而且还能在RAM中同时加载更多的进程。这也大幅提升了如下事件的发生概率,在任一时刻,CPU都有至少一个进程可以执行,从而使得对CPU资源的利用更加充分。

个普通的Linux进程有两种运行模式:内核模式和用户模式( 用户模式是指进程在用户代码中运行。内核模式是指进程进入内核代码,执行内核的代码),KVM增加了第三种模式:客户模式(有自己的内核和用户模式)。这里的客户模式,就相当于你在VMware中安装了自己的某个windows操作系统一样。在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统。

为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。在Linux应用程序的开发中,可以通过fork、vfork和clone等API来创建一个子进程,它们在Linux内核中对应的系统调用分别为sys_fork、sys_vfork和sys_clone函数,而这些函数最终都会调用do_fork完成子进程的创建。do_fork主要是复制了父进程的task_struct,然后修改必要的信息,从而得到子进程的task_struct。

本课程从理解计算机硬件的核心工作机制(存储程序计算机和函数调用堆栈)和用户态程序如何通过系统调用陷入内核(中断异常)入手,通过上下两个方向双向夹击的策略,并利用实际可运行程序的反汇编代码从实践的角度理解操作系统内核,然后开始分析Linux内核源代码,从系统调用陷入内核,进程调度与进程切换,最后返回到用户态进程,通过仔细分析梳理这一过程,并推广到硬件中断、缺页异常等内核执行路径,最终能从本质上把握Linux内核的实质,乃至在头脑中演绎Linux系统的运行过程。

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注