Default partitioning program under Linux is fdisk 。
硬盘里面分为两个区域:一个是描述硬盘自身的信息区,称为主引导区(Master Boot Record, MBR), 一个是存放实际文件信息的区域。 MBR是整个硬盘最重要的地方,里面记录了两个重要的东西,分别是:启动管理程序和硬盘分区表。所以我们所说的硬盘分区,其实就是修改MBR中的分区表。
分区表的内容: 分区表定义了“第n个磁盘区块是由硬盘第x柱面到第y个柱面”。所以,每次当系统去读取第n快磁盘区块时,就只会读取第x到y个柱面之间的信息。
但是,因为MBR区块的容量有限,当初设计时,之设计成4个分区记录,这些分区记录就被称为Primary(主分区)及Extended(扩展分区),也即,一个硬盘最多可以有4个Primary+Extended的分区,其中Extended只能有一个,所以硬盘坐的分区情况可能是:
P + P + P + P
P + P + P + E
需要说明的是:主分区可以直接使用,扩展分区则不能直接被使用,还需要分成Logical(逻辑分区)才行。
对于扩展分区产生的原因可以如下理解:
由于MBR最多保存四个partition的信息记录,那如果需要分区超过4个以上时,系统允许在额外的硬盘空间存放另一份硬盘分区信息,这个额外区域就是Extend(扩展分区)。
扩展分区其实就是“指向那些额外的分区表”,真正的分区信息记录在这份额外的分区表中,扩展分区自身并不记录分区信息,所以本身Extended不能被使用,还需要将其分区成逻辑分区才能被使用。
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表,包括Debian和Ubuntu等。
VFS
EXT2, EXT3, FAT32, …
对图中一些名词的解释:
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
MBR(主引导记录(Master Boot Record)):
硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和分区有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。
内核:下面有。
Runlevel:
runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中的Normal,safemode,和Command prompt only。进入每个runlevel都需要启动或关闭相应的一系列服务(services),这些服务(services)以初始化脚本的方式放置于目录/etc/rc.d/rc?.d/或者/etc/rc?.d下面(?代表runlevel的对应序号)。
在大多数的linux发行版本中,通常有7个runlevel
Runlevel System State
0 Halt the system
1 Single user mode
2 Basic multi user mode
3 Multi user mode
5 Multi user mode with GUI
6 Reboot the system
中文版解释:
0关机
1单用户,无网络服务
2 多用户,默认无网络服务
3 多用户,网络服务,文本环境
4 保留,默认同运行级别3
5 多用户,网络服务,图形环境
6 重启
多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面,而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面,runlevel 1和2除了调试之外很少使用,runlevel s和S并不是直接给用户使用,而是用来为Single user mode作准备。
linux的运行模式比起windows的启动模式的优势在于:你可以在系统空闲时使用.init工具切换你现在使用的runlevel,另外,当你关闭或者启动linux系统时你已经不知不觉中切换你的runlevel,系统关机进程需要调用runlevel(0或6)来关闭所有正在运行中的进程。
Linux系统有7个运行级别(runlevel)
0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
2:多用户状态(没有NFS)
3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
4:系统未使用,保留
5:X11控制台,登陆后进入图形GUI模式
6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
运行级别的原理:
1。在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)
2。在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别
3。rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。
4。系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件
对于以K开头的文件,系统将终止对应的服务
对于以S开头的文件,系统将启动对应的服务
5。查看运行级别用:runlevel
6。进入其它运行级别用:init N
7。另外init0为关机,init 6为重启系统
X Window System:一般指X Window
内核和核外程序的分工的个人总结:
用户写shell脚本调用C语言之类的高级语言或实用程序,这是核外程序;
高级语言和实用程序调用系统调用,系统调用要兼顾文件系统和进程管理系统,这两者又与硬件控制打交道,而硬件控制则是控制硬件,此为内核。
我们平时最常接触的文件类型有普通文件(regular file)和目录(directory file),但是 UNIX 系统提供了多种文件类型:
(1) 普通文件(regular file)
这种文件包含了某种形式的数据,这些数据无论是文件还是二进制对于 UNIX 内核而言都是一样的。对普通文件内容的解释有处理该文件的应用程序进行。
(2) 目录文件(directory file)
目录文件包含了其他文件的名字以及指向与这些文件有关信息的指针。对一个目录文件具有读权限的任一进程都可以读取该目录的内容,但是只有内核才能直接写目录文件。
(3) 块特殊文件(block special file)
这种文件类型提供对设备带缓冲的访问,每次访问以固定长度为单位进行。
(4) 字符特殊文件(character special file)
这种文件类型提供对设备不带缓冲的访问,每次访问长度可变。系统中的所有设备要么是字符特殊文件,要么是块特殊文件。
(5) FIFO
这种类型文件用于进程间通信。也称为命名管道(namedpipe)。
(6) 套接字(socket)
这种文件类型用于进程间的网络通信。
(7) 符号链接(symbolic link)
这种文件类型指向另一个文件。
使用 $ ls -l 指令查看文件权限,显示内容如下:
第一个字符一般用来区分文件和目录:
d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
之后九个字符表示权限,举例说明:
-rwx------: 文件所有者对文件具有读取、写入和执行的权限。
-rwxr―r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-rw-rw-r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
drwx--x--x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
Drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
另一种修改方法:
以数字来表示权限,而且仅需三个数字。
r: 对应数值4
w: 对应数值2
x:对应数值1
-:对应数值0
使用多线程的理由之二是线程间方便的通信机制。对不同进程来说,它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明为static的数据更有可能给多线程程序带来灾难性的打击,这些正是编写多线程程序时最需要注意的地方。
除了以上所说的优点外,不和进程比较,多线程程序作为一种多任务、并发的工作方式,当然有以下的优点: