Linux 中的信号处理流程
前言 信号处理是操作系统很重要的工作之一,信号是一种异步软中断,在进程间通信中有着很大的应用。 例如,你在运行一个程序,它陷入了死循环,无法对其
前言 信号处理是操作系统很重要的工作之一,信号是一种异步软中断,在进程间通信中有着很大的应用。 例如,你在运行一个程序,它陷入了死循环,无法对其
前言 在上一篇文章中介绍了 kvmtool 的 run 命令的初始化流程,其中涉及多个子模块的初始化,包括 cpu、内存已经外设等。这些都是正式启动系统构建的虚拟硬件环
前言 在 kvm 学习的前一篇文章 kvmtool 中的数据结构 介绍了 kvmtool 中常用的数据结构。接下来这篇文章介绍在 kvmtool 是如何初始化这些数据结构,并搭建一个基本的虚拟化硬件环
前言 最近遇到一个 Linux 无法启动的问题,没有任何输出信息。为了摸清到底是 卡在哪儿了,需要查看 Linux 的启动消息。正常情况下,Linux 的 printk 函数是基于 console 的
前言 本文是 kvm 虚拟化系列的第 4 篇,前三篇介绍了 kvmtool 的基本使用以及linux 根文件系统的制作。 接下来我们将正式进入副主题,也就是 kvm 的用户态管理程序
前言 在用 kvmtool 启动 kvm 中的虚拟机之后,会进入一个终端窗口,而由于这个窗口是模拟的终端 窗口。因此通常会存在一些使用不便的问题,比如说虚拟机的窗口大小
准备工作 Bbusybox 提供了一系列可以直接运行的小程序集合,因此将 busybox 编译后的产物作为 rootfs 的工具再好不过了。这里需要说明的是,交叉编译器要和处理器架构一致。
前言 所谓学以致用,学习的目的就是为了使用。那么相反的,好用可以反过来督促进一步深入学习。本文是 linux kvm 虚拟化子系统的开篇,主要讲如何搭建一个基础
Thread_info 在 Linux 中的任务结构体 task_struct 中包含特定于体系结构的信息以及通用的信息, thread_info 结构体则是描述进程特定于体系结构的信息字段。而在 thread_info 中也包含指向 task_struct 的指针,这
Why 在 Linux 下也有比较多的邮件客户端软件,而我只用过雷鸟,功能非常完善,常见的日历功能如事件、任务等都有。 但是为什么我还要配置 Emacs 的邮件收发功能呢。
Bochs 模拟器 Bochs 是一个轻量级的硬件模拟器,相对于 Vmware, VirtualBox 这些软件,它显得轻巧得多。更重要的是,它有着强大的调试系统,因此成为广大操作系统编程人员的好工
Hyper-v 性能问题 之前一直使用 Hyper 下的 Arch 虚拟机,自从装上 Emacs 之后,总是感觉有点卡。刚开始以为是因为 Hyper-V 的缘故。可是,使用 Hyper 快速创建的 Ubuntu 却是很流畅。仔细观察
终端下 Emacs 复制问题 正常情况下,使用图形界面进行编码的时候是可以和 GUI 其它程序进行复制粘贴的,但是到了终端下就不行了,甚至是鼠标都没法用。 解决办法
Makefile 中的变量 变量的概念比较容易理解,毕竟任何语言都存在。在 Makefile 中,变量的意义也是一样的。不过不同 语言的变量表现形式可能不大一样,比如在 Makefile 中,变量
ccls ccls 是一个优秀的 c/c++ 语言自动补全服务端程序。虽然之前在 windows 上成功编译过一次,但是由于当时没记录下来,导致本次编译出错一时想不起来了。所以说好记性
windows 文件夹共享 这里只需要简单的几步就可以实现 windows 目录的共享功能。具体过程如下: 在你需要共享的目录右键,选择属性 选择共享按钮,点击中间的高级共享 勾
谈谈VSCode VScode 是微软公司开源的一款非常优秀的编辑器,本人也是非常喜欢。 但是早期养成了使用 spacemacs的习惯,后因为开启速度问题,转
谈谈 make 首先简单讲讲 make 吧,但感觉又没必要讲,几乎所有的程序都知道,尤其是在linux环境下工作过的程序员。make 就是一个自动化构建工具,用于
系统调用 实验内容 在linux0.11上添加两个系统调用iam()和whoami,分别用于向内核空间存字符串和取字符串。 添加步骤 在 include/unistd.h 中添加系统
实验目的 了解操作系统的加载过程 实验内容 修改bootsect.s程序:实现打印一个字符串 修改setup.s 程序:实现打印字符串并打印至少一个硬
写作目的 每次新换一个环境,就需要重新整理 snippets, 干脆直接记录在博客上。 markdown 插入标题 "head 1": { "prefix": "h1", "body": "# $1\n" }, "head 2": { "prefix": "h2", "body": "## $1\n" }, "head 3": { "prefix": "h3", "body": "### $1\n" }, "head 4": { "prefix": "h4", "body":
编译环境 这里选择轻量级的 Lubuntu,版本为19.10。 oslab环境搭建 感谢 Wangzhike提供开源的一键配置环境。 安装包下载 git clone https://github.com/Wangzhike/HIT-Linux-0.11.git 环
问题来源 Linux 系统默认能打开的文件个数上限是 1024 个,可通过 limits -n 查看,但实际上系统可打开的文件个数远超过这个限制,通过 cat /proc/sys/fs/file-max 可以看到,在我的 64 位机器上
虚拟文件系统作为内核子系统,为用户空间程序提供文件和文件系统相关操作的接口。系统中各文件系统依赖虚拟文件系统共存并协同工作。通过 vfs , 用户空间
内核的内存分配相比用户空间来说相对较为困难,主要是因为内核本身不能奢侈的使用内存,而且一般不能睡眠,处理内存分配错误也比较棘手。 页 内核将物理
内核中有很多基于时间驱动的函数,如调度程序中运行队列进行平衡调整或对屏幕进行刷新等。时间管理中需注意相对时间和绝对时间的差别以及周期性事件和
在进行多线程编程时,我们要特意留意共享数据的保护,防止并发访问时多个线程同时操作 导致的结果不一致性。 Linux 2.0 开始内核开始支持 SMP. 所以内核可以在同一
内核为处理中断提供了中断处理程序机制,这是内核必不可少的一部分。但仍然存在一些局 限: 中断程序异步执行,可能打断其它重要代码的执行;因此中断处
本章节的内容是一些数据结构,没甚么可说的。随便记记笔记吧。内容包括链表、队列、映 射、二叉树。 链表 这是 linux 中最简单的数据结构,是一种存放客可变数
调用方式 普通函数 虚函数 静态函数 非静态成员函数 C++ 设计准则之一:非静态成员函数至少和非成员函数效率一样。 成员函数内化为非成员函数的过程: 改写函数
三个作用 为用户空间提供硬件抽象接口 保证系统稳定和安全 使每个用户程序运行在虚拟系统中 系统调用 定义一个系统调用(以 getpid() 为例): SYSCALL_DEFINE0(getpid) { return task_tgid_vnr(current); // return current->tgid } SYSCALL_DEFINE0 是
对象大小 语言本身所造成的额外负担,如虚基类 编译器对于特殊情况的优化处理,如某些编译器对空虚基类的特殊支持,一般放在头部 就省去 1 byte 大小的空间 字
进程调度 进程是程序的运行态的表现形式 进程调用是确保程序有效工作的内核子系统 多任务 并发交互的执行多个进程的操作系统 抢占式 : 由调度程序决定什么时
进程 进程:处于执行期的程序的实时结果 文件描述符 挂起的信号 内核内部数据 处理器状态 一个或多个内存映射地址 一个或多个执行线程 (执行)线程: 进程中的
默认构造函数 在ARM(Annotated Reference Manual) 中:默认构造函数在 需要的 时候由编译器产生 产生出来。这里的需要为编译器需要,而不是程序需要,程序需
关于对象 面向过程 在 C 语言中, 我们通常将 数据 和 处理数据的操作(函数) 分开声明, 也就是说语言本身没有支持 数据和函数 之间的关联性. 这种程序为典型的
概述 内存管理 我们通常说的内存管理是操作系统内核提供的功能之一,也就是对于虚拟内存的管理。可以 分为以下几个不同的层次。 操作系统: 内核对虚拟内存
查找 文件查找 内容查找 数据处理 文件处理 内容处理 数据统计 文件拷贝 杂项 查找 文件查找 在当前目录下通过文件名查找一个文件,使用类似于这样的命令:fin
Table of Contens 常用快健键 一般快捷键 编辑器相关 历史命令 路径相关 少用但非常有用的命令 管理相关 使用别名 同步配置 脚本相关 善用文档 分屏管理 远程登录 杂项 常用快健
Table of Contens 什么命令行 让命令行人性化 基础命令 私人神器zsh 熟悉环境 帮助命令 编辑命令 重定向 通配符 任务管理工具 远程登录 文件管理工具 网络管理工具 版本控制
Table of Contens 关于继承 何为对象 何为继承 public 继承 public 继承权限 实例 protected 继承 protected 继承权限 实例 private 继承 protected 继承权限 实例 虚继承 实例 虚继承与虚函数 总结 关于继承 随着软件功能的
Table of Contens 文本编辑器 插入字符 重新映射方向键 按键处理 插入字符 删除字符 删除字符 添加行 换行 修改提示 保存文件 退出提示 另存为 效果 总结 参考 文本编辑器 在之前的
Table of Contens 状态栏 腾出空间 写入 buffer 消息框 腾出空间 滞留时间 写入消息 写入 buffer 滚动 垂直滚动 水平滚动 修改边界检查 写入 buffer 总结 参考 状态栏 熟悉 vim 的朋友都知道, vim 有一
Table of Contens 窗口 Buffer 窗口 size 波浪线 欢迎界面 输入 Ctrl+q 退出 移动光标 文本内容 输出 显示 buffer 刷新屏幕 总结 参考 窗口 说到终端编辑器, vim 应该是用的最多的吧。在所有有关 Linux 基
Table of Contens 写作动机 规范模式 文本模式 设置属性 本地模式标志 ~~ c_lflag 输入模式标志 ~~ c_iflag 输出模式标志 ~~ c_oflag 杂项标志 开启和关闭文本模式 总结 参考 写作动机 因为是该项目
Table of Contens Linux shell 基本知识 shell 工作流程 shell 实现 可执行程序该有的样子 一探循环体究竟 解剖循环体 总结 参考 Linux shell 基本知识 目前市场上主要有三大主流操作系统,除了 windows 系
Table of Contens 数据结构 – 树 二叉树 二叉查找树 平衡二叉树 B树 B+树 B*树 字典树/Trie树 基数树/radix树 树的应用 参考 数据结构 – 树 树是学习数据结构必
Table of Contens 安装准备 系统镜像 虚拟软件 启动系统 配置网络 准备磁盘 创建分区 创建文件系统 挂载根分区 安装 stage3 配置编译选项 基本系统 镜像站点 复制 DNS 信息 挂载必要的文