Welcome 微信登录

首页 / 操作系统 / Linux

Linux内核阅读必备技能

Linux内核阅读必备技能

由于操作系统的内核贴近硬件,需要对计算机的体系结构有所了解,例如CPU的工作原理、接口特性和BIOS调用等。读者千万别因为这些望而却步,这里将介绍一些阅读Linux内核源码必备的技能。获取内核一般在Linux系统中的/usr/src/linux*.*.*(*.*.*代表的是内核版本,如2.4.23)目录下就是内核源代码(如果没有类似目录,是因为还没安装内核代码)。另外还可从互连网上免费下载。注意,不要总到http://www.kernel.org/去下载,...
Linux Kernel代码分段分析尝试

Linux Kernel代码分段分析尝试

1. gcc的__attribute__编绎属性要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn表示没有返回值、pure表明函数除返回值外,不会通过其它(如全局变量、指针)对函数外部产生任何影响。但这里我们比较感兴趣的是对代码段起作用子...
Linux内核中读写文件数据的方法

Linux内核中读写文件数据的方法

有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read() vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明。下面介绍主要步骤:1. 打开文件filp_open()在kernel中可以打...
Linux平台C与C++中的内存分配

Linux平台C与C++中的内存分配

C中的内存分配很早之前写的了,现在发到C版来。关于C语言内存方面的话题要真说起来的话那恐怕就没头了,所以本文仅仅是一个浅谈。关于内存问题不同平台之间有一定的区别。本文所指的平台是x86的Linux平台用C语言做程序(其实其他语言也一样),不仅要熟悉语法,其实很多相关的背景知识也很重要。在学习和研究C语言中内存分配的问题前,首先要了解一下Linux分配给进程(运行中的程序)的地址空间是什么样的。总的来说有3个段,即代码段,数据段和堆栈段(学过汇编的朋友一定很...
怎样学好Java编程

怎样学好Java编程

很多人学习Java语言,大家都想学好这门语言,如何学好呢?对于初学者来说都是很迷茫的,我也是一名初学者,今天我就谈谈我的感想,希望大家能取长补短,帮帮我这初学者,谢谢在!!!!!! JAVA比较热门,我们自己头脑不能发热,不能指望在短短一两个星期内就掌握这门语言。我觉得要学好JAVA,一定要做到:动手、动脑、动嘴、静心。 动手是最重要的。很多人学计算机技术就是看书、听课,当时明白,过后马上就忘。如果不愿意敲打键盘,就不如不学。即使有时候敲的代码你不明白...
Java语言的特点

Java语言的特点

Java语言的特点 1.强类型 Java语言是一种强类型语言,强类型能约束程序员必须遵守更多的编程规定,也能让编译器检测出程序中尽能多的错误。2.编译和解释 Java是一种高级语言编程,用Java语言编写的程序在计算机上运行需要经过编译和解释执行两个严格区分的阶段。Java的编译程序先将Java源程序翻译成与计算机无关的字节码,不是通常的编译程序将源程序翻译成特定计算机的机器代码。运行是,Java的运行系统装载和链接需要执行的类,并作必要的优化后,...
Linux shell编程之awk与sed使用详解

Linux shell编程之awk与sed使用详解

Linux shell编程之awk的用法1. awk的使用基本功能:在文件或字符串中基于指定规则浏览和抽取信息。awk抽取信息後,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件信息。调用方式:1. 命令行方式2. 将所有awk命令插入一个文件,并使awk程序可执行,然后使awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。3. 将所有的awk命令插入一个单独文件,然后调用。选项说明:-F 域符号 缺省为空格-f 指明awk脚本2. ...
Linux静态/动态链接库的创建和使用

Linux静态/动态链接库的创建和使用

和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:假设有下面几个文件:头文件String.h,声明相关函数原形,内容如下:Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:Strlnen.c:函数StrNlen的实现,获取给定字符串的长度,如果输入字符串的长度大于指定的最大长度,则返回最大长度,否者返回字符串的实际长度,内容如下:生成静态库:利用GCC生成对应目标文件:gcc –c Strlen.c S...
使用 GDB 调试 Linux程序

使用 GDB 调试 Linux程序

最近开始做Linux下编程,GDB是必须要会的。在网上找了一篇比较详细的文章。Linux 的大部分特色源自于 shell 的 GNU 调试器,也称作 gdb。gdb 可以让您查看程序的内部结构、打印变量值、设置断点,以及单步调试源代码。它是功能极其强大的工具,适用于修复程序代码中的问题。在本文中,我将尝试说明 gdb 有多棒,多实用。编译开始调试之前,必须用程序中的调试信息编译要调试的程序。这样,gdb 才能够调试所使用的变量、代码行和函数。如果要进行编译...
关于 Linux 2.6 提供的 epoll 接口

关于 Linux 2.6 提供的 epoll 接口

在man epoll中的Notes说到:EPOLL事件分发系统可以运转在两种模式下: Edge Triggered (ET) Level Triggered (LT)接下来说明ET, LT这两种事件分发机制的不同。我们假定一个环境:1. 我们已经把一个用来从管道中读取数据的文件句柄(RFD)添加到epoll描述符2. 这个时候从管道的另一端被写入了2KB的数据3. 调用epoll_wait(2),并且它会返回RFD,说明它已经准备好读取操作4. 然后我们读...
配置开发支持高并发TCP连接的Linux应用程序全攻略

配置开发支持高并发TCP连接的Linux应用程序全攻略

1、修改用户进程可打开文件数限制在 Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[speng@as4 ~]$ ulimit -n1024这表示当前用户的每个进程最多允许同时打开1024个文件...
Linux下编程的新鲜体验

Linux下编程的新鲜体验

现在开始,着手在Linux环境下建立工程。我的编程环境是RedFlag5.0+Eclipse+GCC+QT。# * 代码编辑 *虽然有Eclipse,并且QT也提供了很好的插件给Eclipse实现基本的可视化编程。不过Eclipse的速度实在是太慢了,所以,基本上所有的工作都是在sh里面进行的。代码编写几乎完全用vi(vim)。vi的功能实在是太强大了。不知道这个世界上还有没有更强大的编辑器,在命令行模式下,能够语法标亮,处理多个文件,搜索,替换。各种编辑...
Code Blocks——Linux下很不错的C/C++ IDE

Code Blocks——Linux下很不错的C/C++ IDE

Code Blocks,个人感觉在Linux很不错。于是尝试装了一个。在AUR里面有,所以需要编译。yaourt -S codeblocks经过一段长时间的编译,搞定。用了一下,感觉非常不错:1. 和Windows的visual studio差不多,使用习惯也差不多。2. 不支持autoconf/automake,和visual studio一样,在项目编译的时候,自动生成gcc编译命令行,然后编译。3. 可以自己写Makefile,在Project的属性...
Java应用基础知识:Java开发编程规范集锦

Java应用基础知识:Java开发编程规范集锦

命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好的可读性) Package 的命名 Package 的名字应该都是由一个小写单词组成。 Class 的命名 Class 的名字必须由大写字母开头而其他字母都小写的单词组成 Class 变量的命名 变量的名字必须用一个小写字母开头。后面的单词用大写字母开头。 Static Final 变量的...
<< 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 >>