- 博客(179)
- 资源 (30)
- 收藏
- 关注
原创 例说linux内核与应用数据通信系列
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】例说linux内核与应用数据通信(一):添加一个系统调用例说linux内核与应用数据通信(二):proc虚拟文件系统例说linux内核与应用数据通信(三):读写内核设备驱动文件例说linux内核与应用数据通信
2015-08-22 22:15:26 1780 1
原创 把握linux内核设计思想系列
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】把握linux内核设计思想(一):系统调用把握linux内核设计思想(二):硬中断及中断处理把握linux内核设计思想(三):下半部机制之软中断把握linux内核设计思想(四):下半部机制之tasklet把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择把握linux内核设计思想(六):内核时钟中断把握linux内核设计思想(七):内核定时器和定时执
2015-08-17 23:15:24 3078 1
原创 C语言构建WEB管理系统(六):使用XMLHttpRequest对象和服务端交换数据
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 以登录页面为例,当我们提交登录页面表单时,将登录用户名和登录密码发送到服务器,这个时候我们肯定希望服务器可以返回提交的用户名和密码是否正确的信息。如果错误给出提示信息以便重新输入,正确则页面给出提示或跳转到指定页面。这是就需要前端和服务器端可以同步或异步
2016-03-16 09:34:12 3253 1
原创 C语言构建WEB管理系统(五):CGI实现上传文件
在很多网站中经常会遇到有向服务器上传文件的情况,比如在博客或空间中上传自己的头像。这一节我们来看一下在后台如何使用C语言实现文件上传这一功能。首先创建一个html文档来上传文件,然后使用wireshark抓取数据包来分析一下上传文件的文件内容如何解析。html文档如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""htt
2016-03-16 09:33:54 10854 6
原创 C语言构建WEB管理系统(四):CGI程序解析POST数据
这一节我们将介绍如何解析POST方式提交的表单数据,在前面说过POST提交的数据没有放在QUERY_STRING环境变量中,我们将上一节的示例表单直接改为POST方式如下: 登录信息: --> 用户名: 密码:
2016-03-16 09:33:22 5367 2
原创 C语言构建WEB管理系统(三):CGI程序解析GET数据
在上一节我们看到了第一个CGI程序,该程序仅仅是为了帮助理解CGI程序如何获取客户端提交的数据,只是输出环境变量没有做任何事,在实际应用中我们需要首先解析这些数据,然后提取其中我们需要的数据(如在登录时我们需要提取用户名和密码)。 我们现在已经知道在使用GET方式时,客户端提交的数据保存在环境变量QUERY_STRING中,所以我们需要做的就是获取环境变量QUERY_STRING
2016-03-16 09:32:51 5829 4
原创 C语言构建WEB管理系统(二):了解CGI
并非所有的网站页面静态的,大多数时候我们需要浏览器和服务器进行一个交互,比如在我们按下了页面的提交按钮后,表单数据被发送给了服务器,这个时候服务器端需要一个程序对表单数据进行处理,比如在登陆界面输入用户名和密码后按登录按钮时。这个时候就需要web客户端和服务器进行交互了,而此时CGI就很重要了。 CGI是一个web服务器主机提供信息服务的标准接口,全称是通用网关接口(Common
2016-03-16 09:32:38 4264 2
原创 C语言构建WEB管理系统(一):了解http协议
既然要讲web开发就离不开HTTP协议,http协议是web的核心。HTTP定义Web客户(即浏览器)如何从web服务器请求Web页面,以及服务器如何把Web页面传送给客户。当用户请求一个Web页面(譬如说点击某个超链接)时,浏览器把请求该页面中各个对象的HTTP请求消息发送给服务器。服务器收到请求后,以运送含有这些对象HTTP响应消息作为响应。 一个客户机与服务器建立连接后,发
2016-03-16 09:32:23 3328 1
原创 linux服务安装与配置(四):安装ftp服务及配置
ftp服务器我们使用vsftpd,使用源码安装,源码为vsftpd-3.0.2版本。# netstat -atp | grep ftp# 没有发现ftp服务器运行。1. 下载源文件。此处可下载源码:http://download.csdn.net/detail/gentleliu/84073152.解压、编译、源文件,步骤如下。# ls vsftpd-3.0
2015-09-30 22:57:55 2801 1
原创 linux服务安装与配置(三):配置安装telnet服务
1. 首先判断当前主机中是否有安装telnet相关软件包。 # rpm -qa | grep telnet # 发现没有安装。2.不存在则安装相关软件包。 在当前主机上配置安装telnet服务需要安装telnet-server软件包,如果需要安装客户端则需要安装telnet软件包,为了方便,这里使用yum安装。
2015-09-30 22:55:27 5815 1
原创 linux服务安装与配置(二):安装xinetd服务
xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。telnet服务就是通过xinetd服务来管理的,所以在安装后面telnet服务之前需要先安装xinetd服务。首先查看是否有安装xinet服务:# rpm -qa | grep xinetd
2015-09-30 22:49:44 19717 3
原创 linux服务安装与配置(一):服务状态
linux 查看服务启动状态方式有如下:1,使用netstat -atupn 可以查看服务对应端口是否打开2. 使用service --status-all 配合grep可查看指定服务是否开启。netstat的参数很多,在man手册中可以查看到,但常用的就几个:-a :all,表示列出所有的连接,服务监听,Socket资料-t :tcp,列出
2015-09-30 22:46:29 1580 2
原创 例说linux内核与应用数据通信(四):映射设备内核空间到用户态
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 一个进程的内存映象由下面几部分组成:代码段、数据段、BSS段和堆栈段,以及内存映射的区域等部分,内存映射函数mmap(), 负责把文件内容映射到进程的虚拟内存空间, 通过对这段内存的读取和修改,来实现对文件的读取和修改,而文件可以是设备驱动文件节点。通过把
2015-08-23 09:17:09 3133 1
原创 例说linux内核与应用数据通信(三):读写内核设备驱动文件
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 读写设备文件也就是调用系统调用read()和write(),系统调用就是内核提供给应用程序的接口,应用程序对底层的操作大部分都是通过系统调用来完成。几乎所有的系统调用都涉及到内核和应用的数据交换,本节并非讲述如何添加一个系统调用(那是第一节的内容),而是讲
2015-08-22 17:19:11 5919 5
原创 例说linux内核与应用数据通信(二):proc虚拟文件系统
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 proc虚拟文件系统主要用于内核向用户导出信息,通过它可以在 Linux 内核空间和用户空间之间进行通信。在/proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,与普通文件不同的是,这些虚拟文件的内容都是动态创建的。下面是笔者系
2015-08-22 17:04:14 3131 2
原创 例说linux内核与应用数据通信(一):添加一个系统调用
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 应用不能访问内核的内存空间,为了应用和内核交互信息,内核提供一组接口,通过这组接口,应用可以发送请求,内核可以响应处理该请求,这组接口就是系统调用。关于内核系统调用的实现查看本博客中这篇文章:http://blog.csdn.net/shallnet/
2015-08-22 16:49:41 2037 1
原创 把握linux内核设计思想(十三):内存管理之进程地址空间
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 进程地址空间由进程可寻址的虚拟内存组成,Linux 的虚拟地址空间为0~4G字节(注:本节讲述均以32为为例)。Linux内核将这 4G 字节的空间分为两部分。将最高的 1G 字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为“
2015-08-16 11:52:43 2704 1
原创 把握linux内核设计思想(十二):内存管理之slab分配器
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 上一节最后说到对于小内存区的请求,如果采用伙伴系统来进行分配,则会在页内产生很多空闲空间无法使用,因此产生slab分配器来处理对小内存区(几十或几百字节)的请求。Linux中引入Slab的主要目的是为了减少对伙伴算法的调用次数。 内
2015-08-15 16:09:54 3448 3
原创 把握linux内核设计思想(十一):内存管理之页的分配与回收
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 内存管理单元(MMU)负责将管理内存,在把虚拟地址转换为物理地址的硬件的时候是按页为单位进行处理,从虚拟内存的角度来看,页就是内存管理中的最小单位。页的大小与体系结构有关,在 x86 结构中一般是4KB(32位)或者8KB(64位)。通过 get
2015-08-15 15:51:58 3031 1
原创 把握linux内核设计思想(十):内核同步
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 如同linux应用一样,内核的共享资源也要防止并发,因为如果多个执行线程同时访问和操作数据有可能发生各个线程之间相互覆盖共享数据的情况。 在linux只是单一处理器的时候,只有在中断发生或内核请求重新调度执行另一个任务时,数据才可能会
2015-07-31 22:36:26 1790 1
原创 把握linux内核设计思想(九):进程调度
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 linux为多任务系统,正常情况下都存在成百上千个任务。由于linux提供抢占式的多任务模式,所以linux能同时并发地交互执行多个进程,而调度程序将决定哪一个进程投入运行、何时运行、以及运行多长时间。调度程序是像linux这样的多任务操作系统的基础,
2015-07-31 22:18:38 2389 2
原创 把握linux内核设计思想(八):进程管理分析
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 进程其实就是程序的执行时的实例,是处于执行期的程序。在linux内核中,进程列表被存放在一个双向循环链表中,链表中每一项都是类型为task_struct的结构,该结构称作进程描述符,进程描述符包含一个具体进程的所有信息,这个结构就是我们在操作系统中所说的PCB
2015-07-29 20:34:08 2116 1
原创 把握linux内核设计思想(七):内核定时器和定时执行
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 前面章节说到了把工作推后到除现在以外的时间执行的机制是下半部机制,但是当你需要将工作推后到某个确定的时间段之后执行,使用定时器是很好的选择。 上一节内核时间管理中讲到内核在始终中断发生执行定时器,定时器作为软中断在下半部上下文中执行。时钟中断
2015-07-29 20:18:01 4225
原创 把握linux内核设计思想(六):内核时钟中断
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 内核中很多函数是基于时间驱动的,其中有些函数需要周期或定期执行。比如有的每秒执行100次,有的在等待一个相对时间之后执行。除此之外,内核还必须管理系统运行的时间日期。 周期性产生的时间都是有系统定时器驱动的,系统定时器是一种可编程硬件芯
2015-07-29 20:03:40 7398
原创 把握linux内核设计思想(五):下半部机制之工作队列及几种机制的选择
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 工作队列是下半部的另外一种将工作推后执行形式。和软中断、tasklet不同,工作队列将工作推后交由一个内核线程去执行,并且该下半部总会在进程上下文中执行。这样,工作队列允许重新调度甚至是睡眠。 所以,如果推后执行的任务需要睡眠,就选择工作队列
2015-07-29 00:00:23 2548 2
原创 把握linux内核设计思想(四):下半部机制之tasklet
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 tasklet是利用软中断实现的一种下半部机制。tasklet相比于软中断,其接口更加简单方便,锁保护要求较低。tasklet由tasklet_struct结构体表示:struct tasklet_struct{ struct ta
2015-07-28 23:46:26 2812
原创 把握linux内核设计思想(三):下半部机制之软中断
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 中断处理程序以异步方式执行,其会打断其他重要代码,其运行时该中断同级的其他中断会被屏蔽,并且当前处理器上所有其他中断都有可能会被屏蔽掉,还有中断处理程序不能阻塞,所以中断处理需要尽快结束。由于中断处理程序的这些缺陷,导致了中断处理程序只是整个硬件中断处理流程的
2015-07-28 23:35:03 1962
原创 把握linux内核设计思想(二):硬中断及中断处理
操作系统负责管理硬件设备,为了使系统和硬件设备的协同工作不降低机器性能,系统和硬件的通信使用中断的机制,也就是让硬件在需要的时候向内核发出信号,这样使得内核不用去轮询设备而导致做很多无用功。 中断使得硬件可以发出通知给处理器,硬件设备生成中断的时候并不考虑与处理器的时钟同步,中断可以随时产生。也就是说,内核随时可能因为新到来的中断而被打断。当接收到一个中断后,中断控制器会给处理器
2015-07-28 23:25:15 3511
原创 把握linux内核设计思想(一):系统调用
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 一般情况下进程不能访问内核所占内存空间也不能调用内核函数。为了和用户空间上运行的进程进行交互,内核提供了一组接口。透过该接口,应用程序可以访问硬件设备和其他操作系统资源。这组接口在应用程序和内核之间扮演了使者的角色,应用程序发送各种请求,而内核负责满足这些请求
2015-07-28 23:07:54 4188 1
原创 搞定linux上MySQL编程(六):C语言编写MySQL程序(结)
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 在实际应用中,我们不可能在命令行登录进数据库进行数据的查询、插入等操作,用户一般是使用一个界面良好的应用程序软件来对数据进行管理。为了方便应用程序的开发,MySQL提供了多种编程语言(C、perl、php等)的编程接口,供开发者使用。
2015-06-14 00:02:04 14015 1
原创 搞定linux上MySQL编程(五):MySQL权限管理
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 mysql中提供了比较完整的安全/权限管理系统,下面简单介绍权限的原理和使用。 mysql数据库安装完成启动之后,能看当前数据库列表可以看到一个mysql的数据库:mysql> show databases;+-----------
2015-06-13 20:52:18 2758
原创 搞定linux上MySQL编程(四):数据导入导出和备份
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 在MySQL中提供多种数据导入方法,比如mysqlinport、sql语句导入以及编写专门导入程序等。通常情况下,数据导入基本步骤科分成3步:1. 确定导入的数据源,按固定格式存储的文本文件或者SQL文件。2. 依照导入的文件格式,确定目标数据表,这
2015-06-13 17:50:18 2327
原创 搞定linux上MySQL编程 (三):MySQL高级语法
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 本节介绍Mysql高级语法,包括试图、存储过程、索引等,通过使用试图、触发器等来优化数据库设计和查询技术,提高数据处理能力与效率。 视图操作:视图是一个虚拟表,内容由查询定义。视图并不在数据库中以存储的数据值集形式存在,行和列数据来
2015-06-13 17:24:58 2226
原创 搞定linux上MySQL编程(二):MySQL语法基础操作
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 sql(structured query language)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 sql语言包含3部分:1. 数据定义语言(DDL),用于定义和管理对象,例如数据库、数据表以及试图等。例如create、drop
2015-06-13 17:19:27 2758
原创 搞定linux上MySQL编程(一):linux上源码安装MySQL
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】1. 首先下载源码包:ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.72.tar.gz2. 使用如下命令检查系统中是否已安装mysql:rpm -qa | grep mysql
2015-06-13 17:12:50 2399
原创 linux平台学x86汇编(二十):汇编库的使用(结)
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 汇编语言和C一样,可以通过使用库来简化阻止大量函数的目标文件的问题。GNU C编译器可以不在命令行中独立地包含每个独立地函数目标文件,它允许吧所有目标文件组合在单一存档文件中。在编译C程序时,要做的工作就是包含单一的目标库文件,在编译时,编译器可以从库文件
2015-05-12 23:38:00 2676
原创 linux平台学x86汇编(十九):C语言中调用汇编函数
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 除了内联汇编以外,还有一种途径可以把汇编代码整合到C/C++语言中,C/C++语言可以直接调用汇编函数,把输入值传递给函数,然后从函数获得输出值。 如果希望汇编语言函数和C/C++程序一起工作,就必须显示地遵守C样式的函数格式,也就是
2015-05-11 22:57:22 7976
原创 linux平台学x86汇编(十八):内联汇编
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 使用汇编语言笔编程最常见的方式是在高级语言(C和C++)程序内编写汇编函数,这种吧汇编语言直接写到C和C++语言程序内的技术称为内联汇编。 GNU的C编译器使用asm关键字指出使用汇编语言编写的源代码段落。asm段的基本格式如下:
2015-05-11 22:41:17 2958
原创 linux平台学x86汇编(十七):在汇编中使用linux系统调用
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 在前面章节我们已经看到,启动系统调用需要使用INT指令。linux系统调用位于中断0x80,执行INT指令时,所有操作转移到内核中的系统调用处理程序,完成后执行转移到INT指令之后的下一条指令。 linux的系统调用在如下文件(3
2015-05-10 21:11:45 3645 1
原创 linux平台学x86汇编(十六):在汇编语言中调用C库函数
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】 其实在汇编语言中也是可以使用C库函数的,这一节我们来看一下如何在汇编语言中调用C库函数以使得我们的程序看上去很方便地和用户交互。 C库包括C程序通用的喝多函数,如printf和exit等,下面我们紧接着上一节的知识来实现一个两整数
2015-05-10 21:07:16 4019
5_sysv_sync_mutex.tgz
2015-01-05
3_pthread_sync_mutex_with_productor_and_consumer.tgz
2014-12-23
2_pthread_sync.tgz
2014-12-20
a_sysv_msgqueue.tgz
2014-12-08
9_posix_msgqueue.tgz
2014-12-05
VC++制作的文件传输工具
2010-02-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人