随笔分类 -  LINUX

摘要:进程优先级 1.硬实时进程:要严格时间限制,linux不支持硬实时,如RTLinux、Xenomai、RATI 2.软实时进程:硬实时的一种弱化, 3.普通进程 阅读全文
posted @ 2020-03-01 19:30 习惯就好233 阅读(145) 评论(0) 推荐(0)
摘要:先安装 sudo apt-get install gnome-shell-extension-autohidetopbar 然后安装 sudo apt-get install gnome-shell-extension-dashtodock 最后在扩展中找到hide top bar开启就好了 阅读全文
posted @ 2019-11-30 15:40 习惯就好233 阅读(408) 评论(0) 推荐(0)
摘要:1 /* testmini.c -- very simple test program for the miniLZO library 2 3 This file is part of the LZO real-time data compression library. 4 5 Copyright 阅读全文
posted @ 2019-11-27 14:48 习惯就好233 阅读(878) 评论(0) 推荐(0)
摘要:页高速缓存是Linux内核实现磁盘缓存。磁盘告诉缓存重要源自:第一,访问磁盘的速度要远远低于访问内存。 第二,数据一旦被访问,就很有可能在短期内再次被访问到。这种短时期内集中访问同一片数据的原理称作临时局部原理。 一、缓存手段 1.1 写缓存 通常来讲缓存一般实现成三种策略: ①不缓存 ②写操作将自 阅读全文
posted @ 2019-11-20 21:24 习惯就好233 阅读(460) 评论(0) 推荐(0)
摘要:一、地址空间 进程地址空间由进程可寻址的虚拟内存组成,内核允许进程使用这种虚拟内存中的地址。 每个进程都有一个32位或64位的平坦地址空间,空间的具体大小取决于体系结构。“平坦”指的是地址空间范围是一个独立的连续区间。 现代采用虚拟内存的操作系统通常都使用平坦地址空间而不是分段式的内存模式。 一个进 阅读全文
posted @ 2019-10-24 13:57 习惯就好233 阅读(402) 评论(0) 推荐(0)
摘要:一、剖析一个块设备 块设备最小的可寻址单元是扇区。 扇区大小一般是2的整数倍,最常见的是512字节。 因为各种软件的用途不同,所以他们都会用到自己的最小逻辑可寻址单元 块。块只能基于文件系统,是一种抽象。 而扇区是设备的最小可寻址单元,所以块不能比扇区还小,只能数倍于扇区大小。此外内核要求块是2的整 阅读全文
posted @ 2019-10-23 12:44 习惯就好233 阅读(316) 评论(0) 推荐(0)
摘要:一、通用文件系统接口 Linux通过虚拟文件系统,使得用户可以直接使用open()、read()、write()访问文件系统,这种协作性和泛型存取成为可能。 不管文件系统是什么,也不管文件系统位于何种介质,采用策略是统一的。 二、文件系统抽象层 为了支持多文件系统,VFS提供了一个通用文件系统模型, 阅读全文
posted @ 2019-08-23 21:56 习惯就好233 阅读(286) 评论(0) 推荐(0)
摘要:内核里的内存分配不像其他地方分配内存那么容易,内核的内存分配不能简单便捷的使用,分配机制也不能太复杂。 一、页 内核把页作为内存管理的基本单位,尽管处理器最小寻址坑是是字或者字节。但是内存管理单元MMU通常以页为单位进行处理。 从虚拟内存的角度来看,页就是最小单位。大多数32位系统支持4KB的页,而 阅读全文
posted @ 2019-07-06 14:00 习惯就好233 阅读(424) 评论(0) 推荐(0)
摘要:时间管理在内核中占用非常重要的地位,内核中有大量的函数都需要基于时间驱动的,内核对相对时间和绝对时间都非常需要。 一、内核中的时间概念 内核必须在硬件的帮助下才能计算和管理时间,系统定时器以某种频率自行触发(击中hitting或者射中popping)时钟中断,该频率可以通过编程预定,称作节拍率。 因 阅读全文
posted @ 2019-06-25 23:00 习惯就好233 阅读(862) 评论(0) 推荐(0)
摘要:一、原子操作 原子操作可以保证指令以原子的方式执行 执行过程不被打断。 1.1 原子整数操作 针对整数的原子操作只能对atomic_t类型的数据进行处理。 首先,让原子函数只接收atomic_t类型的操作数,可以确保原子操作只与这种特殊类型数据一起使用,并且不会被其他人使用。 使用atomic_t类 阅读全文
posted @ 2019-06-15 21:53 习惯就好233 阅读(422) 评论(0) 推荐(0)
摘要:在使用共享内存的应用程序中,程序员必须特别留意保护共享资源,防止共享资源并发访问。 一、临界区和竞争条件 1.1 临界区和竞争条件 所谓临界区就是访问和操作共享数据代码段。多个执行线程并发访问同一个资源通常是不安全的,为了避免在临界区中并发访问,编程者必须保证这些代码原子地执行。 如果两个执行线程有 阅读全文
posted @ 2019-06-12 23:02 习惯就好233 阅读(213) 评论(0) 推荐(0)
摘要:一、安装cscope 安装方式比较多样,可以在各自linux软件管理工具中安装,也可以去官网下载安装。 sudo apt-get install cscope 二、插件安装 这里选择的是Vundle来管理vim插件,所以只需要在.vimrc中添加Plugin 'brookhong/cscope.vi 阅读全文
posted @ 2019-05-04 19:34 习惯就好233 阅读(2162) 评论(0) 推荐(0)
摘要:一、用到的rk3328好像使用了设备树 设备树我知道的有三种文件类型,dtbs是通过指令make dtbs编译的二进制文件,供内核使用。 基于同样的软件分层设计的思想,由于一个SoC可能对应多个machine,如果每个machine的设备树都写成一个完全独立的.dts文件。 那么势必相当一些.dts 阅读全文
posted @ 2019-04-26 16:29 习惯就好233 阅读(859) 评论(0) 推荐(0)
摘要:一、编译 Linux 固件 这一章将介绍编译 ROC-RK3328-CC Linux 固件的整个流程。 1.1 准备工作 Linux 固件在如下的环境中编译: Ubuntu 16.04 amd64 安装以下包: sudo apt-get install bc bison build-essentia 阅读全文
posted @ 2019-04-23 12:46 习惯就好233 阅读(4516) 评论(0) 推荐(0)
摘要:上半部分的中断处理有一些局限,包括: 中断处理程序以异步方式执行,并且它有可能打断其他重要代码的执行。 中断会屏蔽其他程序,所以中断处理程序执行的越快越好。 由于中断处理程序往往需要对硬件进行操作,所以它们通常又很高的时限要求。 中断处理程序不在进程上下文中运行,所以它们不能阻塞。这限制它们所做的事 阅读全文
posted @ 2019-03-14 14:45 习惯就好233 阅读(372) 评论(0) 推荐(0)
摘要:中断和中断处理 处理器的速度跟外围硬件设备的速度往往不再一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求。 然后专门等待回应的办法,如果专门等待回应,明显太慢。所以等待期间可以处理其他事务,等待完成了请求操作后,再回来进行处理。 所以内核提供了一种机制,让内核在需要的时候再向内核发出信号。 阅读全文
posted @ 2018-11-25 15:22 习惯就好233 阅读(587) 评论(0) 推荐(0)
摘要:内核数据结构 Linux内核实现了这些通用数据结构,而且提倡大家在开发时重用。 内核开发者应该尽可能地使用这些数据结构,而不要自作主张的山寨方法。 通用的数据结构有以下几种:链表、队列、映射和二叉树 一、链表 1.1 单向链表和双向链表 链表是Linux中最简单、最普通的数据结构。 最简单的数据结构 阅读全文
posted @ 2018-11-21 14:43 习惯就好233 阅读(598) 评论(0) 推荐(0)
摘要:系统调用 内核提供了用户进程和内核交互的接口,使得应用程序可以受限制的访问硬件设备。 提供这些接口主要是为了保证系统稳定可靠,避免应用程序恣意妄行。 一、内核通信 系统调用在用户空间进程和硬件设备之间添加中间才能。作用有三: 为用户空间提供一种硬件的抽象接口。无需理会物理结构是怎么样的。 系统调用保 阅读全文
posted @ 2018-11-19 12:45 习惯就好233 阅读(603) 评论(0) 推荐(0)
摘要:进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间。 调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么就总会有进程正在执行。 一、多任务 多任务系统可以划分为两类:非抢占式多任务和抢占式多任务。 Linux提供了抢占式的多任务模式,在此模式下 阅读全文
posted @ 2018-11-15 14:13 习惯就好233 阅读(396) 评论(0) 推荐(0)
摘要:进程管理 进程:处于执行期的程序。 线程:在进程中活动的对象 虚拟机制 虚拟处理器:多个进程分享一个处理器 虚拟内存:多个线程共享虚拟内存 一、进程描述符和任务结构 进程存放在双向循环链表中(队列),链表中的项为task_struct,称为进程描述符。在头文件<linux/sched.h>中。 st 阅读全文
posted @ 2018-11-13 16:56 习惯就好233 阅读(407) 评论(0) 推荐(0)