How My Arch Linux StartUp
How Linux Works I - How Linux Start Up
写在前面:上一个专栏中我写完了内核源码层面看Linux,我们把抽象层拉高一点,看看Linux是如何工作的!
Linux如何启动?
BIOS(Basic Input Output System)或者启动固件加载并运行引导装载程序(告知OS在哪里)
引导装载程序在磁盘上找到内核的位置,载入RAM中启动
初始化设备与驱动程序
挂载root文件系统
内核使用swapper进程(0号进程,PID = 1)来允许一个init进程,从这里开始,我们的程序将会被下放到用户态
init继续启动其他进程
最后的尾声就是启动一个登陆进程!是的,就是那个让你输入用户密码的那个界面就是登录进程完成的
启动信息 Linux内核启动信息去这里看:
sudo dmesg > demo.txt
这条指令可以将输出的信息发送到demo.txt文件当中,或者你想要在控制台上看
sudo dmesg | less
将会调度less程序使得日志分页。一些启动日志将会保存在/var/log/下面,不同的发行版 ...
Linux内核深入理解全集
Linux 内核深入理解 - 绪论 任何计算机系统都包含一个名为操作系统的基本程序集合!在这个集合里最重要的程序被称为内核。当操作系统启动的时候内核会被装进RAM当中。
操作系统说来说去就是两个主要目标:他充当底层的物理部件好用的抽象,给予上层服务一个好的平台
与硬件部分进行交互,为包含在硬件平台上的所有底层可编程部件提供服务!
为运行在计算机系统上层的应用程序即所谓的用户程序提供一个执行环境!
为了保障安全。我们的操作系统引入了一组概念,也就是用户模式和特权模式。我们会在之后的博客中有所涉及:简单的讲:一些涉及到底层硬件访问的操作需要在特权模式下进行,反之则会在用户模式下进行!程序的运行有时会在两者之间进行频繁的切换,从而更好地完成程序所提供的服务。
多用户系统 多用户系统就是一台能够并发的执行和独立的执行分别属于两个或者多个用户的若干应用程序的计算机。
并发意味着几个应用程序同时处于活动状态执行自己应用进程所需要执行的任务,而并不需要考虑其它应用程序在做什么!
多用户操作系统必须包含以下几个特点
核实用户身份的认证机制
...
Linux-内核-Linux简单简史与概论
Linux内核导览与简史UNIX简史 我们必须先提一嘴Unix操作系统的简史:
1964年贝尔实验室(Bell Labs)、通用电气(General Electric)和麻省理工学院(MIT)联合启动研发第二代分时操作系统MULTICS(Multiplexed Information and Computing Service)(注:MULTICS正式研制始于1965年)
1969年,贝尔实验室研究人员Ken Thompson(对,C语言的发明者之一)在退出MULTICS项目时,准备将原本在MULTICS系统上开发的“star travel”游戏转移到DEC PDP-7上运行。在转移游戏程序运行环境的过程中,Thompson和Dennis M. Ritchie共同动手设计了一套包含文件系统、命令解释器以及一些实用程序的支持多任务的操作系统。与Multics相对应,这个新操作系统被同事Brian Kernighan戏称为UNICS(UNiplexed Information and Computing System,非复用信息和计算机服务),之后大家取谐音便叫 ...
Linux深度学习教程(引论)
小引 这子篇博客是个人笔记在Linux系统的全流程笔记的小引,也是这个系列的导览。这组博客将会从常用的Linux操作(以Arch为例)。如果是从0开始阅读我的博客,可以考虑按照
基础的Linux使用
Linux System API
更加通用的操作系统概念
计算机组成原理
Linux内核架构
的顺序进行阅读,从看得见,摸得着,使用的最多的部分进行阅读。这里我们大胆的假设您的C语言基础功底尚可,关于疑难的部分将会给出相关的解释。
浅论 Linux的重要性无需多言,这也是为什么单独给他开一篇专门的博客集进行记录。
Linus从1991年发布了他的第一个Linux的版本,这个Linux运行在Intel 80836微处理器上(值得注意的是,后续我的研读Linux 0.11的部分源代码也就会基于这个计算机硬件环境展开深入的讨论),在直到我写下这篇博客的2024年4月3日的今天:Linux内核在全世界顶级的程序员的贡献下,发生了翻天覆地的变化.。3月31号,我们的Linux内核来到了6.9.rc2这个版本(关于内核是什么,如何理解版本号的含义我会在Lin ...
虚拟机Arch Linux With KDE6(x11)安装小记
虚拟机Arch Linux With KDE6(x11)安装小记写在前言 此篇博客记载了笔者安装ArchLinux的基础步骤和安装教程,供各位看官参考和评判。
环境:Windows11下的VMWare虚拟机安装2024年3月初发行的Linux 6.8.1Kernel,安装的固件类型是UEFI安装而不是BIOS安装
配置导向:
分区简单:UEFI分区(300M) + Swap(4G) + FileSystem(Btrfs)(75.6G)
BaseI. 开始 在安装结束VMWare虚拟机之后,诸位如果想要下载Arch Linux ISO,可以前往:
Arch Linux - Downloads
下的中国源:
aliyun.com
…
进行下载
下载结束之后,记住自己存放的ISO的位置,随后打开VMWare WorkStation,走过一次典型的虚拟机安装教程。这里给出笔者的配置:
值得注意的是,请务必保证自己的内存不要小于1GB,否则Arch Linux Installer将会无法装进内存导致无法安装!
请设置 ...
C++后端入门 1-cpp基础
C++基础 我们来学习服务器开发,首要的事情就是把基本工打好。
IMPL方法 我们先来看一个经典的设计方法:impl方法。举个例子,我想要对外提供一个OCR库
class OCRPackage : public QObject
{
Q_OBJECT;
public:
enum class ErrorState{
NO_ERROR,
// config ERROR
NO_EXECUTABLE,
NO_SAVING_DIR,
EMPTY_TASK,
TASK_ALREADY_DEPATCH
} error = ErrorState::NO_ERROR;
enum class SupportLanguage{
CHINESE,
ENGLISH,
};
enum class Working_State{
...
C++智能指针浅论
C++ 智能指针 我们今天的主题是简单的智能指针。智能指针主要有三种:std::unique_ptr,std::shared_ptr,std::weak_ptr,第三种被广泛认为是解决一个我们将要谈到的“循环引用”的topic服务的,我们实际上主要把目光放在前两个。
std::unique_ptr入门_EXPORT_STD template <class _Ty, class _Dx /* = default_delete<_Ty> */>
class unique_ptr { // non-copyable pointer to an object
public:
using pointer = typename _Get_deleter_pointer_type<_Ty, remove_reference_t<_Dx>>::type;
using element_type = _Ty;
using deleter_ ...
Opencv490+MSVC_Mingw+WITHQT+OpencvContrib4_x编译教程
OpenCV4.9.0 + 扩展 + WITH_QT(Qt6)模块编译教程(Windows) 本篇教程是Opencv4.9.0 和 扩展Opencv Contrib4.x以及带上了WITH_QT选项的CMake编译环境配置和编译教程。注意到环境是Window11(10应该仍可以使用)。本篇教程将会导出Mingw版本的,和MSVC19版本的Debug和Release四套Opencv库的编译教程。各位读者可以根据自己的需求进行编译,或者是在本文最后的部分前往本人开设的Github仓库处下载已经编译好的资源和库直接进行使用。
前置的能力要求与说明
本教程要求自己至少会翻墙,不会翻墙的话就不建议费心自己编译了,文章的最后有仓库直接嫖,当然如果是的确需要存在自己的编译需求的话,可以查询如何瞒过CMake的下载步骤(也就是贴MD5码瞒天过海),替换自己的下载的资源从而使得CMake正确的生成MakeFile。
以及本教程需要提示您:本教程不生成opencvWorld这个巨无霸,因为他跟Contrib库的cvv可视化相互冲突,会存在依赖错配的问题导致大量的undefined referenc ...
计算机网络概念速通(基于谢希仁版本)
计算机网络笔记概要第一张 概论 计算机网络简称为网络由若干节点和连接这些节点的链路组成,网络之间的连接构成的更大的计算机的网络称为互连网
网络把许多计算机连接在一起,而互连网则把许多网络通过一些路由器连接在一起,与网络相连的计算机通常称为主机
互联网的组成十分的复杂:分为边缘部分和核心部分。
边缘部分: 由所有连接在互联网上的主机组成,这部分是用户直接使用的,用来进行通信(传送数据,音频或视频)和资源共享
核心部分:由大量网络和连接这些网络的路由器组成,这部分是为边缘部分,提供服务的(提供连通性和交换)
明确概念:当我们谈论主机A和主机B进行通信的时候,实际上指代的是运行在主机a上的某个程序和运行在主机B上的另一个程序进行通信,由于进程就是运行着的程序,因此这也就是指主机a的某个进程和主机B的另一个进程进行通信
所以这种比较严密的说法通常可以简称为:
计算机之间的通信
计算机的通信方式主要分为两大类:客户服务器方式(也就是CS方式),和对等方式(P2P方式)
...
重新学习Linux操作系统
重新学习Linux系统 这是一个回顾性质的博客,目的是重新更加系统的认识Linux操作系统,为后续的学习打下基础
文件,文件系统 文件是Linux下最重要,最基础的一个抽象:事实上,我们都知道一个名言:
一切皆文件
也就是说,我们在Linux系统层面上,往往都是将内存块或者是设备等对象当成文件来进行处理和操作。
文件必须要打开才能操作,打开文件的API是大多数人接触的第一个正式的API:open,我们看看man手册的说法:
int open(const char *pathname, ...);
文件的常见打开方式是:只读,只写,读写。在文件操作下分别对应了:
O_RDONLY,
O_WRONLY,
O_RDWR
我们意识到, open这里返回的是一个整数。事实上,他就是我们的文件操作HANDLE,也就是说,一个句柄,我们使用这个整数来代表一个文件。文件描述符在用户空间内共享,我们就是使用一个文件描述符来完成对文件的操作。
经典普通文件 我们最常打交道的就 ...