1.VFS——虚拟文件系统,是文件系统对外的接口
2.cache——高速缓冲存储器
3.linux的每个文件都是由 i 节点的结构体表示,i 节点包含对文件的描述:文件类型、访问权限、属主、时间戳、大小、指向数据块的指针。
4.通常PC使用的文件系统是FAT16,ext2是GUN/linux系统中标准的文件系统
5.交换分区swap一般为物理内存的2-2.5倍
6./etc/rc.d是存放linux启动和关闭时要用到的脚本,/etc/rc.d/init是存放所以linux服务默认的启动脚本
/lost+found 一般是空的,系统有异常时,把遗失片段放在这
/mnt 软硬盘挂载点
/proc放系统核心与执行程序所需的信息,不占磁盘内存
/bin是放用户使用的执行文件
/sbin是放系统管理员管理程序,如init进程
分析/usr:很重要的目录,存放很多应用程序和文件,相当于windows的program files目录
/usr/src:内核源代码默认放置位置
7.shell是命令语言解释器
8.对于chmod ?file
?:
9.shell变量
常见预定义变量:
$0:保存当前程序或脚本的名称
$*:保存传递给脚本或进程的所有参数
$$:当前进程给脚本的PID号
$!:后台运行的最后一个进程的PID号
$?:用于返回上一条命令是否成功执行。如果成功执行,将返回数字0,否则返回非零数字(通常情况下都返回数字1)。
$#:用于保存脚本的参数个数
10.内核启动init后,设定运行等级,之后执行第一个用户层文件是/etc/rd.d/rc.sysinit脚本程序,它的工作非常多,包括设置PATH、设定网络配置,启动交换分区swap、设定/proc等
11.SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。
12.有时间好好尝试GDB操作
13.现在linux上的软件开发一般都是用autotools来制作Makefile的
14.Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
15.系统调用和API
linux将程序的运行空间分为内核空间和用户空间(用户态和内核态)它们运行在不同的级别,在逻辑上相互隔离,用户进程一般不允许访问内核数据,也无法使用内核函数。
操作系统给用户提供了两个接口,用户编程接口API和系统调用。API是利用这些操作命令来组织和控制任务的执行或管理计算机系统。系统调用是操作系统提供给用户程序访问内核的接口,用户使用系统调用去请求操作系统提供服务。API通过系统调用访问内核空间。一般框架:
16.创建设备节点:mknod /dev/ttyS0 c 4 64
17.程序是静止的,进程的动态的。
18.一个进程的正常终止有3种:(1)mian()(2)exit()函数(3)调用_exit()或_Exit()函数
19.如果一个父进程终止,而它的子进程还存在(这些子进程或者仍在运行,或已经僵尸进程了),则这些子进程的父进程改为init进程。init进程通常程序文件是“/sbin/init”,在系统启动时负责启动各种系统服务,之后就负责清理子进程,只要有子进程终止,init就会调用wait函数去清理它。
20.Zombie进程:任何进程在刚终止时都是僵尸进程(一个进程终止,但是它的父进程尚未调用wait或waitpid对它进行清理,这个进程就变成僵尸进程)
21.守护进程(Daemon进程):生存期一般从系统开始运行到系统关闭,它不需要用户输入就可以运行且提供服务。linux系统的大多数服务就是通过守护进程实现的,常见的守护进程有系统日记进程syslogd,web服务器,数据库服务器等。如果想让一个进程不因为用户、终端或者其他的变化而受到影响,那么就必须把这个进程变成一个守护进程。
22.多线程。正如进程之间可以用wait()系统调用来同步终止并释放资源一样。线程之间用pthread_join()等待被执行的线程结束,回收线程资源。
23.Samba服务器是linux和window文件共享的服务。
24.xinetd服务已经取代了inetd,并且提供了访问控制、加强的日志和资源管理功能,已经成了Red Hat 7 和 Mandrake 7.2的Internet标准超级守护进程。控制包括FTP、Telnet等服务
25。
27.jffs和yaffs
28.ioctl函数是特殊的控制函数,通过它可以向设备传递控制信息或从设备取得状态信息,poll函数可以用来查看设备是否可读可写。
29.sendto()和recvfrom()函数是在进行无连接的UDP通信时使用的,而send()和recv()函数可以用在udp和tcp