- 博客(39)
- 资源 (6)
- 收藏
- 关注
转载 UNIX环境编程学习笔记(7)——文件I/O之文件访问权限与进程访问控制
1 文件的设置用户 ID位 和设置组 ID位与进程相关联的 ID 如下表所示,表 1: 与进程相关联的用户 ID 和组 ID实际用户 ID我们实际上是谁实际组 ID有效用户 ID用于文件访问权限检查有效组 ID附加组 ID保存的设置用户 ID由 exec 函数保存
2017-08-31 18:05:42 338
转载 UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
1 文件类型我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型:(1) 普通文件(regular file)这种文件包含了某种形式的数据,这些数据无论是文件还是二进制对于 UNIX 内核而言都是一样的。对普通文件内容的解释有处理该文件的应用程序进行。(2) 目录文件(dir
2017-08-31 17:02:09 532
转载 UNIX环境编程学习笔记(2)——文件I/O之不带缓冲的 I/O
1 文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用 open 或 creat 返回的文件描述符标识该文件,将其作为参数传送给 read 或 write。按照惯例,UNIX 系统 shell 使用文件描述符 0 与进程的标准输入相关联,文件描述符 1 与
2017-08-31 16:33:42 269
转载 UNIX环境编程学习笔记(5)——文件I/O之fcntl函数访问已打开文件的性质
fcntl 函数可以改变已打开的文件的性质。#include int fcntl(int filedes, int cmd, ... /* int arg */);fcntl 函数有 5 种功能:1. 复制一个现有的描述符(cmd=F_DUPFD)。2. 获取/设置文件描述符标志(cmd=F_GETFD 或F_SETFD)。3. 获取/设置文件状态标
2017-08-31 16:32:20 229
转载 UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
UNIX 提供了两个函数 dup 和 dup2 用于复制一个现存的文件描述符。#include int dup(int filedes);int dup2(int filedes, int filedes2);返回值:若成功则返回新的文件描述符,如出错则返回-1.由 dup 函数返回的文件描述符一定是当前可用文件描述符中的最小描述符。用 dup2 函数则可以通过参数
2017-08-31 16:12:07 306
转载 UNIX环境编程学习笔记(3)——文件I/O之内核 I/O 数据结构
内核使用三种数据结构表示打开的文件,分别是文件描述符表、文件表和 V 节点表。(1) 每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,每个描述符占用一项。与每个文件描述符相关联的是: (a) 文件描述符标志。 (b) 指向一个文件表项的指针。(2) 内核为所有打开文件维持一张文件表。每个文件表项包含: (a) 文件状态
2017-08-31 16:00:26 316
转载 UNIX环境编程学习笔记(1):——出错处理errno
1. errno变量文件 中定义了符号 errno 以及可以赋予它的各种常量,这些常量都是以字符 E 开头。例如,若 errno 等于常量 EACCES,表示产生了权限问题(例如,没有打开所要求文件的足够权限)。当 UNIX 函数出错时,常常返回一个负值,而且将整型变量 errno 设置成含有附加信息的各个常量。例如,open 函数如果成功执行则返回一个非负文件描述符,如出错
2017-08-31 14:16:32 288
转载 《UNIX环境高级编程》笔记0--无缓存I/O操作和标准I/O文件操作区别
本文转载于:http://www.360doc.com/content/11/0521/11/5455634_118306098.shtml首先,先稍微了解系统调用的概念: 系统调用,英文名systemcall,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返
2017-08-31 13:50:40 337
转载 Linux进程间通信——使用信号量
http://blog.csdn.net/ljianhui/article/details/10243617这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多
2017-08-31 11:03:42 209
转载 一个Linux下C线程池的实现(转)
1.线程池基本原理 在传统服务器结构中, 常是 有一个总的 监听线程监听有没有新的用户连接服务器, 每当有一个新的 用户进入, 服务器就开启一个新的线程用户处理这 个用户的数据包。这个线程只服务于这个用户 , 当 用户与服务器端关闭连接以后, 服务器端销毁这个线程。然而频繁地开辟与销毁线程极大地占用了系统的资源。而且在大量用户的情况下, 系统为了开辟和销毁线程将浪费大量的时间和资源。线程
2017-08-30 15:16:54 221
转载 Linux网络编程——tcp并发服务器(多线程)
tcp多线程并发服务器多线程服务器是对多进程服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程与创建进程要快 10100 倍,所以又把线程称为“轻量级”进程。线程与进程不同的是:一个进程内的所有线程共享相同的全局内存、全局变量等信息,这种机制又带来了同步问题。tcp多线程并发服务
2017-08-25 09:52:29 335
转载 《Linux设备驱动程序 第三版》,snull源码,linux-2.6.10
曾经一段时间在看openswan源码,有一个问题迷惑我很久,就是它的那个ipsec虚拟网卡接口是怎么实现的?当时没有思路、没有想法,因为不知道从何着手去解决这个问题,最近接触到了内核模块的编写,又接触到openswan的klips模块,原来这一切全属于网络驱动程序编写范畴。现在我迫不及待的想去了解下它的实现,然后就有了这篇学习笔记…… 本文只是初步讲解虚拟网卡实现的过程,最终实现一个虚拟网卡
2017-08-24 10:51:37 882
转载 【unp】unix网络编程卷1-->环境搭建(ubuntu14.04)
学习unp网络编程,树上的例子均存在#include "unp.h",故需要对环境进行配置。1. 到资源页下载unpv13e 2. 解压并将unpv13e 移动到相应的文件夹下3. 编译[cpp] view plain copy print?>$ cd unpv13e >~unpv13e
2017-08-22 16:11:09 354
转载 代码覆盖率 (Code Coverage)从简到繁 (一)
代码覆盖率(Code Coverage)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标。它也是对测试工作进行量化的重要指标之一,测试工作往往不如开发那样激动人心,一个重要原因之一就是测试难于量化,而代码覆盖率恰恰是解决着一问题的重要指标。根据其覆盖内容的不同,又可以细分为:语句覆盖、判定覆盖、条件覆盖、路径覆盖以及循环覆盖等等,这里有一篇很好的博客《代码覆盖率浅谈》
2017-08-21 22:37:07 4344
转载 搭建QNX开发环境-qnx系统环境开发
QNX是可以提供试用30天,目前发布最新的是qnx7.0版本,申请也是只能7.0,做好白老鼠的准备。老版本不再申请试用,其实多数时候,老版本的650,650sp1,和较新稳定的660版本,大部分功能已经完善量产,但不放出,需要直接购买。30天评估版页面:http://www.qnx.com/products/evaluation/在该页面下载所需软件,并
2017-08-17 16:15:55 2404 1
转载 VMware10 设置上网(主机为连接无线路由器)
先说一下前提,我是主机连接的无线路由器上网。电脑不是外插USB的啊!!如果自己笔记本是自己插的USB形式的无线网卡,按这种方法好像不行,我没试过,有兴趣的可以试一下。原来用虚拟机都是主机插网线的情况下,将主机和虚拟机设置相同IP,并将虚拟机的上网形式改为NAT,但是最近连接无线路由,再用这种方法就无法实现虚拟机上网,在网上查到的资料都说使用桥接方式即可,可是也试了好多设置还是不行,最后
2017-08-16 13:37:04 521
转载 Linux下配置APUE的编译 报错之后如何处理
APUE即Unix环境高级编程,本书中几乎所有的程序都包含一个apue.h的头文件,那如何配置这个apue.h呢?官方地址:http://www.apuebook.com/apue3e.html1、我们可以在src.3e.tar中下载,然后放到你的Linux桌面上(没桌面的,随意放吧)2、解压下载的文件:tar -zxv -f src.3e.tar.gz3、进入解压后的目录
2017-08-14 17:16:58 523
转载 APUE.3e 安装(基于ubuntu12.0.4)
搭建本书编程环境时遇到不少问题。幸好网上有各种大神的解决办法让我最终解决了问题。在这里感谢为LINUX开源操作系统奋斗的大神。不过话说回来,网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说,有些过时,因为很对针对linux的make文件已经改变了很多。话不多说,下面就来看看具体的搭建过程:(本人用的操作系统是ubuntu 14.04LTS)1.在网上下载
2017-08-14 17:12:48 294
转载 ARM体系结构与编程笔记
存储器映射基本概念ARM处理器产生的地址叫虚拟地址,把这个虚拟地址按照某种规则转换到另一个物理地址去的方法称为地址映射。这个物理地址表示了被访问的存储器的位置。它是一个地址范围,该范围内可以写入程序代码。存储器映射控制的必要性为了让运行在不同存储器空间中的程序对异常进行控制。可以通过存储器映射控制,将位于不同存储空间的异常向量表重新映射至固定地址0x00~0x3F处,以实现
2017-08-11 10:35:36 728
转载 QNX手册学习笔记------同优先级调度算法
QNX作为一个微内核的实时操作系统,其进程没有优先级的概念,只有线程才有优先级的概念。QNX的优先级分为255个等级。每个等级可以有多个同优先级的线程准备执行,不同于UC/OS的每个优先级对应一个任务待执行。为了实现更好地实时调度,针对同一优先级的任务之间哪个先执行哪个后执行,QNX Netrino System Architucture 给出了三种调度算法:FIFO scheduling,r
2017-08-11 09:46:31 1379
转载 QNX手册学习笔记————中断机制
继续学习QNX_Neutrino_RTOS_Archituecture的interrupt部分。刚开始学习就遇到了ISR的概念和Interrupt handler 概念的区别问题。查阅维基百科,ISR与Interrupt handler是同一个概念,都是由interrupt引发的callback函数。类似于C#中的event,当我们敲击键盘或移动鼠标时,会产生一个事件,而该事件可以被多个中断监
2017-08-11 09:45:39 1629
转载 QNX学习笔记——IPC(5)
读QNX_Neutrino_RTOS_Architecture的IPC章最后一节Typed memory。 既然Typed memory既然是放在InterProcess一章,那么Typed meomory可以是一个特殊的多进程共享的内存。 QNX主要提供了两个接口posix_typed_mem_open和posix_typed_mem_get_info.通
2017-08-11 09:44:37 1609
转载 QNX手册学习笔记——Dynamic Linking
原来链接也是操作系统的重要的组成部分,对于数据区和代码区的分配是链接所分配的。链接库,代码区和数据区等的存储位置是完全不同的程序的链接分为静态链接和动态链接两种链接方式。静态链接相对于动态链接来讲,因为每一个program都会有自己一个单独的链接,而一个操作系统通常需要跑多个program(process),故占用内存较大,通常情况下较少使用。对于动态链接,通常将program与lib
2017-08-11 09:43:40 825
转载 QNX手册学习笔记——IPC(4)
读QNX_Neutrino_RTOS_System_Architecture的IPC的POSIX message queues和shared memory部分。QNX不仅提供了前面介绍了进程或线程间的同步传输所采用的默认消息传送机制,也提供了非阻塞的队列消息传送机制。 相对于默认的传送数据地址的消息传送方式,什么情况下采用数据队列传送方式呢?队列消息传送方式,发送方不需要
2017-08-11 09:42:11 683
转载 QNX手册学习笔记——IPC(3)
读QNX_Neurino_RTOS_System_Architecture 的Interprocess Communcation章的Events节。QNX Neutrino提供了event处理的子集。POSIX和他的实时拓展接口提供了许多异步处理方法。对于QNX的内核而言额外地提供了一些如pulses的通知技术。QNX将event机制封装为一个子集,从一定意义上来讲,实现了应用程序与各种通
2017-08-11 09:41:34 568
转载 QNX手册学习笔记————IPC(2)
读QNX手册《QNX_Neutrino_RTOS_System_Architecture》的InterProcess Communication(IPC)章的Robust implementations with Send/Receive/Reply节。通过调用线程或进程的Send/Receive/Reply接口,可以架构实现多线程/进程同步的系统应用程序;线程或进程间的异步调
2017-08-11 09:40:48 669
转载 QNX手册学习————IPC(1)
读QNX_Neutrino_RTOS_System_Architecture手册IPC章 Synchronous message passing和Message copying以及Channels and connections节。进程之间的通信交互(Interprocess Communication简称IPC)在各类实时操作系统中扮演重要的角色。QNX提供了三个主要传递信息接口:Msg
2017-08-11 09:39:54 607
转载 signal(SIGCHLD, SIG_IGN)和signal(SIGPIPE, SIG_IGN);
signal(SIGCHLD, SIG_IGN);因为并发服务器常常fork很多子进程,子进程终结之后需要服务器进程去wait清理资源。如果将此信号的处理方式设为忽略,可让内核把僵尸子进程转交给init进程去处理,省去了大量僵尸进程占用系统资源。(Linux Only)对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结束,子进程将成为僵尸进程
2017-08-09 15:03:29 382
转载 linux 多进程并发服务__关于子进程回收的方法
以TCPServ 服务程序来说:1)父进程:负责系统初始化,以及监听(listen),接受连接请求(accept);其中accept 默认阻塞调用。2)每接受一个连接请求,动态新建(fork)一个子进程,任务完成或客户端断开,服务子进程需要退 出并收回系统资源。3)根据linux的设计子进程的收回需要父进程参与(wait调用),而此时附进程主要服务工作在监听
2017-08-09 13:28:05 545
转载 TCP并发服务器,每个客户一个子进程
今天我带来的是服务器模型中的第一种,也是最基本最常用的一种模型–TCP并发服务器,每个客户一个子进程。先简单介绍一下:TCP并发服务器,每个客户一个子进程,也就是说并发服务器调用fork派生一个子进程来处理每个子进程,使得服务器能够同时为多个客户服务,每个进程一个客户。客户数目的唯一限制是操作系统对以其名义运行服务器的用户ID能够同时拥有多少子进程的限制。具体到我们的需求,我们的客
2017-08-08 16:58:09 435
转载 arm汇编 bic和orr指令
1. bic BIC指令的格式为: BIC{条件}{S} 目的寄存器,操作数1,操作数2BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。操作数1应是一个寄存器, 操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。操作数2为32位的掩码,如果在 掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。 bic r0,r0,#0x1f0x1f=1111
2017-08-08 14:23:02 2740
转载 QNX学习笔记之QNX Momentics IDE使用笔记
使用tftp,串口连接Target,下载内核1.uboot的使用1) 采用串口,波特率为115200, 采用QNX M IDE默认的设置,按任意键,即可进入uboot2) 常用的命令有:setenv serverip 192.168.0.1;设置服务器tftp地址setenv ipaddr 192.168.0.2;设置本地tftp地址tftp 200
2017-08-02 17:34:46 6774
转载 QNX Neutrino 命令手册,“使用宝典”!
因为QNX开发调试需要一些QNX Neutrino操作,所以进一步熟悉一下QNX操作,发现QNX官网上有完整的命令手册,真是如获至宝,官网文档网址如下,找其中的《QNX Neutrino Utilities Reference》。http://www.qnx.com/download/group.html?programid=20945 自己学习总结的经验是,如果之前没有接
2017-08-02 17:17:17 632
转载 QNX system architecture 16 - Adaptive Partitioning
QNX支持自适应分区,这里的分区并不是常见的磁盘分区,而是一个可分配资源集合。QNX通过自适应分区控制竞争进程间的资源分配控制。What are partitions在一些计算机系统中,需要把应用或者应用组同其他应用或应用组隔离起来。我们不希望一个应用程序(不管是不是恶意的)破换其他应用或者阻止其他应用执行。针对这个问题,某些系统使用虚拟墙,也称为分区,确保在这个分区内的一
2017-08-02 17:12:20 650
转载 QNX system architecture 11 - Character I/O
实时操作系统的一个关键性需求是高性能字符!/O字符设备和块设备的一个重要区别:字符设备包含了字节流序列,串行传输;不同于块设备数据永久存在于介质上,此外字符设备的数据是临时生成的。在POSIX和UNIX传统上,这些字符设备位于OS目录空间/dev/下。比如一个modem或者终端串口设备存在于/dev/ser1PC机上的典型硬件设备包括:serial port
2017-08-02 17:11:27 795
转载 QNX system architecture 6 - Process manager
进程管理器能够创建多个POSIX进程,每个进程可以包含多个POSIX线程。在QNX Neutrino RTOS,procnto系统进程包含microkernel, 进程管理模块,内存管理模块和路径管理模块。因此进程管理模块并不是微内核的一部分。进程管理 - 管理进程创建,销毁和进程属性比如uid和gid内存管理 - 管理一定范围的内存保护能力,共享库,以及进程间的POSIX共享内存
2017-08-02 17:10:46 593
转载 QNX system architecture 3 - Interprocess Communication (IPC)
从微内核构建全面的POSIX操作系统,进程间通信起到至关重要的作用。当各种提供服务的进程加到微内核中,IPC做为粘合层,把这些部件连结成一个紧密的整体。尽管消息传递是QNX Neutrino RTOS IPC的主要形式,还有其他集中形式的IPC,除非提到,这些其他形式的IPC都是构建在本地消息传递基础之上。策略是在内核中创建一个简单的,鲁棒,易扩展的的IPC服务。更多复杂的IPC服务可以在
2017-08-02 17:10:01 554
转载 QNX system architecture 2 - the QNX Neutrino Microkernel
microkernel实现了嵌入式实时系统使用的POSIX核心功能,以及QNX的消息传递服务。有些POSIX功能(如file, device I/O)不是在procnto microkernel中实现的,这些功能是通过可选进程和共享库实现的。想查看你使用系统的kernel版本号,可以使用uname -a命令。更多信息,可参考Utilities Reference
2017-08-02 17:07:35 603
转载 QNX system architecture 1 - QNX neutrino RTOS设计理念
开发QNX的主要目的是提供一个支持开放系统POSIX API,并且系统稳定,易于扩展为各种应用系统:小到资源有限的嵌入式系统,大到高端的分布式计算环境。QNX支持多个处理器家族,包括X86 ARM和powerPC对于实时性要求高的应用系统,架构健壮也是基本要求,OS可以灵活的完全控制MMU硬件。当然,简单的设定这些目标并不能保证预期的结果。我们请你通读System Archit
2017-08-02 15:31:26 872 1
qnx spi库资源
2018-06-21
嵌入式Linux SPI总线应用编程.pdf
2018-04-02
iTOP4412-SDIO WiFi移植文档.pdf
2018-02-27
DDR区别与联系
2016-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人