一、 什么是系统调用
在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口。
二、 系统调用的作用
系统调用在Linux系统中发挥着巨大的作用,如果没有系统调用,那么应用程序就失去了内核的支持。
我们在编程时用到的很多函数,如fork、open等这些函数最终都是在系统调用里实现的,比如说我们有这样一个程序:
这里我们用到了两个函数,即fork和exit,这两函数都是glibc中的函数,但是如果我们跟踪函数的执行过程,看看glibc对fork和exit函数的实现就可以发现在glibc的实现代码里都是采用软中断的方式陷入到内核中再通过系统调用实现函数的功能的。具体过程我们在系统调用的实现过程会详细的讲到。
由此可见,系统调用是用户接口在内核中的实现,如果没有系统调用,用户就不能利用内核。
三、 系统调用的现实及调用过程
详细讲述系统调用的之前也讲一下Linux系统的一些保护机制。
......
如果在Red Hat 9安装时已经默认安装了NFS组件,接下来的工作主要是配置相关文件使服务器提供NFS服务,步骤如下。
(1)设定某台计算机为NFS服务器,并在后台启动相关的守护进程(在"服务配置"中启动)。一般来说,如果NFS服务器要提供服务,必须启动inet、portmap、nfs和mount这4个守护进程并保持在后台运行。
(2)规划服务器分区,从安全等方面定义哪些分区作为要共享的文件系统。
(3)在客户端列表中定义每一台客户机的参数。
(4)修改/etc/exports。
(5)重新启动NFS服务器,启动方法可采用命令行的方式,即/etc/rc.d/init.d/nfs
restart。服务器端文件系统的共享设置有3种方法,一是直接修改/etc/exports文件;二是用exports命令来增加和删除目录;三是图
形化的配置方法。
1、 了解NFS网络文件的系统结构
NFS网络文件的系统结构包括如下目录结构:
1./etc/exports
这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在。可能要使用vi主动建立起这个文件,接下来的设定也仅仅是这个文件。
2./usr/sbin/exportfs
这是维护NFS共享资源的命令,我们可以用其重新分 ......
尽管Linux开发的相关岗位很多,但长期以来Linux开发没有统一的开发平台,大多数的开发者都直接使用VI、GCC等命令行工具,这样其实不利于大型项目的开发。 1.依然是熟悉的开发流程 在Linux操作系统中,C语言程序的开发和其他环境类似,程序生成主要分成编译、汇编、连接等几个步骤。 编译是指把用高级语言编写的程序转换成相应处理器的汇编语言程序的过程。从本质上讲,编译是一个文本转换的过程。对嵌入式系统而言,一般要把用C语言编写的程序转换成处理器的汇编代码。编译过程包含了C语言的语法解析和汇编语言的生成两个步骤。汇编一般是逐个文件进行的,对于每一个C语言编写的文件,可能还需要进行预处理。 汇编是从汇编语言程序生成目标系统的二进制代码(机器代码)的过程。机器代码的生成和处理器有密切的联系。相对于编译过程的语法解析,汇编的过程相对简单。这是因为对于一款特定的处理器,其汇编语言和二进制的机器代码是一一对应的。汇编过程的输入是汇编代码,这个汇编代码可能来源于编译过程的输出,也可以是直接用汇编语言书写的程序。 连接过程是指将汇编生成的多段机器代码组合成一个可执行程序。一般来说,通过编 ......
1. 安装前的准备工作
1.1 确定一个安装目录,建议该目录下至少有1个G的空间,可以使用du来察看磁盘空间的使用情况
1.2准备weblogic安装软件,比如:platform815_linux32.bin,上传到linux安装目录下
1.3 创建一个BEA用户组帐号
groupadd -g GID groupname
说明:GID代表创建组的ID,一般大于500
比如:groupadd -g 600 bea
1.4 创建一个weblogic用户帐号
useradd -d userhome -g GID username
说明:userhome 代表用户的主目录,GID 为前一步创建的组ID
比如 useradd -d /home/weblogic -g 600 weblogic
2. 安装步骤
WebLogic在Linux平台下的安装方法一般有三种:图形窗口模式,控制台模式,无人守护安装模式。由于控制台模式的使用最为广泛且不受任何其它硬件条件的限制(所以我们这里只介绍控制台安装模式)。
2.3 开始安装
2.3.1 .bin的安装方法
首先赋予.bin可执行权限
chmod a+x filename.bin
然后执行
./filename.bin -mode=console
2.3.2 .jar的安装方法
然后执行
java -jar filename.jar -mode=console
2.4 控制台安装
2.4.1 完成2.3的步骤后,进入控制台安装的欢迎界面,键入[Next]继续
2.4.2 此时出现授权许可协议,读完后键入[Yes]继续
2. ......
一般在linux上部署项目时,直接把在window上编译出来的jar文件部署上去,再运行就可以了,但是今天碰到的问题 :
Exception in thread "main" java.lang.NoClassDefFoundError: DataServer
at gnu.java.lang.MainThread.run(libgcj.so.7rh)
Caused by: java.lang.ClassNotFoundException: DataServer not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./,file:/root/test/jar/dom4j-1.6.1.jar,file:/root/test/jar/jaxen-1.1-beta-6.jar,file:/root/test/jar/log4j-1.2.15.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at gnu.java.lang.MainThread.run(libgcj.so.7rh)
原因:不是版本的原因,虽然运行时环境和编译时环境版本不一致通常会导致一些问题,但我觉得不是你这个问题的关键所在。关键是Class� ......
像Linux内核这样庞大而复杂的程序看起来确实让人望而生畏,它象一个很大的球,没有起点和终点。在读源代码的过程中,你会遇到这样的情况,当读到内核的某一部分时又会涉及到其它更多的文件,当返回到原来的地方想继续往下读时,又忘了原来读的内容。在internet上,很多人为此付出了很大的努力,制作出了源代码导航器,这为源代码阅读提供了良好的条件,站点为:http://lxr.linux.no/source,下面给出阅读源代码的一些线索。
1. 系统的启动和初始化
在基于Intel的系统上,当 loadlin.exe 或 LILO把内核装入到内存并把控制权传递给内核时,内核开始启动。关于这一部分,看arch/i386/kernel/head.S ,head.S进行特定结构的设置,然后跳转到init/main.c的main()例程。
2. 内存管理
内存管理的代码主要在/mm,但特定结构的代码在arch/*/mm。缺页中断处理的代码在mm/memory.c ,而内存映射和页高速缓存器的代码在mm/filemap.c。缓冲器高速缓存是在mm/buffer.c 中实现,而交换高速缓存是在mm/swap_state.c 和 mm/swapfile.c中实现。
3. 内核
内核中,特定结构的代码在arch/*/kernel,调度程序� ......