首页 > 系统相关 >Professional Linux Kernel Architecture(一)

Professional Linux Kernel Architecture(一)

时间:2024-09-19 15:50:23浏览次数:10  
标签:Kernel 内核 微内核 Linux 进程 Professional CPU Architecture

基于linux内核2.6.24版本,书籍:Professional Linux Kernel Architecture英文版(可在https://github.com/welldef/os_books.git下载)

1 一些概念

1.1 微内核和单体内核

微内核:只有最基本的功能直接在中央内核(微内核)中实现。所有其他功能都委托给各自独立的进程,这些进程通过通信接口与微内核通信,例如各种文件系统、内存管理等。理论上,这是一种非常优雅的方法,因为各个部分明显相互隔离,这迫使程序员使用“精益”编程技术。这种方法的其他好处是动态可扩展性和在运行时交换重要组件的能力。然而,由于需要额外的CPU时间来支持组件之间的复杂通信,微内核在实践中并没有真正建立起来

单体内核:内核的整个代码(包括其所有子系统,如内存管理、文件系统或设备驱动程序)都打包到一个文件中。每个函数都可以访问内核的所有其他部分

linux使用的是单体内核,但其模块化特性确实在一定程度上借鉴了微内核的理念

1.2 内核组成

进程、任务切换和调度

在Unix下运行的应用程序、服务和其他程序被称为进程。各个进程的地址空间是完全独立的。

linux是多任务系统,多任务系统中,内核将负责进程的切换。既然是多任务系统,则该系统必须给每个单独的进程一种CPU始终可用的错觉。这是通过在CPU资源被回收并且进程被置于空闲状态之前保存进程的所有状态来实现的。当该进程被重新激活时,恢复保存的状态。

内核还必须决定如何分配CPU时间。重要进程被分配了更大的CPU时间份额,而不太重要的进程则被分配了更小的份额。决定哪个进程运行多长时间被称为进程的调度

1.2.1 进程

Linux采用树形结构管理进程之间的关系,称之为进程树,其中每个进程都依赖于一个父进程。内核启动时会初始化1号进程-init进程,init进程作为所有用户进程的根,它负责进一步的系统初始化工作以及显示登录提示等等功能。(新版本的内核1号进程已经变为systemd了)

 

标签:Kernel,内核,微内核,Linux,进程,Professional,CPU,Architecture
From: https://www.cnblogs.com/zhenjingcool/p/18420697

相关文章

  • Xen on qemu for arm64: 由qemu-system-aarch64导致的kernel-panic
    背景描述:    我在A平台利用qemu实现了xen中dom0的运行,将其移植到B平台运行,dom0的复现遭遇了kernel-panic,在虚拟设备的添加时异常。一、将运行dom0所需要的可执行文件拷贝到同一个目录        可执行文件的来源参考XenOnQemuforarm64_qemuxen-CSDN博客......
  • 论文分享 《Timing Side-channel Attacks and Countermeasures in CPU Microarchitect
    Attack概述传统攻击(CONVENTIONALATTACKS)在传统攻击中,Attacker通常:与Victim共享硬件资源(比如说LLC,BP,Prefetcher等)可以观察,改变微架构状态攻击步骤本文作者将传统攻击分为以下三步,如Fig1所示:定位“漏洞”:该漏洞包括“代码漏洞”(vulnerablecodegadgets),即......
  • 树莓派操作系统-利用Makefile创建内核镜像文件kernel8.img
    编写树莓派内核映像的过程可以等同于gcc的编译过程:预处理、编译、汇编、链接,后面还会加一步:将可执行文件转换成二进制的镜像文件。在MakeFile里的构建过程分为3步:1.将.c文件经过预处理、编译、汇编生成.o文件,将.S文件经过汇编生成.o文件。2.将.o文件经过链接生成.elf可执行文件......
  • pbootcms自动加载类文件时发生错误,类名【core\basic\Kernel】
    当PbootCMS在自动加载类文件时发生错误,提示类名 core\basic\Kernel 丢失,通常是由于 Kernel.php 文件被误删除或被安全系统误判为风险文件。在这种情况下,可以按照以下步骤重新上传 Kernel.php 文件来解决问题。解决方案重新下载模板下载任意一个PbootCMS的模板包。......
  • Why system logging "kernel: tcp_parse_options: Illegal window scaling value 15 >
    环境Linux问题在var/log/messages文件中发现以下日志。Oct621:01:05mplttaxsx101kernel:tcp_parse_options:Illegalwindowscalingvalue15>14received.Oct621:01:05mplttaxsx101kernel:tcp_parse_options:Illegalwindowscalingvalue15>14......
  • 《浪人崛起》游戏启动时闪退提示“找不到KernelBase.dll”该怎么解决?浪人崛起游戏崩溃
    启动《浪人崛起》时,游戏闪退并提示“找不到KernelBase.dll”,这着实令人烦恼。别着急,这个问题是可以解决的。可能需要重新安装相关组件,或者检查系统文件完整性。具体该如何操作才能顺利解决呢?本篇将为大家带来《浪人崛起》游戏启动时闪退提示“找不到KernelBase.dll”该怎么解决......
  • 关于RTX 4090 微调llama2模型时出现nvcc fatal : Unsupported gpu architecture 'comp
    RTX4090是现在普通人可以轻松获取的最好的显卡了。运算速度仅次于专业图形卡TeslaA100,A800,H100RTX4090显卡是可以单卡推理llama27b和13b模型的,7b模型占用缓存14G左右,13b模型单卡推理显存占用在23G多点(只是运行一段时间容易爆显存),所以普通人都是可以使用llama2大语言模型。......
  • 使用nvim查看的linux kernel 源码(可以快速跳转等
    neovim使用的是lazyvim,开箱即用十分方便。linuxkernel源码,如果用clangd构建指定好LLVM还是可以使用下面的指令得到compile_commands.json这个文件的。compile_commands.json就是用来做clangd跳转支持的文件。./scripts/gen_compile_commands.py但是对于aarch64-linux-gnu......
  • 2. 修改/编译kernel,luci登录
    1.修改kernel,在 openwrt/imx_openwrt/target/linux/imx/patches-5.15/目录下有一大堆补丁文件,就是用来给目标镜像打补丁的,在这里修改kernel补丁修改设备树补丁文件 0002-add-dts-files.patch+&pcie0{+pinctrl-names="default";+pinctrl-0=<&pinctrl_pcie......
  • 《星球大战:亡命之徒》游戏启动时崩溃弹窗“缺少kernel32.dll”该怎么解决?星球大战亡命
    当《星球大战:亡命之徒》启动时崩溃弹窗提示“缺少kernel32.dll”,可以尝试重新安装游戏,看是否能恢复该文件。也可从可靠渠道下载kernel32.dll,放置到系统目录下,以解决问题让游戏正常启动。本篇将为大家带来《星球大战:亡命之徒》游戏启动时崩溃弹窗“缺少kernel32.dll”该怎么解决......