![](https://img-blog.csdnimg.cn/582d7a10128e4f1ca8e2126be939e02e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统
文章平均质量分 55
Linux系统编程
英雄哪里出来_
这里是一个技术博客。 C/C++,数据结构,计算机网络,操作系统,数据库,C++造轮子系列,Leedcode算法题的知识总结可以到主页左侧的“分类专栏”查阅。
感谢你的关注。
展开
-
基于环形队列的生产消费模型
【代码】基于环形队列的生产消费模型。原创 2024-02-07 06:00:33 · 346 阅读 · 0 评论 -
【Linux】生产者 消费者模型
【代码】【Linux】生产者 消费者模型。原创 2024-02-07 05:58:32 · 394 阅读 · 0 评论 -
【Linux】线程互斥
第二种,若锁为局部变量,就必须调用pthread_init 进行初始化,用完后也必须调用 pthread_destroy 进行销毁。此时的tickets的值为0,CPU就会再次执行还未执行完的线程a 的剩余步骤,tickets-- 即 0-1 =-1。第一种,锁为全局变量 ,直接用PTHREAD_MUTEX_INITIALIZER,对锁进行初始化。不会,我不在期间,其他人没有办法进入临界区,因为无法成功申请到锁,锁被我拿走了。为了保证访问时不能被别人去抢走,所以就把门窗都关上,直到访问完,才让别人进来。原创 2024-02-07 05:55:52 · 825 阅读 · 0 评论 -
【Linux】线程分离
即 线程默认被创建出来时,必须被join的, 若不能被join,线程对应的资源就无法释放,进而造成内存泄漏问题。若不关心线程的返回值,join是一种负担,创建一个线程时,提前告诉它,要分离这个线程。整体红色的框 作为一个结构体 等同于 线程的TCB 结构 进行描述。struct pthread 描述的是线程的其他的一些属性。找线程,找红色框的起始地址即可 称为 线程ID。默认情况下,新创建的线程是joinable的。线程库也需要管理线程,先描述再组织。线程库创建类似的管理线程的TCB。原创 2024-02-07 05:45:01 · 386 阅读 · 0 评论 -
【Linux】线程控制
1.进程是资源分配的基本单位2.线程是调度的基本单位3.线程共享进程数据,但也拥有自己的一部分数据。原创 2024-02-07 05:40:47 · 342 阅读 · 0 评论 -
多线程概念
创建子进程时,只创建PCB,创建出来的PCB继续指向父进程的地址空间代码区假设有很多函数存在,让不同的PCB执行不同的函数相当于在一个进程内部包含多个执行流,指向同一个进程内的不同代码区域每个PCB都是单独的线程线程在地址空间内运行,所以该线程属于进程。原创 2024-02-07 05:33:37 · 361 阅读 · 0 评论 -
【Linux】进程信号(下)
若为用户态,想要去访问操作系统里面的代码和数据时,CPU就会拒绝执行代码,操作系统就可以识别非法访问,即硬件异常,向目标进程发送信号终止进程。当进程从内核态切换回用户态的时候,进程会在操作系统的指导下,进行信号的检测与处理。操作系统提供的所有的系统调用,内部在正式执行调用逻辑的时候,会去修改执行级别。当执行完某种任务时,先找到对应的进程,检测对应的信号。内核态:执行操作系统的代码的时候,进程所处的状态。若为3,则表征正在运行的进程,执行级别为用户态。用户态:执行你写的代码的时候,用户所处的状态。原创 2024-02-07 05:28:45 · 293 阅读 · 0 评论 -
【Linux】进程信号(上)
信号产生什么叫做信号呢?生活当中认为是信号的是:红绿灯 闹钟 下课铃 鸡叫 手势1.当红灯亮的时候, 你会停下来 即匹配的动作那为什么会有这个匹配动作呢?因为曾经有人培养过你所以信号没有被产生,也知道怎么该处理它。原创 2024-02-07 05:20:49 · 333 阅读 · 0 评论 -
【Linux】system V 共享内存
进程A和进程B都通过自己的页表映射到物理内存中的特定区域,进而找到该进程匹配的代码和数据。并不是在内存中开辟空间即可,系统为了管理共享内存,构建对应的描述共享内存的结构体对象。想办法把物理内存中新开辟空间 通过页表 映射到 进程A和进程B的共享区中。就完成了让进程A和进程B看到同一份资源,这份资源就被称为共享内存。进程A和进程B就可以通过起始的虚拟地址,对应页表访问到内存。为了让进程A和进程B通信,前提是两者要看到同一份资源。进程A和进程B在自己的地址空间中都有自己的共享区。可以,其他进程也可以通信。原创 2024-02-07 05:17:46 · 329 阅读 · 0 评论 -
【Linux】 基础IO(下)——自己实现文件接口FILE
【代码】【Linux】 基础IO(下)——自己实现文件接口FILE。原创 2024-02-07 05:11:51 · 388 阅读 · 0 评论 -
【Linux】基础IO ——文件(上)
文件= 内容+属性对应文件的操作,对内容的操作,对属性的操作当文件没有被操作的时候,一般在磁盘中当对文件进行操作的时候,一般在内存中,因为冯诺依曼体系规定当我们对文件进行操作的时候,文件需要提前加载到内存中,提前加载的是属性当我们对文件进行操作的时候,文件需要提前加载到内存中,不只有你在load,内存中一定存在大量的不同文件属性打开文件本质就是将需要的属性加载到内存中,OS内部一定会同时存在大量的被打开的文件,操作系统就会通过先描述,在组织的方式管理这些被打开的文件。原创 2024-02-07 05:07:25 · 319 阅读 · 0 评论 -
【Linux】进程的程序替换
编写极简版本的shell(bash)目标:为了深刻的理解shell的运行原理: mybash.c????buffers102464//在commandstr以空格作为分割符if(argv[0]==NULL)//切割失败return -1;int i=1;while(1)//继续切割空格break;i++;W>}int i=0;for(i=0;argv[i];(void)s;原创 2024-02-07 05:05:02 · 838 阅读 · 0 评论 -
【Linux】进程控制
写时拷贝本质是一种资源筛选,当子进程尝试去修改子进程要用的空间,才进行分配.是一种按需所取资源的策略。崩溃的本质:进程因为某些原因,导致进程收到来自操作系统的信号。操作系统不允许浪费或者不高效的行为出现的。正常执行分为 结果正确, 结果不正确。供用户进行进程退出健康状态的判定。正确就返回0,不正确就返回非0。原创 2024-02-07 04:56:56 · 338 阅读 · 0 评论 -
【Linux】孤儿进程 | 环境变量 | 命令行参数 | 进程优先级
目录1. 孤儿进程2. 环境变量3 . 命令行参数4. 进程优先级1. 孤儿进程正常来说,若父子进程中子进程结束,父进程要接收子进程的退出码结果,所以子进程处于僵尸状态但是 父子进程中父进程结束,为什么父进程没有进入僵尸状态呢?如果父子进程中父进程先退出,而子进程没退出,子进程在父进程退出后,要被1号进程领养,1号进程称为操作系统,而被领养的进程称为孤儿进程如果不领养,子进程后续退出,就无人回收了2. 环境变量在操作系统当中由系统在开机之后帮我们维护的一些系统运行时的动态参数我们自己写的代码原创 2024-02-03 23:15:19 · 293 阅读 · 0 评论 -
【Linux】进程状态
阻塞:阻塞就是不被调度一定是因为当前进程等待某种资源就绪一定是进程task_struct结构体需要在某种操作系统管理的资源下进行排队。原创 2024-02-03 22:20:16 · 935 阅读 · 0 评论 -
【linux】进程|查看进程|PID值|fork原理
进程是内核关于进程的相关数据结构+当前进程的代码和数据。原创 2024-02-03 18:59:32 · 988 阅读 · 0 评论 -
静态库和动态库
链接的时候,如果是动态链接,找到动态库,拷贝动态库中的我所需要的代码地址到自己的可执行程序中。链接的时候,如果是静态链接,找到静态库,拷贝静态库中的我所需要的代码到自己的可执行程序中。动态库:因为可以被共享,所以真正的实现永远都是在库中,程序内部只有地址,比较节省空间。静态链接成功:我们的程序,还是依赖动态库,一旦动态库缺失,我们的程序就无法运行。静态链接成功:我们的程序,不依赖任何库,自己就可以独立运行。动态库为专门让编译器,对用户的程序进行动态链接。静态库为专门让编译器,对用户的程序进行静态链接。原创 2024-02-03 18:37:30 · 331 阅读 · 0 评论 -
linux小程序—进度条
2 #include<unistd.h>//usleep函数。原创 2024-02-03 18:32:55 · 341 阅读 · 0 评论 -
Linux项目自动化构建工具-make/makefile
退出vim,使用make后,会自动在当前目录下查找对应的makefile文件,再去执行内置好的gcc命令。clean目标文件中含有.PHONY,clean即可称为伪目标 而mytest目标文件中不含有。说明makefile是一个围绕依赖关系和依赖方法构建的一个自动化编译工具。使用 touch makefile 创建一个makefile文件。.PHONY : 代表总是被执行的,被修饰的称之为伪目标。mytest作为目标文件,test.c作为依赖文件列表。使用test.c形成mytest,两者称之为依赖关系。原创 2024-02-03 10:25:52 · 376 阅读 · 0 评论 -
linux权限
第三个6对应other, 以二进制表示为: 110 读为真,写为真,执行为假。第三个7对应other, 以二进制表示为: 111 读为真,写为真,执行为真。第二个6对应所属组,以二进制表示为: 110 读为真,写为真,执行为假。第二个0对应所属组,以二进制表示为: 000 读为假,写为假,执行为假。第一个7对应拥有者,以二进制表示为: 111 读为真,写为真,执行为真。第二个7对应所属组,以二进制表示为: 111 读为真,写为真,执行为真。输入 su +普通用户名。输入root用户密码。原创 2024-02-03 10:19:55 · 296 阅读 · 0 评论 -
linux的重定向与xshell原理
外壳程序通过指令的方式收到,外壳程序把收到的指令传递给操作系统 操作系统进行处理,执行完后 再通过shell 返回给用户。把file.txt文件的内容 you can see me 打印后,cat < file.txt :从fille.txt文件中读取数据。cat < file.txt 与 cat file.txt等价。用户并不是直接访问操作系统,而是通过外壳程序。使用 >> 发现会在文件结尾 追加内容。原创 2024-02-03 10:01:04 · 332 阅读 · 0 评论 -
linux基本指令(下)
1.拷贝到当前目录。原创 2024-02-03 09:53:21 · 349 阅读 · 0 评论 -
linux基本指令(上)
用来显示当前命令下的所有文件(只会显示一般文件的文件名/目录)若此时只有root现,说明当前只有一个超级权限用户root。touch +文件名 即可创建一个文件。一般的cd指令+想要进入的目录内容。原创 2024-02-03 09:38:41 · 352 阅读 · 0 评论