linux系统内核设计与实现
文章平均质量分 86
记录《linux系统内核设计与实现》学习笔记
StudyWinter
持续学习
展开
-
《linux系统内核设计与实现》-内核空间和用户空间的概念以及内核空间和用户空间的数据拷贝
整个系统中有各种资源,比如计算资源、内存资源和外设资源,而linux是多用户、多进程系统,所以,这些资源必须在受限的、被管理的状态下使用,要不然就陷入了混乱。(3)从软件设计思想来看,解除了核心代码和业务逻辑代码的耦合内核代码偏重于系统管理;对于x86体系的cpu,用户空间代码运行在Ring3模式,内核空间代码运行Ring o模式;对于arm体系的cpu,用户空间代码运行在usr模式,内核空间代码运行在svc模式;read.c:把内核空间的数据拷贝到内核空间。write.c:将用户数据拷贝到内核空间。原创 2024-07-07 08:53:25 · 503 阅读 · 0 评论 -
《linux系统内核设计与实现》-实现最简单的字符设备驱动
驱动也需要,但是驱动不能链接和使用应用层的任何lib库,驱动需要引用内核的头文件和函数。所以,编译的时候需要指定内核源码的地址。为了开发方便,也可以安装内核开发包,之后引用这个内核开发包的目录也可以。驱动代码如下 helloDev.c,这是一个最小、最简单的驱动,去掉了其他的不相干代码,尽量让大家能了解驱动本身。linux应用层程序在编译的时候,需要链接c运行时库和glibc库。有了驱动文件之后,还需要一个Makefile才能把驱动编译出来。编译出来的驱动文件,名称为:helloDev.ko。原创 2024-07-07 08:34:24 · 468 阅读 · 0 评论 -
《linux系统内核设计与实现》安装linux内核源码
安装linux内核原创 2024-05-22 20:29:30 · 951 阅读 · 0 评论 -
《linux系统内核设计与实现》第三章-进程管理
在Linux系统中,这通常是调用fork()系统的结果,该系统调用通过复制一个现有进程来创建一个全新的进程。进程描述符中包含的数据能完整地描述一个正在执行的程序:它打开的文件,进程的地址空间,挂起的信号,进程的状态,还有其他更多信息。在传统的Unix系统中,一个进程只包含一个线程,但现在的系统中,包含多个线程的多线程程序司空见惯。通常,创建新的进程都是为了立即执行新的、不同的程序,而接着调用exec()这组函数就可以创建新的地址空间,并把新的程序载入其中。实际上,进程就是正在执行的程序代码的实时结果。原创 2024-04-22 11:15:33 · 781 阅读 · 0 评论 -
《linux系统内核设计与实现》第二章-从内核触发
登录Linux 内核官方网站http://www.kernel.org,可以随时获取当前版本的Linux源代码,可以是完整的压缩形式(使用tar命令创建的一个压缩文件),也可以是增量补丁形式。配置选项CONFIG_IKCONFIG_PROC把完整的压缩过的内核配置文件存放在/proc/config.g下,这样当你编译一个新内核的时候就可以方便地克隆当前的配置。尽管这些缺省值有点随意性(在i386上,据说那就是Linus的配置),但是,如果你从未配置过内核,那它们会提供一个良好的开端。原创 2024-04-14 18:04:25 · 1104 阅读 · 3 评论 -
《linux系统内核设计与实现》第一章-linux内核简介
内核有时候被称作是管理者或者是操作系统核心。通常一个内核由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器时间的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。对于提供保护机制的现代系统来说,内核独立于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限。这种系统态和被保护起来的内存空间,统称为内核空间。相对的,应用程序在用户空间执行。原创 2024-04-14 10:48:07 · 926 阅读 · 0 评论