Linux
文章平均质量分 63
MaximusZhou
这个作者很懒,什么都没留下…
展开
-
《Linux命令行与Shell脚本编程大全》学习笔记2
0、下面是书本第四章的学习笔记,并且只记录那些,本人不知道的抑或遗忘的内容。 1、命令ps,Linux系统中使用的GNU ps命令支持3个不同类型的命令行参数:Unix风格的参数,前面加单破折线;BSD风格的参数,前面不加破折线;GNU风格的长参数,前面加双破折线。参数-e显示所有的进程,-f显示完整格式的输出,因此想查看系统上运行的所有进程,可以用-ef;-H参数能把输出的进原创 2013-02-24 18:54:06 · 953 阅读 · 0 评论 -
浅析线程间通信二:读写锁和自旋锁
上文讨论了互斥量和条件变量用于线程的同步,本文将讨论读写锁和自旋锁的使用,并给出了相应的代码和注意事项,相关代码也可在我的github上下载。 读写锁 对于互斥量要么是锁住状态要么是不加锁锁状态,而且一次只有一个线程可以对其加锁,而读写锁对线程的读数据加锁请求和写数据加锁请求进行了区分,从而在某些情况下,程序有更高的并发性。对于读写锁,一次只有一个线程可以占有写模式的读写锁,但是多个线程可原创 2015-02-25 16:37:29 · 2340 阅读 · 0 评论 -
浅析线程间通信一:互斥量和条件变量
线程同步的目的简单来讲就是保证数据的一致性。在Linux中,常用的线程同步方法有互斥量( mutex )、读写锁和条件变量,合理使用这三种方法可以保证数据的一致性,本文将讨论互斥量和条件变量的使用,并给出了相应的代码和注意事项。原创 2015-01-03 19:57:00 · 3555 阅读 · 0 评论 -
浅析Linux线程调度
在Linux中,线程是由进程来实现,线程就是轻量级进程( lightweight process ),因此在Linux中,线程的调度是按照进程的调度方式来进行调度的,也就是说线程是调度单元。Linux这样实现的线程的好处的之一是:线程调度直接使用进程调度就可以了,没必要再搞一个进程内的线程调度器。在Linux中,调度器是基于线程的调度策略(scheduling policy)和静态调度优先级(st原创 2014-12-20 13:47:22 · 18435 阅读 · 1 评论 -
浅析Linux线程中数据
本文首先概述了线程中有哪些数据私有的,以及进程中哪些数据是线程共享的,然后详细分析了线程在用户空间中的数据,最后通过一个多线程程序来分析线程中的数据分布。原创 2014-12-03 20:42:23 · 2203 阅读 · 0 评论 -
浅析Linux线程的创建
本文首先使用了接口pthread_create创建一个线程,并用strace命令追踪了接口pthread_create创建线程的步骤以及涉及到的系统调用,然后讨论了Linux中线程与进程关系,最后概述了为了实现POSIX线程,Linux内核所做的修改。 使用pthread_create创建线程 在Linux下可以使用pthread_create来创建线程,该接口声明如下:#原创 2014-11-24 19:15:09 · 4019 阅读 · 0 评论 -
使用gcc时头文件路径和动态链接库路径
在使用gcc编译连接生成可执行文件时,经常会碰到变量未定义、链接时或者运行可执行文件时找不到相应的动态库等问题,本文首先介绍了gcc在编译时头文件路径相关选项以及搜索路径顺序,然后讨论了编译成可执行文件时动态库的搜索路径顺序,最后说明了生成可执行文件后,运行文件时动态库的搜索路径顺序。搞清楚这三个搜索路径,在用gcc碰到的未定义变量或搜索不到动态库的问题,基本上都可以解决了。头文件路径编译时相原创 2014-08-14 16:36:38 · 11811 阅读 · 0 评论 -
gcc的使用
gcc是Linux下常用的C/C++编译驱动器。本文首先介绍了gcc整个编译连接过程,然后讨论gcc常用的选项,最后说明了gcc与g++的关系。原创 2014-08-11 16:58:02 · 2354 阅读 · 0 评论 -
Linux/Unix分配进程ID的方法以及源码实现
在Linux/Unix系统中,每个进程都有一个非负整型表示的唯一进程ID。虽然是唯一的,但是进程的ID可以重用。当一个进程终止后,其进程ID就可以再次使用了。大多数Linux/Unix系统采用延迟重用的算法,使得赋予新建进程ID不同于最近终止进程所使用的ID,这主要是为了防止将新进程误认为是使用同一ID的某个已终止的先前进程。本文讨论了Linux/Unix分配进程ID的方法以及源码实现。原创 2014-05-31 14:06:11 · 4403 阅读 · 0 评论 -
文件的特殊权限:SUID、SGID和SBIT学习笔记
零、下面是学习这个三个特效权限的总结,并分三个部分来分别介绍他们。 一、SetUID (1)为什么引入SetUID? 考虑下面一种情形,我们知道在Linux系统中,所有的账号密码都记录在/etc/shadow这个文件中,这个文件的权限为-rw-r----- 1 root shadow,也就是说只有root用户才能修改这个文件,但是我们原创 2013-03-15 20:28:08 · 1906 阅读 · 0 评论 -
《Linux命令行与Shell脚本编程大全》学习笔记4
0、下面是书本第五章的学习笔记,并且只记录那些,本人认为重要的、不知道的抑或遗忘的内容。 1、Linux系统使用一个专门的文件来讲用户的登录名匹配到对应的UID值。这个文件就是/etc/passwd文件,它包含了一些与用户相关的信息。Linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真的用户。这些账户称作系统账户,是系统上运行的各种服务进程访问资源用的特殊账户原创 2013-03-12 22:44:39 · 1161 阅读 · 0 评论 -
《Linux命令行与Shell脚本编程大全》学习笔记3
0、下面是书本第五章的学习笔记,并且只记录那些,本人认为重要的、不知道的抑或遗忘的内容。 1、在bash shell中,环境变量分为两类:全局变量,局部变量。全局环境变量不仅对shell会话可见,对所有shell创建的子进程也可见。局部变量则只对创建它们的shell可见。这让全局环境变量对那些子进程中需要获取父进程信息的程序来说非常有用。可以命令printenv 查看Linux原创 2013-02-28 23:02:29 · 1265 阅读 · 0 评论 -
《Linux命令行与Shell脚本编程大全》学习笔记1
0、下面是书本第三章的学习笔记,并且只记录那些,本人不知道的抑或遗忘的内容。 1、默认情况下,bash shell启动时会自动处理用户主目录下.bashrc文件中的命令。许多Linux发行版在此文件中加载特殊的共用文件,在共用文件中保存着针对所有系统用户的命令和设置。通常该文件设置各种应用程序中用到的环境变量。 2、有两个环境变量是用来控制命令行提示符的格式原创 2013-02-24 18:53:20 · 1050 阅读 · 0 评论 -
浅析线程间通信三:Barriers、信号量(semaphores)以及各种同步方法比较
之前的文章讨论了互斥量、条件变量、读写锁和自旋锁用于线程的同步,本文将首先讨论Barriers和信号量的使用,并给出了相应的代码和注意事项,相关代码也可在我的github上下载,然后对线程各种同步方法进行了比较。 Barriers Barriers是一种不同于前面线程同步机制,它主要用于协调多个线程并行(parallel)共同完成某项任务。一个barrier对象可以使得每个原创 2015-04-02 21:03:15 · 4285 阅读 · 0 评论