linux系统编程
文章平均质量分 84
linux系统编程
刘仕豪
操作系统行业从业者,开源精神,希望可以推动科技进步。
展开
-
内核中高级语法和特殊数据结构
内核中高级语法和特殊数据结构attributeGNU C 的一大特色就是__attribute__ 机制。attribute 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。#书写特征是:前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__ 参数。 __attribute__ #语法格式为: __attribute__ ((attribut原创 2021-11-25 15:42:55 · 521 阅读 · 0 评论 -
内核性能分析总结
1.unixbencha.测试介绍UnixBench源于1995 年,基线系统是“George”,一个工作站:SPARCstation 20‐61,128MB RAM,Solaris2.3,此系统的指数值被设定为10,所以,如果一个系统的最后结果分数为520,意思是指此系统比基线系统运行快52 倍。UnixBench也支持多CPU系统的测试,默认的行为是测试两次,第一次是一个进程的测试,第二次是N份测试,N等于CPU个数。这样的设计是为了以下目标:测试系统的单任务性能测试系统的多任务性能测试系统原创 2021-11-25 15:42:06 · 259 阅读 · 0 评论 -
KDE框架介绍
KDE框架介绍KDE是目前最好看的桌面框架https://api.kde.org/frameworks-api/frameworks-apidocs/frameworks/index.htmlKDE 框架建立在 Qt 框架上,提供从简单实用程序类(例如 KCoreAddons 中的类)到针对桌面应用程序的常见需求(例如 KNewStuff)的集成解决方案,以在应用程序中获取可下载的附加内容,或者提供强大的功能 KIO 多协议文件访问框架)。KDE 框架可用于基于 CMake 和基于 QMake 的项原创 2021-10-05 22:49:00 · 1378 阅读 · 0 评论 -
cmake配置文件一些常用的配置
#指定编译器SET(CMAKE_C_COMPILER “arm-himix200-linux-gcc”)SET(CMAKE_CXX_COMPILER “arm-himix200-linux-g++”)#1.cmake verson,指定cmake版本#cmake_minimum_required(VERSION 3.2)#2.project name,指定项目的名称,一般和项目的文件夹名...原创 2020-03-11 10:58:55 · 899 阅读 · 0 评论 -
网络协议分析:
网络协议分析:1、TCP 协议 ===>20 字节 第一 二 字节:源端口 ==》一般是随机端口可以用bind指定端口 第三 四 字节:目的端口==》一般是明确的在服务器端指定。 第 5 6 7 8 字节:请求序列号 第 9 10 11 12 字节:响应序列号 第13 字节: 前4bit位:协议内部偏移量原创 2016-08-04 11:09:32 · 417 阅读 · 0 评论 -
嵌入式数据库sqlite
数据库1、分类: 大型 中型 小型ORACLE MYSQL SQLITE2、名词:DB 数据库DBMS 数据库管理系统MIS 管理信息系统OA 办公自动化3、嵌入式数据库:sqlite3 www.sqlite3.org特点:1、开源 C语言开发 2、代码量少 1万行左右,总大小10M以原创 2016-08-04 11:11:00 · 353 阅读 · 0 评论 -
linux基本操作
================= 相对路径、绝对路径 ==========绝对路径:通过根目录指向一个文件夹相对路径:没有通过根目录去指向一个文件================= vi编辑器 ===================1.vi编辑器是一款强大的文本编译器1.启动vi编辑器1.vi XXX.c XXX.txt2.vi -R原创 2016-08-03 18:58:48 · 274 阅读 · 0 评论 -
按自己的需求裁剪内核
待整理原创 2016-08-05 09:33:44 · 836 阅读 · 0 评论 -
为pc编译配置安装当前最新的内核
1:下载内核源码包内核源码树目录:arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。block:部分块设备驱动程序。cry原创 2016-04-19 13:29:15 · 1090 阅读 · 0 评论 -
linux内核学习书籍
linux内核学习书籍记得在中国人气和高手最多的linuxform上看到的一句话。现在自己的书架上以后lkd2+ldd3+情景分析,再加上它ulk3,书架的linux kernel的四库全书已经凑齐,很充实。lkd2:属于在总体上给你一个轮廓和框架;先看一遍有个总体把握,过后再精读;ldd3:工作时必不可少的书籍,我们组就买了3本人手一本,已经翻烂了,属于实践的好书;原创 2016-11-11 11:32:55 · 499 阅读 · 0 评论 -
shell 基础
程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: chmod +x filename 然后,您可以通过输入: ./filename 来执行您的脚本。原创 2017-05-23 23:18:58 · 306 阅读 · 0 评论 -
查看进程执行情况的几种方法
1. 第一种命令:cat /proc/pid/status可以查看进程状态,有多少线程等。2. 第二种命令: strace -p pid可以查看进程都在干什么 ,随时打印, 可以查看进程处于加锁等待状态,还是执行某个动作。程序卡死, 异常,通过该命令查看卡死位置。...原创 2019-05-04 10:33:30 · 5149 阅读 · 0 评论 -
处理程序时开启多少并发线程最合适?
首先要考虑执行的任务是什么类型:1、IO密集型2、计算密集型IO密集型:以大量任务读写数据库,读写文件为主,内存中的运算很少,线程基本阻塞在IO上面。这种情况下,尽量多开启一些线程并发做IO操作,因为在IO过程中,CPU几乎是闲置的。计算密集型:任务以内存中的计算为主。这时候CPU是满负荷工作,即使开再多的线程,只会徒增线程上下午切换的成本。这种情况下,CPU是几核,就开几个线程。线程数...原创 2019-04-24 14:07:58 · 671 阅读 · 0 评论 -
发现一份Vim 配置文件,自己感觉特别好的。
“”"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 设置字符编码。参考:http://www.rainux.org/blog/index.php/2005/10/20/106" encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文" 本、消息...原创 2019-06-28 17:13:17 · 319 阅读 · 0 评论 -
网络编程之 广播 组播 域内套接字
1、网络编程之 广播 组播 域内套接字2、网络编程之 协议分析1、广播=====》基于UDP协议形式的消息发送特点:必须要发送广播地址 ===》局域网中的网段最大地址必须要设置允许发送广播 ====》出现广播风暴2、框架流程:发送端:socket()===>setsockopt()==》sendto()==close()原创 2016-08-04 11:08:30 · 1376 阅读 · 0 评论 -
网络编程之 UDP
网络编程之 UDP1、特性: 无链接 不可靠 大数据2、框架: C/S模式 server:socket()===>bind()===>recvfrom()===>close() client:socket()===>bind()===>sendto() ===>close()注意:socket()的参数需要调整。 socket原创 2016-08-04 11:04:16 · 423 阅读 · 0 评论 -
网络编程之TCP
网络编程之TCP通信:1、模式 C/S 模式 ==》服务器/客户端模型server:socket()-->bind()--->listen()-->accept()-->recv()-->close()client:socket()-->bind()-->connect()-->send()-->close();服务器端:#include原创 2016-08-04 10:45:50 · 348 阅读 · 0 评论 -
CentOS如何配置国内YUM源
网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。具体设置方法如下:1,进入yum源配置目录cd /etc/yum.repos.d2,备份系统自带的yum源mv CentOS-Base.repo CentOS-Base.repo.bk下载原创 2016-04-19 09:46:36 · 1015 阅读 · 0 评论 -
linux高级编程三网络以及网络配置
===================== 网络 ==================1.OSI模型:规范网络间的理想的传输协议应用层表示层会话层传输层 tcp(可靠传输)、udp(不可靠传输)数据段 数据片网络层 IP数据包 报文数据链路层 MAC帧 物理层 比特流数据流 2.TCP/IP模型:应用层传输原创 2016-08-03 19:01:12 · 360 阅读 · 0 评论 -
linux高级编程二基础知识
================== shell ==============一、shell命令1.shell是一种命令解释器2.shell的种类:1.bash 2.sh3.ksh4.csh5....3.查看当前的shell类型echo $SHELL4.查看系统能支持的shellvi /etc/shells5.command [-opt原创 2016-08-03 19:00:22 · 280 阅读 · 0 评论 -
linux高级编程四shell编程/指针
================= main 函数传参 ===================1.int main(int argc, const char *argv[])1.argc:给main函数传参字符串的个数argv[0]:执行文件的名字argv[1]:main函数传参中main函数后面的第一个字符串...=原创 2016-08-03 19:04:25 · 2099 阅读 · 0 评论 -
linux高级编程五结构体
===================== 结构体 =================1. 结构体是构造的一种数据类型,结构体当中可以通过定义不同数据类型的成员变量保存不同含义的信息2.结构体的定义:1.有名结构体的定义struct 结构体名称{数据类型 成员变量1;数据类型 成员变量2;... //结构体当中没有规定成员个数的上限值};2.原创 2016-08-03 19:05:35 · 362 阅读 · 0 评论 -
UNIX环境高级编程——学习路线图
原创 2016-08-03 19:13:57 · 1243 阅读 · 0 评论 -
静态库与动态库
静态库: 第一步:完成功能函数的编写,例如:hello.c#include void hello(const char *name){ printf("hello %s !\n",name);}第二步:完成主调用函数的编写,例如:main.c#include int main(){原创 2016-08-03 19:28:25 · 331 阅读 · 0 评论 -
文件IO
文件IO 1、没有缓存区2、操作对象不同,是文件描述符。3、操作框架与标准IO相同,但函数名称没有f开头。文件描述符1、内核维护2、非负整数3、打开或者创建文件的返回值就是描述符4、幻数 0 1 2STDIN_FILENO STDOUT_FILENO STDERR_FIL原创 2016-08-03 19:25:49 · 289 阅读 · 0 评论 -
标准IO
标准 io IO:标准的I设备: 键盘 ====》硬件键盘标准的O设备: 显示器 ====》Linux 中的终端一切皆为文件 ===》普通文件 目录文件 字符设备文件 块设备文件 管道 套接字 符号连接文件流指针缓存机制作用: 提高效率 提高安全性库文件: stdio.h原创 2016-08-03 19:08:04 · 310 阅读 · 0 评论 -
linux高级编程六Makefile
================ 内存管理 ===============1.从地地址到高地址依次为:代码区、数据区、堆区、栈区、命令行参数及环境变量区域2.局部变量:局部变量位于栈区栈区特点: 1.栈区当中变量未初始化之前都为随机值2.在变量作用域结束后,变量空间被操作系统收回全局变量:全局变量位于数据区数据区特点:1.数据区中变量原创 2016-08-03 19:06:42 · 356 阅读 · 0 评论 -
进程与线程的同步与互斥
进程间通信1、早期的古老通信模式: 管道 信号 ====》os都支持2、较新 IPC 对象: 消息队列 共享内存 信号量集 ===》system V POSIX3、BSD 系列: socket ====》网络管道:===》无名管道 有名管道无名管道 ===》管道 ====》通信管道1、只能用于具有亲原创 2016-08-03 19:39:34 · 596 阅读 · 0 评论 -
进程与线程
进程属性 进程的概念: 独立可调度的任务 ====》os 层面可调度的基本单位 进程和程序的区别: 进程是程序的一次执行过程 程序 是静态的 是指令的有序集合 进程 是动态的 有生命周期进程的唯一标示: PID 在系统中的合法身份说明分类: 交互式进程批处理进程守护进程位置:前台 直接启动后台原创 2016-08-03 19:27:48 · 457 阅读 · 0 评论 -
网络基础知识
www.rfc.org ==>网路协议tcp/ip 协议簇应用层: HTTP TFTP FTP DNS ...传输层: TCP UDP网络层: IP ICMP RIP OSFP ...物理层: ARP地址解析协议(ip->mac) RARP命令: arp -an TCP(传输控制协议): 有链接 可靠 实时==>手机通信原创 2016-08-04 10:28:17 · 330 阅读 · 0 评论 -
网络编程基础知识
网络编程1、OSI 模型 ===》开放系统互联模型 ==》分为7层: 理想模型 ==》尚未实现 应用层 表示层 会话层 传输层 网路层 物理链路层 物理层 TCP/IP模型 ==》网际互联模型 ==》分为4层:原创 2016-08-04 10:34:21 · 247 阅读 · 0 评论 -
linux下怎样用ctags查看内核源码
linux下怎样用ctags查看内核源码原创 2016-02-16 15:08:12 · 521 阅读 · 0 评论