展开

关键词

【程序源代码】消息极速轻快速开发框架

正文 | 内容 01 — 【介绍】 消息极速轻快速开发框架。

21131

【分享】精简Linux源代码

作者:付汉杰 Linux是现在最流行的操作系统,含有大量的源代码。Xilinx 2020.1使用的Linux 5.4,含有大约67430个文件。大部分文件没有被使用到。 如果我们知道Linux的编译流程的起始时间,那么删除所有访问时间比Linux的编译起始时间早的文件,就能达到精简Linux源代码的目的。在编译Linux之前,可以通过touch命令创建一个文件。 这个文件的atime,就是编译Linux开始时间。因此比较这个文件,和其它Linux文件,就能找到所有访问时间比Linux的编译起始时间早的文件,从而实现精简Linux源代码。 再恢复对应文件,既精简了Linux源代码,也不影响Linux的编译流程。对Linux 5.4进行精简后,剩余大约8800个文件,减少了大约58000个文件,精简了超过87%的文件数量。 以后可以考虑使用tinyconfig来精简Linux源代码

29020
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何切入 Linux 内核源代码

    同样往本质里看过去,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的。     vmlinux.lds是存在于arch// 目录中的内核链接器脚本,它负责链接内核的各个节并将它们装入内存中特定偏移处。    而心理上的问题主要有两个,一个是盲目,就是在能够熟练适用Linux之前,对Linux为何物还说不出个道道来,就迫不及待的盲目的去研究内核的 源代码。 有必要再强调一次,学习内核,就是学习内核的源代码,任何内核有关的书籍都是基于内核,而又不高于内核的。 http://www.kernel.org/ 可以通过这个网站上下载内核的源代码和补丁、跟踪内核bug等。http://kerneltrap.org Linux和BSD内核的技术新闻。

    2K62

    Linux内核源代码分析经验

    Linux的最大的好处之一就是它的源码公开。 同时,公开的核心源码也吸引着无数的电脑爱好者和程序员;他们把解读和分析Linux的核心源码作为自己的 最大兴趣,把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标。    所有源文件均是相对于目录/usr/src/linux的。   要分析Linux内核源码,首先必须找到各个模块的位置,也即要弄懂源码的文件组织形式。 1、Linux核心源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(的二个数为偶数,例如 2.0.30)都是一个稳定地发行的核心,而任何奇数的核心(例如 对具有GPL版权的源代码改动而形成的程序,或使用GPL工具产生的程序,具有使用GPL发表的义务,如公开源代码。   ◆ CREDITS: 光荣榜。

    36520

    Linux源代码编译安装程序

    Linux操作系统中搭建一些大型服务时,考虑兼容性与功能的扩展,通常会选择源代码安装软件。 现代的Linux发行版本通常都是使用软件包管理机制对软件进行打包安装,这样既省去了软件的编译安装过程,大大简化了Linux操作系统的安装和使用难度 下图为编译安装的基本过程: ? 我们以Apache为例,来说明应用程序的源代码安装 首先我们需要挂载上系统盘,安装几个Apache的依赖包 ? ?

    36830

    Linux信号及函数

    信号分为单值和多值两种。 在信号的实际应用中,是不能只定义一个信号的,而只能定义一个信号集,其中包含一组信号,同一信号集中的信号使用同一个引用ID,这样的设置是为了多个资源或同步操作的需要。 setval error"); } // get some information about the semaphore and the limit of semaphore in Linux struct sem_undo is 1 the maximum semaphore value is 32767 now free the resource remove sem okt 参考: 《精通Linux C编程》- 程国钢 《Linux C编程完全解密》- 闫敬 吴淑坤

    51730

    Linux并发(POSIX信号

    System-V的信号是老古董,除非万不得已,否则我们一般用POSIX信号,好用、简单、靠谱。 拓展: POSIX信号分为两种,分别是POSIX无名信号和POSIX有名信号,这两种信号比之前介绍的system-V的信号机制要简洁,虽然没有后者的应用范围那么广泛(尤其在一些老系统中,因为system-V 的信号机制要更古老一些),但是POSIX良好的设计使得他们更具吸引力。 POSIX有名信号的一般使用步骤是: 1,使用sem_open( )来创建或者打开一个有名信号。 2,使用sem_wait( )和sem_post( )来分别进行P操作和V操作。 POSIX无名信号的一般使用步骤是: 1,在这些线程都能访问到的区域定义这种变量(比如全局变量),类型是sem_t。 2,在任何线程使用它之前,用sem_init( )初始化他。

    44130

    【程序源代码】springboot和ssm的极速轻快速开发框架

    正文 | 内容 01 — 【介绍】 jeexjj基于springboot和ssm的极速轻快速开发框架,能够根据数据库生成单表和一对多表的增删改查代码,使开发节省50%的开发工作

    21831

    Linux中开发测应用

    Linux中开发测应用

    5720

    Linux进程通信之信号

    Linux进程通信之信号 概念(自行百度): 信号(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。 在进入一个关键代码段之前,线程必须获取一个信号;一旦该关键代码段完成了,那么该线程必须释放信号。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号。 PV原语: 信号有两个原子操作:P操作和V操作,具体意义也要分信号类型的情况 P() : sem减1 V() : sem加1 分类(以了解的) 二进制信号(0和1) 信号集(集合数组) 为什么要使用信号 -ne 20000 ] then echo "$ret有问题" fi echo -e "-->\c" let "int++" done 执行shell 查看结果 发现并没有出现没有使用信号之前数据错乱的情况 ,使用ipcs 命令查看,信号已存在 注意 使用完信号之后,要使用sem_remove函数删掉信号,否则会造成系统资源浪费

    18130

    Linux线程编程之信号

    hello pthread jjjkj the input words is 5 jjkl;j the input words is 6 end over 注意: 这里在Linux 不过在这之前还是要稍微介绍一下什么是线程信号,其实这个跟进程通信有点类似——Linux进程编程----syslog的使用和进程间通信的介绍(六): a、那么什么是信号呢? b、信号的类型: 二进制信号(binary semaphore):只允许信号取0或1值,其同时只能被一个线程获取。 整型信号(integer semaphore):信号取值是整数,它可以被多个线程同时获得,直到信号的值变为0。 当信号被释放一个,值被加一后,系统自动从等待队列中唤醒一个等待中的线程,让其获得信号,同时信号再减一。

    8720

    Linux内核编程--信号机制

    在信号进行PV操作时都为原子操作(因为它需要保护临界资源)。 二,信号的结构: 信号的数据结构为一个值和一个指针,指针指向等待该信号的下一个进程。 Linux多进程访问共享资源时,需要按下列步骤进行操作: (1)检测控制这个资源的信号的值。 (2)如果信号是正数,就可以使用这个资源。进程将信号的值“减 1”,表示当前进程占用了一份资源。 四,信号的分类: 信号按照使用场景分为 :二值信号和计数信号: 二值信号:指初始值为 1 的信号,此类信号只有 1 和 0 两个值,通常用来代替锁机制实现线程同步, 在一个时刻仅允许有一个资源持有者 *临界资源在同一时刻只允许一个进程使用,此时的信号是一个二值信号,它只控制一个资源;另一种应用于处理多个共享资源(例如多台打印机的分配),信号在其中起到记录空闲资源数目的作用,此时的信号是计数信号 pthread_create(&smk_1, 0, smoker, 1); pthread_create(&smk_2, 0, smoker, 2); while(1); } Linux

    10830

    linux 进程通信-信号(Semaphore)《Rice linux 学习开发》

    而Posix信号灯(线程同步)指的是单个计数信号灯 System V 信号灯由内核维护 信号的使用规则 若信号为正,则进程可使用该资源 若信号为0,则进程阻塞等待,并将进程插入等待队列,直到该信号的值大于 0从等待队列中执行进程请求 加锁操作:如果信号量大于0,则信号-1;如果信号为0,则挂起该进程,并将这个进程插入等待队列 解锁操作:如果等待队列中有进程则唤醒该进程,让它恢复运行,否则,信号+1 信号相关函数 semget()函数:创建新的信号或取得已有的信号 semop()函数:改变信号的值,改变操作在sem_opa中,sem_opa是sumbuf结构体对象 semctl()函数: 控制信号 例程 信号例程请参考github的semaphore目录下semaphore.c。 github链接:https://github.com/RiceChen/Linux-process-communication.git,记得加个star。

    5720

    Linux 信号实现同步,实现互斥

    一.实现同步 同步模板 使用信号实现同步时,需要将信号的初值设置为0 semaphore s=0; p1() { p(s); 具体的代码 } p2() { 具体的代码 v(s); } 1 二.Linux下信号实现同步,线程2先执行输出"hello",线程1后执行输出"world\n"的功能 #include <iostream> #include <pthread.h> #include ,信号的初值应设置为1,表示 临界资源的个数为1. 此时信号为1,表示可以临界资源个数为1。 2.假设p2先执行同上。 四.使用Linux信号实现互斥 #include <iostream> #include <pthread.h> #include <semaphore.h> #include <unistd.h>

    10040

    Linux系统中的信号机制

    ; }; 在linux中,信号用上述结构体表示,我们可以通过该结构体定义一个信号。 2、信号的初始化: 可用void sema_init(struct semaphore *sem, int val);直接创建,其中val为信号初值。 也可以用两个宏来定义和初始化信号的值为1或0: DECLARE_MUTEX(name) : 定义信号name并初始化为1 DECLARE_MUTEX_LOCKED(name) : 定义信号name semaphore *sem); //初始化信号的值为0 3、信号的原子操作: p操作: void down(struct semaphore *sem); //用来获取信号,如果信号量值大于或等于 0,获取信号,否则进入睡眠状态,睡眠状态不可唤醒 void down_interruptible(struct semephore *sem); //用来获取信号,如果信号量大于或等于0,获取信号

    71360

    Linux 的进程间通信:信号

    在这里首先强调一下,Linux系统中的semaphore信号和signal信号是完全不同的两个概念。我们将在其它文章中详细讲解信号signal。本文可以帮你学会: 什么是XSI信号? 但是从本质上讲,信号实际上是实现了一套可以实现类似锁功能的原语,我们不仅可以用它实现锁,还可以实现其它行为,比如经典的PV操作。 Linux环境下主要实现的信号有两种。 如果当前有进程使用sem_wait等待此信号,POSIX可以允许有两种返回,一种是返回0,另一种是返回一个负值,这个负值的绝对值就是等待进程的个数。Linux默认的实现是返回0。 最后 希望这些内容对大家进一步深入了解Linux的信号。如果有相关问题,可以在我的微博、微信或者博客上联系我。 大家好,我是Zorro! 如果你喜欢本文,欢迎在微博上搜索“orroz”关注我,地址是:http://weibo.com/orroz 大家也可以在微信上搜索:Linux系统技术 关注我的公众号。

    1.9K00

    linux内核写时复制机制源代码解读

    作者简介 韩传华,就职于国内一家半导体公司,主要从事linux相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,乐于分享喜欢学习,喜欢专研Linux内核源代码。 写时复制技术(一下简称COW)是linux内核比较重要的一种机制,我们都知道:父进程fork子进程的时候,子进程会和父进程会以只读的方式共享所有私有的可写页,当有一方将要写的时候会发生COW缺页异常。 那么究竟COW在linux内核中是如何触发?又是如何处理的呢?我们将在本文中以源代码情景分析的方式来解读神秘的写时COW,从源代码级别的角度彻底理解它。 需要说明的是:本文中所分析的内核源码时linux-5.0版本内核,使用arm64处理器架构,当然此文章发布时linux内核已经是linux-5.8.x,当你查看最新的内核源码的时候会发现变化并不是很大。 下面我们在源代码中寻找答案: do_wp_page函数的2502到2541是我们分析重点: 2502 /* 2503 |* Take out anonymous

    1.1K20

    共享内存+互斥实现 Linux 进程间通信

    共享内存并未提供进程同步机制,使用共享内存完成进程间通信时,需要借助互斥或者信号来完成进程的同步。这里说一下互斥与信号的区别。 互斥用于线程的互斥,信号用于线程的同步,这是互斥与信号的本质区别,其次信号实现互斥的功能。     本文结合个人实际项目需求,采用互斥实现进程间访问共享内存的互斥,即同一时刻只能允许一个进程对共享内存进行写操作,当然也可以用信号来完成进程间的互斥,这里就不再赘述。 三、 使用互斥量完成父子进程对共享内存的互斥访问     在共享内存中申明互斥pthread_mutex_t mutex,需要包含<pthread.h>头文件。 第四步:如果最后不需要使用互斥的话,使用pthread_mutex_destroy()销毁。

    6930

    相关产品

    • 轻量应用服务器

      轻量应用服务器

      轻量应用服务器(Lighthouse)是一种易于使用和管理、适合承载轻量级业务负载的云服务器,能帮助中小企业及开发者在云端快速构建网站、博客、电商、论坛等各类应用以及开发测试环境,并提供应用部署、配置和管理的全流程一站式服务,极大提升构建应用的体验,是您使用腾讯云的最佳入门途径。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券