linux
文章平均质量分 86
x__016Meliorem
这个作者很懒,什么都没留下…
展开
-
浅谈Linux cd命令进入目录文件权限
浅谈Linux cd命令进入目录文件原创 2017-03-23 09:09:32 · 6244 阅读 · 0 评论 -
Linux 信号相关知识
什么是Linux中的信号信号实际上是软件中断, 信号的存在提供了一种处理异步事件的方法。 给进程发信号 实际上是给PDB的信号字段的 对应信号的二进制位置 1; 是让进程终止 。 信号可以让进程暂停。 信号是有有限种类的 有编号的。本质上为什么kill -9 (进程id)命令 杀了一个进程 9号信号对进程的默认处理方式 进程即使在没有收到对应信号之前,也有默认的对每一...原创 2018-03-07 23:16:00 · 467 阅读 · 0 评论 -
Linux IPC 之消息队列
认识消息队列消息队列提供了从一个进程到另一个进程发送一个数据块(整发整收)的能力。每个数据块被认为有一个应用类型, 接收者进程接受的数据块可以有不同的类型。消息队列的每一个发送和接收的数据块是有最大字节限制的(MSGMAX), 整个消息队列的大小也是有字节限制的(MSGMNB), 系统中的消息队列数量也有最大限制(MSGMNI)。与消息队列相关的系统调用1. #include <sys/types.原创 2018-03-01 03:04:35 · 417 阅读 · 0 评论 -
Linux 线程的同步与互斥
多个线程并发共同操作临界资源会出问题各个线程代码的访问公共变量的代码段中,加减 不是原子操作, 判断前后等等任意地方,一个线程的代码会被CPU切出,另一个线程重新来执行代码。这会发生逻辑错误。为此我们必须提供同步与互斥机制。互斥机制1、同一时刻只能有一一个线程的代码在临界区内执行。 2、多个线程竞争进入没有代码证在执行的临界区时,只有一个线程可以进入。 3、没有在临界区内代码不...原创 2018-03-15 14:50:30 · 222 阅读 · 0 评论 -
Linux 线程基础
什么是线程 什么是进程线程是计算机中运算调度的最小单位, 他在进程的地址空间内运行。 是进程实际运作单位 一条线程是进程中单一顺序的执行流 。线程使操作系统调度执行的基本单位。而进程是操作系统中资源分配的基本单位,进程有自己独立的地址空间(页表),文件描述符管理的文件,IO设备,操作系统通过这些一定程度防止进程间资源的冲突。???为什么vfork 保证子进程先执行 因为...原创 2018-03-09 12:21:03 · 336 阅读 · 0 评论 -
Linux IPC之信号量
理解信号量。System V 版本有消息队列 ,共享内存, 信号量 这几种进程间通信方式。其中信号量的作用是为了协调进程之间的同步与互斥。同步:多进程/线程 要进行共同完成一项工作必须依照一定的次序协同完成,否则无法完成或者效率低下。互斥 : 在同一时刻,只能有一个进程 访问临界资源。临界资源: 多个进程/线程 都可以看见和访问的资源(文件, 部分内存地址)临界区:访问...原创 2018-03-05 11:50:53 · 352 阅读 · 0 评论 -
线程池基础
为什么要有线程池没有线程池会出现的问题。 大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是原创 2018-04-08 19:38:47 · 385 阅读 · 0 评论 -
Reactor 与 Proactor模式
一、Reactor模式(反应器模式) 1、Reactor模式的特点 Reactor用于同步I/O,同步是指用户进程触发IO操作并等待或去轮询的查看I/O操作是否就绪,如果事件就绪的话需要应用程序自己读取或写入数据。(Reactor模式需要用户自己进行I/O操作)。 并发系统常用Reactor模式代替常用的多线程的处理方式,节省系统的资源,提高系统吞吐量。 2、使用同步I/O模型(以epo转载 2018-04-08 22:04:46 · 314 阅读 · 0 评论 -
互斥锁与自旋锁
下面摘录一些关于C++当中 自旋锁(spin lock)与互斥量(mutex)的比较 自旋锁是一种非阻塞锁,也就是说,如果某线程需要获取自旋锁,但该锁已经被其他线程占用时,该线程不会被挂起,而是在不断的消耗CPU的时间,不停的试图获取自旋锁。 互斥量是阻塞锁,当某线程无法获取互斥量时,该线程会被直接挂起,该线程不再消耗CPU时间,当其他线程释放互斥量后,操作系统会激活那个被挂起的线程,让其投入原创 2018-04-11 20:11:32 · 302 阅读 · 0 评论 -
Linux进程间通信之 共享内存
对共享内存的理解基于共享内存的进程间通信方式,本质上是将两个进程的页表把各自地址空间上的数据映射到同一块物理内存上。使得两块进程之间在自己的地址空间同时看到一份公共资源。基于共享内存的进程间通信一旦将两个进程地址空间映射到同一物理内存后,两进程的消息传递不涉及内核。也就是说信息传递不是通过调用内核系统调用来完成的。 因此这也是System V版本进程间通讯的几个方式中效率最高的方式。共享内存 将原创 2018-02-28 00:11:32 · 288 阅读 · 0 评论 -
Linux 进程间通信之 管道
为什么进程间要通信数据传输 进程需要把数据传递给其他进程资源共享 多个进程之间有时需要共享一份资源通知事件 比如子进程要把自己的退出信息交给父进程进程控制 比如Debug进程需要控制待调试进程的所有陷入和异常 , 并且知道他现在的状态。因为每个进程本来是拥有自己的虚拟地址空间 用页表映射到每个进程自己的物理内存上的 每个进程自己视为独占系统资源 各个进程的地址原创 2017-12-22 20:28:25 · 362 阅读 · 0 评论 -
Linux 进程控制
进程创建在操作系统中 一旦开始运行一个可执行程序 该可执行程序在磁盘中的数据和代码被加载到进程中 且同时进程中出现了用于描述其性质的唯一与其对应的PCB 则该可执行程序的实例 它的进程 被创建出来了。进程地址空间了解进程地址空间是 学习进程控制的理论基础。 地址空间绝不是物理内存 它只是一个抽象概念。 关于地址空间的结构在我的另一篇博客中提到了: http://blog.csdn.原创 2017-12-14 18:26:55 · 325 阅读 · 0 评论 -
C语言 Linux 下实现进度条
tittle:C语言 Linux 下实现进度条进度条小程序是Linux初学者熟悉环境的经典练习用小程序。完成这样一段小代码需要有C语言基本入门知识,并了解缓冲区、输入输出流的基本内容。 以下是代码实现和注释解析:原创 2017-04-09 16:07:46 · 1155 阅读 · 0 评论 -
task_struct结构
task_struct结构体原创 2017-04-11 17:09:38 · 526 阅读 · 0 评论 -
关于僵尸进程和孤儿进程
tittle:关于僵尸进程和孤儿进程进程的几种状态R状态 进程要么在运行要么在运行队列中。S状态 睡眠状态,进程在等待某事件完成(可被中断)D状态 不可中断的睡眠状态(通常其在第等待IO结的束)T状态 被停止的进程 (发送信号SIGSTOP停止进程 SIGCONT让进程继续运行)X状态 进程已死 已被回收 kernel你的do_exit函数返回的状态。Z状态 僵尸进程。。。原创 2017-05-03 22:16:15 · 519 阅读 · 0 评论 -
进程间通信之--- 管道
进程间通信之— 管道在Linux系统中,有时候需要多个进程之间相互协作,共同完成某项任务,进程之间或线程之间有时候需要传递信息,有 时候需要同步协调彼此工作,则就会出现进程间通信(interprocess communication 或者 IPC)Linux下进程间通信有4种方式:管道,消息队列,信号量和共享内存。学习进程间通信必须了解临界资源的概念临界资源:把多个进程(执行流)能够看到原创 2017-06-25 10:21:27 · 601 阅读 · 0 评论 -
静态库与动态库
一、什么是静态库、动态库??? 静态库:这类库的名字一般是libxxx.a,xxx为库的名字。利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。 动态库:这类库的名字一般是libxxx原创 2017-11-29 21:35:43 · 396 阅读 · 0 评论 -
GCC 常用命令参数(转)
gcc这条命令用来将源代码生成可执行程序,下面来看一下gcc的常用选项。 1、无选项编译链接 例:命令:gcc test.c //会默认生成a.out可执行程序 2、-E: 进行预处理和编译,生成汇编文件。 命令:gcc -E test.c //会生成test.i文件 3、-S: 进行预处理,编译,汇编等步骤,生成”.s”文件 例:命令:gcc -S test.c //会生成t转载 2017-12-01 15:21:56 · 859 阅读 · 0 评论 -
Linux 进程概论
1. 了解冯诺依曼体系结构自行了解 不做赘述。2. 什么是操作系统 如何了解它操作系统最主要的作用是对一台计算机软硬件资源的管理。操作系统主要进行四个方面的管理: 文件管理, 进程管理, 内存管理, 驱动管理(由内核进行) 操作系统还包括其他程序 比如库函数 、shell(命令行解释器)程序。操作系统的目的: 1.与硬件交互 管理系统的软硬件资源 2.为用户原创 2017-12-11 20:21:17 · 462 阅读 · 0 评论 -
Linux 文件描述符与文件系统
列表内容文件描述符Linux下一切皆文件 文件描述符是为了高效的管理已经被打开的文件而设计的 文件描述符作为操作文件的句柄 在Linux 下一切I/O操作的系统调用都是通过文件描述符操作的。文件描述符是一个非负整数,Linux下进程要访问一个文件就必须拿到该文件的文件描述符。每一个进程控制块结构体(PCB)中中都有一个指向 file_struct结构体的指针。 file_struct结构体中原创 2017-12-21 17:57:30 · 519 阅读 · 0 评论 -
IO多路复用之---select----poll----epoll
五种IO模型1、阻塞式IO: recv recvfrom read 读文件描述符当文件描述符里面没有数据则阻塞式等待。等待的时候这个等待的线程/进程被挂起。2、非阻塞式IO: 轮询式。 recvfrom read recv 函数通过设置参数 不停的查看内核数据是否准备好。 调用recvfrom 如果没有数据 返回特定错误码 EWOULDBLOOK 在应用程序中循环原创 2018-04-07 03:04:44 · 281 阅读 · 0 评论