
系统编程
文章平均质量分 92
系统编程相关blog
长安1108
这个作者很懒,什么都没留下…
展开
-
系统编程--线程同步
使用两个线程,同时向“公共输出”(共享区)写数据,没有加锁机制打印完全随机,各个线程的一帧数据写入都会被其他线程打断、插入其他数据。原创 2024-09-13 12:39:07 · 1017 阅读 · 0 评论 -
系统编程--线程
对于一个进程来说,他有独立的进程地址空间,如上图左侧0~4G的进程地址空间,且他有一个PCB进程控制块而当该进程调用pthread_create()创建线程时,这个线程不会再有新的0~4G的进程地址空间,而是使用当前进程的地址空间,但是该线程会创建出一个自己的PCB控制块而一旦一个进程创建出一个线程,该进程也叫做线程了,就相当于从一开始的整租->合租,虽然你是第一个租的,但由于有别人一起来租,你们俩就都叫合租。原创 2024-09-08 17:28:26 · 1196 阅读 · 0 评论 -
系统编程--信号
注意:所有信号的产生及其处理都是内核完成,所以,后续我们做的任何有关信号的代码操作,都不是我们直接去创建一个信号,或者操作一个信号,而是驱使内核去创建、操作信号。原创 2024-09-04 23:01:27 · 300 阅读 · 0 评论 -
系统编程--进程间通信
父子进程,对于0到3G的区域,是用户段,映射到内存中是各自独立的而3G到4G的区域,是内核段,映射到内存中是同一块内存地址空间,而既然是在同一块内存地址空间下,就说明二者可以进行通信,进行数据交流、共享而进程间通信,简称IPC管道只能作用于有血缘关系的进程之间,我们可以使用pipe这个函数来创建一个管道,或者在命令行使用命令:mkfifo f1但是其本质上是一个伪文件,不是真正存在磁盘空间中的文件,他实际上是一个内核缓冲区。原创 2024-09-01 18:20:51 · 529 阅读 · 0 评论 -
系统编程--进程
但是对于早先的单核CPU处理器,虽然在我们人类的感官上,CPU确实是在并发,但是实际上CPU是在轮流的执行他们,也就是说,在任何一个时刻,只有一个进程在运行,之所以感觉不到,是因为CPU的处理速度远在人类的感知范围之上。多道程序设计,是基于单核CPU的前提下解释的,也就是在CPU穿插运行多个进程,其中,时钟中断,是指CPU强制执行的,满足时钟中断则进行进程的切换。给到CPU,CPU一顿计算之后,将结果返回到存储介质的寄存器,之后返回到缓冲区,又给到内存的进程,此时屏幕可以获取到结果,进行展示。原创 2024-07-23 23:56:04 · 491 阅读 · 0 评论 -
系统编程--目录操作与重定向
首先明确:目录也是一个文件其文件内容就是所有子文件的目录项(dentry),使用vim打开一个目录,也是显示其子文件的目录项而其三个权限与文件的区别见上图实现一个ls -R,也就是显示当前子文件的同时,如果子文件是一个目录,那么将其目录内的子文件也显示出来,依次类推,有目录就向内显示。原创 2024-07-21 23:34:16 · 1117 阅读 · 0 评论 -
系统编程--Linux下文件的“其他操作”函数
因为lstat与stat没有其他区别,而且lstat不会进行穿透,所以,以后我们直接使用lstat就可以了建立硬链接,也就是新建dentry项,而使用mv命令修改文件名时,也是修改了dentry,并不对真正的文件做操作。原创 2024-07-20 18:52:11 · 884 阅读 · 0 评论 -
TCL编程
set 变量名 值其中,值可以是常量,如上图的12,也可以是从变量中拿到的值,如上图中的$a注意,如果变量名不是由字母数字和下划线组成的,那么在$时,要将变量名加上花括号[]是计算表达式的值,语法:[expr 1+2]在中括号里进行表达式运算,且表达式之前要加expr补充:如果使用[glob *v]本意是想拿到所有以v结尾的文件,但是虽然他确实返回结果是a.v b.v c.v,但是他将这三个.v合并成了一个变量进行返回,当前目录并没有名为“a.v b.v c.v”的单个文件,所以,这里想要返回三个原创 2024-06-05 11:15:31 · 722 阅读 · 0 评论 -
shell编程
shell是我们的linux所使用的命令行解释器,他负责程序员与Linux内核的沟通,所以可以认为shell是一个程序员与linux内核沟通的编程语言我们将命令交给shell,shell将我们的命令翻译为机器语言,交给内核,去调动内核我们还可以将多个shell命令写成在一起,存入一个文件,该文件就叫做脚本从2)可以看到,sh是当前系统的默认解释器,他默认链接到了bash上,说明centos默认的shell解析器是bash需要注意的:1、=前后不可有空格。原创 2024-05-26 18:14:06 · 781 阅读 · 0 评论 -
系统编程--“文件IO”函数
系统调用,就是一些操作系统所提供的函数API,通过键入man man,可以查看man手册的简介,可以看到,man手册的第二卷,都是系统调用的函数原型,即内核提供的函数。原创 2024-05-18 11:17:13 · 727 阅读 · 0 评论 -
系统编程--makefile项目管理
makefile就是一个命令脚本文件,接下来我们介绍如何使用他一个规则:目标:依赖(tab缩进)命令如下图所示,是一个最简单的Makefile脚本文件目标:就是最后要生成的文件的文件名依赖:就是生成可执行文件的源文件下一行先起一个tab,之后输入正常情况下我们要在终端输入的命令假如我们按照如上所示命令,进行多个源文件的联合编译,从而生成可执行文件a.out。原创 2024-03-10 11:03:29 · 948 阅读 · 0 评论 -
静态库与动态库
静态库:(如上图左),他的库跟随源文件一起编译到了可执行程序中,所以连接静态库的源文件编译出来的的可执行文件的大小是程序本身的大小+静态库的大小动态库:(如上图右),他的库不跟随源文件一起编译,而是放在内存中,程序调用时直接从内存调用,其他程序都调用同一个动态库,所以连接动态库的源文件编译出来的可执行文件大小是程序本身的大小(不用加“所调用的函数的那一点点大小”,因为调用函数语句就包含在程序中)原创 2024-01-03 12:12:54 · 764 阅读 · 0 评论 -
系统编程--gcc编译与gdb调试工具
以上是gcc编译的四步骤,每个步骤生成对应的文件。原创 2024-01-02 17:06:21 · 1545 阅读 · 0 评论 -
系统编程--VIM特辑
注意:许多操作都是在命令模式下完成·,且操作完成之后,不会改变模式。需要注意的是,在末行模式下执行完一次命令,就可以直接回到命令模式。或者不想执行任何末行命令,直接两次ESC也可以回到命令模式。修正:gg 和 G 分别是跳转到整个文件的开头和末尾。具体可见第二章对vim的详细介绍。原创 2024-01-02 11:40:35 · 587 阅读 · 0 评论 -
系统编程--常用命令
cd … 是指到上一级目录~代表家目录,每个用户都有自己的家目录。原创 2023-12-31 11:28:28 · 417 阅读 · 0 评论