![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux系统操作
xiaoshengqdlg
这个作者很懒,什么都没留下…
展开
-
ubuntu14安装TFTP服务器
1安装tftp所需的软件安装tftp-hpa、tftpd-hpa和xinetd: $ sudo apt-get install tftp-hpa tftpd-hpa xinetdtftp-hpa是客户端,tftpd-hpa是服务程序。 2 配置TFTP服务器第1步: 修改/etc/default/tftpd-hpa配置文件。将/etc/default/转载 2017-11-15 18:44:39 · 502 阅读 · 0 评论 -
linux内核log介绍
转自:当在linux中工作时,我们发现,提到linux中的日志(log)信息,就会想到syslog,printk中的内核日志,dmesg等等,但却对它们地关系有时候并不清楚。笔者在接触到Linux的几年中,曾经就被这些log搞得昏头转向,不知道该去哪里找自己需要的log,为了弄清楚这个问题,决定花力气把这个问题搞清楚。下面的图清楚地表达出了linux中的各种日志,以及日志相关的函数命令转载 2014-09-01 10:35:58 · 9051 阅读 · 0 评论 -
linux进程调度
抢占就是进程调度,用户进程抢占发生在原创 2014-08-31 15:39:20 · 453 阅读 · 0 评论 -
linux内核符号表
所谓内核符号表就是在内核内部函数或变量中可供外部引用的函数和变量的符号表。在 2.6 内核下,使用以下命令可以看到内核符号表:引用 beyes@linux-beyes:/> cat /proc/kallsyms | morec0100000 T _textc0100000 T startup_32c0100054 t default_entryc01000b0 T转载 2014-09-11 16:13:56 · 541 阅读 · 0 评论 -
内核套接字sock
用户socket与内核sock是一一对应的,在用户socket结构体中有成员变量原创 2014-08-27 20:07:16 · 575 阅读 · 0 评论 -
原子位操作
如果你连续执行两个原子位操作,原创 2014-08-27 17:42:39 · 438 阅读 · 0 评论 -
linux内核之list_head
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序转载 2014-09-11 17:29:59 · 396 阅读 · 0 评论 -
工作笔记(USB performance networkmap)
函数指针在作为函数参数传递给函数A的时候,在函数A的定义中,如果原创 2014-08-28 09:05:27 · 452 阅读 · 0 评论 -
Linux内核中的等待队列--init_waitqueue_head等
inux内核中的等待队列 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t转载 2014-08-28 10:26:17 · 477 阅读 · 0 评论 -
linux内核等待队列方法
当你在用户空间需要读写一大片数据的时候,这个就用上了。 以下来自:http://www.yuanma.org/data/2006/1207/article_1916.htm假设我们在 kernel 里产生一个 buffer,user 可以经由 read,write 等 system call 来读取或写资料到这个 buffer 里。如果有一个 user 写资料到 buffe转载 2014-08-28 09:37:27 · 370 阅读 · 0 评论 -
linux内核机制之等待队列
转自:一、定义:/include/linux/wait.hstruct __wait_queue_head {spinlock_t lock;struct list_head task_list;};typedef struct __wait_queue_head wait_queue_head_t;二、作用:在内核里面,等待转载 2014-09-01 11:56:15 · 356 阅读 · 0 评论 -
关于系统调用和内核函数
系统调用通常通过函数进行调用(这句话的意思是系统调用函数是封装在其他函数中)原创 2014-09-02 16:47:14 · 1012 阅读 · 0 评论 -
关于软中断原理,以及中断栈的概念等
中断栈与内核栈的话题更多地属于内核的范畴,所以在《深入Linux设备驱动程序内核机制》第5章“中断处理”当中,基本上没怎么涉及到上述内容,只是在5.4节有些许的文字讨论中断栈在中断嵌套情形下可能的溢出问题。本贴在这个基础上对内核栈与中断栈的话题做些补充,讨论基于x86 32位系统,因为64位系统下Linux内核关于栈的支持原理上是相同的,不过也有些特性属于64位特有的,比如IST(Inte转载 2014-09-15 18:57:06 · 3901 阅读 · 0 评论 -
linux系统监控 mpstat命令
1.SYNOPSIS mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ] 2.用法 mpstat -V 显示mpstat版本信息 mpstat -P ALL 显示所有CPU信息 mpstat -P n 显示第n个cup信息,n为数字,计数从0开始 mpstat转载 2014-04-14 18:26:14 · 656 阅读 · 0 评论 -
杂乱知识总结(strcpy,memcpy.fork,)
当内核执行C程序时,(使用一个exec函数),在调用main函数之前县调用一个特殊转载 2014-08-21 20:41:53 · 561 阅读 · 0 评论 -
c语言中#include 路径查找问题
在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序员分别编程。有 些公 用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使 用。这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错。对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来转载 2014-11-01 15:25:24 · 35330 阅读 · 1 评论 -
linux内核栈,内核同步,用户空间线程同步
在论坛上浏览到一个帖子,是说内核栈的问题的,一时却感到有点陌生了,下面总结一下http://topic.csdn.net/u/20121101/10/86479004-2f2c-491c-bc43-03cc0e087588.html?694191.内核栈1.每当创建一个进程(主线程),用户线程,内核线程时,内核都会给这个进程或线程动态创建一个内核栈,在内核空间,换存在cac转载 2014-09-16 09:24:35 · 918 阅读 · 0 评论 -
linux信号处理原理
信号处理过程中内核需要做的转载 2014-11-25 09:42:18 · 531 阅读 · 0 评论 -
深入理解linux网络技术内幕(学习笔记)
一般的,驱动程序将其设备的一个原创 2014-08-23 18:55:28 · 1131 阅读 · 0 评论 -
linux软中断与硬中断实现原理概述。
软中断通过open_softirq注册一个软中断处理函数,即在软中断向量表原创 2014-09-15 20:01:45 · 8623 阅读 · 0 评论 -
内核日志:API 及实现
http://www.ibm.com/developerworks/cn/linux/l-kernel-logging-apis/index.html从内核到用户空间的日志在内核开发中,我们通常使用 printk 进行日志。但是您曾经考虑过它的过程,以及内核日志的底层实现吗?本文介绍了内核日志的整个过程,包括 printk 及用户空间日志文件的插入。0 评论转载 2014-09-16 10:01:44 · 550 阅读 · 0 评论 -
likely与unlikely
分支声明对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。例如,下面是一个条件选择语句:if (foo) { /* .. */}如果想要把这个选择标记成绝少发生的分支:/* 我们认为f转载 2014-09-15 16:36:11 · 499 阅读 · 0 评论 -
fcntl
文件控制函数 fcntl -- file controlLIBRARY Standard C Library (libc, -lc)SYNOPSIS #include ; int fcntl(int fd, int cmd, ...);[描述] Fcntl()针对(文件)描述符提供转载 2014-07-15 17:33:06 · 622 阅读 · 0 评论 -
内核中container_of
在linux 内核中有一个大名鼎鼎的宏container_of(),这个宏是用来干嘛的呢?我们先来看看它在内核中是怎样定义的。呵呵,乍一看不知道是什么东东。我们先来分析一下container_of(ptr,type,member),这里面有ptr,type,member分别代表指针、类型、成员。看一个例子:Struct test {转载 2014-08-25 13:43:17 · 348 阅读 · 0 评论 -
LINUX的Netlink机制
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火转载 2014-08-25 19:16:15 · 535 阅读 · 0 评论 -
进程工作目录
linux的lsof命令能够显示被进程打开的文件或目录。被进程打开的文件就是在某个原创 2014-08-20 17:21:48 · 1265 阅读 · 0 评论 -
jiffies等内核时间概念
类似于软件中断的机制不能执行休眠或可能引起休眠的函数。在内核空间sleep这种用户空间的延时函数是不能用的,可以使用msleep等代替,详情见《Linux设备驱动程序》一书第七章。linux HZLinux核心几个重要跟时间有关的名词或变数,底下将介绍HZ、tick与jiffies。 HZLinux核心每隔固定周期会发出timer int转载 2014-08-06 09:07:41 · 1109 阅读 · 0 评论 -
工作笔记 内核模块
内核模块属于内核的一部分,是运行于内核空间的原创 2014-08-01 18:20:53 · 422 阅读 · 0 评论 -
linux下ftp命令详解
ftp服务器在网上较为常见,Linux ftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文件,这里详细介绍Linux ftp命令的一些经常使用的命令,相信掌握了这些使用Linux 进行ftp操作将会非常容易。Linux ftp命令的一般格式如下:$ ftp 主机名/IP其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定转载 2014-04-29 12:46:28 · 501 阅读 · 0 评论 -
select函数用法
原型int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);nfds:本参数忽略,仅起到兼容作用。 readfds:(可选)指针,指向一组等待可读性检查的套接口。 writefds:(可选)指针,转载 2014-04-24 14:37:19 · 495 阅读 · 0 评论 -
#ifdef #ifndef #define,#endif解析
我们在看一些开源的源代码的时候,经常会看到如下情景:# if defined(_PTHREADS) && !defined(_NOTHREADS)# define __STL_PTHREADS# endif # if defined(_UITHREADS) && !defined(_PTHREADS) && !defined(_NOTHREADS)# def转载 2014-04-23 13:47:19 · 735 阅读 · 0 评论 -
configure文件的生成
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。 在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样转载 2014-04-23 14:06:24 · 1814 阅读 · 0 评论 -
用gdb调试软件
使用GDB一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:$gcc -g -Wall hello.c -o hello$g++ -g -Wall hello.cpp -o hello如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行转载 2014-04-23 13:10:11 · 673 阅读 · 0 评论 -
Linux getopt用法
最近做cache lab 用到了getopt函数, 用man 3 getopt查看了下用法, 做个总结.描述:getopt函数是用来解析命令行参数的, 以‘-’或‘--’开头的参数为选项元素,除去‘-’或‘--’的选项元素为选项字符。如果getopt函数被重复调用,则它将会依次返回每个选项元素中的选项字符。使用getopt函数需要包含以下头文件:#inclu转载 2014-04-15 10:28:46 · 747 阅读 · 0 评论 -
进程上下文与中断上下文
进程上下文:一个进程在执行的时候,CPU中的所有寄存器中的值原创 2014-08-08 17:13:29 · 447 阅读 · 0 评论 -
linux 的一个调试命令 strace
strace 直接后面加命令,会将该命令执行过程中所调用的所有系统调用和接收到的信号打印出来原创 2014-08-21 14:00:55 · 454 阅读 · 0 评论 -
为什么中断不能休眠
1. 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断(这点对 于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断context中休眠,则没有办法唤醒它,因为所有的 wake_up_xxx都是针对某个进程而言的,而在中断context中,没有进程的概念,没有一个tas转载 2014-08-08 16:13:37 · 533 阅读 · 0 评论 -
内核为什么需要各种解决同步的锁、互斥量等
线程和进程同时运行是基于内核的调度系统。为了原创 2014-08-14 10:53:38 · 366 阅读 · 0 评论 -
软中断
软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和"信号"有些类似,同时,软中断又是和硬中断相对应的,"硬中断是外部设备对CPU的中断","软中断通常是硬中断服务程序对内核的中断","信号则是由内核(或其他进程)对某个进程的中断"(《Linux内核源代码情景分析》第三章)。软中断的一种典型应用就是所谓的"下半部"(bottom half),它的得转载 2014-08-14 11:09:09 · 472 阅读 · 0 评论 -
同步IO与异步IO
I/O 既 输出/输入 (Input/Output)既然是输入输出,为什么又会有同步和异步的不同方式呢?同步 当一个IO操作进行时,系统停下来等待这个IO的操作完成后才会继续进行下面的计算。异步 当一个IO操作进行时,通过多线程等方法,当CPU去处理那些不需要依赖IO执行结果的计算,充分的利用CPU的运算能力。当IO操作执行完毕时,继续执行后续的操作。一般情况下,作转载 2014-08-13 19:10:35 · 426 阅读 · 0 评论