- 博客(6)
- 资源 (4)
- 收藏
- 关注
原创 二、Linux系统IO编程—系统调用标准IO
一、标准IO概念标准IO在系统调用的上一层多加了一个缓冲区,也因此引入了流的概念,在UNIX/Linux下表示为FILE*(并不限于UNIX/Linux,ANSI C都有FILE的概念),FILE实际上包含了为管理流所需要的所有信息:实际I/O的文件描述符,指向流缓存的指针(标准I/O缓存,由malloc分配,又称为用户态进程空间的缓存,区别于内核所设的缓存),缓存长度,当前在缓存中的字节数,出...
2019-06-25 08:27:48 440
原创 一、Linux系统IO编程——系统调用之文件IO与标准IO
一、系统调用1. 系统调用的概念Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用。用户可以通过系统调用命令在自己的应用程序中调用它们。从某种角度来看,系统调用和普通的函数调用非常相似。区别仅仅在于,系统调用由操作系统核心提供,运行于核心态;而普通的函数调用由函数库或用户自己提供,运行于用户态。随Linux核心还提供了一些C语言函数库,这些库对系统调用进行了一些包装和扩展,...
2019-06-21 15:12:28 1699 4
原创 十四、Linux下线程的死锁
一、死锁的概念一般情况下,如果同一个线程先后两次调用lock,在第一次调用时,由于锁已经被占,该线程会挂起等待别的线程释放锁,然而锁正是被自己占着的,该线程又被挂起,没有机会释放锁,因此,就永远处于挂起等待状态了,这叫做死锁(Deadlock)。另种典型的死锁情形是这样:线程A获得了锁1,线程B获得了锁2,这时线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用...
2019-06-18 15:40:29 267
原创 十三、Linux下线程的信号量
信号量相关功能一、信号量的概念1.线程的信号量是一种特殊的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作。如果一个程序中有多个线程试图改变一个信号量的值,系统将保证所有的操作都将依次进行。但如果是普通变量,来自同一程序中不同线程的冲突操作所导致的结果将是不确定的。信号量一般常用于保护一段代码,使其每次只被一个执行线程运行。信号量是用来调协线程对共享资源的访问的。2.最简单的信号量...
2019-06-17 15:48:31 293
原创 十二、Linux下线程的同步—条件变量读者与写者问题
一、 案例写者读者案例,线程对共享资源写,写完成后读者继续读,当读取完成后,在通知写者继续写,依次循环。存在以下几种情况:1 个写者,1 个读者1 个写者,多个读者多个写者,多个读者1. 案例1——一个写者,一个读者。include<stdio.h>#include<stdlib.h>#include<string.h>#include...
2019-06-12 10:23:07 297 2
原创 十一、Linux下线程的同步—条件变量
一、条件变量的概念1. 条件变量基本概念条件变量是线程同步的一种手段。条件变量用来自动阻塞一个线程,直到条件(predicate)满足被触发为止。通常情况下条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个或者多个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"信号。条件变量是利用...
2019-06-05 17:07:33 177
基于STM32F103的W5300硬件协议驱动程序
2018-12-25
书籍《现场总线CANopen设计与应用》
2018-08-04
现场总线CANopen设计与应用
2018-08-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人