Linux内核学习总结(附录linux协议栈函数调用图)

本文总结了Linux内核的学习内容,包括内核的作用、系统调用、进程与线程管理、内存管理和中断处理。重点介绍了系统调用的实现、进程的创建与调度、内存的分配与管理,以及中断服务程序和中断上下文。内核与硬件之间的通信通过中断机制,其中中断处理程序的同步和设备驱动的块设备、字符设备概念也被提及。
摘要由CSDN通过智能技术生成

Linux内核学习总结


作者: 北京—小武

邮箱:night_elf1020@163.com

新浪微博:北京-小武


Linux操作系统以GPL作为限制条款进行开源,对计算机界产生了巨大影响。在短短的二十年里迅速壮大。Linux内核从产生到现在一直在不断被改进,现在就我最近对其学习内容和体会进行下总结。学习所用书籍是美国Robert Love著的《linux内核设计和实现》。下面段落中用红色字体标注知识点关键字。

内核是操作系统的核心(操作系统主要完成系统中最基本的功能和系统管理,包括自动引导程序、设备驱动程序、内核、命令行或窗口之类的用户界面等),一般内核的内容包括:负责相应中断的中断服务程序、管理多个进程共享CPU的调度程序、管理进程地址空间的内存管理程序、进程间通信机制等。Linux内核是一个单内核(本身是一个大进程),本身采用GNU C编程,难以执行浮点数,而且可移植性非常重要。Linux是一个支持多线程、可抢占、虚拟内存、虚拟处理器、换页、动态链接库和TCP/IP网络协议栈的操作系统。

类似于我们的交换机的芯片SDK的代码,linux内核拥有受保护的内存空间和访问硬件设备的所有权限,称为内核空间;不能直接访问硬件设备,通常也不能访问其他进程的内存范围,称为用户空间。用户空间的程序通过系统调用来与内核进行通信,这时候称为内核运行于进程上下文;当下层硬件想与内核通信时,需要发出一个异步的中断信息来打断CPU中断对内核的执行,并根据中断号来查找对应的中断处理程序。

系统调用的作用是为用户空间进程和硬件提供一个中间层,屏蔽硬件差异并封装操作硬件的安全接口。系统调用是通过软中断实现(引发一个异常促使系统从用户空间切换到内核空间去执行处理程序)。一个系统调用我们要考虑参数类型及检验、返回值和错误类型,以及为将来的发开发。Linux提供了一组宏_syscalln()从用户空间访问系统调用,每个宏有2+2*n个参数,比如int sysinfo(struct sysinfo * info)函数对应的系统调用为_syscall1(int, sysinfo, struct sysinfo *, info);系统调用的添加新接口上有一套相应的流程需要我们遵循。

系统调用对应的应是在内核执行相应的线程。线程是进程中活动的对象,每一个线程都有独立的程序计数器、进程栈和一组进程寄存器,而进程则是处于执行前代码和资源的总称。创建进程的进程称为父进程,被创建的进程称为子进程,相同父进程的子进程称为兄弟进程,每一个进程有一个唯一PID作为标记,且所有进程都是init进程的子孙(PID1),linux创建进程的最大数目是被控制的;进程在linux中由forkvfork函数创建,,二者的区别是vfork创建的子进程作为父进程的一个单独线程在父进程地址空间运行,而父进程被阻塞直到子进程退出。所有的进程创建后会对应一个task_struct来对其表述,并添加到task_list链表里进行调度。进程被创建后最终会被终结,通过调用exit()函数退出而被设置为僵死状态,并释放所占资源和删除描述符等,并通知父进程;父进程可以用wait()函数查询子进程是否终结(这个函数使得进程有了等待特定进程执行完毕的能力);

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值