进入Linux内核之旅:一场解开谜团的旅程
Linux内核就像一座城堡,孤立地屹立于电脑的计算架构中。它藏身于内存中,控制着硬件的开关,而我们如同秘境中彷徨的探险者。为了解开Linux内核之谜,我们要开始一场探秘旅行!
我们的第一站是 Linux 的内核源代码,其中包含了内核的核心代码,比如进程调度,中断服务,系统调用等等。
例如:
在中断处理程序中,首先是针对中断请求的确认,以及具体的处理方式
void handle_interrupt(unsigned int vector, struct pt_regs *regs){
switch (vector){
/* 把目前正在处理的程序休眠,并将这个程序放到等待队列中 */
sleep_on();
/* 把进程从等待队列中唤醒 */
wake_up();
/* 其他处理异常等中断处理函数 */
然后,我们进入下一站:由设备驱动程序组成的国度,其中放置着可以管理各种硬件的接口。例如下面的代码:
一个简单的USB设备驱动程序
static int usb_Probe(struct usb_device *dev, const struct usb_device_id *id){
/* 设置设备操作参数,以及设备类型 */
dev->type = USB_TYPE_STORAGE;
dev->max_lun = 8;
/* 启动设备 */
usb_start_device(dev);
/* 将设备绑定到指定的驱动程序 */
usb_bind_driver(dev);
最后,我们要动身出发,探索内核的核心——Linux 系统调用。这比上面的两个示例更加抽象,它负责控制内核和应用程序之间的交互。在调用系统调用的时候,应用程序向内核发出一个中断请求,并用一个字符指明想要进行的操作,如下所示:
一个简单的系统调用示例
long sys_open(const char __user *filename, int flags, mode_t mode){
char buf[256];
/* 从用户空间拷贝文件名到内核空间 */
ret = copy_from_user(buf, filename, sizeof buf);
return -EFAULT;
/* 执行文件打开操作 */
ret = do_sys_open(buf, flags, mode);
return ret;
无论我们的行程的最终归宿是什么, Linux 内核都是一个强大的系统,其功能既广泛又深邃。从 Linux 内核的角度进入我们的探险之旅既可以拓展我们的技术视野,同时也可以增强我们对这层谜团的理解,从而提升我们的计算机知识!
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云 服务器 和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
Linux与Windows的区别
Linux是目前十分火爆的操作系统。 它是由芬兰赫尔辛基大学的一个大学生Linus B. Torvolds在1991年首次编写的。 标志性图标是一个可爱的小企鹅。 Linux是一种类Unix系统,Linus当时编写它的目的是为了替代一种名叫Minix的操作系统。 Minix是由一个名叫Andrew Tannebaum的计算机教授编写的,当时由于Unix是一个商业软件,其源代码是不能拿来进行教学的,Andrew教授就自己编写了一个系统用于教学。 最初的Minix用一张软盘就能装下,麻雀虽小、五脏俱全,Minix具有一般操作系统的特征,它同时兼容Unix系统一直以来,很多人对操作系统的认识停留在windows的华丽的图形界面,认为只有鼠标操作才能把一个操作系统给很好的用起来。 linux的出现改变了这点先看看linux的目录结构,linux以/作为一个总的挂载点,把所有系统文件安装在/下的不同目录下,linux下的通常目录有:/etc用来放linux启动脚本和系统配置信息/boot 放着linux内核和启动系统所需的文件/dev存放设备文件/home用户文件的主目录/proc放着存储进程和系统信息/root超级用户的主目录/bin常用必要的命令/sbin存放系统管理员命令/usr一般的应用程序文件/var包含系统产生的经常变化的文件,如邮件日志等等/lib系统必要的运行库/mnt存放临时的映射文件系统,如系统光驱软驱的挂载/tmp存放临时文件的目录。 Linux命令通常放在/bin/sbin/usr/bin /usr/sbin等目录下,每一个安装的软件包,都会在这些目录下产生几个命令。 下面就windows几个常用特征,对比着简单介绍linux,以redhat9.0为例。 在桌面上经常能看见各种图标,这些图标是相应程序中快捷方式,在linux下可以用ln n xxx, ln命令是建立文件符号链接的linux命令,可以在一个目录下建立起多个文件的链接,执行这些链接,就执行了文件本身,而删除链接,并不删除文件。 所以通过建立各种链接文件,你也能拥有自己的命令桌面。 的任务管理器中能看到系统的进程,性能等一系列动态信息,也能关闭一些用户进程,在linux中,通过psaux ,top,kill命令可以实现这些操作,ps是linux用来查看当前运行进程的命令,top动态显示目前正在系统中执行的程序,kill+文件Id可以删除相应进程,这些命令实际上调用的对/proc中,文件的操作/proc是一个内存映射到文件的文件夹,里面存放的文件记录了系统进程信息、动态信息和系统基本信息。 通过查看/proc,能得到系统的大部分信息。 的添加删除程序相当的简单,在linux 也有类似简单的工具rpm redhat专门为程序编程人员提供了这一个软件制作工具,大量linux 软件已经做成rpm格式,只需要通过rpm ivh xxx的方式可以成功安装,通过rpmuvh xxx就可以成功卸载。 同时 rpm工具带有很多其他功能,如通过rpmqa|more可以查询所有的已经安装在系统的rpm包的软件名rpmql xx能查找一个软件包即将拷贝何种文件在待安装的linux系统上,rpmqf /xxx能查找任何一个rpm格式的命令是属于哪个软件包,总之,rpm的功能很强大,给linux添加删除软件带来很多便捷。 的设备管理器提供了计算机软硬件很多信息,在linux下,这些系统信息通过dmesg|more的命令,dmesg实际上是/var/log下一个日志文件,系统在启动的时候记录相应的软硬件信息,存放在此,除了这个文件,/proc下也存放着许多相应系统的信息,如分区信息,cpu信息,内存信息交换分区信息,中断信息,系统总线信息。 大多相应的系统信息命令就是通过查找这里的文件信息提供给大家的。 中有环境变量概念,linux也有,系统在启动的时候已经设置了很多环境变量,其中比较常见的有PATH SHELLHOME PS1等 。 PATH就是我们常常说的路径,定义了它才能够直接使用命令,而不需要加上路径 ,SHELL选择系统启动后进入bash脚本 HOME是记录当前的用户的目录,PS1是当前提示符,显示一个环境变量用echo $PATH,显示本地所有环境变量用set,显示所有环境变量用env,清楚环境变量用unset xx设置一个环境变量用export xx=” ”。 的任务启动执行常见的有几种方式,一个是在系统启动文件中执行程序的启动,如编辑autoexec程序,一个是放在注册表的run下,一个是放在开始菜单的启动项中。 linux启动,通常需要加载一系列启动脚本, linux启动当内核完成加载需要找/etc/inittab这个文件,这个文件通常会执行/etc/脚本文件(当然也可以自己更改),再由它调用其他脚本文件进行各种后台程序的启动和系统环境信息的设置。 需要启动时执行的程序可以放在这里用脚本语言启动。 熟悉了脚本编程,还可以对系统本身启动的脚本进行修改,去掉不想要启动的设备程序和修改启动后的系统信息,打造属于自己的linux操作系统。 下控制面板-管理工具-服务,记载着windows后台服务的启动情况,在linux下也有着类似的管理方式,它是通过脚本的方式来管理,所有的后台启动脚本都放在rc.d下,linux启动有六个模式,相应就有六个启动脚本文件夹,每一个文件夹对应着在linux启动的一种模式下应该启动或不启动的程序,在启动的时候通过改变相应模式文件夹中的程序脚本前缀S或K,就能在相应的模式下自启动或不启动程序,在操作系统运行中,还可以通过servicestart | restart|stop来手动启动或重启或停止该程序。 对文件的操作十分方便,用户很容易就能建立,查找,删除一个文件,Linux命令模式没有向windows那么直观的文件操作界面,但它提供了一组强大的文件操作命令来让用户能方便的对硬盘中的文件进行操作,touch 建立一个新文件,find功能强大的查找文件 rm删除文件和目录,tar对多个文件打包同时进行压缩,ln建立文件快捷方式 chmod,chown修改文件的权限和所有者,vi类似与windows下记事本的编辑程序等等。 这些命令能够很容易的对硬盘文件进行各种有用的操作,不同于windows操作系统,linux的命令大都独立的程序,可以添加和裁减,这使得不同的系统可以拥有对文件不同的操作,使linux能很灵活的应用各个方面。 linux系统是属于那种灵活的操作系统,除了少数必须的命令,多数的命令都可以通过裁减的方式由用户自己定制。 不像windows系统一口吃一个胖子,这样做的好处就使得linux能够用在比windows更广泛的领域,从服务器到桌面系统到嵌入式,甚至可以小到仅仅只由内核+文件系统构成大小不到一兆的嵌入式系统。 而大多数的linux开发人员的热情,使得linux今后会成为一个重要的操作系统。
作文《我想xx》350字四年级的怎么写一
我想飞安静的时侯,思绪总会不自觉地飘向虚幻。 想像亿万年前抑或是百年后的地球;想像神秘的外星人就隐藏在自己身边;想像世界末日突然来临;想像一切不着边际的事情……梦一般的缥缈,自由无限制。 于是,我说,我想飞 飞向任何一个想去的地方。 我飞过丛林,飞过荒漠,怀着一颗好奇懵懂的心去唤醒沉睡在金字塔内的埃及法老们。 几千年的时光在他们身边静静流过,他们却依然安稳、依然不动声色。 醒来吧,告诉我那古老诡秘的强大咒语中蕴藏些什么力量。 我要的答案在何处?我飞,飞进一片茫茫的雾霭之中,有什么声音在呼唤、咆哮,那是爱琴海的歌唱。 一个充满神话的国度,我看到雅典卫城在智慧女神的守护下散发着宁谧而和谐的光芒。 我伟大的神呀,您能听见人们夜夜不停的呐喊吗?古堡、废墟,凝结的是人类繁华奢侈的生活和血腥的杀戮。 断垣残壁高高地屹立在悬崖上,残阳如血,它们更显孤独落寞。 我载着一身的疲惫于凝重,然后离开。 我想飞,飞进时间的洪流中,去寻找前世今生的记忆。 天地浑浊山崩地裂,人界出现;星辰坠落,幻化成无数明亮的眼睛。 我侧身擦过山的棱角水的边缘,风凋碧树,花开寂无声。 一个又一个的王朝帝国升起又落下。 人世间不停地演绎着一幕幕爱恨情愁、悲欢离合。 几许无奈,几多喧嚣。 再或是火光冲天,血溅成河,撕心裂肺的叫喊声回肠荡气……有谁在浅吟低唱:“回首向来萧瑟处,也无风雨也无晴。 ”我发现任凭凡间斗转星移沧海桑田,轮回依旧旋转,消失的终究消失,离开的不会再来,仿佛一切在冥冥之中都有定数,这是宿命的安排吗?我飞,终于飞进未来时空的大门,然而地球依旧旋转街市依旧太平,哪里才是时间的尽头?我拼命寻找,直到海水枯竭,直到天空失去颜色,直到最后一颗流星划破夜幕……地球只剩下沉重的叹息,荒城中黑色的风传述着逝去的故事,传颂在我的耳里。 我回身迎接苍凉的告别,沉默,在千年万年时光的裂缝于罅隙中大鸣大放,一切都像摇晃的幻影,像一席永不醒来的梦。 我迷失在连自己都找不到的时间里…… 我想飞,迎着天空呼啸的风,冲破云层,驱散氤氲,飞向更深邃的苍穹。 我要解开心中的谜团,那厚重的天幕后边究竟深藏了什么?是天使?是魔鬼抑或是人类的灵魂?身边拂过一滴水珠,谁的眼泪在飞?熹微的光芒笼罩着无垠的宇宙。 我徘徊、逗留,哪儿才是方向?我要继续飞,飞向无尽的黑暗中,直到与答案不期而遇…… 传说中,天使背叛天庭,甘愿折断双翼堕落人界。 我却想,如果有来生,我会选择飞翔,划破长空,飞到天涯海角……我想握住你的手
top命令中哪个参数是查看正在运行进程数

Runningtotal 进程总数running 正在运行的进程数sleeping 睡眠的进程数stopped 停止的进程数zombie 僵尸进程数Cpu(s): 0.3% us 用户空间占用CPU百分比1.0% sy 内核空间占用CPU百分比0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比98.7% id 空闲CPU百分比0.0% wa 等待输入输出的CPU时间百分比0.0%hi:硬件CPU中断占用百分比0.0%si:软中断占用百分比0.0%st:虚拟机占用百分比
发表评论