Linux Shell初探

本文深入解析Linux系统的四个主要组成部分:内核、GNU工具、图形化桌面环境和应用软件。详细阐述了内核如何管理内存、软件、硬件和文件系统,以及GNU工具、桌面环境和发行版的特点。

Linux四部分:

Linux内核
GNU工具
图形化桌面环境
应用软件

Linux内核:

内核控制所有硬件和软件,必要时分配硬件,根据需要执行软件。
四大功能:
系统内存管理
软件程序管理
硬件设备管理
文件系统管理

系统内存管理

内核管理可用物理内存,创建、管理虚拟内存。内核不断地在交换空间和实际物理内存之间反复交换虚拟内存中的内容,使得系统以为它拥有大于物理内存的可用内存。
页面:内存按组划分成很多块,这些块称作页面(page)。内核维护一个内存页面表,指明哪些在物理内存,哪些被换到了磁盘上。内核记录哪些页面正在使用中,并自动把一段时间未访问的页面换出(swapping out)到交换空间。程序如果访问已被换出的内存页面,内核需要从物理内存换出另一个页面给它让出空间。然后从交换空间换入请求的内存页面。

软件程序管理

运行中的程序称为进程,有前台进程、后台进程等。
内核创建了第一个进程,即init进程,来启动系统上所有其他进程。内核启动时,会将init进程加载到虚拟内存。
/etc/inittab文件管理系统开机时要自动启动的进程。也有使用*/etc/init.d*目录存储启动停止某个应用的脚本。
Linux的5个启动运行级:
1:单用户模式,只启动基本的系统进程及一个控制台终端进程,只有一个人(系统管理员)能登录系统操作数据,通常是紧急的文件系统维护。
3:标准运行级,大多数应用软件都会启动。
5:系统会启动图形化的X Window系统。

硬件设备管理

任何与Linux系统通信的设备,都需要在内核代码中加入其驱动代码。
插入驱动代码的两种方法:编译进内核的设备驱动代码,可插入内核的设备驱动模块。后者允许将驱动代码插入运行中的内核而无需重新编译内核,设备不再使用时移走。
Linux将硬件设备当成特殊的文件,即设备文件:字符型设备文件,块设备文件,网络设备文件。
字符型设备文件:处理数据时每次只能处理一个字符,大多数的调制解调器和终端。
块设备文件:处理数据时每次能处理大块数据,如硬盘。
网络设备文件:采用数据包发送和接收数据的设备,如各种网卡。
Linux为每个设备创建一种特殊文件,即节点。与设备的通信都通过节点完成。节点通过唯一的数值对被Linux内核标识。数值对包括主设备号和次设备号。类似设备划分到同一主设备号下,次设备号标识主设备组下的某个特定设备。

文件系统管理

Linux内核支持读写多种不同类型的文件系统,内核必须在编译时加入对需要的文件系统的支持。
内核采用虚拟文件系统(VFS)作为和每个文件系统交互的接口。

GNU工具

供Linux使用的核心工具称为coreutils(core utilities)软件包,包含三部分:处理文件、操作文本、管理进程。
shell:交互式工具,为用户提供了启动程序、管理文件及进程的途径。shell的核心是命令行提示符,负责用户交互。
将多个shell命令放入文件中作为程序执行,即shell脚本。
默认bash shell。

Linux桌面环境

X Window系统
KDE桌面
GNOME桌面
Unity桌面
其他桌面

Linux发行版

即完整的Linux系统包。归为三类:

完整的核心Linux发行版

包含内核、一个或多个图形化桌面,预编译好的几乎所有Linux应用,提供一站式的完整Linux安装。
Slackware,RedHat,Fedora,Gentoo,openSUSE,Debian

特定用途的发行版

通常基于某个主流发行版,但仅包含主流发行版中一小部分用于某种特定用途的应用程序。
CentOS,Ubuntu,PCLinuxOS,Mint,dyne:bolic,PuppyLinux

LiveCD测试发行版

可引导的Linux发行版,无需安装。

下载前必看:https://pan.quark.cn/s/a4b39357ea24 在本资料中,将阐述如何运用JavaScript达成单击下拉列表框选定选项后即时转向对应页面的功能。 此种技术适用于网页布局中用户需迅速选取并转向不同页面的情形,诸如网站导航栏或内容目录等场景。 达成此功能,能够显著改善用户交互体验,精简用户的操作流程。 我们须熟悉HTML里的`<select>`组件,该组件用于构建一个选择列表。 用户可从中选定一项,并可引发一个事件来响应用户的这一选择动作。 在本次实例中,我们借助`onchange`事件监听器来实现当用户在下拉列表框中选定某个选项时,页面能自动转向该选项关联的链接地址。 JavaScript里的`window.location`属性旨在获取或设定浏览器当前载入页面的网址,通过变更该属性的值,能够实现页面的转向。 在本次实例的实现方案里,运用了`eval()`函数来动态执行字符串表达式,这在现代的JavaScript开发实践中通常不被推荐使用,因为它可能诱发安全问题及难以排错的错误。 然而,为了本例的简化展示,我们暂时搁置这一问题,因为在更复杂的实际应用中,可选用其他方法,例如ES6中的模板字符串或其他函数来安全地构建和执行字符串。 具体到本例的代码实现,`MM_jumpMenu`函数负责处理转向逻辑。 它接收三个参数:`targ`、`selObj`和`restore`。 其中`targ`代表要转向的页面,`selObj`是触发事件的下拉列表框对象,`restore`是标志位,用以指示是否需在转向后将下拉列表框的选项恢复至默认的提示项。 函数的实现通过获取`selObj`中当前选定的`selectedIndex`对应的`value`属性值,并将其赋予`...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值