![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux环境 C语言
文章平均质量分 72
xiaoqiudao
这个作者很懒,什么都没留下…
展开
-
生产者与消费者模型
生产者与消费者模型:生产者:生产数据的线程消费者:使用、处理数据的线程缓冲区:隔离生产者和消费者,这样可以避免互相等待,提高运行效率。生产者快于消费者:缓冲区会爆满消费者快于生产者:缓冲区一直空使用条件变量可以解决生产者和消费者之间效率不匹配的问题生产者快于消费者,通知消费者加速消费,生产者睡眠降低生产速度消费者快于生产者,通知生产者加速生产,消费者睡眠降低消费速度#include <stdio.h>#include <pthread.h>#include &l原创 2021-06-08 15:58:22 · 67 阅读 · 0 评论 -
Linux线程管理 使用生产者消费者模型和队列封装线程池
线程管理:什么是线程: 线程就是进程中负责执行的部分,是进程内部的控制序列。 它是轻量级的,没有自己独立的内存资源、代码段、数据段、堆区、环境变量、命令行参数、文件描符、 信息处理函数、当前的工作目录 线程拥有独立的栈内存,也就是它自己独立的局部变量 一个进程中至少有一个线程,我们把它叫做主线程,也可以再创建多个线程 注意:进程是个资源单位,而线程是个执行单位,线程是进程的一部分,进程中正是有了线程才能动起来POSIX线程 1、早期各计算机厂商自己提供私有的线程库原创 2021-06-08 15:57:26 · 138 阅读 · 0 评论 -
多路复用 select poll epoll
多路复用:使用一个进程(且只有主线程)同监控若干个文件描述符的读写,这种读写模式叫多路复用。多用于TCP的服务端,用于监控客户端的连接和数据的收发 优点:不需要频繁地创建进程、销毁进程,从而节约了内存资源、时间资源,也避免了进程之间的竞争、等 待。 缺点:单个客户端的任务不能太耗时,否则其他客户端就会感知到 适合并发量高,但任务短小的情景,如:Web服务器selectint select(int nfds, fd_set *readfds, fd_set *writefds,原创 2021-06-08 15:53:49 · 84 阅读 · 0 评论 -
网络通信UDP/TCP
网络通信UDPint socket(int domain, int type, int protocol);功能:创建socket对象domain: AF_INET 基于ipv4的网络通信type: SOCK_DGRAM 数据报 UDPprotocol: 特殊协议,一般写0即可返回值:socket对象的描述符,错误返回负值 适用于SOCK_DGRAM报文通信的函数 UDPssize_t sendto(int sockfd, const void *buf, size_t len,原创 2021-06-08 15:50:29 · 67 阅读 · 0 评论 -
Linux环境C 进程及进程间通信
进程基本概念:1、进程与程序 程序就是储存在磁盘上的可执行文件,程序被加载到内存中开始运行进程。 一个程序被多次加载时就生成了多个进程 进程就是处于活动状态的计算机程序2、进程的分类 进程一般分为三种类型:交互进程、批处理进程、守护进程 守护进程一般处于活跃状态,运行在后台,由系统在开机时通过启动脚本来自动创建3、 查看进程 简单方式 ps 显示当前用户有控制终端的进程信息 列表方式 ps auxw 显示所有进程详细信息 a 所有用户的有控制终端的进程原创 2021-06-07 10:54:22 · 237 阅读 · 0 评论 -
Linux环境C 信号处理
信号处理基本概念:1、中断:当程序接收信息后中止当前执行的程序,转而执行其他任务,等其他任务执行完成后再 返回,这种执行模式叫中断,分为硬件中断和软件中断2、信号是一种软件中断,由操作系统发出,程序接收到会执行相应操作3、常见的信号SIGINT(2) Ctrl+c 终止SIGQUIT(3) Ctrl+\ 终止+coreSIGFPE(8) 除0 终止+coreSIGKILL(9) 终止信号 终止SIGSEGV(11) 非法访问内存 终止+core注意:kill -l 查看Linux所原创 2021-06-07 10:51:43 · 294 阅读 · 0 评论 -
Linux环境C 文件管理
系统调用:(系统调用API)系统调用就是操作系统提供的一些功能供程序员调用,这些系统调用已经被封装成了C函数的形式,但它们不是标准C的一部分一般应用程序运行在用户态(03G),使用系统调用时进入内核态进行系统调用(34G)常用的标准库函数大部分时间都运行在用户态,底层偶尔也会调用系统调用,从而进入内核态 malloc系统调用的代码时内核的一部分,其外部接口以共享库函数形式提供(linux-gate.sold-linux.so)并且这些接口的实现利用软中断进入到内核执行其真正的系统调用代码。time原创 2021-06-07 10:49:21 · 330 阅读 · 1 评论 -
Linux环境C 内存管理
一、内存管理用户层 STL 自动分配/自动释放 调用C++ C++ new/delete 调用C C malloc/free 调用POSIX POSIX brk/sbrk 调用Linux Linux mmap/munmap 调用内核kernal 系统层 kernal kmalloc/vmalloc 调用驱动 driver get_free_page二、进程映像程序是存储在磁盘上的可执行文件,当程原创 2021-06-07 10:46:57 · 161 阅读 · 1 评论 -
Linux C语言 系统介绍
UNIX系统介绍:最早版本的UNIX诞生于1970年的贝尔实验室,作者丹尼斯.里奇和肯汤普逊是最早的多用户、多任务、支持多种CPU处理器架构,高安全性、高可靠性、高稳定性的系统既能架构大型关键性的商用服务器,也能支持嵌入式设备Minix基于微内核架构的类UNIX操作系统,由此Linux之父林纳斯.托瓦兹受到了启发,才开发了第一个版本的LinuxLinux系统介绍:Linux,全称GNU/Linux,其内核由林纳斯·托瓦兹于1991年首次发布,是一个基于POSIX(可移植操作系统接口)的多用户、多原创 2021-06-07 10:44:10 · 583 阅读 · 0 评论