Linux
文章平均质量分 84
Y—X
这个作者很懒,什么都没留下…
展开
-
Linux——网络基础socket套接字(协议、协议模型、IP、Port、网络字节序)
协议协议是指通信双方约定使用同一种解析信息的手段来进行有效的沟通协议分层模型OSI参考模型(自下而上):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP五层(或四层)模型TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。物理层:负责光/电信号的传递方式. 物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.数据链路层原创 2021-05-23 18:26:22 · 357 阅读 · 3 评论 -
Linux__线程池及设计模式(单例模式)
文章目录线程池 :单例模式饿汉模式懒汉模式--延时加载线程池 :线程池=线程安全队列+一大堆的线程(执行任务的线程)线程池示例:创建固定数量线程池,循环从任务队列中获取任务对象,获取到任务对象后,执行任务对象中的任务接口代码示例:#pragma once #include <unistd.h>#include <math.h>#include <pthread.h>#include <iostream>#include <q原创 2021-04-30 15:00:28 · 240 阅读 · 2 评论 -
Linux__生产者消费者模型
1.生产者与消费者模型1.1基于阻塞队列的生产者与消费者模型321原则:3: 三种关系,生产者VS生产者(互斥),生产者VS消费者(同步),消费者VS消费者(互斥)2: 两种角色,生产者和消费者1: 一个交易场所(这里就是一个线程安全的BlockQueue队列)优点可以解耦合:生产者和消费者都是通过队列进行交互。支持忙闲不均:队列起到了缓冲的作用。支持并发:生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。实现用STL中的原创 2021-04-24 19:58:07 · 144 阅读 · 5 评论 -
Linux___线程互斥与同步
文章目录1. 线程互斥1.1 进程线程间与互斥相关的背景知识1.2互斥量mutex1.3互斥量的接口1.4互斥量实现原理1. 线程互斥1.1 进程线程间与互斥相关的背景知识临界资源:被多个执行流同时访问的共享资源就叫做临界资源。临界区:每个线程内部,访问临界资源的代码,就叫做临界区。原子性:不会被任何调度机制打断的操作,该操作只有两态,要么别做,要么做完。互斥:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用。1.2互斥量mutex大部分情况,线程原创 2021-04-22 22:57:11 · 612 阅读 · 3 评论 -
Linux___线程概念及线程控制
1.线程概念1.1什么是线程1.2线程的优缺点1.3线程的异常2.Linux中进程VS线程3.线程控制3.1POSIX线程库3.2创建线程3.3什么是LWP3.4线程ID及进程地址空间3.5 线程终止3.6 线程等待3.7 分离线程原创 2021-04-17 19:57:15 · 178 阅读 · 0 评论 -
Linux__进程信号
1.信号的引入2.信号概念3.信号列表4.信号的生命周期4.1信号处理常见方式概览5.信号的产生5.1通过终端按键产生信号(键盘组合键)5.2调用系统函数向进程发信号5.3由软件条件产生的信号5.4 硬件异常产生信号6.阻塞信号6.1信号其他相关常见概念6.2信号在内核中的表示示意图6.3 sigset_t6.4 信号集操作函数6.5 sigprocmask函数6.6 sigpending函数6.7用上述函数写一个获取信号小程序:**7.信号的捕捉7.1内核如何实现信号原创 2021-04-13 15:06:51 · 665 阅读 · 0 评论 -
共享内存
1.共享内存2.共享内存操作过程3.共享内存函数4.共享内存资源查看和删除5.实现内存共享程序6.总结原创 2021-04-10 16:15:15 · 1832 阅读 · 1 评论 -
进程间通信(匿名管道和命名管道)
1.进程间通信目的2.进程间通信分类3. 管道4.匿名管道4.1用fork来共享管道原理4.2管道创建过程4.3站在文件描述符角度-深度理解管道4.3.1如果写端,不关闭文件描述符,且长时间不写入,那么读端可能(管道内有历史数据就会先读取完)长时间阻塞4.3.2当我们在实际写入时,如果写入条件不满足(包括缓冲区写完),那么写入端就要被阻塞。4.3.3如果写入端关闭文件描述符,读取端就会读取到文件末尾,read返回0值4.3.4如果读取端关闭,写入端进程被OS直接杀掉(OS系统统筹管理资源原创 2021-04-09 17:16:22 · 571 阅读 · 1 评论 -
Linux——系统文件I/O
基础IO1.C文件接口及标准输入、输出和错误2.系统调用IO3.文件描述符4.dup2系统接口重定向什么是重定向?缓冲区dup2系统接口5.文件系统6.软/硬链接原创 2021-04-01 22:33:38 · 158 阅读 · 0 评论 -
模拟实现miniShell
模拟实现shell什么是shellshell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接受用户输入的命令并把它送入内核去执行。实际上shell就是一个命令解释器,它解释有用户输入的命令并且把它们送到内核。不仅如此,shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。shell变成语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。实现shell,需要做到以下四点:接收原创 2021-03-26 15:51:00 · 892 阅读 · 1 评论 -
Linux__进程控制
1.进程创建1.1fork函数初识1.2fork函数返回值1.3 写时拷贝1.3 fork的常规用法2.进程终止2.1 进程退出的情况2.2 进程常见退出方法3.进程等待3.1进程等待的必要性3.2进程等待wait方法3.3 waitpid方法3.4 获取子进程status4.进程程序替换4.1替换原理4.2 替换函数4.3 函数解释4.4 命名理解4.5示例原创 2021-03-16 22:52:54 · 134 阅读 · 3 评论 -
Linux__进程地址空间
文章目录1.什么是进程地址空间2.为什么要有地址空间?3.地址空间是怎么工作的?1.什么是进程地址空间下图就是进程地址空间概念图。进程并不是一直占用所有的地址空间资源,地址空间是进程的活动范围 。进程地址空间是虚拟地址空间,不是物理地址空间,在语言上打印出来的地址叫做虚拟地址,地址空间是对物理内存的一种虚拟化表示。虚拟空间最终以某种方法转化到物理内存上。(OS负责将虚拟地址转化为物理地址)说明:上面的图就足矣说名问题,同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不原创 2021-03-13 20:52:16 · 139 阅读 · 1 评论 -
Linux进程(fork函数,僵尸进程,孤儿进程)
Linux进程1.通过系统调用创建进程fork初识1.1如何理解进程创建?1.2 fork为什么有俩个返回值?如何深刻的理解?2.进程状态2.1 进程状态的查看2.2 R运行状态(running)2.3 S休眠状态(浅度休眠状态)2.4 T停止状态(stopped)3. 僵尸进程3.1 为什么要有僵尸状态?3.2 僵尸进程的危害4.孤儿进程1.通过系统调用创建进程fork初识使用man fork可以看到fork的功能(创建一个子进程)在fork()函数之前需要调用关于printf的进程,在fork原创 2021-03-01 18:01:00 · 574 阅读 · 0 评论 -
Linux——进程概念
1.冯诺依曼体系结构我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。输入设备:键盘,网卡,鼠标,摄像头,麦克风,硬盘…输出设备:显示器,声卡,喇叭,网卡,硬盘…输入输出设备(外围设备)内存:掉电易失性存储介质1.越靠近 CPU 速度越快,容量越小,价格越贵。2.每一种存储器设备只和它相邻的存储设备打交道在认识层面上,可以认为内存整体是外设和cpu的"缓存",程序运行时内存对数据进行了预加载,把程序缓存起来了。关于冯诺依曼,必须强调几点:1原创 2021-02-05 16:35:34 · 403 阅读 · 0 评论 -
YUM工作原理及使用
yum 运行原理yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具。下面分别介绍两部分工作原理。yum服务器所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者httpd的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供原创 2021-02-04 18:47:33 · 1600 阅读 · 0 评论 -
Linux——入门基本命令
Linux常用指令1.目录2.目录相关指令操作3.文件相关指令操作4.文件内容操作指令5.文件权限和用户属性6.用户管理1.目录根目录: /路径:1.绝对路径:从根目录"/"开始描述的路径 2.相对路径:从当前路径开始描述的路径tree:树状显示目录结构安装tree的命令:sudo apt-get install tree目录结构: /home 存放用户目录,/home/用户名 用户家目录/root 超级用户的主目录2.目录相关指令操作ls:对于目录,该命令列出该目录下原创 2021-01-24 13:55:27 · 2948 阅读 · 5 评论 -
Linux——gcc、gdb、make的使用
一、gcc/g++:编译器功能: 将C/C++高级语言代码翻译成机器可识别的代码1.1编译过程:预处理,编译,汇编,链接1.预处理(进行宏替换):宏定义展开,头文件展开、条件编译等,同时将代码中的注释删除==实例:gcc –E hello.c –o hello.i选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。2.编译(生成汇编):这个阶段,gcc会检查代码的规范性、是否有语法错误等,以确定代原创 2021-01-29 09:55:01 · 1149 阅读 · 2 评论