上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: [toc] epoll epoll是linux下多路复用I/O接口select和poll的增强版本, 他能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率, 因为它会复用文件描述符集合来传递结果, 而不用迫使开发者每次等待事件之前都必须重新准备要被监听的文件描述符集合. 另一点原因 阅读全文
posted @ 2019-04-19 21:43 张飘扬 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 多路I/O转接服务器 多路IO转接服务器也叫多任务IO服务器. 该类服务器实现的主旨思想是, 不再有应用程序自己见识客户端连接, 取而代之有内核替应用程序监视文件 select select缺点: 1. 同时监听文件描述符上限是1024, 修改配置文件后依旧是1024, 重新编译内核可改 2. 使用 阅读全文
posted @ 2019-04-19 21:42 张飘扬 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 信号量(信号灯) mutex初始化为1 lock之后为0 unlock之后为1 mutex实现的同步都是串行的 sem相当于有多个mutex, 并行 (1) 头文件: semaphore.h (2) 信号量类型: sem_t; 加强版互斥锁 (3) 主要函数 初始化信号量: 0 线程同步 1 进程同 阅读全文
posted @ 2019-04-19 21:40 张飘扬 阅读(367) 评论(0) 推荐(0) 编辑
摘要: (1) 条件变量是锁? 不是锁 , 但是条件变量能够阻塞线程, 调用阻塞函数开始阻塞 使用条件变量+互斥量 互斥量: 保护一块共享数据 保护数据 条件变量: 引起阻塞, 生产者和消费者模型 阻塞线程 (2) 条件变量的两个动作 条件不满足: 阻塞线程 条件满足: 通知阻塞的线程开始工作 (3) 条件 阅读全文
posted @ 2019-04-19 21:39 张飘扬 阅读(2011) 评论(0) 推荐(0) 编辑
摘要: (1) 读写锁是几把锁 一把锁 pthread_rwlock_t lock; (2) 读写锁的类型 读锁: 对内存做读操作 写锁: 对内存做写操作 (3) 读写锁的特性: 线程A加读锁成功, 又来了三个线程, 做读操作, 可以加锁成功 读共享, 并行处理 线程A加写锁成功, 又来了三个线程, 做读操 阅读全文
posted @ 2019-04-19 21:38 张飘扬 阅读(1491) 评论(0) 推荐(1) 编辑
摘要: 互斥量(互斥锁) (1) 互斥锁类型: pthread_mutex_t, 定义一个变量相当于创建一把锁 (2) 互斥锁的特点 多个线程传行访问共享数据 (3) 使用互斥锁缺点 效率低 (4) 互斥锁的使用步骤 创建互斥锁: 初始化: 加锁 阻塞线程 如果上锁, 直接返回, 不阻塞, 需要对返回值进行 阅读全文
posted @ 2019-04-19 21:38 张飘扬 阅读(309) 评论(0) 推荐(0) 编辑
摘要: [toc] 基础API 头文件: 失败返回错误号, 不能用perror打印错误信息, 使用strerror(ret) pthread_self 返回线程ID, 在linux下是无符号整数(%lu), 在其他系统中可能是结构体实现 线程ID是内部标识, 两个进程间, 线程ID可以相同 pthread_ 阅读全文
posted @ 2019-04-19 21:36 张飘扬 阅读(853) 评论(0) 推荐(0) 编辑
摘要: 造成死锁的原因 (1)自己锁自己 for (int i = 0; i A锁; 线程2对共享资源B加锁成功 B锁 线程1访问共享资源B, 对B加锁 线程1阻塞在B锁上 线程2访问共享资源A, 对A加锁 线程2阻塞在A锁上 解决方法 1. 使线程安装一定顺序去访问共享资源 2. 在访问其他锁的时候, 需 阅读全文
posted @ 2019-04-19 21:36 张飘扬 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 线程 线程相关概念: 查看指定线程的LWP号 线程号和线程ID有区别; 用户查看线程ID, 内核查看线程号 找到程序的进程ID, 然后执行ps Lf pid 创建线程之后, 地址空间没有变化; 进程退出成线程 主线程; 创建出的子线程和主线程共用地址空间; 主线程和子线程有各自独立的pcb, 子线程 阅读全文
posted @ 2019-04-19 21:34 张飘扬 阅读(162) 评论(0) 推荐(0) 编辑
摘要: [toc] 终端 在UNIX系统中, 用户通过终端登录系统后得到一个Shell进程, 这个终端成为Shell进程的控制终端(Controlling Terminal), 进程中, 控制终端是保存在PCB中的信息, 而fork会复制PCB中的信息, 因此由Shell进程启动的其它进程的控制终端也是这个 阅读全文
posted @ 2019-04-19 21:33 张飘扬 阅读(1350) 评论(0) 推荐(0) 编辑
摘要: [toc] 基础API 该函数由ANSI定义, 由于历史原因在不同版本的Unix和不同版本的Linux中可能有不同的行为. 因此应该尽量避免使用它, 取而代之使用sigaction函数 重点掌握 1. sa_handler: 指定信号捕捉后的处理函数名(即注册函数)。也可赋值为SIG_IGN表忽略或 阅读全文
posted @ 2019-04-19 21:24 张飘扬 阅读(287) 评论(0) 推荐(0) 编辑
摘要: [toc] 基本概念 概念: 信号产生处于未决状态, 进程收到信号之后, 信号被放入未决信号集; 放入未决信号集的信号等待处理之前, 先判断阻塞信号集中该信号对应的标志位是否为1(不处理), 0为处理; 当阻塞信号集对应的标准位为0时, 该信号被处理 未决信号集: 没有被当前进程处理的信号集 阻塞信 阅读全文
posted @ 2019-04-19 21:23 张飘扬 阅读(227) 评论(0) 推荐(0) 编辑
摘要: [toc] 信号概念 信号机制 A给B发送信号, B收到信号之前执行自己的代码, 收到信号后, 不管执行到程序的什么位置, 都要暂停运行, 去处理信号, 处理完毕再继续执行, 与硬件中断类似——异步模式. 但信号是软件层面上实现的中断, 早期常被称为“软中断” 信号的特质: 由于信号是通过软件方法实 阅读全文
posted @ 2019-04-19 21:22 张飘扬 阅读(241) 评论(0) 推荐(0) 编辑
摘要: [toc] 存储映射 存储映射I/O(Memory mapped I/O)使一个磁盘文件与存储空间中的一个缓冲区相映射. 于是当从缓冲区中取数据, 就相当于读文件中的相应字节. 与此类似, 将数据存入缓冲区, 则相应的字节就自动写入文件. 这样, 就可在不适用read和write函数的情况下, 使用 阅读全文
posted @ 2019-04-19 21:21 张飘扬 阅读(2571) 评论(0) 推荐(0) 编辑
摘要: [toc] 命名管道 FIFO常被称为命名管道, 以区分管道(pipe). 管道(pipe)只能用于"有血缘关系"的进程间. 但通过FIFO, 不相关的进程也能交换数据 FIFO是linux基础文件类型中的一种. 但FIFO文件在磁盘上没有数据块, 仅仅用来标识内核中一条通道. 各个进程可以打开这个 阅读全文
posted @ 2019-04-19 21:19 张飘扬 阅读(968) 评论(0) 推荐(0) 编辑
摘要: [toc] 管道(pipe) 管道是一种最基本的IPC机制, 作用于 有血缘关系 的进程之间通信, 完成数据传递. 本质: 伪文件, 实质为内核缓冲区不占用磁盘空间 特点: 两部分: 读端, 写端, 对应两个文件描述符 数据写端流入, 读端流出 操作管道的进程被销毁之后, 管道自动占用的存储空间自动 阅读全文
posted @ 2019-04-19 21:18 张飘扬 阅读(1424) 评论(0) 推荐(0) 编辑
摘要: [toc] 基础API fork 头文件: 创建一个子进程 pid_t类型表示进程ID, 但为了表示 1, 它是有符号整型. 0不是有效进程ID, init最小为1 返回值: 失败: 1 成功: 通过返回值判断父子进程. (1) 父进程返回子进程的ID(非负值); (2) 子进程返回 0 注意: 不 阅读全文
posted @ 2019-04-19 21:17 张飘扬 阅读(782) 评论(0) 推荐(1) 编辑
摘要: [toc] 进程相关概念 程序和进程 程序: 编译好的二进制文件, 在磁盘上, 不占用系统资源(cpu, 内存, 打开的文件, 设备, 锁) 进程: 一个抽象的概念, 与操作系统原理联系紧. 进程是活跃的程序, 占用系统资源. 在内存中执行. 程序运行起来产生一个进程 程序 剧本(纸), 进程 戏( 阅读全文
posted @ 2019-04-19 21:14 张飘扬 阅读(418) 评论(0) 推荐(0) 编辑
摘要: [toc] exec函数族 让父子进程执行不相干的操作 能够替换进程地址空间中的源代码.txt段 当前程序中调用另外一个应用程序 是否需要exec函数族判断: 首先考虑exec之前需要fork 返回值: (1) 如果函数执行成功, 不返回; (2) 执行失败, 打印错误信息, 退出当前进程 头文件: 阅读全文
posted @ 2019-04-19 21:13 张飘扬 阅读(902) 评论(0) 推荐(0) 编辑
摘要: [toc] 环境变量 环境变量: 在操作系统中用来指定操作系统运行环境的一些参数. 通常具备以下特征: (1) 字符串(本质); (2) 有统一的格式: 名=值[:值]; (3) 值用来描述进程环境信息 存储形式: 命令行参数类似. char []数组, 数组名: environ, 内部存储字符串, 阅读全文
posted @ 2019-04-19 21:07 张飘扬 阅读(353) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页