设为首页 收藏本站
查看: 1085|回复: 0

[经验分享] RedHat Enterprise Linux Computing Essentials 总揽之内核和进程

[复制链接]

尚未签到

发表于 2018-5-13 06:40:55 | 显示全部楼层 |阅读模式
  作者:未知
  出处:https://osu.redhat.com/content/courses-zh-cn/rha030-4/section_0001/tag_lessons/section_0002
  二、内核、程序和进程
  主要概念


  • Linux 内核是一个操作系统,为进程提供运行环境。
  • 程序是文件系统内的可执行文件(通常为二进制文件)。 进程是执行程序的实例。
  • shell 是一个交互式进程,让用户指定要运行的其它进程。
  • 虽然红帽企业版 Linux 支持几个不同版本的 shell,但是它的默认 shell 是叫作 bash 的程序。
  • ps 命令列出了从单个终端终端上启动的进程。ps aux 命令提供了当前在机器上运行的所有进程的详细列表。
  讨论
  
  
Linux 内核
  Linux 内核是一个操作系统,就像 Windows、MacOS 和 OS/2 等操作系统一样。操作系统是程序运行的环境,为程序和计算机硬件之间的交互作用提供机制。当键盘的键被按,当鼠标被移动,或当程序的信息包通过网络到达, 内核都会通知程序。内核允许程序访问硬盘,可能是为了读取配置文件或存储的数据
  正如很难向只懂一门语言的人解释语言的概念一样,通常很难向计算机新手或者向只用过一种操作系统的人解释操作系统的概念。操作系统在底层运作,因此用户和它没有直接的交流,也经常意识不到他们所运行的程序在使用它。
  

  
Figure 1. 内核和进程

quicktour_kernel_processes   程序
  程序是储存在计算机硬盘里的文件。一个程序是一系列非常基本的指令,非常详细、明确地告诉操作系统要做什么、何时去做。以下可能是写在文件 /usr/X11R6/bin/xcalc 上的指令,一个普通的计算器程序。

“While the user isn’t doing anything, blink the cursor. When the user hits a key, if it’s a number, write it to the screen. If it’s not a number, ignore it, unless it’s the return key. If it’s the return key, add the previous number to the total, and print the total.”  当然,这些指示不是用英文或者其它任何人类可读的语言写入的。在最低的层次,计算机只会执行少量的任务,即 256 个任务。想象一下,每个任务都被编号,从任务 0 到任务 255。程序看起来更象以下的指令:

“Do task 23. If the result is greater than 0, do task 45. Otherwise, do task number 82. Take the result, and store it into memory.”  由于计算机可执行的任务取决于不同的 CPU,而且由于不同的操作系统用不同的方式对任务进行编号,所以为一种操作系统编译的程序一般不能在另一种操作系统上使用。
  进程
  
当用户指示内核运行一个程序时,内核会从程序文件上读取指令,并将这些指令装入内存,然后开始执行这些指令。在内存中运行的这个程序的副本叫做进程。注意,同一个程序可以装入内存并运行多次,所以任何时候内核可能都在运行同一程序的几个进程。
  Linux 和大多数现代操作系统一样,是一个多任务操作系统。这说明,Linux 内核看起来好像在同时运行多个进程。事实上,内核运行一个进程的时间很短,通常是 50 毫秒。然后把这个进程切换出去,切入另一个进程,再运行 50 毫秒。最后,内核把所有的进程都运行了一遍,然后再重新开始运行。在进程之间的快速切换使用户感觉所有的进程都在同时运行。
  shell
  
Linux 用户经常使用一种叫做 shell 的特殊程序,与内核进行交互作用。shell 在终端中运行时,会发布一个提示符并等待指示。接着用户输入一个程序的名称,让 shell 运行该程序。在下面的例子中,用户 elvis 让 shell 运行一个简单的日历程序 cal。shell 遵照指示执行程序,然后将程序的输出报告给终端:

Source code
  

  
[elvis@station elvis]$ cal
  
May 2003
  
Su Mo Tu We Th Fr Sa
  
1  2  3
  
4  5  6  7  8  9 10
  
11 12 13 14 15 16 17
  
18 19 20 21 22 23 24
  
25 26 27 28 29 30 31
  

  
[elvis@station elvis]$
  

  由于用户可以使用 shell 执行系统中几乎所有的任务,所以它是一个既重要又先进的程序。我们这门课主要学习如何使用 shell 有效执行任务。
  
当用户要求 shell 运行程序时,我们说用户向 shell 指定命令。shell 通常被称作命令行界面(Command Line Interface)。
  ps 命令
  
ps 命令通常用来列出在系统上运行的进程。没有参数的ps 命令显示了从单个终端(或图形环境中的终端窗口)上启动的所有进程。在下面的例子中,elvis 发现他的终端上当前有两个运行的进程:bash shell ps 命令本身。

Source code
  

  
[elvis@station elvis]$ ps
  
PID TTY          TIME CMD
  
1378 pts/1    00:00:00 bash
  
1418 pts/1    00:00:00 ps
  

  第一列显示进程的 PID,或者叫作进程>  ps aux 命令显示所有正在系统中运行的进程的详细列表。现在我们不详细讨论“aux”代表着什么,就当作魔法记住就行。我们也不详细讨论以下的每一列,所有这些都 会在以后的教程中讲授。现在只需知道,在任何时间,一般都会有大量的进程在 Linux 系统中运行。(注意,在下面的输出中删去了许多行,用 “…” 来代替。)

Source code

  

  
[elvis@station elvis]$ ps aux
  
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
  
root         1  0.0  0.1  1388  460 ?        S    18:52   0:04 init [
  
root         2  0.0  0.0     0    0 ?        SW   18:52   0:00 [keventd]
  
...
  
root       548  0.0  0.2  1460  580 ?        S    18:53   0:00 syslogd -m 0
  
root       552  0.0  0.1  1384  428 ?        S    18:53   0:00 klogd -x
  
rpc        570  0.0  0.2  1560  552 ?        S    18:53   0:00 portmap
  
root       622  0.0  0.2  1496  632 ?        S    18:53   0:00 /sbin/cardmgr
  
root       628  0.0  0.0     0    0 ?        SW   18:53   0:00 [kapmd]
  
root       633  0.0  0.1  1380  484 ?        S    18:53   0:00 /usr/sbin/apmd -p
  
root       644  0.0  0.5  3524 1512 ?        S    18:53   0:00 /usr/sbin/sshd
  
root       655  0.0  0.3  2040  860 ?        S    18:53   0:00 xinetd -stayalive
  
root       674  0.0  0.9  6204 2504 ?        S    18:53   0:00 sendmail: accepti
  
smmsp      683  0.0  0.8  6004 2256 ?        S    18:53   0:00 sendmail: Queue r
  
root       693  0.0  0.1  1424  444 ?        S    18:53   0:00 gpm -t ps/2 -m /d
  
root       702  0.0  0.2  1580  672 ?        S    18:53   0:00 crond
  
xfs        781  0.0  1.5  5272 4004 ?        S    18:53   0:00 xfs -droppriv -da
  
root       800  0.0  0.2  3416  544 ?        S    18:53   0:00 rhnsd --interval
  
root       807  0.0  0.1  1364  396 tty1     S    18:53   0:00 /sbin/mingetty tt
  
...
  
root      1375  0.0  0.3  4120  968 pts/1    S    20:11   0:00 su - elvis
  
elvis     1378  0.0  0.5  4324 1404 pts/1    S    20:11   0:00 -bash
  
elvis     1438  0.0  0.2  2648  696 pts/1    R    20:30   0:00 ps aux
  

  问题
  
内核、程序和进程

  
A>  Question 1
  
以下哪个不是操作系统?


  • A.红帽企业版 Linux
  • B.Windows 2000
  • C.Microsoft Office
  • D.Mac OS X
  Question 2
  
对于 Linux 操作系统来说,以下哪种说法不正确?


  • A.多个进程好像在同时运行。
  • B.Only one instance of any given program may be running as a process.
  • C.程序作为文件保存在文件系统中。
  • D.内核在一个时间只能运行一个实例。
  Question 3
  
以下哪种说法是正确的?


  • A.只有根用户可以从 shell 运行进程。
  • B.The shell is a process that is commonly used to execute other processes.
  • C.shell 是内核中直接和硬件进行沟通的部分。
  • D.shell 只有一个实例可以作为进程运行。
  Question 4
  
以下哪个是红帽企业版 Linux 的默认 shell?


  • A./bin/bash
  • B./bin/tcsh
  • C./bin/zsh
  • D./bin/sh
  Question 5
  
以下哪个命令会列出进程?


  • A.ps
  • B.lsps
  • C.lps
  • D.ls

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459283-1-1.html 上篇帖子: RedHat Enterprise Linux Computing Essentials 总揽之查看文件系统 下篇帖子: RedHat Enterprise Linux Computing Essentials 总揽之管理终端
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表