摘要:
1.进程同步:各进程按照一定的顺序执行的过程。异步就不一定有顺序,而是随机的执行。一组并发进程进行互相合作,互相等待,使得各进程按照一定的顺序执行的过程。2.system系统调用可以按照字符串方式调用系统命令。3.生产者只需要释放信号量;消费量只需要获取而不需要释放4.信号量初始值等于0,在互斥通讯中大于05.生产者:(1)创建信号量集合的键值(ftok函数)(2)创建信号量(semget函数)(... 阅读全文
摘要:
1.产生背景:有些资源呗多个进程同时访问的时候,可能出现数据混乱的现象2.定义:信号量有名信号灯。主要是用来保护临界资源(进程互斥)。进程可以根据他判定是否可以访问临界资源。还可以用于进程同步。实质:一个数字操作:获取和释放。利用信号量的值判断是否可以操作,大于0可以。0不可以。所以在创建操作之前一般要保证初始值是1.可以使用semctl函数来获取和设置初始值。3.分类:(1)二值信号量:信号灯的... 阅读全文
摘要:
1.信号:在Linux中信号也是最为古老的通信机制2.信号处理流程:(1)选择信号(2)发送信号(3)处理信号3.信号类型:(1)SIGHUP:终端发出的结束信号(2)SIGINT:键盘中断信号(3)SIGKILL:结束接收信号的进程(杀死进程)(4)SIGTERM:kill命令发出的信号(5)SIGSTOP:暂停进程(6)SIGCHLD:子进程停止或结束的时候用来通知父进程4.忽略信号:有些信号... 阅读全文
摘要:
1.有名管道:又称为FIFO文件。2.man命令:1.系统命令,2.系统调用,3库函数3.函数学习5.2 创建有名管道5.2.1 函数名mkfifo5.2.2 函数原形int mkfifo(const char *pathname, mode_t mode);5.2.3 函数功能创建一个fifo文件(有名管道)5.2.4 所属头文件5.2.5 返回值成功:0失败:-15.2.6 参数说明Pathn... 阅读全文
摘要:
1.进程间通讯的目的(1)数据传输(2)资源共享(3)通知事件(4)进程控制2.通讯发展(1)UNIX进程间通讯(2)基于System V进程间通讯(3)POSIX进程间通讯3.POSIX标准4.进程间通讯的主要方式(1)无名管道(2)有名管道(3)信号(4)消息队列(5)共享内存(6)信号量(7)套接字5.管道通信(1)一个进程在管道尾部写入数据,另一个进程管道头部读取数据(2)无名管道:只能用... 阅读全文
摘要:
一.进程是一个具有独立功能的程序的一次运行活动。二.特性:(1)动态性(2)异步性(3)独立性(4)并发性三.三态:1.就绪:任何时刻都只有一个进程在CPU运行,但是同一时刻有多个进程就绪。通过一定的算法将就绪的进程挑选出来,然后交给CPU执行。2.执行:当进程被调度以后,就进入执行状态。3.阻塞:进程的请求暂时得不到满足,就是阻塞状态。4.在阻塞和执行之后都会在此回到就绪状态,等待下一次的调度。... 阅读全文
摘要:
1.格林威治时间(UTC):即世界标准时间。是以英国伦敦的一个地方的时间为标准。日历时间:以一个标准时间点(1970.01.01.00:00:00:)为起点,到现在所经历的秒数。2.函数学习1.1 获取日历时间1.1.1 函数名Time1.1.2 函数原形time_t time(time_t *t);1.1.3 函数功能返回日历时间1.1.4 所属头文件1.1.5 返回值成功:返回从1970.1.... 阅读全文
摘要:
1.基于C函数库的程序是独立于操作系统的,可移植性更好。基于系统调用的编程依赖于内核,移植性不好。2.流:在程序和源文件之间会建立一个数据通道访问文件里的数据,于是通道里的数据就成了抽象动态的流。文件指针:对应于系统调用的文件描述符(整数)。是FILE类型的指针,通常是定义一个FILE* fp的变量描述一个指向文件的指针,FILE类型里包含了管理流信息的数据信息。3.函数学习: 3.1 打开文件 ... 阅读全文
摘要:
一.核心理论:文件描述符(1)成年公民有身份证编号(2)打开的文件对应文件描述符。(3)实质就是一串数字。(4)作用就是能够区分所有打开的文件。二.函数学习man命令默认是按照Linux系统内置手册顺序查找你要搜索的关键词,一旦找到就不继续查找了。相应的顺序是1命令,2系统调用,3库函数。2.1 打开文件2.1.1 函数名Open2.1.2 函数原形(1)int open(const char* ... 阅读全文
摘要:
1.Linux下的应用程序所需要的外部函数可以由函数可和系统调用提供。2.函数库是处于用户态的,由工作人员编写的函数的集合,而系统调用是由Linux内核实现的。3.函数库分为静态和动态,按照链接方式划分的。动态函数库比静态节约空间。使用静态函数库以后应用程序最终会包含自身和函数库,在内存中运行的时候就会有多个函数可的拷贝,导致在空间上的浪费。而动态函数库则在内存中只有一个拷贝,供多个都会使用到的程... 阅读全文
摘要:
1.文件头:说明该文件的文件名,创建者,创建时间,主要功能。2.函数头:函数名,输入参数,输出参数,返回值,函数功能3.注释统一用/******************/方式而不用//4.花括号要对齐。5.代码缩进,采用四个空格缩进。 阅读全文
摘要:
1.应用程序都是由代码段,数据段,BSS段以及堆空间,栈空间组成。2.布局方式:(1)代码段在最低地址处,一般都是从0x8048000开始,这是虚拟地址,每一个应用程序都是这样的(2)数据段紧贴着代码段(3)在往上是BSS段其实也是一种数据段(4)在往上是堆空间,堆空间是往上增长的(5)定不一般是栈空间,栈空间是向下生长2.查看各个段的地址(1)在应用程序里面,末尾处加上while循环,防止程序结... 阅读全文
摘要:
1.定义在程序运行过程中,突然出现错误。然后Linux会把程序出错时的内存内容存放到一个Core文件中,这个过程就叫Core Dump。就叫核心转存。2.主要用途:段错误,产生段错误的地方主要有(1)数组访问越界(2)访问空指针(3)栈溢出(4)修改制度内存3.使能CoreDump打开 ulimit -c unlimited关闭ulimit -c 04.在出错的程序目录下面产生core文件,然后利... 阅读全文
摘要:
1.简介2.使用步骤3.更多命令 阅读全文
摘要:
问题1描述:.在C语言中嵌入汇编,老是报错,感觉和老师都是一样的的代码。但是就是报错说expected “)”before ;问题1解决:_asm_惹的祸,粗心大意所致,一定是__asm__(连续的两条下划线)。才是标识C语言潜逃汇编1.栈为何物是一种数据组织形式,具有后进先出的特点。其中栈底是第一... 阅读全文
摘要:
这一部分只是搬移了stepping stone到sdram,等到使用nand的时候会再补充搬移代码的细节1.垫脚石空间不够存放完整的uboot,所以要利用前面能够存放在垫脚石里的代码将剩余uboot复制到内存2.相对跳转和绝对跳转3.起始地址:(在本课由于未初始化NAND,所以起始地址在垫脚石)垫脚... 阅读全文
摘要:
1.内存的分类:(1)SRAM静态RAM,访问速度更快,但是成本高。常用在存储容量不大,速度要求高的场合。比如CPU的垫脚石采用的是SRAM。(2)DRAM动态:由很多电容组成,需要定期充电保持信息,即刷新,故访问速度慢。1.1SDRAM:同步动态随机存储器(synchronous dynamic ... 阅读全文
摘要:
1.概念解析:(1)时钟脉冲信号:由特定的电压幅度以及特定的时间间隔产生的脉冲信号(2)时钟脉冲频率:单位时间内产生的脉冲个数(3)信号产生:A.晶体振荡器:石英晶体经过打磨,加电极,通电,会产生稳定的时钟脉冲。但是如果需要高频率的信号,虽然结构简单,噪声低,但是成本倍增,交货周期长,而且难以获得非... 阅读全文
摘要:
1.led通常作为一种调试手段2.GPIO:通用输入输出口常有三个寄存器控制3.不同平台的GPIO控制寄存器地址不同,工作模式不同,相应的控制寄存器的布局也不同,有的甚至一组GPIO要两个寄存器控制。4.对于6410还要注意在uboot中对外设进行地址初始化(1)将基地址存入r0,(2)设置大小,即... 阅读全文
摘要:
一.异常向量表1.ARM一上电就属于一种异常--reset,而且在工作过程中,难免会发生各种异常事件。所谓异常就是,处理器在执行某向特定任务,突然间某个事件发生,而且这个事件导致处理器不能再继续执行当前工作,必须停下手里工作去处理改事件,则称此类事件为异常事件,简称异常。2.常见异常类型以及入口地址... 阅读全文