首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏【计网】Cisco

    操作系统 | 编写内核

    操作系统实验之编写内核 1.1 实验目的 学习和掌握Linux内核编译过程 1.2 实验内容 完成Linux内核编译过程 1.3 实验步骤 实验步骤如下: 1.将U盘挂载到redhat虚拟机如图3- mount –tvfat /dev/sdb1 /mnt/uuudisk此时U盘的内容可以在/mnt/uuudisk下进行读写如图3-5. 5.进入/mnt/uuudisk并且输入ls查看下辖文件信息如图3-6. 6.将linux-2.4.22.tar.gz文件复制到/usr/src路径下,输入cp linux-2.4.22.tar.gz /usr/src并cd /usr/src进入/usr/src路径如图3 3-36. 20.输入cat /proc/version显示为2.4.22版本如图3-37. 1.4 实验过程 图3-1 图3-2 图3-3 图3-4 图3-5 图3-6 图3-7 图3-8 图3-9 在编写内核重启时未命名自己的名字而重新又做了一遍,所以在使用reboot指令在选择内核页面会出现3个内核,在使用make modules编译内核模块以及make modules_install安装内核花了大量时间

    31810编辑于 2024-02-20
  • 来自专栏大数据和云计算技术

    操作系统内核之争

    1、内核分类 内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源。 中文版维基百科上将内核分为四大类: 单内核(宏内核); 微内核; 混合内核; 外内核。 这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最核心的部分的设计更简单。 然而后来的实验证明,纯微内核的系统实际上也可以是高效率的。大多数现代操作系统遵循这种设计范畴,微软公司开发的Windows操作系统就是一个很好的例子。 外内核内核系统,也被称为纵向结构操作系统,是一种比较极端的设计方法。 “老一点的操作系统都是宏内核的,也就是说,整个操作系统是一个运行在核心态的单独的a.out文件, 这个二进制文件包含进程管理,内存管理,文件系统以及其他。

    3.6K60发布于 2018-03-08
  • 来自专栏PUSDN平行宇宙软件开发者网

    CentOS6内核太老更新内核

    title: CentOS6内核太老更新内核 date: 2020-04-01 23:31:42 tags: [CentOS] categories: [CentOS] ---- 前情提示 centOS6 安装docket或者其他软件比如gitea时候,提示kernel too old 报错截图: 查看当前内核版本 [root@iZ2zedmufcgu9ag37ix8e6Z gitea]# uname :本文是centos6.9 rpm -Uvh http://www.elrepo.org/elrepo-release-6-9.el6.elrepo.noarch.rpm 升级内核 在yum的elrepo 源中有ml和lt两种内核,其中ml(mainline)为最新版本的内核,lt为长期支持的内核。 =elrepo-kernel -y install kernel-lt 此处选择lt内核 修改文件 内核升级完后需要修改内核的启动顺序,原来是1,需要改为0,vi或者vim vim /etc/grub.conf

    75930编辑于 2023-10-11
  • 来自专栏开源小分队

    看小说能写操作系统内核

    最近逛开源社区,发现一个开源项目 flash-linux0.11-talk 把学习操作系统源码,写成了一部小说,把内核当小说看,挺爽的。 简介 品读 Linux 0.11 核心代码这个开源项目,作者以写小说的方式进行介绍操作系统核心代码,深入浅出的介绍了操作系统是怎样写出来的。 部分章节标题: 大纲 项目主要分为6大模块: 第一部分:进入内核前的苦力活 第二部分:大战前期的初始化工作 第三部分:一个新进程的诞生 第四部分:shell 程序的到来 第五部分:从一个命令的执行看操作系统各模块的运作 第六部分:操作系统哲学与思想 细节 该开源项目每章的内容都写的简洁明了,就比如第一回,写到的就两行代码: mov ax,0x07c0 mov ds,ax 图文并茂的讲解了具体是什么意思 可见作者是很用心的讲解操作系统源码 小结 想想我们看小说的时候是不是很爽,看这个开源项目也是一样,作者也是想要像写小说一样的把操作系统源码,生动有趣的展现给我们。快看起来像刷小说一样,一口气刷完它。

    69530编辑于 2022-12-07
  • 来自专栏【计网】Cisco

    操作系统 | 编写内核模块

    操作系统实验之编写内核模块 1.1 实验目的 学习和掌握模块加载机制,增加新的内核功能 1.2 实验内容 完成增加新的内核功能 1.3 实验步骤 实验步骤: 1.用记事本打开xxx.c按照实验五PPT –Wall xxx.c编译并输入ls查看是否编译成功如图5-3至图5-4. 3.输入命令insmod xxx.o加载这个模块如图5-5. 4.输入命令lsmod查看系统中所有的模块如图5-6至图 5-7. 5.输入命令dmesg看系统日志(最后一行)如图5-8至图5-9. 6.输入命令rmmod hello卸载模块并再次输入命令dmesg看系统日志如图5-10至图5-11. 1.4 实验过程 ​​图5-1 ​​图5-2 ​​图5-3 ​​图5-4 ​​图5-5 ​​图5-6 ​​图5-7 ​​图5-8 图5-9 ​​图5-10 ​​图5-11 1.5 心得体会 通过此次实验,我成功编写了操作系统内核模块 ,因在核心态下运行故采用printk()函数,输入insmod加载此模块,结果显示loaded表示加载成功,使用dmesg分别成功查看在自己添加内核模块后的系统日志,这次实验相比实验3和实验4显得较为简单但需有耐心

    30210编辑于 2024-02-20
  • 来自专栏luxixing

    Linux操作系统内核参数优化

    limits.conf,添加如下内容(100000替换为自己想要的值) * hard nofile 100000 * soft nofile 100000 编辑文件/etc/sysctl.conf中的相关内核参数 接受缓存区预留内存最大值 默认值 128k # # net.unix.max_dgram_qlen 进程间通信发送数据, 默认10 # # net.ipv4.tcp_syncookies 只有在内核编译选择

    4.1K40发布于 2019-05-28
  • 来自专栏kayden

    64位 & Windows 内核6

    ---- 64位 & Windows 内核6 前言 继续学习《逆向工程核心原理》,本篇笔记是第五部分:64位 & Windows 内核6 一、x64 1、x64处理器中的变化 含有VA的指令大小增加了 ULONGLONG类型 (2)IMAGE_THUNK_DATA 大小从4个字节变为8个字节 (3)IMAGE_TLS_DIRECTORY 部分成员是VA值,扩展为8个字节 3、WinDbg 基本指令 二、内核 6 kernel 6 是vista之后的系统 Win10 是kernel 10 1、会话 会话:登录后的用户环境,kernel 6引入 系统会话是0,与用户会话隔离(即第一个登录的用户是会话1, osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&osvi); if( osvi.dwMajorVersion >= 6

    91510编辑于 2022-09-29
  • 来自专栏fred 随笔

    centos 6 编译安装内核

    @centos6 build]# [root@centos6 build]# .. libstdc++-devel.x86_64 0:4.4.7-23.el6 mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6 完毕! with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-1.0.1 线程模型:posix gcc 版本 5.4.0 (GCC) 4、编译kernel内核 fs init Kbuild kernel MAINTAINERS mm README scripts sound usr # 以系统上原有的操作系统为模板 x86_64.img 5、至此,内核编译成功,重启验证一下 图片 登录服务器查看内核信息 [root@centos6 /]# uname -a Linux centos6 4.13.2 #1 SMP

    2K20编辑于 2022-08-30
  • 来自专栏韩曙亮的移动开发专栏

    【Linux 内核】宏内核与微内核架构 ( 操作系统需要满足的要素 | 宏内核 | 微内核 | Linux 内核动态加载机制 )

    文章目录 一、操作系统需要满足的要素 二、宏内核 三、微内核 四、Linux 内核动态加载机制 一、操作系统需要满足的要素 ---- 电脑上运行的 操作系统 , 是一个 软件 ; 设备管理 : 操作系统需要 为 用户 和 应用程序 管理并分配电脑的 硬件资源 , 如 CPU , 磁盘 , 内存 , 网络 等 ; 开发环境 : 操作系统 要为 应用程序 开发 提供配套环境 ; 执行环境 : 操作系统 要为 应用程序 执行 提供配套环境 ; 虚拟性支持 : 支持多进程 , 每个运行的应用程序进程 , 都可以感觉到有专门的处理器提供系统服务 ; 并发性支持 : 操作系统需要有 执行多个线程的能力 , 线程是独立运行 , 独立调度的最基本单位 ; 二、宏内核 ---- 宏内核 : 内核代码 编译成 二进制文件 , 内核 运行在 一个 大内核 地址空间 中 , 可以 直接 访问 , 调用 内核代码 - 微内核 : 将 操作系统 拆分成 多个 独立功能模块 , 这些 独立功能模块 之间通过 " 消息 " 进行通信 , 微内核 效率低 ; 下图中 , 进程 , 文件系统 , 设备驱动 , 与 微内核

    5.4K30编辑于 2023-03-30
  • 来自专栏CSDN旧文

    操作系统』微内核结构的操作系统几何?(优缺点)

    内核操作系统内核操作系统,即实现了一个可在其上构建通用 OS 的基础内核,该内核程序运行在核心态,开机常驻内存。 当前微内核操作系统结构仍没有一致公认的定义,但可从以下4方面进行描述: 足够小的内核:微内核并非一个完整的OS。 与此同时,也必然改善系统的灵活性,不仅可在操作系统中增加新的功能,还可修改原有功能,以及删除已过时的功能,以形成一个更为精干有效的操作系统。 3) 可移植强 在微内核结构的操作系统中,所有与特定CPU和I/O设备硬件有关的代码,均放在内核内核下面的硬件隐藏层中,而操作系统其它绝大部分(即各种服务器)均与硬件平台无关,因而,把操作系统移植到另一个计算机硬件平台上所需作的修改是比较小的 缺点 效率相对较低: 在微内核OS中,由于采用了非常小的内核,以及客户/服务器模式和消息传递机制,这些虽给微内核OS带来了许多优点,但由此也使微内核OS存在着潜在的缺点。

    2.7K20发布于 2021-09-06
  • 来自专栏蒙奇D索隆的学习笔记

    操作系统】408操作系统核心考点精讲:宏内核、微内核与外核架构全解析​

    1.2 内核程序 在操作系统中,我们可以将其按照功能划分成两部分:内核功能与非内核功能。 ,而这些程序就位于操作系统内核中。 当我们要运行这些内核程序时,就需要CPU处于内核态。 按照操作系统内核架构,我们又可以将其进一步划分为:宏内核和微内核。 三、微内核 随着体系结构和应用需求的不断发展,需要操作系统提供的服务越来越复杂,操作系统设计规模急剧增长,操作系统也面临着“软件危机”困境。 那些移出内核操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助与微内核进行通信。 微内核结构将操作系统划分为两大部分:微内核和多个服务器。

    55310编辑于 2025-11-05
  • 来自专栏全栈程序员必看

    操作系统分为用户态和内核态_内核态 用户态

    操作系统内核并不知道它的存在,它完全是在用户空间中创建。 用户级线程有很多优势,比如。 管理开销小:创建、销毁不需要系统调用。 切换成本低:用户空间程序可以自己维护,不需要走操作系统调度。 可以利用多核 CPU 优势:内核拥有较高权限,因此可以在多个 CPU 核心上执行内核线程。 操作系统级优化:内核中的线程操作 I/O 不需要进行系统调用;一个内核线程阻塞了,可以立即让另一个执行。 切换成本较高:切换的时候,也同样存在需要内核操作,需要切换内核态。 用户态线程和内核态线程之间的映射关系 线程简单理解,就是要执行一段程序。程序不会自发的执行,需要操作系统进行调度。 相当于进程主线程的延展,使用的是操作系统分配给进程主线程的时间片段。内核线程由内核维护,由操作系统调度。 内核线程可以独立执行,操作系统会分配时间片段。因此内核态线程更完整,也称作轻量级进程。内核态线程创建成本高,切换成本高,创建太多还会给调度算法增加压力,因此不会太多。

    2.7K21编辑于 2022-09-30
  • 来自专栏逆向技术

    内核,配置WinDbg,调试操作系统(双机调试)

              配置WinDbg,调试操作系统(双机调试) PS: 设置双机调试之前,请先安装虚拟机,并且安装好XP系统.这里不做演示.直接设置. 4) 点击完成,再点击确定完成串行端口的添加 三丶虚拟机中的操作系统的设置 1) 启动VM的操作系统,打开C盘,设置文件下选项,设置为不隐藏系统文件,查看所有隐藏文件 ? 6) 设置完保存重新启动操作系统,选择启动调试程序,进入操作系统 ? ? 7) 运行我们刚才创建的Windbg快捷方式,连接成功 ?

    1.8K30发布于 2020-08-14
  • 来自专栏韩曙亮的移动开发专栏

    【Linux 内核 内存管理】Linux 内核内存布局 ① ( 查看 Linux 操作系统位数 | 查看 Linux 操作系统软硬件信息 )

    文章目录 一、查看 Linux 操作系统位数 二、查看 Linux 操作系统软硬件信息 一、查看 Linux 操作系统位数 ---- 在 64 位的 Linux 中 , 使用 48 位 表示 " 得到结果 64 , 说明该系统是 64 位 Ubuntu Linux 操作系统 ; 二、查看 Linux 操作系统软硬件信息 ---- 执行 cat /proc/cpuinfo 命令 , 可以查看 " Linux 内核位数 “ 和 ” 系统的软硬件信息 " ; 输出内容解析 : vendor_id : GenuineIntel CPU 制造商 GenuineIntel cpu family : CPU 中的编号 cpu cores : 1 逻辑核心 所在的 物理核心数 apicid : 0 区分不同的逻辑核心编号 , 该编号不一定连续 ; bogomips : 5807.99 Linux 内核启动时测量的 siblings : 1 core id : 0 cpu cores : 1 apicid : 6 initial apicid : 6 fpu : yes fpu_exception : yes

    34.5K20编辑于 2023-03-30
  • 来自专栏C语言入门到精通

    操作系统内核都是用C语言写的?

    ②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和 C语言 汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。

    1.8K2219发布于 2020-12-24
  • 来自专栏云计算运维

    Linux操作系统原理—内核网络协议栈

    前言 本文主要记录 Linux 内核网络协议栈的运行原理 数据报文的封装与分用 image.png 封装:当应用程序用 TCP 协议传送数据时,数据首先进入内核网络协议栈中,然后逐一通过 TCP/IP image.png 分用:当目的主机收到一个以太网数据帧时,数据就开始从内核网络协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议都会检查报文首部中的协议标识,以确定接收数据的上层协议。 毫无疑问,这是整个内核网络协议栈的核心。这一层主要实现了各种网络协议,最主要的当然是 IP,ICMP,ARP,RARP,TCP,UDP 等。 image.png sock_init() 包含了内核协议栈的初始化工作: sock_init:Initialize sk_buff SLAB cache,注册 SOCKET 文件系统。 在中断服务子程序中,数据会从硬件的缓冲区复制到内核的空间缓冲区,并包装成一个数据结构(sk_buff),然后调用对驱动层的接口函数 netif_rx() 将数据包发送给设备无关层。

    5.1K00发布于 2021-08-30
  • 来自专栏运维前线

    CentOS6.X 升级内核Kernel

    SL-6或CentOS-6安装ELRepo: rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm 升级Kernel 这里需要注意的是,在 ELRepo 中有两个内核选项,一个是 kernel-lt(长期支持版本),一个是 kernel-ml(主线最新版本),采用长期支持版本(kernel-lt),更稳定一些 kernel-ml yum --enablerepo=elrepo-kernel install kernel-ml -y 安装完成,需要修改grub vim /etc/grub.conf 根据安装好以后的内核位置 ,修改 default 的值,一般是修改为0,因为 default 从 0 开始,一般新安装的内核在第一个位置,所以设置default=0 ? 所有操作都执行完毕以后,重启主机,重启后执行 uname -r,查看内核版本号 [root@db-slave ~]# uname -r 4.14.3-1.el6.elrepo.x86

    1.7K50发布于 2018-01-02
  • 来自专栏不温卜火

    Spark内核详解 (6) | Spark Shuffle 解析

    数量为单位的本地文件中,(一个Core只有一种类型的Key的数据),每1个Task所在的进程中,分别写入共同进程中的3份本地文件,这里有4个Mapper Tasks,所以总共输出是 2个Cores x 3个分类文件 = 6个本地小文件

    92120发布于 2020-10-28
  • 来自专栏C语言入门到精通

    操作系统内核都是用C语言写的?

    ②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和 C语言 汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。

    1.9K3129发布于 2020-09-17
  • 来自专栏小脑斧科技博客

    实战操作系统 loader 编写(下) -- 进军内核

    引言 上一篇文章中,我们结合此前已经介绍过的一系列知识,成功的将内核载入内存并进入到了保护模式中。 实战操作系统 loader 编写(上) — 进入保护模式 但是,我们马上就遇到了一个十分重要的问题,那就是如何在内存中按照 ELF 文件所需要的方式放置我们的内核,从而让内核能够执行呢? 但是,我们目前的分页机制启动代码是直接将物理地址与虚拟地址一对一映射实现的,因为我们的目标是尽早实现一个可用的操作系统,所以要避免过度深入某一环节。 KERNEL ELF header e_entry 值,起始物理地址 jmp SelectorFlatC : KernelEntryPointPhyAddr ; 跳转进入内核 6.

    53620编辑于 2022-06-27
领券