![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统编程
文章平均质量分 80
期待777
这个作者很懒,什么都没留下…
展开
-
Linux系统编程总结(持续更新)
1.冯诺依曼体系结构是什么?分为哪几部分?是现代计算机的硬件体系结构,分为存储器,运算器,控制器,输入设备,输出设备2.操作系统是什么?如何管理?系统调用接口是什么?库函数和系统调用接口什么关系?是一个搞管理的软件,管理计算机的软硬件设备,先描述再组织,操作系统向用户提供的访问内核的接口,库函数封装了系统调用接口3.进程是什么?pcb有哪些描述信息?进程是运行中的程序,进程就是pcb,是操作系统对运行中程序的动态描述,通过这些描述实现运行调度管理是资源分配的基本单位(与线程的区分)p原创 2021-03-11 00:52:21 · 168 阅读 · 0 评论 -
多线程---单例模式
文章目录单例模式实现单例模式饿汉方式懒汉模式单例模式单例模式:是非常典型常用的一种设计模式一份资源只能被申请加载一次/单例模式的方法创建的类在当前进程中只有一个实例实现单例模式饿汉方式资源的程序初始化的时候就去加载,后面使用的时候直接使用,使用的时候比较流畅,有可能会加载用不上的资源,导致程序初始化时间比较慢。#include <cstdio>class single_instance{ public: int * get_instance(){原创 2020-11-19 16:25:36 · 79 阅读 · 0 评论 -
多线程-----线程池
文章目录线程池自主编写一个线程池:大量线程(每个线程中都是进行循环的任务处理)+任务缓冲队列总结线程池线程的池子,有很多线程,但是数量不会超过池子的限制。-----需要用到多执行流进行任务处理的时候,就从池子中取出一个线程去处理。应用场景:有大量的数据处理请求,需要多执行流并发/并行处理若是一个数据请求的到来伴随一个线程的创建去处理,则会产生一些风险以及不必要的消耗:1.线程若不限制数量的创建,在峰值压力下,线程创建过多,资源耗尽,有程序崩溃的风险2.处理一个任务的时间:创建线程时间t1+任务原创 2020-11-19 10:21:36 · 119 阅读 · 0 评论 -
多线程---生产者与消费者模型实现
文章目录生产者与消费者模型生产者与消费者模型的第一种实现:生产者与消费者模型的第二种实现:生产者与消费者模型生产者与消费者模型------针对典型的应用场景设计的解决方案生产者与消费者模型应用场景:有线程不断的生产数据,有线程不断地处理数据数据的生产与数据的处理,放在同一个线程中完成,因此执行流只有一个,那么肯定是生产一个处理一个,处理完一个后才能生产。这样的话依赖关系太强----如果处理比较慢,也会拖的生产速度慢下来因此将生产 与 处理放到不同的执行流中完成,中间增加一个数据缓冲区,做为中间的原创 2020-11-19 09:28:07 · 202 阅读 · 0 评论 -
多线程---线程安全
文章目录前言线程安全互斥的实现:互斥锁死锁同步的实现----条件变量前言上一个博客总结了线程控制:创建/终止/等待/分离。需要了解请点击:链接: 线程控制.线程安全线程安全:多个执行流对临界资源的争抢访问,但是不会出现数据二义性;线程安全的实现:同步:通过条件判断保证对临界资源访问的合理性互斥:通过同一时间对临界资源访问的唯一性实现临界资源访问的安全性互斥的实现:互斥锁互斥锁实现的原理:互斥锁本身是一个只有0/1的计数器,描述了一个临界资源当前的访问状态,所有执行流在访问临界资源,都需要原创 2020-11-18 11:17:02 · 124 阅读 · 0 评论 -
多线程---线程控制
文章目录前言1.线程创建2.线程的终止:如何退出一个线程3.线程等待4.线程分离前言上一个博客总结了线程概念,有需要学习的请点击链接: 线程概念.该篇则主要总结如何通过代码实现线程的创建/退出/等待/分离1.线程创建进行线程控制的接口代码,其实都是库函数,也就是说,操作系统其实并没有提供创建线程的接口,在用户态使用库函数封装了一套线程库,这套封装的线程库函数,提供的线程的各种操作。使用库函数创建一个线程(用户态线程),本质上是在内核中创建一个轻量级进程来实现程序的调度。线程的创建:**in原创 2020-11-18 00:16:29 · 218 阅读 · 0 评论 -
多线程---线程概念
文章目录前言线程概念线程和进程关系根据学习阶段的不同,对pcb有不同的理解线程之间的独有与共享多线程/多进程进行多任务处理的优缺点分析前言多线程:非常重要----以后工作中用的非常多多线程-----线程概念/线程控制/线程安全/线程基本应用线程概念线程:线程是进程中的一条执行流以前我们学习进程的时候,我们说进程就是一个pcb,是程序动态运行的描述,通过pcb可以实现操作系统对程序运行的调度管理。在最早时候,进程是一个pcb,操作系统通过pcb实现程序的运行调度管理;然而学习多线程,因为线程是原创 2020-11-17 20:09:51 · 142 阅读 · 0 评论 -
Linux 进程信号
文章目录前言一、信号是什么?二、信号的产生三、信号在进程中注册四、信号在进程中注销五、信号的处理六、信号阻塞总结前言进程信号---------信号量不是信号一、信号是什么?信号是什么:信号是一个软件中断;举例:正在上课,听到了下课铃声作用:操作系统通过信号告诉进程发生了某个事件,打断进程当前的操作,去处理这个事件。生活中的信号多种多样,并且肯定是一个信号对应一个事件,并且我们能够识别这个信号。操作系统中的信号也同样如此:通过kill -l命令可以查看系统中的信号种类–62种;1-31号原创 2020-11-13 15:57:41 · 106 阅读 · 0 评论 -
Linux 进程通信--共享内存
文章目录前言一、共享内存二、共享内存的操作流程:1.创建共享内存:int shmget(key_t key,size_t size,int shmflg);2.建立映射连接:void *shmat(int shmid,const void*shmaddr,int shmflg)3.解除映射关系:int shmdt(const void*shmaddr)4.删除共享内存:shmctl(int shmid,int cmd,struct shmid_ds *buf);三、消息队列:(只讲原理)四、信号量总结前原创 2020-11-10 19:49:20 · 182 阅读 · 0 评论 -
Linux 进程间通信---管道
文章目录前言一、管道是什么?二.如何创建匿名管道:三、命令行中管道符的实现: ps -ef | grep ssh四、命名管道五、总结前言进程间通信-IPC:操作系统为用户提供的几种进程间通信方式为什么操作系统要为用户提供进程间通信方式呢?—因为进程的独立性(每个进程都有自己的独立虚拟地址空间,操作的都是自己的地址),因此进程之间无法直接通信;访问的都是自己的虚拟地址,而不是直接访问物理内存,无法访问同一块区域,因此无法实现数据通信如何提供进程间通信方式:给多个进程之间提供一个大家都能访问到的传播介原创 2020-11-10 11:07:12 · 185 阅读 · 0 评论 -
Linux基础IO-文件系统
文章目录前言一、文件系统是什么?二、软链接文件/硬链接文件1.定义2.软链接文件和硬链接文件的区别:3.动态库/静态库的打包与使用前言文件系统:linux下的ext2文件系统为例一、文件系统是什么?文件系统就是磁盘上管理文件的系统存储一个文件需要找到空闲的磁盘块存储文件数据,以及需要找到一个未使用的inode节点存储自己的元信息针对每一个磁盘块做一个整体的位图,这样就可以快速找到空闲的磁盘块文件的权限就是使用位图存储:一个用户有没有权限也就是0/1的关系;位图可以节省大量的空间以及二进制的原创 2020-11-09 15:55:14 · 158 阅读 · 0 评论 -
Linux基础IO
文章目录前言一、回顾标准库的IO接口二、系统调用IO接口的学习1. int open(char* filename,int flag,mode_t mode)2.ssize_t write(int fd,char *buf,size_t count);3.ssize_t read(int fd,char *buf,size_t len);4.off_t lseek(int fd,off_t offset,int whence)5.int close(int fd);---通过文件描述符关闭文件,释放资源;总原创 2020-11-09 09:47:09 · 275 阅读 · 0 评论 -
Minishell的实现
文章目录前言一、等待用户标准输入二、对输入的信息进行解析--得到命名名称以及运行参数三、创建子进程--在子进程中进行程序替换,让子进程运行指定的命令四、等待子进程退出总结前言自己编写一个minishell,通过这个minishell的编写整合所学进程控制的代码,以及理解shell的运行流程一、等待用户标准输入char buf[1024]={0};fgets(buf,1023,stdin);//gets也可以buf[strlen(buf)-1]='\0';二、对输入的信息进行解析–得到命名名原创 2020-11-07 14:39:59 · 265 阅读 · 0 评论 -
Linux进程创建
文章目录前言一、进程创建1.pid_t fork(void);2.pid_t vfork(void)二、进程终止1. main函数中return2. void exit(int status);3.void _exit(int status);三、进程等待1.pid_t wait(int *status);2. pid_t waitpid(pid_t pid,int *status,int options);四、程序替换1.创建一个子进程目的是什么?2.如何让子进程干其他的事情?前言进程控制:进程原创 2020-11-06 15:02:24 · 740 阅读 · 0 评论 -
Linux进程概念
文章目录前言一、冯诺依曼体系结构是什么?1.为什么不使用更大的硬盘作为存储器?2.存储数据为什么不用内存条?二、操作系统三、进程概念1.操作系统如何实现多个程序的调度运行:2.cpu如何在内存中找到每个程序呢?cpu切换调度回来的时候,如何保证能够从上一次运行的位置继续运行呢?cpu切换调度回来的时候,如何保证能够继续处理上一次没有处理完的数据呢?四、进程创建的初步认识1.创建了一个新的pcb,然后从父进程pcb中复制了很多数据过来2.这个函数的返回值对于父子进程是不一样的五、进程状态1.进程状态:就绪/运原创 2020-11-04 17:18:09 · 199 阅读 · 0 评论