- 博客(15)
- 资源 (6)
- 收藏
- 关注
原创 linux多线程程序设计
1、核心理论为什么需要线程? 为了提高完成一个任务的速度,我们创建了多个进程去完成一个任务,但是多个进程间有相同的地方(例如代码相同,所使用的数据相同),同时工作时就造成了资源的浪费;为了避免资源浪费,我们进程间相同的部分分割出来,不同的部分就形成了一个小小的线程。线程概念(特点): · 线程就是“轻量级”的进程。(linux中不存在线程这个机制) · 线程与创建他的进程共享代码段、数据段
2015-11-17 18:42:47 588
原创 linux进程间的通信--共享内存
1.核心理论共享内存概念:共享内存是IPC机制中的一种。顾名思义,它允许两个不相关的进程访问同一段内存,这是传递数据的一种非常有效的方式。 通俗的讲,共享内存就是进程A产生的数据放在内存中某个位置,进程B可以从这个内存位置访问B产生的数据2.函数学习共享建立内存步骤:新建共享内存块→映射到进程内存空间→断开与进程的联系→删除共享内存块创建共享内存 函数名:shmget 函数原型:int
2015-11-17 18:28:28 412
原创 linux进程间的通信--信号量同步
1.核心理论进程的同步:是指一组并发的进程互相合作互相等待,使得各进程按照一定的顺序执行的过程叫做进程同步。同步与互斥的区别:同步时信号量初始值为0,互斥时信号量初始值大于0。 解释:如果用信号量互斥的话,必须是生产者进程先执行。如果采用信号量同步的话,那么那么生产者和消费者的执行顺序不影响结果2.进程同步编程实例消费者与生产者的关系 生产者进程:创建一个文件,向文件中写入字符,二者之间
2015-11-17 17:13:24 1545
原创 linux进程间的通信机制--信号量互斥
1.核心理论进程互斥:多个并发的进程互相排斥的按照一定的先后顺序访问临街资源的过程叫做进程互斥。信号量的实质:数字信号量的操作:获取信号量(减法),释放信号量(加法)。信号量概念:信号量又名信号灯,与其他进程间的通信方式大不相同,主要用途是保护临界资源(进程互斥)。此外进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还用于进程同步。信号量分类:二值信号灯:信号灯的值只能取
2015-11-16 18:46:12 904 1
原创 linux进程间的通信机制——信号
1.核心理论信号:在linux中信号是一个古老的进程间的通讯机制,就像古代烽火台所起到的传递信号的作用一样。信号处理流程 信号通讯机制就分为三步:选择信号→发送信号→处理信号信号类型 linux系统支持的所有信号均定义在usr/include/asm/signal.h中,其中常见的信号有: SIGKILL:杀死进程 SIGSTOP:暂停进程 SIGCHLD:子进程停止货结束时用来通知
2015-11-15 16:56:26 385
原创 linux进程通信-有名管道
1.核心理论:有名管道:有名管道又称FIFO文件,因此我们对有名管道的操作可以采用操作文件的方法,如使用open 、read 、write等函数。fifo文件与普通文件的对比 FIFO文件 普通文件 读取FIFO文件的进程只能以“RDONLY“方式打开fifo文件 任意方式 写FIFO 文件的进程只能以“WRONLY”方式打开fifo文件 任意方式 fifo文件读取后就消
2015-11-14 12:27:54 625
原创 linux进程间的通信-无名管道
1.linux进程间通讯(IPC)的主要方式:无名管道(pipe)有名管道(FIFO)信号(signal)消息队列共享内存信号量套接字(socket)注意:学习进程间的通信重点在每种通讯方式所适用的场景和其使用方法。2.管道通信一个进程在管道的尾部写入数据,另一个进程从管道的头部读出数据。管道包括无名管道和有名管道两种,前者只能用于父进程和子进程间的通讯,后者可用于运行于同一系统中的
2015-11-14 12:04:44 391
原创 linux进程相关函数
1.获取进程号获取当前进程号 函数名 :getpid 原型:pid_t getpid(void) 所属库文件:sys/types.h 、unistd.h 参数:无参数 功能:返回当前进程ID 返回值:成功返回当前ID,该函数always successful获取父进程号: 函数名 :getppid 原型:pid_t getppid(void) 所属库文件:sys/types.h
2015-11-13 13:43:24 614
原创 linux进程相关概念
1.基本概念进程定义:进程是一个具有独立功能的程序的一次运行活动。进程特点:动态型、并发性、独立性、异步性进程三态: 进程ID(PID):标识进程的唯一数字 父进程ID:PPID 启动进程的用户ID : UID进程互斥:当多个进程使用同一个资源,且该资源同一时刻只允许一个进程使用时,那么其他的进程必须等待到该资源释放后才能使用,这种情形叫做进程互斥。临界资源:某个时刻只允许一个进程访问
2015-11-13 12:03:02 683
原创 linux应用程序内存布局
1.linux应用程序内存布局从低地址到高地址分别为:代码段、数据段、BSS段、堆、栈对向高内存地址生长,栈想低内存地址生长linux中所有的应用程序都是这个布局,每个应用程序都是从0x80480000这个地址开始的,这样冲突吗?不冲突,因为这个地址是一个虚拟地址,linux中每个应用程序都有自己的虚拟地址空间。2.2.查看linux中应用程序内存布局方 法:通过查看应用程序进程中的进程地址
2015-11-10 18:15:44 3262
原创 linux中静态库的制作
1、linux中应用程序函数调用分为两种:库函数:运行于用户空间系统调用:运行与内核空间2.函数库分类静态链接库 在编译(即编译期链接)其将其打包到应用程序,如果多个程序调用同一个函数时,会造成内存资源的浪费,但是可移植性。动态链接库 在调用时(即调用是链接),将其拷贝到内存,多个应用程序(多进程)可以调用同一个库函数的拷贝;节约内存,但是不可移植。存放位置 linux中应用程序的
2015-11-10 18:05:13 631
原创 原子操作
1.原子变量:原子操作函数所使用的变量。 变量定义在内核源码:include/linux/Types.h中typedef struct { int counter;} atomic_t;2.原子操作: 原子操作从物理意义上来理解就是,操作的最小单位,不能在分割了。顾名思义,原子操作,就是对原子变量的操作,它将对一个数据的“读取→修改→回写”变成了一个不可打断的操作。它的执行是封闭的,不
2015-11-08 13:11:08 602
原创 进程上下文与中断上下文的理解
一.什么是内核态和用户态内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。用户态:用户程序运行空间。二.什么是进程上下文与中断上下文1.进程上下文:(1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。(2)进程下文:其是指
2015-11-06 17:03:17 10157 6
原创 C语言关键字解析(一)
我参加嵌入式软件开发的笔试时,经常会遇到直接或者间接考察对C语言中一些关键字含义的理解,所以今天我就简单的总结一下。1.关键字static(1)保持变量持久。在函数体内,一个被声明为静态变量的变量,在这个变量被调用的过程中保持其实上次调用后的值,并不会被初始化。该变量在程序开始运行时就被初始化,也是唯一的一次初始化。其存储在全局存储区。 file1.c#include <stdio.h>int p
2015-11-04 13:49:17 724
mnist数据集
2017-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人