
操作系统
文章平均质量分 79
。
谢永奇1
这个作者很懒,什么都没留下…
展开
-
读写锁rwlock详解(多线程协调资源)
读写锁:用于协调对同一共享资源进行操作时的数据完整性,即同一时间可以多线程对同一共享资源的访问,但是!不能同时对该资源数据进行修改(1)允许同一时间多个线程对同一共享资源进行读操作,但不能同一时间多个线程对同一共享资源进行写操作(2)读锁可以被多个线程上多次锁,写锁被上锁后其他线程只能挂起等待已上写锁线程解锁后再被唤醒去上锁(谁先抢到谁就可以上锁)(3)同一时间多线程可以把读锁和写锁可以同时解开(4)已经上了读锁,就不能再上写锁(5)上了写锁也不能再上读锁就如我们现在有一个图书馆原创 2020-09-06 22:44:39 · 1159 阅读 · 0 评论 -
多进程之进程资源回收wait,wiatpid函数
进程之资源回收:(1)在进程结束后只是把占用的内存释放掉而已,但是一些系统资源依旧被占用着(2)我们需要把系统所分配给进程的资源进行回收,否则进程在运行结束后会变成僵尸状态等待系统在一定的时候再去回收进程的资源;(3)我们可以为了避免死掉的进程一直占用着系统资源,我们可以在进程执行结束前把它所占有的系统资源给回收进程回收资源相关函数://头文件#include <sys/wait.h>#include <sys/types.h>//函数原型pid_t wait原创 2020-09-06 15:27:37 · 488 阅读 · 0 评论 -
多线程间协调资源之互斥锁
互斥锁:用于协调访问共享资源的完整性;保证了同一时刻不存在多个线程同时访问一块共享资源的数据;(1)当一个线程给这个资源上锁且还没有解锁前,其他线程是无法对该资源进行访问的(2)当一个线程对一块共享资源进行访问时上了锁,但是其他资源此时也想进行访问,则会挂起直到当前访问资源的线程解锁后,才会被唤醒再去访问(3)每次线程进行访问时上锁后,访问结束后一定记得解锁,否则会导致形成死锁,其他线程无法上锁,也无法访问就如:现在有一个资源,但是呢这个资源是很多线程都可以去访问的,我们假设这块内存的资源是一原创 2020-09-06 11:15:56 · 1085 阅读 · 0 评论 -
多线程之线程普通操作函数详解
线程:系统调度的最小单位(1)每个进程都最少含有一个线程,这个唯一的线程称为主线程(2)进程实际上是不进行任何操作的,进程只是作为系统分配资源的最小单位,拿到资源后线程再共享进程的所有资源再去干自己的活(3)当主线程(main函数)执行结束或者使用了return或者exit等进程退出进程时,其他线程也将被迫退出了(4)只有进程中还有一个线程在运行中,整个进程就不会退出(前提主线程不能使用return与exit;其他线程不能使用exit进程退出的函数),进程执行完可以使用线程退出函数,下面会讲到(原创 2020-08-30 23:38:59 · 551 阅读 · 0 评论 -
多进程ipc之共享内存
进程间通讯(ipc)之共享内存:(1)进程间通讯比较快速的一种,常与信号量一起操作(2)本质是进程间使用同一块内存(3)因为进程间使用的是同一块内存,因此在一个进程间改变了共享内存里的数据,其他进程中的同一块共享内存的数据也会随之被改变这是关于ipc的一些操作,点击跳转 我们换个通俗点的说法:现在有小红和小绿,他们是合租室友;但是呢,他们租的房子里面只有一间浴室,然后约定浴室里面地洗发水一起买来用,为了防止别人来他们房子用他们的浴室(就当为了省买洗发水的钱和水费),然后他们就给浴室上了锁,原创 2020-08-30 20:17:05 · 469 阅读 · 2 评论 -
关于多进程之ipc数量的查看以及删除ipc对象(命令)
关于ipc对象的查看ipcs -a -->查看系统的ipc对象资源,查看其中某一种资源ipcs -s 查看信号量ipcs -m 查看共享内存ipcs -q 查看消息队列关于ipc对象使用id号删除通过他的ID号删除IPC对象:ipcrm -s 信号量的ID号ipcrm -m 共享内存的ID号ipcrm -q 消息队列的ID号关于使用ipc对象的键值删除ipc对象通过他的键值删除IPC对象:ipcrm -S 信号量的键值ipcrm -M 共享内存的键值ip原创 2020-08-30 12:21:11 · 842 阅读 · 0 评论 -
消息队列MSG(多进程ipc)
消息队列:1.在任意进程间有选择性地进行通讯的方式2.发送数据时需要携带一定的消息标志3.消息队列创建后由于是存在于内核中由内核管理,使用过后需要人工删除以释放资源##### 4.消息队列发送和接收时可以选择性地发送和接收相关函数原型:...原创 2020-08-30 12:10:12 · 547 阅读 · 0 评论 -
多进程之有名管道、无名管道
管道:一种进程间通讯且是一种半双工的通讯方式,即在同一时间内只能由一方往管道发送或者接收数据小绿和小红是一对让人羡慕的情侣,他们都住在河两边(别问为什么他们在河两边,因为我不想让他们在一起),然后小绿就想和小红聊天,但是他们之间有一条河,然后小红过不去,小绿又想和小红聊天,这个时候就需要一个中间介质(管道),有了管道之后呢,小红和小绿就可以两个人一起聊天了,但是呢,聊天嘛就只能一个说,一个听,不然大家一起说时就会什么都听不见,这就是管道管道分类: (1)、有名管道pipe : 只能在由亲缘关系原创 2020-08-26 17:58:12 · 1146 阅读 · 2 评论 -
多进程使用消息队列提示:Argument list too long
今天使用使用消息队列时,出现了这个错误,一直无法读取数据里面的数据,然后找了很久,,代码明明没错,后面才发现问题所在当时的代码:/* 消息队列接收 */#include <stdio.h>#include <string.h>#include <sys/ipc.h>#include <sys/msg.h>#include <sys/types.h>#include <unistd.h>//设计消息队列结构体原创 2020-08-20 20:52:55 · 791 阅读 · 0 评论 -
c语言多进程之进程间通信IPC:信号操作函数之signal,kill
信号:是一种特殊的IPC(进程间通讯),它是系统里面已经设计好了的,我们只能去使用它,且是一种异步通信方式关于linux下的信号:1.一共有64个信号值;可以用:kill -l 命令查询所有的信号值2.前面1-31种信号值是不可靠信号值(非实时信号),同时发送多个一样的信号只会响应第一个信号,后面的会忽略掉;3.后面32-64是后来添加的是可靠的信号值(实时信号值) ,无论发送多少个一样的信号都会一一响应4.比较常用的信号有2号SIGINT:终止一个进程(ctrl + c);9号原创 2020-08-19 22:34:30 · 2257 阅读 · 0 评论 -
多进程之进程退出函数:exit,_exit,atexit详解
关于进程推出的三个函数:exit,_exit,atexit,下面是关于这三个函数的作用与详解exit函数:函数原型: #include <stdlib.h> void exit(int status);1.函数作用:用于进程退出使用,并可以给它一个无符号整型退出状态值,第八位有效(0-255),超出255将表示未定义退出状态值2.函数形参:使用时给它一个无符号的整型数,并且要小于255验证代码:...原创 2020-08-19 16:50:21 · 6620 阅读 · 0 评论 -
多进程之创建子进程fork,vfork函数
本博文讲解的是关于进程的创建;首先我们要先知道什么是进程和进程的一些知识1.进程:是一个正在运行时的程序,系统会给这个程序分配一些系统资源,例如:内存,管理文件的结构体等。。。2.程序:是由编译器编译后生成的可执行文件3.所有进程都是由一个进程ID号为 0 的祖宗进程创建出来的4.一个进程里面可以包含多个线程5.进程是系统管理分配资源的最小单位6.线程是系统调度的最小单位,7.如果父进程在创建子进程出来后就先运行结束了,子进程就会失去它原来的父进程,系统就会找一个进程来给这个子进原创 2020-08-17 13:50:15 · 1632 阅读 · 0 评论