
linux c
文章平均质量分 75
zjq_smile
这个作者很懒,什么都没留下…
展开
-
Linux c—内核组成
一、Linux c 内核组成Linux内核主要是由进程调度、内存管理、虚拟文件系统、网络接口、进程通信5个系统组成。1)进程调度:控制系统中多个进程对CPU的访问,使得多个进程能在CPU中“微观串行、宏观并行”地执行。2)内存管理:主要作用控制多个进程安全地共享主内存区域,当COU提供内存管理单元时,内存管理完成为每个进程进行虚拟内存到物理内存的转换。为了更好的了解内存管理单元MM原创 2016-09-11 18:31:33 · 433 阅读 · 0 评论 -
【LINUX C】消息队列
"消息队列"是在消息的传输过程中保存消息的容器。1、Msgget 作用:创建消息队列 原型:int magget(key_t key,int msgget); 参数: Key键值:IPC_PRIVATE设定一个私有的键值,也可由ftok函数来获得 ftok原型如下: key_t ftok( char *原创 2016-10-26 23:33:39 · 899 阅读 · 0 评论 -
【网络编程】TCP有关函数
1、socket函数原型:int socket(int family, int type, int protocol);作用:建立一下新的socket套接字参数:family:表示使用的是何种地址类型;AF_INET,IPV4;AF_INET6,IPV6; 类型:SOCK_STREAM 用于TCP SOCK_DGRA原创 2016-11-07 23:36:25 · 533 阅读 · 0 评论 -
UDP相关函数
欲函数的详细信息,请参考:http://blog.youkuaiyun.com/zscfa/article/details/53069499涉及两个函数readfrom()和sendto()1、readfrom()原型:int recvfrom(int sockfd.void * buf,int len, unsigned int flags,struct sock原创 2016-11-08 20:09:47 · 1350 阅读 · 0 评论 -
【Linux c】堆和栈
1、定义栈区(stack): 由编译器在需要的时候自动分配释放 ,在不需要的时候自动清楚的变量的存储区。存放函数的参数值,局部变量的值等。顺序是先进后出堆(操作系统):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。顺序是先进先出。 堆和栈的主要区别 2.1申请方式 栈: 由系统自动分配。 例如,声明在函数中一个局部变量原创 2016-10-27 23:19:59 · 432 阅读 · 0 评论 -
Linux--内核功能及文件系统
二、内核功能1、与计算机硬件进行交互,实现对硬件对编程控制和接口操作,调度对硬件资源对访问,并为计算机上的用户程序提供一个高级的执行环境和对硬件对虚拟接口2、按功能模块分为:(1)进程调度; (2)文件管理; (3)内存管理; (4)进程间通信和网络接口 三、文件系统结构转载 2016-11-09 23:07:53 · 242 阅读 · 0 评论 -
通过父子进程实现消息队列的互相通信
MSG1.C:MSG2.C结果如下图:如上所示在显示的函数部分还是有一些BUG,尚待解决~不过基本功能是实现了!原创 2016-10-29 01:00:04 · 4561 阅读 · 0 评论 -
实现同步PV操作模拟生产和消费的基本程序代码
#include#include#include#include#define MAXSIZE 1024 char *buffer;int running = 1;sem_t productor;sem_t consumer;void *product()//生产者{while(running){sem_wait(&productor);//P操作printf原创 2016-10-30 01:08:25 · 2444 阅读 · 0 评论 -
基于数据库的语句
数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。它不仅包括数据本身,而且包括相关数据之间的联系。数据库系统在三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。正是这两层映像保证了数据库系统的数据能够具有较高的逻辑独立性和物理独立性。关系(Relation):一个关系就是一张二维表,每一个关系有一个关系名,可以存储为一个文件。其定义可原创 2016-10-31 00:27:08 · 457 阅读 · 0 评论 -
【多用户访问一个文件】文件锁
1、当多个用户同时访问一个文件的时候,Linux会采取给文件上锁的机制防止共享资源产生竞争状态。于是便有了文件锁的概念。2、文件锁包括建议性锁和强制性锁。建议锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。在一般情况下内核和操作系统都不使用建议性锁。 3、强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对该文件进行读写操作。但是会原创 2016-10-20 23:50:30 · 2433 阅读 · 0 评论 -
进程与线程大战几百回合?
进程 PK 线程我们先打个比方,多线程是十字路口多线程是平面交通系统,造价低,但是红绿灯多,老堵车,而多进程是则是立交桥,虽然造价高,上下坡多耗油,但是不堵车。这是一个抽象的概念。相信大家看完会有这种感觉。进程和线程是两个相对的概念,通常来说,一个进程可以定义程序的一个实例(Instance)。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定转载 2016-11-01 23:33:40 · 386 阅读 · 0 评论 -
基于TCP客户端和服务器的I/O多路复用
一、基于TCP/IP协议的基本循环服务器tcp_server.c[cpp] view plain copy #include #include #include #include #include #include #include #define PORT 33转载 2016-12-05 00:09:16 · 1807 阅读 · 0 评论 -
OSI参考模型、TCP/IP参考模型及协议
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。 完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。具体说: 物理转载 2016-12-05 00:12:09 · 968 阅读 · 0 评论 -
生产者和消费者(PV操作、共享内存)
生产者一直在往共享内存中写数据#include<sys/sem.h>#include<sys/shm.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include"shm.h"int main(){ int ret; int shmid; int semid; int running;原创 2017-08-09 17:12:31 · 3365 阅读 · 0 评论 -
Linux文件操作命令
基本命令:1、切换命令:su 普通用户名 、su /root,切换成超级用户2、添加用户:addusr用户名3、修改密码:passwd用户名4、清屏:clear5、查看当前目录下的文件 ls6、显示当前目录下的详细信息:ls -l7、查看所有文件,包括隐藏文件:ls -a8、查看所有文件的详细信息: ls -al9、修改文件权限:chmod原创 2017-08-02 17:38:22 · 353 阅读 · 0 评论 -
网络通信的基础知识
TCP/IP的分层模型OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。这个7层的协议模型虽然规定得非常细致和完善,但在实际中却得不到广泛的应用,其重要的原因之一就在于它过于复杂。但它仍是此后很多协议模型的基础。与此相区别的TCP/IP协议模型将OSI的7层协议模型简化为4层,从而更有利原创 2016-11-06 23:13:47 · 1491 阅读 · 0 评论 -
【共享内存】共享内存
共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。 步骤:创建——打开——映射——分离——删除 1、Shmget 作用:在内核中创建共享内存 原理:int shmget ( key_t key, int size, int shmflg ) 参数:key: 键值,可以用IPC_PRIVATE来规定原创 2016-10-26 00:36:58 · 381 阅读 · 0 评论 -
linux c——进程管理
2.1进程调度多任务系统分为非抢占式和抢占式两种,Linux c提供抢占式多任务模式,进程在被抢占之前能够运行的时间叫做进程的时间片。在LIinux 2.6.23内核版本中,采用完全公平调度算法(CFS)代替了O(I)调度算法,因为O(I)对响应时间敏感的程序有不足。 进程分为I/O消耗型和处理器消耗型。前者指进程的大部分时间用来提交I/O请求或是等待I/O请求的;后者是指进程把事件大原创 2016-09-12 23:05:03 · 915 阅读 · 0 评论 -
Linux c——中断处理
第三章 中断处理3.1 中断和中断处理中断处理程序是被内核调用来响应中断的,运行在中断上下文,中断处理程序是上半部,当接收到一个中断时,它就立即开始执行,但只做有严格时限的工作。中断处理程序的注册是通过request_irq函数完成的,由于该函数内部有分配内存的操作,所以它不能在中断上下文或其他不允许阻塞的代码中调用。同一个中断处理程序绝不会被同时调用以处理嵌套的中断。转载 2016-09-13 22:16:51 · 2397 阅读 · 0 评论 -
Linux c ——定时计数
系统的定时器频率(节拍率)是通过静态预处理器定义的,也就是HZ,HZ是变化的,连续两次时钟的间隔时间就叫做节拍,为1/HZ秒,高HZ有利于提高函数的运行精度,有利于提高抢占的准确度,有利于获得更精细的解析度,但是会减少其他处理器工作的时间,会更频繁的扰乱处理器的高速缓存,增加耗电。全局变量jiffies用来记录自系统启动以来产生的节拍总数,jiffies在一秒内增加的值就是HZ。exter原创 2016-09-14 21:30:57 · 822 阅读 · 0 评论 -
LINUX c_并发同步
5.1 内核同步与死锁问题并发:两个进程可以真正的在临界区中同时执行。原因:(1)中断(2)软中断和tasklet(3)内核抢占(4)睡眠及与用户空间的同步(5)对称多处理 数据加锁: (1)如果有其他执行线程可以访问这些数据; (2)如果任何其他什么东西都能看见它; (3)几乎转载 2016-09-15 22:03:53 · 696 阅读 · 0 评论 -
LINUX C 内存管理(上)
6.1 内存管理中的基本概念1、页:内核把物理页作为内存管理的基本单位,尽管处理器的最小可寻址的单位是字节,但是内存管理单元(MMU)通常以页为单位进行处理。大多数32位体系结构的处理器支持4KB的页,内核用struct page 结构表示系统的物理页,页的拥有者可能是用户控件进程、动态分配的内核数据、静态内核代码或高速缓存等 2、区:有些页位于内存特定的物理地址上,所以不能将其用原创 2016-09-16 23:19:13 · 402 阅读 · 0 评论 -
linux c—内存管理(下)
6.4进程地址空间的基本概念内存除了管理本身的内存(物理内存)外,还必须管理用户空间中的进程内存(虚拟内存),这个内存就叫做进程地址空间,一个进程可以寻址4GB虚拟内存。但是这不代表它有权访问所有的虚拟内存,可以被访问的地址空间称为内存区域,进程如果是访问了不再有效范围内的内存区域,或者以不正确的方式访问了有效地址,内核就会终止进程并返回段错误信息。内核使用内存描述符结构体表示进程的地址空原创 2016-09-17 22:34:27 · 424 阅读 · 0 评论 -
LINUX C——第七章Platform总线
7.1 platform设备驱动概念Linux内核中常见的总线有I2C总线、PCI总线、串口总线、SPI总线、CAN总线、单总线等,所以有些设备和驱动可以直接就可以挂在这些总线上,然后通过总线上的match进行设备和驱动的匹配。但是有些设备并不属于这些常见总线,所以我们引入了一种虚拟总线,也就是platform驱动。 Platform总线Struct bus_type platfo原创 2016-09-18 18:49:01 · 659 阅读 · 0 评论 -
多路复用机制——SELECT
在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。Linux提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文原创 2016-10-21 23:01:54 · 322 阅读 · 0 评论 -
通讯录(数据库版)
#include#include#include#define NAME 1024#define TEL 1024#define SQL 1024static sqlite3 *db = NULL;static char *errmsg = NULL;static char **Result = NULL;static char name[NAME];static char原创 2016-11-03 00:14:33 · 650 阅读 · 0 评论 -
【linux 文件】管道通信,信号通信
LINUX使用的进程间通信放式:1)无名管道(pipe)和有名管道(FIFO)2)信号(signal)3)消息队列4)共享内存5)信号量6)套接字(socket) 一、管道通信1、管道是单向的,先进先出的,它把一个进程的输出和另一个进程的输入连接在一起2、一个进程(写进程)在管道的尾部写入数据,另一个进程(读数据)从管道的头部读出数据 无原创 2016-10-22 21:59:31 · 362 阅读 · 0 评论 -
【Linux 文件】Exe函数族
exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。与一般情况不同,exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只有调用失败了,它们才会返回一个-1,从原程序的调用点接着往下执原创 2016-10-23 22:02:42 · 775 阅读 · 0 评论 -
linux进程通信——信号量
1. 信号量(1)概念信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源.进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。(2)分类二值信号灯:信号灯的值只能取0或1,类似于互斥锁。 但两者有不同:信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强原创 2016-11-04 00:10:57 · 258 阅读 · 0 评论 -
【数据结构与算法】统治世界的十大算法
统治世界的十大算法 前言 软件正在统治世界.而软件的核心则是算法.算法千千万,又有哪些算法属于”皇冠的珍珠”呢? 什么是算法 通俗的说,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出.因此算法就是将输入转换为输出的一系列计算步骤. 简而言之,算法转载 2016-11-04 22:18:32 · 1926 阅读 · 0 评论 -
【校验码】数据校验码
计算机系统在进行数据的传输和存储时,难免会发生错误。为了避免这种错误,一方面是从硬件的方面着手,提高硬件的抗干扰能力和可靠性;而另一方面在数据编码上采取编码纠码的措施,使得机器能够自己发现错误甚至纠正错误,我们把这种具有检测错误或带有自动纠错能力的数据编码称为数据校验码。其原理是在数据中加入一些校验位,组成数据校验码,通过检查数据校验码的合法性来判断是否出错或进行纠错。常用的数据校验码有奇偶校验码原创 2016-11-05 22:05:59 · 4694 阅读 · 0 评论 -
新人作业之基于TCP连接,用消息队列实现图片发送功能,
具体要求是:1、客户端接受图片,服务器发送图片,建立TCP 连接2、每次有客户端过来,服务器创建一个线程单独实现图片发送功能3、最多5个客户端同时连接服务器,超过5个就会失败4、服务器本地存储一张图片,在服务器处输入“start”之后,服务器就开始向在线的客户端发送图片5、客户端收到图片之后,保存到一个目录中,目录名是年月日,文件名为时分秒简单来说:就是服务器向客户端发送图片。。。。。...原创 2019-07-26 19:46:18 · 1104 阅读 · 0 评论