Linux内核编译过程理解

Linux内核编译过程理解

内核配置 Linux 内核在编译之前首先要配置内核,配置内核有以下几种方式: #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本菜单的配置界面,推荐) #make xconfig(要求 QT 被安装) #make gconfig(要求 GTK+被安装) 推荐使用 make menuconf……

Linux 内核空间与用户空间

Linux 内核空间与用户空间

硬件 CPU 通常支持好几个优先级模式(操作模式),以满足不同类型程序的运行要求。   Arm 架构CPU 通常支持 7 个工作模式: 用户模式(usr):大多数应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能访问的。  快速中断模式(fiq):用于高速数据传输或通道处理。  外部中断模式(irq):用于通用的中断……

Linux内核组成部分

Linux内核组成部分

  Linux 内核主要组成部分有 5 个: 进程调度(SCHED); 内存管理(MM); 虚拟文件系统(VFS); 网络接口(NET); 进程间通信(IPC)。   进程调度(SCHED) 进程调度部分是所有的操作系统的核心部分,进程调度的主要工作是根据调度算法对进程进行调度,使得操作系统支持多进程并发,也即让用户感觉到进程在并行……

(4)DIY Shell——管道与重定向

(4)DIY Shell——管道与重定向

  对shell有一定了解的人都知道,管道和重定向是 Linux 中非常实用的 IPC 机制。在shell中,我们通常使用符合‘|’来表示管道,符号‘>’和‘<’表示重定向。那么管道和重定向的真实含义(定义)又是什么呢? 管道 管道的定义 管道就是一个进程与另一个进程之间通信的通道,它通常是用作把一个进程的输出通过管道连接到另一个进程的……

Linux C语言:头文件究竟在哪里?

Linux C语言:头文件究竟在哪里?

原创: 关国源 Linux微知识 在上一篇文章中,我们提到如果在工程中使用了函数,就要包含对这个函数进行声明的头文件。 但是,这个头文件在哪里的呢?究竟存不存在于这个系统中? 头文件既然包含了,那必须在啊!在Linux中,系统的头文件都是大部分都是存放在/usr/include 这个目录下。可以输入命令来查看一下: ericion@ubuntu……

Linux环境变量:教你如何配置交叉工具链!

Linux环境变量:教你如何配置交叉工具链!

原创: 关国源 Linux微知识 首先,在处理今天的问题之前,需要给大家说明清楚两个概念: 1)交叉编译:程序在一个平台(虚拟机)生成另外一个平台(开发板)的二进制镜像文件。因为做嵌入式开发,离不开的就是 ARM 开发板,要想把程序丢到 ARM 开发板中执行,就必须使用交叉工具链编译我们做出来的程序: 2)Linux环境变量:所谓的环境变量,一般是……

Linux黑科技:怎样在64位Ubuntu编译出32位的可执行文件?

Linux黑科技:怎样在64位Ubuntu编译出32位的可执行文件?

原创: 关国源 Linux微知识    在研究今天的问题之前,先给大家描述清楚 64 位系统与 32 位系统的的区别,其实很好分辨,32 位系统的数据宽度是 32 位,就是 CPU 在每次提取数据时,每次提取 32 位数据。而 64 位系统则每次提取 64 位数据。     一般而言,64 位系统编译出来的程序就会是 64 位的,32 ……

Linux C语言:main函数的命令行传参

Linux C语言:main函数的命令行传参

原创: 关国源 Linux 微知识 在大学里面,老师一般会这样教,定义main 函数应该是这样的: 甚至是这样的: 但是其实在 Linux 下,一个正确的main 函数应该被定义为如下: 大家可以看到,main 函数中有两个参数,分别是 argc 和 argv。但是在 C 语言中规定,main 函数是不能被别的函数调用的,那究竟是谁传递……

图解:生产者与消费者伪源码模型

图解:生产者与消费者伪源码模型

 西邮 Linux 兴趣小组   生产者与消费者问题 问题描述: 生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。一起来看看它的实现吧! 问题分析 要解……

(3)DIY Shell之——创建子进程执行外部命令

(3)DIY Shell之——创建子进程执行外部命令

  前面文章已经说到了,shell在执行外部命令的时候,shell的进程本身会被外部命令的可执行程序所取代,从而导致调用外部命令之后的程序都无法被执行。那么我们可以通过创建一个子进程,在子进程执行外部命令的方法来解决这个问题。原来的父进程就继续执行shell的其他的代码,比如等待命令执行完成、等待用户输入其他命令。具体的实现思路如下。 父进程与子进……

vi或者vim编辑器的简单操作方法

vi或者vim编辑器的简单操作方法

  vim 是由 vi 发展而来的,基本操作都是通用的。Linux操作系统一般都会默认安装vi 编辑器,简单而强大。 现在来简单说说 vi 编辑器的基本操作,这是最简单最精简的教程了,特别适合新手,或者是临时需要用到vi 编辑器的人看。   首先,vi 编辑器有两种模式,一种是命令模式;一种是编辑模式。在刚打开 vi 编辑器的时候,默认是处于命令模……

(2)DIY Shell之——内建命令与外部命令

(2)DIY Shell之——内建命令与外部命令

  这是本博客的第一个文章专辑。主要介绍如何用 C 语言基于Linux系统来实现一个简单shell,DIY 一个shell。通过自己编程实现一个Linux下的shell,可以使得个人对进程的概念、进程的通信和操作系统的运行的理解更加的深刻。还会大大增加个人学习的成就感,提供学习兴趣。 这一个文章专辑被命名为 StupidShell ,这也是作者所实……

(1)DIY Shell之——shell的基本框架

(1)DIY Shell之——shell的基本框架

  这是本博客的第一个文章专辑。主要介绍如何用 C 语言基于Linux系统来实现一个简单shell,DIY 一个shell。通过自己编程实现一个Linux下的shell,可以使得个人对进程的概念、进程的通信和操作系统的运行的理解更加的深刻。还会大大增加个人学习的成就感,提供学习兴趣。 这一个文章专辑被命名为StupidShell,这也是作者所实现的……

SSH远程登录Linux

SSH远程登录Linux

  文章将会实现在Linux机器 A 的终端上登录到Linux机器 B 的终端(从而可以控制机器 B)。 以下操作都基于Linux系统 Ubuntu16 下的shell,两个机器在同一个局域网内。如需超局域网操作则另外进行内网穿透或者两个机器都拥有公网 ip。 一、建立连接教程 1、两个 Ubuntu 系统都需要先安装 openssh-clie……

Linux共享内存之段错误

Linux共享内存之段错误

最近为了学习操作系统,练习写一个Linux 下的 shell,然后其中采用了Linux 的共享内存的方案。 然而在共享内存初始化的时候移植了之前写共享内存实验已经成功的初始化代码,却出现了段错误。主要代码如下: #include "stupidShell.h" int *loop; int sh……