摘要: 信号量进程同步 一组并发进程进行互相合作、互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步。 信号量在进程同步时初始值为:0 信号量在进程互斥时初始值为:大于0的 本章节主要使用信号量,使的两个进程生产到消费有序的完成。就是说必须等到生产完全完场才能,让消费执行。 下面进入编程语言编程学习 阅读全文
posted @ 2016-03-21 19:01 for_learning 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 信号量互斥 信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源(进程互斥)。进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。 一、信号量分类 二值信号灯:信号灯的值只能取0或1 计数信号灯:信号灯的值可以取任意非负值。 二、函数学习 2.1创 阅读全文
posted @ 2016-03-21 17:46 for_learning 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 信号通讯编程 在Linux系统中,信号(signal)同样也是最为古老的进程间通信机制。 一、信号类型 Linux系统支持的所有信号均定义在/usr/include/asm/signal.h(展示),其中常见的信号有: SIGKILL:杀死进程 SIGSTOP:暂停进程 SIGCHLD:子进程停止或 阅读全文
posted @ 2016-03-21 17:39 for_learning 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 管道通信 一、通讯目的 1、数据传输 一个进程需要将数据发送给另一个进程。 2、资源共享 多个进程之间共享同样的资源。 3、通知事件 一个进程需要向另一个/组进程发送消息,通知它们发生了某事件。 4、进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进 阅读全文
posted @ 2016-03-21 17:33 for_learning 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 多进程程序设计 一、函数学习 1.1 创建进程fork 1.1.1 函数原形 pid_t fork(void); 1.1.2 函数功能 创建一个子进程 1.1.3 所属头文件 <unistd.h> 1.1.4 返回值 成功:父进程返回创建成功的子进程pid子进程返回 0 失败:父进程返回 1.1.5 阅读全文
posted @ 2016-03-21 17:25 for_learning 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 进程控制理论 一、进程 进程是一个具有一定独立功能程序的一次运行活动。 1.1进程特点 1.动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 2.并发性:任何进程都可以同其他进程一起并发执行 3.独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 4.异步 阅读全文
posted @ 2016-03-21 16:27 for_learning 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 时间编程 一、时间类型 Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT) Calendar Time:日历时间,是用“从一个标准时间点(如:1970年1月1日0点)到此时经过的秒数”来表 阅读全文
posted @ 2016-03-21 15:25 for_learning 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 库函数系统调用文件方式 基于C函数库的文件编程是独立于具体的操作系统平台的,不管是在Windows、Linux还是其他的操作系统中,都是使用这些函数。使用库函数进行程序设计可提高程序的可移植性。 对于标准的C函数库,它们的操作都是围绕流来进行的。流是一个抽象的概念,当程序需要读取数据的时候,就会开启 阅读全文
posted @ 2016-03-21 14:46 for_learning 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 系统调用方式文件编程 一、文件描述符 在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符。 二、函数学习 2.1打开文件 open 2.1.2 函数原形 1).int open(const char *pathname,int flags); 2).int 阅读全文
posted @ 2016-03-21 14:33 for_learning 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 静态/动态函数库设计 Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供。 两者区别: 一、函数库分类 函数库按照链接方式可分为: 1.静态链接库 对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(libra 阅读全文
posted @ 2016-03-21 14:17 for_learning 阅读(458) 评论(0) 推荐(0) 编辑
摘要: linux应用程序地址布局 在学习Linux应用程序开发时,经常会遇到如下概念:代码段、数据段、BSS段(Block Started by Symbol,又名:未初始化数据段)、堆(heap)和栈(stack)。而这些部分也是构成Linux应用程序的重要组成部分。 一、内存布局 1.从低地址到高地址 阅读全文
posted @ 2016-03-21 14:00 for_learning 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 协处理器 协处理器用于执行特定的处理任务,如:数学协处理器可以控制数字处理,以减轻处理器的负担。ARM可支持多达16个协处理器,其中CP15是最重要的一个。 CP15提供16组寄存器 通过提供的16组寄存器访问CP15 一、协处理器访问 ARM微处理器可支持多达16个协处理器,用于各种协处理操作,在 阅读全文
posted @ 2016-03-21 13:00 for_learning 阅读(247) 评论(0) 推荐(0) 编辑
摘要: ARM伪指令 在ARM汇编语言程序中里,有一些特殊指令助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在元程序中的作用是为完成汇编程序作各种准备工作,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 伪指令本身并 阅读全文
posted @ 2016-03-21 12:54 for_learning 阅读(446) 评论(0) 推荐(0) 编辑
摘要: ARM指令学习 一、算数和逻辑指令 1— MOV 数据传送指令 2.— MVN 数据取反传送指令 3.— CMP 比较指令 4.— CMN 反值比较指令 5.— TST 位测试指令 6.— TEQ 相等测试指令 7.— ADD 加法指令 8.— ADC 带进位加法指令 9.— SUB 减法指令 10 阅读全文
posted @ 2016-03-21 11:53 for_learning 阅读(1696) 评论(0) 推荐(0) 编辑
摘要: ARM寻址方式 所谓寻址方式就是处理器根据指令中给出的信息来找到指令所需操作数的方式。 一、立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即数寻址。:立即数不能作为指令中的第二操作数。该规定与高级 阅读全文
posted @ 2016-03-21 11:36 for_learning 阅读(465) 评论(0) 推荐(0) 编辑
摘要: ARM寄存器学习 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个状态寄存器都是可访问的。 37个寄存器=7 阅读全文
posted @ 2016-03-21 11:29 for_learning 阅读(446) 评论(0) 推荐(0) 编辑