![](https://img-blog.csdnimg.cn/direct/6b06b396001b497286c81b4f754d6780.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux初窥门径
文章平均质量分 91
小白零基础从入门到精通。
麻辣韭菜
能克己方能成己
展开
-
网络编程 【Socket套接字、简易UDP、TCP网络程序】
在当今数字化时代,互联网已成为我们生活中不可或缺的一部分。从简单的网页浏览到复杂的云计算服务,网络技术支撑着现代社会的通信和数据交换。网络编程,作为这一基础设施的核心,不仅是一门科学,更是一门艺术,它要求开发者不仅要有深厚的技术功底,还要有创新和解决问题的能力。本篇我们将探索网络协议的原理,学习如何使用套接字(sockets)进行网络通信,了解网络安全的重要性,能够实现一个简单的udp客户端服务器;能够实现一个简单的tcp客户端服务器单连接版本多进程版本多线程版本理解tcp。原创 2024-08-11 12:17:40 · 356 阅读 · 2 评论 -
网络基础 【发展、协议、传输、地址】
了解网络发展背景对局域网广域网的概念有基本认识;了解网络协议的意义重点理解TCP/IP五层结构模型;学习网络传输的基本流程理解封装和分用;原创 2024-07-15 23:13:03 · 1019 阅读 · 6 评论 -
Linux 【线程池】【单例模式】【读者写者问题】
线程章节到此结束,从初始线程,如何控制线程,后面我们认识到了线程并发访问临界资源是有线程安全的问题,从而我们又学习了锁、条件变量、信号量。悲观锁:在每次取数据时,总是担心数据会被其他线程修改,所以会在取数据前先加锁(读锁,写锁,行锁等),当其他线程想要访问数据时,被阻塞挂起。线程池应用场景不止这些,线程池的应用场景非常广泛,关键在于根据具体需求合理配置线程池的大小和特性,以达到最佳的性能和资源利用率。:线程池通过预先创建一定数量的线程,避免了频繁创建和销毁线程的开销,从而提高了线程资源的利用率。原创 2024-07-02 23:51:29 · 1031 阅读 · 5 评论 -
Linux 生产消费者模型
生产者-消费者模型是一个经典的并发编程问题,它描述了两种角色:生产者和消费者。生产者负责生成数据,而消费者则负责消费这些数据。这个模型通常用于处理多线程或多进程环境中的资源分配问题。生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。原创 2024-06-29 19:45:59 · 1563 阅读 · 2 评论 -
Linux 线程的同步与互斥
由于线程之间存在竞争,就导致了多线程有的线程涝的涝死,饿的饿死,就需要让线程之间保持某种平衡,让它们被CPU雨露均沾。这就是所谓的同步。由于临界资源只有一份,线程之间同时共享临界资源。为了防止临界资源的安全,线程之间需要互斥。1.资源共享问题在Linux 线程控制文章我们知道了一个进程中的所有线程,在地址空间中的代码区、未初始化区、什么堆区也好、栈区也好,还是共享区也好都是共享的。就好比下面这个代码int n = 0;return 0;原创 2024-06-21 20:23:36 · 731 阅读 · 1 评论 -
Linux 线程控制
在Linux 线程概念 中 我们知道Linux中的线程是轻量级的,这就意味着Linux中是没有线程这种概念的。所以用户要想用线程,OS不会提供,Linux程序员在应用层给我们提供了第三方库pthread库在线程概念章节中,最后简单演示了创建线程的代码,这里就有个问题了?一个进程中什么是主线程,一个线程要被调度,cpu怎么知道该调度谁了?原创 2024-06-14 15:50:26 · 1059 阅读 · 1 评论 -
Linux 线程概念
什么叫线程?我们认为:线程操作系统调度的基本单位!内核观点:进程是承担分配系统资源的基本实体。所以可以得出一个结论:线程就是我进程内部执行流资源!进程:进程 = 内核数据结构 + 代码和数据 +执行流(线程)3.再谈地址空间既然进程是承担分配系统资源的基本实体,地址空间又是进程的资源窗口,那地址空间的资源又是如何分配给线程的?线程资源的分配本质是分配地址空间范围那如何分配地址空间的范围?地址空间是虚拟地址,那虚拟地址是如何转化成物理地址?下面我以32位虚拟地址为例所以即使是每个物理地址。原创 2024-05-18 22:07:05 · 1003 阅读 · 0 评论 -
Linux 信号捕捉与处理
信号产生到处理这是有一个过程的,从上篇信号保存我们知道了有一个handler表 里面存放的是对信号处理的方法。那什么时候调用这些方法?本篇就揭晓处理信号的时机。1. 信号的处理时机直接说结论:当我们用户从内核态返回到用户态时,进行信号的检测与处理。那什么是用户态?什么又是内核态?// 传统信号处理函数// SA_SIGINFO 标志设置时使用的信号处理函数// 信号掩码,定义了信号处理函数执行时哪些信号应当被屏蔽// 信号处理标志// 已废弃,不应使用。原创 2024-05-17 21:28:14 · 733 阅读 · 0 评论 -
Linux 信号保存
信号产生的篇章是帮助大家对信号的概念有一个了解,从上篇我们知道了产生信号4种方式,当今的社会中,每天都会有许多的信息产生,一些重要的信息都会被保存,那进程的产生的信号是如何被保存的?我们只需要用一个整型位图来表示就行了,一个整型32个比特位,从1号位开始一直到31,在比特位中1表示就是有信号,反之0就是没有。原创 2024-05-12 22:47:01 · 994 阅读 · 0 评论 -
Linux 进程信号【信号产生】
在前面的进程控制篇章里,父进程是怎么知道子进程退出了?并且回收子进程。以及我们之前写的代码报错之后,进程就终止了。这背后的一切都是基于信号,那进程中信号是什么?原创 2024-05-11 00:00:24 · 733 阅读 · 0 评论 -
Linux 进程间通信之共享内存
前面讲的匿名和命名都是基于文件看到同一份资源,那有没有不通过文件可以看到同一份资源?有的系统 V。原创 2024-05-07 22:58:18 · 751 阅读 · 0 评论 -
Linux 进程间通信之命名管道
书接上回,进程间通信我们利用管道可以通信,但是这些进程都是有血缘关系的进程,那有没有能让两个毫不相干的进程也能通信?有的,我们用命名管道,就能实现两个没有任何关系的进程进行通信。原创 2024-05-02 18:38:05 · 820 阅读 · 0 评论 -
Linux 进程间通信之匿名管道
从进程控制篇章,我们知道了进程是具有独立性,既然各进程具有独立性,它们之间是互不联系的,那它们是怎么通过一种方式取得联系?为什么要有进程间通信?进程间通信本质是什么?原创 2024-05-01 20:38:24 · 1134 阅读 · 1 评论 -
Linux 基础IO [缓冲区&&文件系统]
基础IO讲了什么是fd,以及fd的本质是什么,系统调用接口。本篇重点缓冲区,理解文件系统,全面认识Linux下一切皆文件。原创 2024-03-28 20:03:33 · 979 阅读 · 2 评论 -
Linux 基础IO
本篇非常重要,承上启下的作用,对linux一切皆文件和重定向从底层原理剖析,为什么要有缓冲区?以及什么是文件系统,为什么C语言有了文件操作的函数,操作系统还要有自己的一套操作文件的方式?原创 2024-03-24 19:34:37 · 936 阅读 · 0 评论 -
Linux 进程程序替换
上篇等待函数里面还有一个参数option参数没有讲,以前演示的fork创建子进程,子进程继承父进程的代码,执行一样的代码,那如果子进程要执行其他的代码怎么办?原创 2024-03-10 22:21:28 · 750 阅读 · 0 评论 -
Linux 进程控制
上篇重点讲了什么是地址空间,地址空间重要性,有了这个概念我们就可以把之前遗留的僵尸进程在这篇进程控制来解决,以及写实拷贝的概念。本篇重点进程控制和等待。写实拷贝:顾名思义 数据要写入时再拷贝。你要用的时候,OS才会给你分配内存。这样内存使用的效率的就大大的提高了。看下图总结:写实拷贝使父子进程得以彻底分离!完成了进程独立性的技术保证。写实拷贝是一种延时申请技术,可以提高整机内存使用率。原创 2024-02-23 00:15:30 · 652 阅读 · 1 评论 -
Linux进程概念 (下) 地址空间
首先我先讲一个故事在一家公司里有小明小美和小红三个员工,有一天老板对这个三个员工分别单独在没有其他人情况下许下了承诺(PUA)"你今年努力干工作年底给你调职加薪"许下承诺后三个员工就继续干工作了,但是他们都以为自己是唯一一个被老板叫去谈话的且认为自己独享这福利待遇。故事到这里先暂停一哈我们先引出几个相对应的概念这里的老板就是操作系统三个员工就是进程调职加薪就是虚拟地址 ->(物理内存)看到这里你就会明白了 所有的进程都会有一份自己的虚拟地址。原创 2024-02-18 20:26:55 · 787 阅读 · 0 评论 -
Linux 【进程概念】
六个字先描述再组织。原创 2024-02-07 22:17:43 · 603 阅读 · 1 评论 -
Linux项目自动化构建工具-make/Makefile
规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂。这样我们就不用再用g++ -o test.cpp mystest 这条指令了。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,,从一个侧面说明了一个人是否具备完成大型工程的能力。是一个文件,两个搭配使用,完成项目自动化构建。中指令的命令工具,一般来说,大多数的。译,极大的提高了软件开发的效率。命令,整个工程完全自动编。是一个命令工具,是一个解释。种在工程方面的编译方法。,一旦写好,只需要一个。原创 2024-02-06 20:45:27 · 280 阅读 · 1 评论 -
linux yum三板斧
如果你是普通用户需要添加信任列表先切换成root用户 执行下图命令用vim打开后找到下图内容在这内容下添加 用户名 我是李四 前面就是lisi 后面复制就行添加完后了 wq!退出就行了。原创 2024-01-23 20:15:29 · 367 阅读 · 1 评论 -
Linux编辑器-vim使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x windowmac os老式键盘是没有上下左右键的。vim是相当古老的文本编辑器,那时候的电脑还有没有鼠标,图形化界面。废话不多说直接开始实操打开你的云服务器 输入vim回车 如果是下面这个界面说明你的云服务器是安装了vim 没有这个界面你自己需要手动安装vim #原创 2024-01-23 12:07:48 · 896 阅读 · 1 评论 -
Linux 权限
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。我把umask值设置成0777看看重新创建一个新的文件他们的默认是什么?个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)虽然都不属于我 但是在我的目录下 我就可以删除。目录的可执行权限是表示你可否在目录下执行命令。向权限范围增加权限代号所表示的权限。向权限范围取消权限代号所表示的权限。向权限范围赋予权限代号所表示的权限。,则实际创建的出来的文件权限是。原创 2024-01-14 18:05:43 · 910 阅读 · 1 评论 -
Linux下的基本指令
命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。在Linux下如果文件是以·开头的就是隐藏文件。使用指定的日期时间,而非现在的时间。使用指定的日期时间,而非现在的时间。此参数将忽略不予处理,仅负责解决。:显示用户当前所在的目录。原创 2023-12-23 22:27:42 · 346 阅读 · 1 评论