文章目录
- 写在前面
- 系统架构
- 操作系统的组成要素
- 1.liunx内核
- 内存管理(MM)
- 进程管理(SCHED)
- 虚拟文件系统(Virtual File System,VFS)
- 进程间通信(IPC)
- 网络接口(NET)
- 2.liunx Shell
- 3.文件系统
- 虚拟文件系统(VFS)
- 4.应用程序
- 三大应用领域
写在前面
接触liunx快一年半的趴,接触知识总觉得是新事物。学习状态是很少关注原理,敲的命令也不少但遇到错误解决能力非常欠缺,即使一个框架搭建出来也是虚假的成就感。总结来说是急于求成,但成只是表面,这样看来真的该反思自己的学习方式了。这是很少的一次这么有耐心去接触操作系统相关知识,慢慢来,我是一直失落的咸鱼。( 。ớ ₃ờ)
系统架构
放一张网图说明:
Lib解释为库函数,System Call解释为系统调用,Kernel解释为内核。
操作系统的组成要素
操作系统 = 内核 + 系统程序
系统程序 = 编译环境 + API
编译环境 = 编译程序 + 连接程序 + 装载程序
API = 系统调用 + 语言库函数(C、C++、Java等等)
AUI = shell + 系统服务例程(如x服务器等)+ 应用程序(浏览器,字处理,编辑器等)
linux系统一般分为4个主要部分:内核、shell+库、文件系统和应用.
1.liunx内核
内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
部分组成:内存管理、进程管理、虚拟文件系统和进程之间通信,网络接口。如图:
主要部分功能如下:
内存管理(MM)
内存管理。负责管理Memory(内存)资源,以便让各个进程可以安全地共享机器的内存资源。另外,内存管理会提供虚拟内存的机制,该机制可以让进程使用多于系统可用Memory的内存,不用的内存会通过文件系统保存在外部非易失存储器中,需要使用的时候,再取回到内存中。
进程管理(SCHED)
进程管理,负责管理CPU资源,以便让各个进程可以以尽量公平的方式访问CPU。
虚拟文件系统(Virtual File System,VFS)
Linux内核将不同功能的外部设备,例如Disk设备(硬盘、磁盘、NAND Flash、Nor Flash等)、输入输出设备、显示设备等等,抽象为可以通过统一的文件操作接口(open、close、read、write等)来访问。
进程间通信(IPC)
不管理任何的硬件,它主要负责Linux系统中进程之间的通信。
网络接口(NET)
提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。Linux 的网络实现支持 BSD 套接字,支持全部的TCP/IP协议。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。
2.liunx Shell
Shell 是指一种应用程序,也可以说是命令解释器,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
3.文件系统
在LINUX系统中有一个重要的概念:一切都是文件。
文件系统指文件存在的物理空间,linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。一个操作系统的运行离不开对文件的操作,因此必然要拥有并维护自己的文件系统。
虚拟文件系统(VFS)
Virtual File System这一层,正是用来解决上面提出的第二个问题,试想,当我们通过mkfs.xxx系列命令创建了很多不同的文件系统,但这些文件系统都有各自的API接口,而用户想要的是,不管你是什么API,他们只关心mount/umount,或open/close等操作。
所以,VFS就把这些不同的文件系统做一个抽象,提供统一的API访问接口,这样,用户空间就不用关心不同文件系统中不一样的API了。VFS所提供的这些统一的API,再经过System Call包装一下,用户空间就可以经过SCI的系统调用来操作不同的文件系统。
VFS所提供的常用API有:
mount(), umount() …
open(),close() …
mkdir() …
和文件系统关系最密切的就是存储介质,存储介质大致有RAM,ROM,磁盘磁带,闪存等。
4.应用程序
标准的Linux系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言,Window、办公套件、Internet工具和数据库等。
三大应用领域
1.Linux作为企业级服务器的应用
Linux系统可以为企业架构WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题。
2.嵌入式Linux系统应用领域
由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活而且具有极大的伸缩性,再加上它广泛支持大量的微处理体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备(路由器、交换机、防火墙,负载均衡器)到专用的控制系统(自动售货机,手机,PDA,各种家用电器),LINUX操作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。
3.个人桌面Linux应用领域
所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统,例如:Windows xp、windows 7、Mac等。Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公及家长需求。