- 论坛徽章:
- 0
|
前言
为了学习Linux先从电子本《Wiley.Linux.Command.Line.and.Shell.Scripting.Bible.May.2008》学起,不知道以此本入门合适不合适。反正已经开始了,根据我自身的学过的内容及实验成果,我就把笔记贴上来。书名应该翻译成宝典之类的了,不知道博客的文章一篇能有多大的容量。若容量允许的话我就一章一篇地发表。今天没写完的,就放到明天以修改的形式编辑出来。
[略过前言部分]
1.1什么是Linux?
分四个部分讲解:
- Linux内核
- GNU程序
- 图形化桌面环境
- 应用程序
图1-1说明Linux的整体架构:
![]()
这节内容主要讲解这四个部分是如何构建一个完整的Linux系统.
1.1.1浏览内核
Linux的核心是内核(kernel),内核主宰着计算机系统的一切硬件和软件,在必要的时候分派硬件和运行软件.如果你已经进入Linux世界,你一定会听说过Linus Torvalds,他写Linux内核的时候还是赫尔辛基大学的一名学生.开发完成内核以后,他把代码放到互联网的社区里,征求各方的意见以便改善它.这一下子引发了一场计算机操作系统的革命,他很快收到来自世界各地的,包括学生和专业程序员们的建议.[省略众所周知的一部分内容]
内核主要负责以下四个方面的任务:
内存管理
内存管理不只是管理有效的物理内存,还包括虚拟内存甚至包括实际上并不存在的内存.在硬盘上分配一块空间称为交换空间(swap space),内核将交换空间里的内容反复地读写到物理内存中,让系统认为有更多的物理内存可用.如图1-2:
![]()
内存的存储单元被分成许多个块称为页(pages).内核将物理内存和交换空间的页编号,那么内核只要维护一个内存页的标明了哪些空间在物理内存哪些空间在交换空间里的一张表就可以了.内核会跟踪哪些内存页正在使用,并自动复制那些在一段时间内不会被访问到的内存页到交换空间里去,哪怕还有空闲的物理内存也是这样.这个过程叫迁出(swapping out),当一个程序想要访问一个被迁出的内存页的时候,内核必需将另外的内存页迁出到交换空间以便腾出空间给需要的内存页迁入回来.很显然,这个过程是需要花费时间,甚至会降低系统的运行速度.只要Linux操作系统在运行,这个过程就会一直进行下去.
你可以通过查看/proc/meminfo这个特殊文件的内容来确定当前虚拟内存的状态.
这儿有个例子:
# cat /proc/meminfo
MemTotal: 775228 kB
MemFree: 7896 kB
Buffers: 111612 kB
Cached: 522916 kB
SwapCached: 0 kB
Active: 203836 kB
Inactive: 512784 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 775228 kB
LowFree: 7896 kB
SwapTotal: 1048568 kB
SwapFree: 1048448 kB
Dirty: 12 kB
Writeback: 0 kB
AnonPages: 82084 kB
Mapped: 18288 kB
Slab: 41972 kB
PageTables: 1916 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 1436180 kB
Committed_AS: 283552 kB
VmallocTotal: 245752 kB
VmallocUsed: 4036 kB
VmallocChunk: 241328 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 4096 kB
可以很清楚地看到总物理内存和交换空间的大小.默认的每个进程都有自己的私有空间页,它们互相不能访问,内核维护着自己的内存区域,为了安全的目的,其他进程都不能访问内核所占用的内存空间.为了共享数据,你可以创建共享内存页,多个进程可以读写通用的共享内存区域.内核管理和维护这些共享内存区域,允许各独立的进程可以访问这些区域.
有个专用命令叫ipcs可以允许你查看当前的共享内存页:
# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 65536 root 600 524288 10 dest
[待续]
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94342/showart_1891585.html |
|