![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 95
Linux从浅入深
不是我衰
这个作者很懒,什么都没留下…
展开
-
Linux之线程互斥
试着用线程控制力介绍的一些系统调用, 将线程的创建、执行和等待等都封装起来. 我们在程序中指定一个函数Print, 让多个线程不断地执行该函数. myThread.hpptest.cc 创建一个线程: 创建多个线程: 首先模拟一段多线程抢票的例子观察现象: 运行之后会发现不合理的现象, 票出现了非正值初步解释原子性: 比如--操作就不是原子操作, 这条语句其实对应三条汇编指令: 在这三条汇编语句的执行过程中, 都有可能会因为线程切换而中断, 假如线程A对a要执行++操作, 刚执行完inc指原创 2024-06-04 10:02:03 · 946 阅读 · 0 评论 -
Linux之线程控制
库为了能够快速的找到每一个线程, 所以提供了一个。原创 2024-05-30 20:39:11 · 1039 阅读 · 0 评论 -
Linux之线程概念
线程是的一种执行流/线程是在的一种执行流.是CPU调度的是承担系统资源的基本实体.首先我们需要明确:除了文件、通信等操作, 一个进程它要访问的大部分的代码和资源都是要通过进程地址空间+页表的方式去找到资源, 所以解释概念:1. 线程是的一种执行流线程是的一种执行流 ,呢?从资源占用的角度分析, 一个进程要被创建, 要完成一系列的初始化工作,, 分配和初始化内存地址空间, 把程序代码和相关数据从磁盘加载到物理内存中, 初始化文件描述符表, 设置进程调度信息插入调度队列等等一系列工作, 这样看来。原创 2024-05-30 11:21:09 · 1121 阅读 · 0 评论 -
Linux之信号
sigaction头文件: signal.h功能:注册更改信号自定义处理方式。signum 表示信号的编号,act 是输入型参数, 用来保存属性的结构体,其中sa_handler是保存自定义处理函数的函数指针(和signal函数的handler一样),sa_mask 是需要额外屏蔽的信号, 下面主要讨论这个参数sa_sigaction是处理实时信号的, 不考虑sa_flags字段包含一些选项,本章的代码都把sa_flags设为0sa_restorer也不考虑。原创 2024-05-14 19:56:59 · 1076 阅读 · 0 评论 -
Linux之进程间通信(二)
共享内存的同步方式,原创 2024-04-28 19:09:36 · 657 阅读 · 0 评论 -
Linux之进程间通信(一)
操作系统的特点之一以实现多任务并发处理.既然进程具有独立性, 那一定会让二者产生联系, 那又何谈独立性呢?进程的独立性是指的, 但. 进程与进程间是需要信息交互与状态传递等的通信. 比如说, 父进程等待子进程查看子进程状态, 在子进程完成任务时回收子进程信息, 而且有些程序的运行也需要才能完成。比如说这个指令:cat file | grep 'hello'原创 2024-04-14 16:15:57 · 785 阅读 · 2 评论 -
Linux之动静态库
静态库是指程序在编译链接的时候把库的代码链接到可执行文件中, 程序运行的时候将不再需要静态库, 这个被链接的库就是静态库, 在Linux下静态库的后缀名一般为.a, Windows下为.lib动态库与之相反, 程序在运行的时候才去链接动态库的代码, 多个程序共享使用库的代码.一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表, 而不是外部函数所在目标文件的整个机器码, 在Linux下动态库一般后缀名为“.so”,Windows下为.dll。原创 2024-03-27 18:11:12 · 1108 阅读 · 0 评论 -
Linux之文件系统与软硬链接
操作系统需要通过软件的方式对底层的硬件差异化进行屏蔽, 这种动作就叫做逻辑抽象.原创 2024-03-23 20:52:00 · 1089 阅读 · 0 评论 -
Linux之缓冲区与C库IO函数简单模拟
不管是什么语言Java, python, C, C++等, 它们的IO函数。原创 2024-03-20 16:42:42 · 889 阅读 · 0 评论 -
Linux之文件管理与重定向
最开始说到过, 一个进程是可以打开的并且可以对这些文件做出不同的操作, 也就是说加载到内存中的文件可能存在多个.当我们在程序里面打开多个文件时, 操作系统肯定是得对这些文件进行管理的, 而管理的本质就是, 管理的方法就是, 所以操作系统为了管理被打开的文件就会创建内核数据结构来描述这些文件, 在操作系统中这个结构体就叫做。原创 2024-03-20 15:49:47 · 883 阅读 · 0 评论 -
Linux之重谈文件和c语言文件接口
所有对文件的操作都是: a.对内容操作 b.对属性操作。原创 2023-12-05 17:01:45 · 265 阅读 · 0 评论 -
Linux之进程替换
创建子进程的是让子进程执行中的一部分,是让子进程想办法加载磁盘上让子进程执行另外一个就是让比如说我们在其他路径下写的一些可执行程序.第二种方法可称之为, 进程替换是父进程创建子进程之后让子进程执行其他程序的代码而不是执行父进程代码的一部分.注意和。原创 2023-11-22 16:53:31 · 192 阅读 · 1 评论 -
linux基础工具之make/makefile
makefile 的语法commandtarget是目标文件名,dependencies是目标文件依赖的文件列表(如果有多个用空格隔开),command是构建目标文件的命令(记得前面加Tab)。mycode是由code.c得到的;mycode是目标文件,code.c是目标文件形成需要依赖的文件,第二行gcc code.c -o mycode就是构建目标文件的命令。我们把目标文件和他所依赖的文件列表之间的关系称为依赖关系,对应的命令称为依赖方法所以,原创 2023-10-05 18:09:34 · 61 阅读 · 0 评论 -
Linux之命令行参数与环境变量
此时PATH设置为了空,上面说过可以重新登陆新建一个bash进程重新读取PATH变量, 这个时候, 我们再来。原创 2024-05-02 19:34:07 · 901 阅读 · 1 评论 -
Linux之进程切换与命令行参数
此时PATH设置为了空,上面说过可以重新登陆新建一个bash进程重新读取PATH变量, 这个时候, 我们再来。原创 2023-10-27 21:34:17 · 93 阅读 · 0 评论 -
Linux进程之进程地址空间
所谓进程地址空间(process address space),就是从。原创 2023-11-02 16:30:40 · 50 阅读 · 0 评论 -
linux之进程控制
如果子进程结束父进程没有对子进程进行处理的话, 子进程就会变成一个僵尸进程处于这个状态的进程无法被kill指令杀死因为你无法杀死一个已经死去的进程,虽然这个进程的数据和代码已经被操作系统删除, 但是该进程的PCB中还存储着各种退出信息所以它还一直存储在内存中等待着被父进程处理。原创 2023-11-08 16:43:34 · 166 阅读 · 0 评论 -
Linux之进程状态和进程优先级
前言在前面的学习中,我们已经学习了进程的概念和基本创建,以及如何通过相关的系统调用创建进程和获取进程标识符。那为了弄明白正在运行的进程是什么意思,我们需要了解进程的不同状态。原创 2023-10-25 21:11:01 · 84 阅读 · 0 评论 -
Linux之进程
我们当前是在proc里面这个进程PID对应的这个目录里面的,上面说了PID对应的目录是进程创建的时候才会在proc目录下新增的。那如果我们把对应的进程终止(CTRL+c):再想查看这个目录的内容就不行了:上一级目录也回不去了:因为进程终止,操作系统就会在proc目录下把这个进程PID对应的目录及其里面的内容删除掉。所以proc目录里面的内容是动态变化的。当前我再创建一个进程,查看/proc/5194进程目录下的 内容,没什么问题:原创 2023-10-18 22:20:47 · 123 阅读 · 0 评论 -
linux之冯诺依曼体系和操作系统的概念与定位
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。截至目前,我们所认识的计算机,都是有一个个的组成包括键盘,鼠标,扫描仪,写板,话筒,摄像头,网卡,磁盘/ssd等含有运算器和控制器等显示器,打印机等存储器其实就是内存!输入设备的是什么呢?计算机本质其实就是来计算和处理数据的,那既然是计算和处理数据的,那我们首先要把数据给计算机, 输入设备就是用来给计算机输入数据的。那计算机拿到数据,进行处理和计算之后,要把结果反馈给用户啊。所以除了输入设备,还需要有。原创 2023-10-09 15:21:02 · 88 阅读 · 0 评论 -
Linux基础工具之git
我们说git是一个版本控制系统,那么该自己理解版本控制这个概念呢?版本控制(Version Control)是一种记录和管理文件或项目的不同版本的系统。它可以追踪文件的变化,并允许开发者在不同的时间点回溯、比较和恢复文件的特定版本。理解版本控制的重要性和好处有以下几个方面:历史记录:版本控制系统可以记录每个文件的修改历史,包括谁做了什么修改、何时进行的修改等。这样开发者可以轻松地查看项目的演变历程,了解每个版本的变化和改进。原创 2023-10-07 16:57:03 · 112 阅读 · 0 评论 -
Linux之gcc/g++与动静态库初步认识
gcc (Compiler Collection) 和 g++ 是 Linux 系统上最常用的编译器。它们是 GNU 组织开发的一套开源编译器工具集。gcc:gcc 是 GNU 编译器集合中的 C 语言编译器。它支持多种 C 语言标准(如 ANSI C、ISO C89、ISO C99)以及一些扩展特性。gcc 可以将 C 语言源代码编译成可执行文件,或者生成汇编代码和目标文件。g++:g++ 是 GNU 编译器集合中的 C++ 语言编译器。原创 2023-10-04 11:43:50 · 463 阅读 · 0 评论 -
Linux基础工具之vim
从命令模式切换到插入模式的方法不止一种,现在我们先记住一种:按键盘上的。原创 2023-10-03 12:20:46 · 149 阅读 · 1 评论 -
linux之权限
可执行权限。原创 2023-09-30 17:32:59 · 194 阅读 · 0 评论 -
linux基础工具之yum
我们在手机或者电脑的应用商店里面去下载一些软件的时候,这些软件是从本地直接下载的呢还是从远端的服务器下载的?手机应用商店下载的软件是通过互联网从下载到用户设备的。远端服务器存储着应用程序的安装包,当用户发起下载请求时,服务器会将安装包传输给用户的设备。所以我们手机上的应用商店只是帮我们下载软件的,而软件本身并不在手机上,而是在远端的服务器上。应用商店会去帮我们找我们要下载的软件。在Linux下安装软件,一个通常的办法是但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成。原创 2023-10-01 15:53:09 · 35 阅读 · 0 评论 -
linux基本指令
nano它是一个文本编辑器,前期如果我们想打开一个文件并编辑它,就可以使用nano(后面我们会学vim)。如果第一次也需要我们安装一下:先新建一个test.c文件,然后nano test.c:打开后就可以直接写入了,那写完怎么保存退出呢?原创 2023-09-27 18:38:03 · 1947 阅读 · 1 评论 -
Linux介绍
关于Linux,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的发展史。要说Linux,还得从UNIX说起。原创 2023-09-25 15:10:40 · 60 阅读 · 1 评论