自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Code_ZX的博客

还没入门

  • 博客(13)
  • 收藏
  • 关注

原创 线程的同步与互斥

同步与互斥同步概念程序按一定顺序访问临界资源,如:生产者消费者模型…(先生产再消费)互斥概念任何时刻,都只能有一个执行流访问临界资源,如:消费者与消费者…(不能同时消费同一个物品)引入:在进程中,多个线程之间共享进程资源,线程与线程之间便都具有操作该进程资源(临界资源)的能力和权限,为了保护该进程资源(临界资源),便引入了线程的同步与互斥。互斥量(mutex)在...

2018-12-27 23:20:21 403

原创 线程控制

线程基本概念程序中的一个执行路线CPU调度的基本单元,程序执行的最小单位具有线程控制块(TCB),Linux下,有进程模拟实现,即TCB也就是task_struct结构体所有的线程都共享其进程的地址空间,但是有其独立的上下文资源和栈空间线程控制所用库:POSIX线程库,使用编译器命令时需要加“-pthread”选项1.头文件:<pthread.h>注:库都是对系...

2018-12-23 23:24:42 815

原创 线程基本概念

线程概念a.程序当中的一个执行路线b.进程当中的一个控制序列c.一个进程至少有一个执行线程Linux中的线程是通过进程模拟实现线程的,没有真正意义的线程Linux中的进程称为轻量级进程,至少有一个执行线程进程与线程进程是承担分配系统资源的基本单位实体;线程是调度的基本单元,程序执行的最小单位。进程之间数据独立;线程共享进程资源,独自拥有自己的上下文数据和私有栈结构。一个进程的...

2018-12-21 18:35:12 252

原创 linux--信号

信号概念信号是用于通知发生某些事件,然后打断进程当前操作,改去处理该发生事件的进程间通信方式之一信号实质是进程PCB(task_struct)中的一个位图表,其中包含两个位图和一个函数指针:阻塞位图(blocked),未决位图(pending),信号递达函数指针(handler)信号也是软件中断的方式之一查看信号列表命令:kill -l信号格式:编号 + 宏定义名称信号的总数:62个...

2018-12-18 20:24:46 281

原创 volatile关键字

作用:保证被其修饰 的变量的内存可见性在编译器优化之后:当在某个变量的使用频率特别高时,CPU会将该变量直接放在寄存器中,每次都通过寄存器访问该变量的值,然而,当该值发生改变时,寄存器中的值并没有发生变化,也就导致了CPU取到错误的变量值;若使用volatile修饰此类型变量,那么意味着:CPU每次访问该变量时,都需要将该变量从内存重新加载到寄存器,再访问寄存器中的该变量值!例:结果:...

2018-12-16 21:06:38 125

原创 信号量---实现同步互斥

前言了解信号量之前,要先了解临界资源、同步与互斥的概念1.临界资源:在同一时间只能被一个进程调用的资源,也称互斥资源。2.同步:保证访问的时序可控性,使调用资源的的顺序合理。3.互斥:在进程调用临界资源是,不同进程之间要竞争该资源,那么一个进程调用了该资源,另一个进程无法再调用该资源的情形就叫互斥!4.临界区:代码中涉及到了操作临界资源的代码段叫临界区。5.原子操作:该操作无法被打断...

2018-12-14 18:27:12 13342 2

原创 进程间通信------共享内存

1.原理:系统在物理地址空间上开辟一块用于存放共享数据的数据区,然后进程在其虚拟地址空间上开辟一块共享内存数据区,通过页表映射到物理地址的共享内存数据区,当不同的进程都映射到物理地址空间上的共享内存数据区时,这两个进程就可以直接从该共享内存拿取数据,不再通过内核的系统调用传递数据,实现进程间通信的目的。注:由于共享内存不再通过系统调用传递数据,也就 节约了数据从用户到内核,再由内核到用户时的时...

2018-12-14 15:01:25 368

原创 进程间通信-----消息队列

原理:用户组织一个 带有类型的数据块,添加到消息队列中,其他进程从该消息队列中取出对应类型的数据块本质: 操作系统在内核为用户创建并且维护的一个队列并且该队列为用户提供了一个两个进程之间发送具有类型的数据块的方法不足: 数据块的长度有上限(MSGMAX)消息队列总字节数有上限(MSGMNB)消息队列个数有上限(MSGMNI)创建消息队列:int msgget(key_t key,...

2018-12-13 23:23:22 260

原创 进程间通信----管道

进程间通信了解管道之前,我们先要了解什么是进程间通信,为什么要进程间通信,进程间通信有什么好处,以及有哪些进程间通信方式!背景:1.在很多情况下,一些大型的程序使用的是多个进程相互配合完成任务2.但是 进程具有独立性 ,无法方便的进行进程之间的沟通3.为了使多个进程能容易的进行进程间的交流,引出进程间通信作用:1.数据交换2.资源共享3.相互通知4.进程控制:某些进程需要被另...

2018-12-13 12:22:23 301

原创 动\静态库

原理: 将源码文件编译成自己的目标文件(即:从.c 文件编译成 .o文件)然后通过不一样的链接方式,生成动态库(.so)、静态库(.a)或可执行文件(.exe)动态库可以直接通过源码编译生成静态库 程序在运行之前将静态库链接到可执行文件中,程序运行时不再需要静态库生成方法:1.xxx.c --> xxx.o2.通过 ar -rc libxxx.a xxx.o 将xxx....

2018-12-12 22:45:08 222

原创 软\硬连接

软链接:通过 (ln -s 文件名 软连接名) 创建一个文件的软链接其实质是该文件的快捷方式创建了一个新的文件,但是其内容是原来文件在数据区的路径(位置),只是分配了一个i节点如图:Linux演示实现:硬链接:通过 (ln 文件名 硬链接名) 创建一个文件的硬链接该硬链接与原文件共用一个i节点只是创建了一个新的文件名,并且将文件属性中的硬链接数进行+1操作(内核操作)修改任...

2018-12-07 13:03:42 302

原创 基础文件I\O

标准输入,标准输出,标准错误-----> stdin stdout stderr实质:是文件指针(FILE*),指向对应的文件结构体库函数:对系统调用进行一层封装,使用户更容易使用系统调用会自带缓冲区(fopen, fread, fclose, fwrite)系统调用:操作系统提供的接口,用户可通过系统调用进行开发等…(open, read, close, write, lsee...

2018-12-06 22:39:18 274

原创 Linux进程总结(下)

一、进程创建fork()原理:为子进程重新创建一个task_struct,以及对应的虚拟地址空间和页表,并且将父进程的 数据(包括缓冲区的数据)和代码拷贝一份至子进程pcb中返回值:对父进程而言:fork()成功返回子进程的进程id;失败返回-1. 对子进程而言:fork()成功返回0;失败返回-1。fork返回值验证代码:#include<stdio.h> ...

2018-12-05 13:02:12 334

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除